@keystrokehq/exa 0.0.173 → 0.0.175
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/README.md +24 -9
- package/dist/actions/index.cjs +1 -1
- package/dist/actions/index.mjs +1 -1
- package/dist/{actions-Bog0HOWp.mjs → actions-CJq1Nyt_.mjs} +7 -13
- package/dist/actions-CJq1Nyt_.mjs.map +1 -0
- package/dist/{actions-CUxYXblx.cjs → actions-LoQVlbiT.cjs} +7 -13
- package/dist/actions-LoQVlbiT.cjs.map +1 -0
- package/dist/app-CBLUruR0.mjs +15 -0
- package/dist/app-CBLUruR0.mjs.map +1 -0
- package/dist/app-DMujvH6I.cjs +26 -0
- package/dist/app-DMujvH6I.cjs.map +1 -0
- package/dist/index-BwCGHs6v.d.cts.map +1 -1
- package/dist/index-BwCGHs6v.d.mts.map +1 -1
- package/dist/index.cjs +4 -3
- package/dist/index.d.cts +7 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +7 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/mcp.cjs +3 -3
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.mjs +3 -3
- package/dist/mcp.mjs.map +1 -1
- package/package.json +2 -2
- package/dist/actions-Bog0HOWp.mjs.map +0 -1
- package/dist/actions-CUxYXblx.cjs.map +0 -1
- package/dist/credential-BWous9Uu.cjs +0 -16
- package/dist/credential-BWous9Uu.cjs.map +0 -1
- package/dist/credential-NfXyV_Vy.mjs +0 -11
- package/dist/credential-NfXyV_Vy.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -8,23 +8,38 @@ Reference for building a **custom integration package**: credential → actions
|
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
src/
|
|
11
|
-
|
|
12
|
-
actions/ #
|
|
13
|
-
mcp.ts # defineMcp (uses
|
|
11
|
+
app.ts # defineApp — vault key "exa", api_key auth
|
|
12
|
+
actions/ # exa.action() exports
|
|
13
|
+
mcp.ts # defineMcp (uses exa.credential)
|
|
14
14
|
client.ts # raw HTTP client
|
|
15
15
|
index.ts # public exports
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## App + credential
|
|
19
19
|
|
|
20
20
|
```ts
|
|
21
|
-
// src/
|
|
22
|
-
import {
|
|
21
|
+
// src/app.ts
|
|
22
|
+
import { defineApp } from "@keystrokehq/keystroke/app";
|
|
23
23
|
import { z } from "zod";
|
|
24
24
|
|
|
25
|
-
export const
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
export const exa = defineApp({
|
|
26
|
+
slug: "exa",
|
|
27
|
+
auth: "api_key",
|
|
28
|
+
credential: { apiKey: z.string() },
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Actions are minted from the app — no separate credential import:
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
export const exaSearch = exa.action({
|
|
36
|
+
slug: "exa-search",
|
|
37
|
+
input: ExaSearchInput,
|
|
38
|
+
output: ExaSearchOutput,
|
|
39
|
+
async run(input, { exa: { apiKey } }) {
|
|
40
|
+
const client = createExaClient(apiKey);
|
|
41
|
+
// ...
|
|
42
|
+
},
|
|
28
43
|
});
|
|
29
44
|
```
|
|
30
45
|
|
package/dist/actions/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_actions = require("../actions-
|
|
2
|
+
const require_actions = require("../actions-LoQVlbiT.cjs");
|
|
3
3
|
exports.ExaAnswerInput = require_actions.ExaAnswerInput;
|
|
4
4
|
exports.ExaAnswerOutput = require_actions.ExaAnswerOutput;
|
|
5
5
|
exports.ExaGetContentsInput = require_actions.ExaGetContentsInput;
|
package/dist/actions/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ExaSearchOutput, c as ExaGetContextOutput, d as ExaGetContentsOutput, f as exaGetContents, h as exaAnswer, i as ExaSearchInput, l as exaGetContext, m as ExaAnswerOutput, n as ExaSearchStructuredOutput, o as exaSearch, p as ExaAnswerInput, r as exaSearchStructured, s as ExaGetContextInput, t as ExaSearchStructuredInput, u as ExaGetContentsInput } from "../actions-
|
|
1
|
+
import { a as ExaSearchOutput, c as ExaGetContextOutput, d as ExaGetContentsOutput, f as exaGetContents, h as exaAnswer, i as ExaSearchInput, l as exaGetContext, m as ExaAnswerOutput, n as ExaSearchStructuredOutput, o as exaSearch, p as ExaAnswerInput, r as exaSearchStructured, s as ExaGetContextInput, t as ExaSearchStructuredInput, u as ExaGetContentsInput } from "../actions-CJq1Nyt_.mjs";
|
|
2
2
|
export { ExaAnswerInput, ExaAnswerOutput, ExaGetContentsInput, ExaGetContentsOutput, ExaGetContextInput, ExaGetContextOutput, ExaSearchInput, ExaSearchOutput, ExaSearchStructuredInput, ExaSearchStructuredOutput, exaAnswer, exaGetContents, exaGetContext, exaSearch, exaSearchStructured };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as exa } from "./app-CBLUruR0.mjs";
|
|
2
2
|
import { createExaClient } from "./client.mjs";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
-
import { defineAction } from "@keystrokehq/keystroke/action";
|
|
5
4
|
//#region src/schemas.ts
|
|
6
5
|
const exaSearchTypeSchema = z.enum([
|
|
7
6
|
"instant",
|
|
@@ -94,13 +93,12 @@ const ExaAnswerOutput = z.object({
|
|
|
94
93
|
citations: z.array(exaCitationSchema),
|
|
95
94
|
costDollars: z.object({ total: z.number().optional() }).optional()
|
|
96
95
|
});
|
|
97
|
-
const exaAnswer =
|
|
96
|
+
const exaAnswer = exa.action({
|
|
98
97
|
slug: "exa-answer",
|
|
99
98
|
name: "Exa Answer",
|
|
100
99
|
description: "Search-backed grounded Q&A with citations.",
|
|
101
100
|
input: ExaAnswerInput,
|
|
102
101
|
output: ExaAnswerOutput,
|
|
103
|
-
credentials: [exaCredential],
|
|
104
102
|
async run(input, credentials) {
|
|
105
103
|
const client = createExaClient(credentials.exa.apiKey);
|
|
106
104
|
const body = {
|
|
@@ -131,13 +129,12 @@ const ExaGetContentsOutput = z.object({
|
|
|
131
129
|
statuses: z.array(exaContentStatusSchema),
|
|
132
130
|
costDollars: z.object({ total: z.number().optional() }).optional()
|
|
133
131
|
});
|
|
134
|
-
const exaGetContents =
|
|
132
|
+
const exaGetContents = exa.action({
|
|
135
133
|
slug: "exa-get-contents",
|
|
136
134
|
name: "Exa Get Contents",
|
|
137
135
|
description: "Extract webpage content from known URLs. Check statuses for per-URL errors (API returns 200 with error statuses).",
|
|
138
136
|
input: ExaGetContentsInput,
|
|
139
137
|
output: ExaGetContentsOutput,
|
|
140
|
-
credentials: [exaCredential],
|
|
141
138
|
async run(input, credentials) {
|
|
142
139
|
const client = createExaClient(credentials.exa.apiKey);
|
|
143
140
|
const body = {
|
|
@@ -172,13 +169,12 @@ const ExaGetContextOutput = z.object({
|
|
|
172
169
|
outputTokens: z.number().optional(),
|
|
173
170
|
costDollars: z.object({ total: z.number().optional() }).optional()
|
|
174
171
|
});
|
|
175
|
-
const exaGetContext =
|
|
172
|
+
const exaGetContext = exa.action({
|
|
176
173
|
slug: "exa-get-context",
|
|
177
174
|
name: "Exa Get Context",
|
|
178
175
|
description: "Exa Code — token-efficient documentation and code snippets for coding agents.",
|
|
179
176
|
input: ExaGetContextInput,
|
|
180
177
|
output: ExaGetContextOutput,
|
|
181
|
-
credentials: [exaCredential],
|
|
182
178
|
async run(input, credentials) {
|
|
183
179
|
const response = await createExaClient(credentials.exa.apiKey).context({
|
|
184
180
|
query: input.query,
|
|
@@ -232,13 +228,12 @@ const ExaSearchOutput = z.object({
|
|
|
232
228
|
results: z.array(exaSearchResultSchema),
|
|
233
229
|
costDollars: z.object({ total: z.number().optional() }).optional()
|
|
234
230
|
});
|
|
235
|
-
const exaSearch =
|
|
231
|
+
const exaSearch = exa.action({
|
|
236
232
|
slug: "exa-search",
|
|
237
233
|
name: "Exa Search",
|
|
238
234
|
description: "Search the web with Exa. Supports categories (company, people, news, research paper, etc.), filters, and content modes.",
|
|
239
235
|
input: ExaSearchInput,
|
|
240
236
|
output: ExaSearchOutput,
|
|
241
|
-
credentials: [exaCredential],
|
|
242
237
|
async run(input, credentials) {
|
|
243
238
|
const client = createExaClient(credentials.exa.apiKey);
|
|
244
239
|
const body = {
|
|
@@ -309,13 +304,12 @@ const ExaSearchStructuredOutput = z.object({
|
|
|
309
304
|
}).optional(),
|
|
310
305
|
costDollars: z.object({ total: z.number().optional() }).optional()
|
|
311
306
|
});
|
|
312
|
-
const exaSearchStructured =
|
|
307
|
+
const exaSearchStructured = exa.action({
|
|
313
308
|
slug: "exa-search-structured",
|
|
314
309
|
name: "Exa Structured Search",
|
|
315
310
|
description: "Exa search with outputSchema for grounded structured JSON synthesis across sources.",
|
|
316
311
|
input: ExaSearchStructuredInput,
|
|
317
312
|
output: ExaSearchStructuredOutput,
|
|
318
|
-
credentials: [exaCredential],
|
|
319
313
|
async run(input, credentials) {
|
|
320
314
|
const client = createExaClient(credentials.exa.apiKey);
|
|
321
315
|
const body = {
|
|
@@ -352,4 +346,4 @@ const exaSearchStructured = defineAction({
|
|
|
352
346
|
//#endregion
|
|
353
347
|
export { ExaSearchOutput as a, ExaGetContextOutput as c, ExaGetContentsOutput as d, exaGetContents as f, exaAnswer as h, ExaSearchInput as i, exaGetContext as l, ExaAnswerOutput as m, ExaSearchStructuredOutput as n, exaSearch as o, ExaAnswerInput as p, exaSearchStructured as r, ExaGetContextInput as s, ExaSearchStructuredInput as t, ExaGetContentsInput as u };
|
|
354
348
|
|
|
355
|
-
//# sourceMappingURL=actions-
|
|
349
|
+
//# sourceMappingURL=actions-CJq1Nyt_.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions-CJq1Nyt_.mjs","names":[],"sources":["../src/schemas.ts","../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const exaSearchTypeSchema = z.enum([\n \"instant\",\n \"fast\",\n \"auto\",\n \"deep-lite\",\n \"deep\",\n \"deep-reasoning\",\n]);\n\nexport const exaCategorySchema = z.enum([\n \"company\",\n \"people\",\n \"research paper\",\n \"news\",\n \"personal site\",\n \"financial report\",\n]);\n\nexport const exaSearchResultSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n highlights: z.array(z.string()).optional(),\n summary: z.string().nullable().optional(),\n entities: z.unknown().optional(),\n});\n\nexport const exaGroundingCitationSchema = z.object({\n url: z.string(),\n title: z.string().optional(),\n});\n\nexport const exaGroundingSchema = z.object({\n field: z.string(),\n citations: z.array(exaGroundingCitationSchema),\n confidence: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n});\n\nexport const exaContentStatusSchema = z.object({\n id: z.string(),\n status: z.enum([\"success\", \"error\"]),\n source: z.enum([\"cached\", \"crawled\"]).optional(),\n error: z\n .object({\n tag: z.string().optional(),\n httpStatusCode: z.number().optional(),\n })\n .optional(),\n});\n\nexport const exaCitationSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n});\n\nconst restrictedCategory = new Set([\"company\", \"people\"]);\n\nexport function assertCategoryFilters(\n category: z.infer<typeof exaCategorySchema> | undefined,\n filters: {\n excludeDomains?: string[] | undefined;\n startPublishedDate?: string | undefined;\n endPublishedDate?: string | undefined;\n },\n): void {\n if (!category || !restrictedCategory.has(category)) {\n return;\n }\n if (filters.excludeDomains?.length) {\n throw new Error(\"excludeDomains is not supported for company or people category searches\");\n }\n if (filters.startPublishedDate || filters.endPublishedDate) {\n throw new Error(\n \"published date filters are not supported for company or people category searches\",\n );\n }\n}\n\nexport function buildSearchContents(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> | undefined {\n const contents: Record<string, unknown> = {};\n if (input.highlights !== false) {\n contents.highlights = input.highlights === true ? true : { maxCharacters: 4000 };\n }\n if (input.text) {\n contents.text = true;\n }\n if (input.summary) {\n contents.summary = true;\n }\n return Object.keys(contents).length > 0 ? contents : undefined;\n}\n\nexport function buildContentsOptions(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> {\n const body: Record<string, unknown> = {};\n if (input.highlights) {\n body.highlights = typeof input.highlights === \"boolean\" ? true : input.highlights;\n }\n if (input.text) {\n body.text = true;\n }\n if (input.summary) {\n body.summary = true;\n }\n if (!Object.keys(body).length) {\n body.highlights = { maxCharacters: 4000 };\n }\n return body;\n}\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport { exaCitationSchema } from \"../schemas\";\n\nexport const ExaAnswerInput = z.object({\n query: z.string().describe(\"Natural-language question.\"),\n includeCitationText: z\n .boolean()\n .default(false)\n .describe(\"Include full text bodies on citations.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\"JSON Schema for structured answer output.\"),\n});\n\nexport const ExaAnswerOutput = z.object({\n requestId: z.string().optional(),\n answer: z.unknown(),\n citations: z.array(exaCitationSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaAnswer = exa.action({\n slug: \"exa-answer\",\n name: \"Exa Answer\",\n description: \"Search-backed grounded Q&A with citations.\",\n input: ExaAnswerInput,\n output: ExaAnswerOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n text: input.includeCitationText,\n };\n if (input.outputSchema) body.outputSchema = input.outputSchema;\n\n const response = (await client.answer(body)) as {\n requestId?: string;\n answer?: unknown;\n citations?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n answer: response.answer ?? null,\n citations: (response.citations ?? []).map((row) => exaCitationSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport { buildContentsOptions, exaContentStatusSchema, exaSearchResultSchema } from \"../schemas\";\n\nexport const ExaGetContentsInput = z.object({\n urls: z.array(z.string().url()).min(1).max(100).describe(\"URLs to extract content from.\"),\n highlights: z.boolean().optional().describe(\"Return token-efficient excerpts.\"),\n text: z.boolean().optional().describe(\"Return full page markdown.\"),\n summary: z.boolean().optional().describe(\"Return LLM summary per URL.\"),\n});\n\nexport const ExaGetContentsOutput = z.object({\n requestId: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n statuses: z.array(exaContentStatusSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContents = exa.action({\n slug: \"exa-get-contents\",\n name: \"Exa Get Contents\",\n description:\n \"Extract webpage content from known URLs. Check statuses for per-URL errors (API returns 200 with error statuses).\",\n input: ExaGetContentsInput,\n output: ExaGetContentsOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n urls: input.urls,\n ...buildContentsOptions({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n }),\n };\n\n const response = (await client.contents(body)) as {\n requestId?: string;\n results?: unknown[];\n statuses?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n statuses: (response.statuses ?? []).map((row) => exaContentStatusSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\n\nexport const ExaGetContextInput = z.object({\n query: z\n .string()\n .min(1)\n .max(2000)\n .describe(\"Code, API, or how-to question for Exa Code context.\"),\n tokensNum: z\n .union([z.number().int().min(50).max(100_000), z.literal(\"dynamic\")])\n .default(\"dynamic\")\n .describe(\"Max output tokens or dynamic sizing.\"),\n});\n\nexport const ExaGetContextOutput = z.object({\n requestId: z.string().optional(),\n query: z.string().optional(),\n response: z.string(),\n resultsCount: z.number().optional(),\n searchTime: z.number().optional(),\n outputTokens: z.number().optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContext = exa.action({\n slug: \"exa-get-context\",\n name: \"Exa Get Context\",\n description: \"Exa Code — token-efficient documentation and code snippets for coding agents.\",\n input: ExaGetContextInput,\n output: ExaGetContextOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const response = (await client.context({\n query: input.query,\n tokensNum: input.tokensNum,\n })) as {\n requestId?: string;\n query?: string;\n response?: string;\n resultsCount?: number;\n searchTime?: number;\n outputTokens?: number;\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n query: response.query,\n response: response.response ?? \"\",\n resultsCount: response.resultsCount,\n searchTime: response.searchTime,\n outputTokens: response.outputTokens,\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n type: exaSearchTypeSchema.default(\"auto\").describe(\"Search latency/depth profile.\"),\n category: exaCategorySchema\n .optional()\n .describe(\n \"Vertical index: company, people, research paper, news, personal site, financial report.\",\n ),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional().describe(\"ISO8601 published-after filter.\"),\n endPublishedDate: z.string().optional().describe(\"ISO8601 published-before filter.\"),\n userLocation: z\n .string()\n .length(2)\n .optional()\n .describe(\"Two-letter ISO country code for localized results.\"),\n additionalQueries: z\n .array(z.string())\n .max(10)\n .optional()\n .describe(\"Extra queries for deep search types only.\"),\n systemPrompt: z.string().optional().describe(\"Guides deep search planning.\"),\n highlights: z\n .boolean()\n .default(true)\n .describe(\"Return token-efficient page excerpts (recommended).\"),\n text: z.boolean().optional().describe(\"Include full page markdown text.\"),\n summary: z.boolean().optional().describe(\"Include LLM summary per result.\"),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearch = exa.action({\n slug: \"exa-search\",\n name: \"Exa Search\",\n description:\n \"Search the web with Exa. Supports categories (company, people, news, research paper, etc.), filters, and content modes.\",\n input: ExaSearchInput,\n output: ExaSearchOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.userLocation) body.userLocation = input.userLocation;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaGroundingSchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchStructuredInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .describe(\"JSON Schema object for structured synthesis output.\"),\n type: exaSearchTypeSchema\n .default(\"deep\")\n .describe(\"Prefer deep or deep-reasoning for synthesis.\"),\n category: exaCategorySchema.optional(),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional(),\n endPublishedDate: z.string().optional(),\n systemPrompt: z.string().optional(),\n additionalQueries: z.array(z.string()).max(10).optional(),\n highlights: z.boolean().default(true),\n text: z.boolean().optional(),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchStructuredOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n output: z\n .object({\n content: z.unknown(),\n grounding: z.array(exaGroundingSchema).optional(),\n })\n .optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearchStructured = exa.action({\n slug: \"exa-search-structured\",\n name: \"Exa Structured Search\",\n description:\n \"Exa search with outputSchema for grounded structured JSON synthesis across sources.\",\n input: ExaSearchStructuredInput,\n output: ExaSearchStructuredOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n outputSchema: input.outputSchema,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n output?: { content?: unknown; grounding?: unknown[] };\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n output: response.output\n ? {\n content: response.output.content,\n grounding: response.output.grounding?.map((g) => exaGroundingSchema.parse(g)),\n }\n : undefined,\n costDollars: response.costDollars,\n };\n },\n});\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const require_client = require("./client-DlwHA71b.cjs");
|
|
2
|
-
const
|
|
2
|
+
const require_app = require("./app-DMujvH6I.cjs");
|
|
3
3
|
let zod = require("zod");
|
|
4
|
-
let _keystrokehq_keystroke_action = require("@keystrokehq/keystroke/action");
|
|
5
4
|
//#region src/schemas.ts
|
|
6
5
|
const exaSearchTypeSchema = zod.z.enum([
|
|
7
6
|
"instant",
|
|
@@ -94,13 +93,12 @@ const ExaAnswerOutput = zod.z.object({
|
|
|
94
93
|
citations: zod.z.array(exaCitationSchema),
|
|
95
94
|
costDollars: zod.z.object({ total: zod.z.number().optional() }).optional()
|
|
96
95
|
});
|
|
97
|
-
const exaAnswer =
|
|
96
|
+
const exaAnswer = require_app.exa.action({
|
|
98
97
|
slug: "exa-answer",
|
|
99
98
|
name: "Exa Answer",
|
|
100
99
|
description: "Search-backed grounded Q&A with citations.",
|
|
101
100
|
input: ExaAnswerInput,
|
|
102
101
|
output: ExaAnswerOutput,
|
|
103
|
-
credentials: [require_credential.exaCredential],
|
|
104
102
|
async run(input, credentials) {
|
|
105
103
|
const client = require_client.createExaClient(credentials.exa.apiKey);
|
|
106
104
|
const body = {
|
|
@@ -131,13 +129,12 @@ const ExaGetContentsOutput = zod.z.object({
|
|
|
131
129
|
statuses: zod.z.array(exaContentStatusSchema),
|
|
132
130
|
costDollars: zod.z.object({ total: zod.z.number().optional() }).optional()
|
|
133
131
|
});
|
|
134
|
-
const exaGetContents =
|
|
132
|
+
const exaGetContents = require_app.exa.action({
|
|
135
133
|
slug: "exa-get-contents",
|
|
136
134
|
name: "Exa Get Contents",
|
|
137
135
|
description: "Extract webpage content from known URLs. Check statuses for per-URL errors (API returns 200 with error statuses).",
|
|
138
136
|
input: ExaGetContentsInput,
|
|
139
137
|
output: ExaGetContentsOutput,
|
|
140
|
-
credentials: [require_credential.exaCredential],
|
|
141
138
|
async run(input, credentials) {
|
|
142
139
|
const client = require_client.createExaClient(credentials.exa.apiKey);
|
|
143
140
|
const body = {
|
|
@@ -172,13 +169,12 @@ const ExaGetContextOutput = zod.z.object({
|
|
|
172
169
|
outputTokens: zod.z.number().optional(),
|
|
173
170
|
costDollars: zod.z.object({ total: zod.z.number().optional() }).optional()
|
|
174
171
|
});
|
|
175
|
-
const exaGetContext =
|
|
172
|
+
const exaGetContext = require_app.exa.action({
|
|
176
173
|
slug: "exa-get-context",
|
|
177
174
|
name: "Exa Get Context",
|
|
178
175
|
description: "Exa Code — token-efficient documentation and code snippets for coding agents.",
|
|
179
176
|
input: ExaGetContextInput,
|
|
180
177
|
output: ExaGetContextOutput,
|
|
181
|
-
credentials: [require_credential.exaCredential],
|
|
182
178
|
async run(input, credentials) {
|
|
183
179
|
const response = await require_client.createExaClient(credentials.exa.apiKey).context({
|
|
184
180
|
query: input.query,
|
|
@@ -232,13 +228,12 @@ const ExaSearchOutput = zod.z.object({
|
|
|
232
228
|
results: zod.z.array(exaSearchResultSchema),
|
|
233
229
|
costDollars: zod.z.object({ total: zod.z.number().optional() }).optional()
|
|
234
230
|
});
|
|
235
|
-
const exaSearch =
|
|
231
|
+
const exaSearch = require_app.exa.action({
|
|
236
232
|
slug: "exa-search",
|
|
237
233
|
name: "Exa Search",
|
|
238
234
|
description: "Search the web with Exa. Supports categories (company, people, news, research paper, etc.), filters, and content modes.",
|
|
239
235
|
input: ExaSearchInput,
|
|
240
236
|
output: ExaSearchOutput,
|
|
241
|
-
credentials: [require_credential.exaCredential],
|
|
242
237
|
async run(input, credentials) {
|
|
243
238
|
const client = require_client.createExaClient(credentials.exa.apiKey);
|
|
244
239
|
const body = {
|
|
@@ -309,13 +304,12 @@ const ExaSearchStructuredOutput = zod.z.object({
|
|
|
309
304
|
}).optional(),
|
|
310
305
|
costDollars: zod.z.object({ total: zod.z.number().optional() }).optional()
|
|
311
306
|
});
|
|
312
|
-
const exaSearchStructured =
|
|
307
|
+
const exaSearchStructured = require_app.exa.action({
|
|
313
308
|
slug: "exa-search-structured",
|
|
314
309
|
name: "Exa Structured Search",
|
|
315
310
|
description: "Exa search with outputSchema for grounded structured JSON synthesis across sources.",
|
|
316
311
|
input: ExaSearchStructuredInput,
|
|
317
312
|
output: ExaSearchStructuredOutput,
|
|
318
|
-
credentials: [require_credential.exaCredential],
|
|
319
313
|
async run(input, credentials) {
|
|
320
314
|
const client = require_client.createExaClient(credentials.exa.apiKey);
|
|
321
315
|
const body = {
|
|
@@ -441,4 +435,4 @@ Object.defineProperty(exports, "exaSearchStructured", {
|
|
|
441
435
|
}
|
|
442
436
|
});
|
|
443
437
|
|
|
444
|
-
//# sourceMappingURL=actions-
|
|
438
|
+
//# sourceMappingURL=actions-LoQVlbiT.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions-LoQVlbiT.cjs","names":["z","z","exa","createExaClient","z","exa","createExaClient","z","exa","createExaClient","z","exa","createExaClient","z","exa","createExaClient"],"sources":["../src/schemas.ts","../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const exaSearchTypeSchema = z.enum([\n \"instant\",\n \"fast\",\n \"auto\",\n \"deep-lite\",\n \"deep\",\n \"deep-reasoning\",\n]);\n\nexport const exaCategorySchema = z.enum([\n \"company\",\n \"people\",\n \"research paper\",\n \"news\",\n \"personal site\",\n \"financial report\",\n]);\n\nexport const exaSearchResultSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n highlights: z.array(z.string()).optional(),\n summary: z.string().nullable().optional(),\n entities: z.unknown().optional(),\n});\n\nexport const exaGroundingCitationSchema = z.object({\n url: z.string(),\n title: z.string().optional(),\n});\n\nexport const exaGroundingSchema = z.object({\n field: z.string(),\n citations: z.array(exaGroundingCitationSchema),\n confidence: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n});\n\nexport const exaContentStatusSchema = z.object({\n id: z.string(),\n status: z.enum([\"success\", \"error\"]),\n source: z.enum([\"cached\", \"crawled\"]).optional(),\n error: z\n .object({\n tag: z.string().optional(),\n httpStatusCode: z.number().optional(),\n })\n .optional(),\n});\n\nexport const exaCitationSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n});\n\nconst restrictedCategory = new Set([\"company\", \"people\"]);\n\nexport function assertCategoryFilters(\n category: z.infer<typeof exaCategorySchema> | undefined,\n filters: {\n excludeDomains?: string[] | undefined;\n startPublishedDate?: string | undefined;\n endPublishedDate?: string | undefined;\n },\n): void {\n if (!category || !restrictedCategory.has(category)) {\n return;\n }\n if (filters.excludeDomains?.length) {\n throw new Error(\"excludeDomains is not supported for company or people category searches\");\n }\n if (filters.startPublishedDate || filters.endPublishedDate) {\n throw new Error(\n \"published date filters are not supported for company or people category searches\",\n );\n }\n}\n\nexport function buildSearchContents(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> | undefined {\n const contents: Record<string, unknown> = {};\n if (input.highlights !== false) {\n contents.highlights = input.highlights === true ? true : { maxCharacters: 4000 };\n }\n if (input.text) {\n contents.text = true;\n }\n if (input.summary) {\n contents.summary = true;\n }\n return Object.keys(contents).length > 0 ? contents : undefined;\n}\n\nexport function buildContentsOptions(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> {\n const body: Record<string, unknown> = {};\n if (input.highlights) {\n body.highlights = typeof input.highlights === \"boolean\" ? true : input.highlights;\n }\n if (input.text) {\n body.text = true;\n }\n if (input.summary) {\n body.summary = true;\n }\n if (!Object.keys(body).length) {\n body.highlights = { maxCharacters: 4000 };\n }\n return body;\n}\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport { exaCitationSchema } from \"../schemas\";\n\nexport const ExaAnswerInput = z.object({\n query: z.string().describe(\"Natural-language question.\"),\n includeCitationText: z\n .boolean()\n .default(false)\n .describe(\"Include full text bodies on citations.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\"JSON Schema for structured answer output.\"),\n});\n\nexport const ExaAnswerOutput = z.object({\n requestId: z.string().optional(),\n answer: z.unknown(),\n citations: z.array(exaCitationSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaAnswer = exa.action({\n slug: \"exa-answer\",\n name: \"Exa Answer\",\n description: \"Search-backed grounded Q&A with citations.\",\n input: ExaAnswerInput,\n output: ExaAnswerOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n text: input.includeCitationText,\n };\n if (input.outputSchema) body.outputSchema = input.outputSchema;\n\n const response = (await client.answer(body)) as {\n requestId?: string;\n answer?: unknown;\n citations?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n answer: response.answer ?? null,\n citations: (response.citations ?? []).map((row) => exaCitationSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport { buildContentsOptions, exaContentStatusSchema, exaSearchResultSchema } from \"../schemas\";\n\nexport const ExaGetContentsInput = z.object({\n urls: z.array(z.string().url()).min(1).max(100).describe(\"URLs to extract content from.\"),\n highlights: z.boolean().optional().describe(\"Return token-efficient excerpts.\"),\n text: z.boolean().optional().describe(\"Return full page markdown.\"),\n summary: z.boolean().optional().describe(\"Return LLM summary per URL.\"),\n});\n\nexport const ExaGetContentsOutput = z.object({\n requestId: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n statuses: z.array(exaContentStatusSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContents = exa.action({\n slug: \"exa-get-contents\",\n name: \"Exa Get Contents\",\n description:\n \"Extract webpage content from known URLs. Check statuses for per-URL errors (API returns 200 with error statuses).\",\n input: ExaGetContentsInput,\n output: ExaGetContentsOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n urls: input.urls,\n ...buildContentsOptions({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n }),\n };\n\n const response = (await client.contents(body)) as {\n requestId?: string;\n results?: unknown[];\n statuses?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n statuses: (response.statuses ?? []).map((row) => exaContentStatusSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\n\nexport const ExaGetContextInput = z.object({\n query: z\n .string()\n .min(1)\n .max(2000)\n .describe(\"Code, API, or how-to question for Exa Code context.\"),\n tokensNum: z\n .union([z.number().int().min(50).max(100_000), z.literal(\"dynamic\")])\n .default(\"dynamic\")\n .describe(\"Max output tokens or dynamic sizing.\"),\n});\n\nexport const ExaGetContextOutput = z.object({\n requestId: z.string().optional(),\n query: z.string().optional(),\n response: z.string(),\n resultsCount: z.number().optional(),\n searchTime: z.number().optional(),\n outputTokens: z.number().optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContext = exa.action({\n slug: \"exa-get-context\",\n name: \"Exa Get Context\",\n description: \"Exa Code — token-efficient documentation and code snippets for coding agents.\",\n input: ExaGetContextInput,\n output: ExaGetContextOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const response = (await client.context({\n query: input.query,\n tokensNum: input.tokensNum,\n })) as {\n requestId?: string;\n query?: string;\n response?: string;\n resultsCount?: number;\n searchTime?: number;\n outputTokens?: number;\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n query: response.query,\n response: response.response ?? \"\",\n resultsCount: response.resultsCount,\n searchTime: response.searchTime,\n outputTokens: response.outputTokens,\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n type: exaSearchTypeSchema.default(\"auto\").describe(\"Search latency/depth profile.\"),\n category: exaCategorySchema\n .optional()\n .describe(\n \"Vertical index: company, people, research paper, news, personal site, financial report.\",\n ),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional().describe(\"ISO8601 published-after filter.\"),\n endPublishedDate: z.string().optional().describe(\"ISO8601 published-before filter.\"),\n userLocation: z\n .string()\n .length(2)\n .optional()\n .describe(\"Two-letter ISO country code for localized results.\"),\n additionalQueries: z\n .array(z.string())\n .max(10)\n .optional()\n .describe(\"Extra queries for deep search types only.\"),\n systemPrompt: z.string().optional().describe(\"Guides deep search planning.\"),\n highlights: z\n .boolean()\n .default(true)\n .describe(\"Return token-efficient page excerpts (recommended).\"),\n text: z.boolean().optional().describe(\"Include full page markdown text.\"),\n summary: z.boolean().optional().describe(\"Include LLM summary per result.\"),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearch = exa.action({\n slug: \"exa-search\",\n name: \"Exa Search\",\n description:\n \"Search the web with Exa. Supports categories (company, people, news, research paper, etc.), filters, and content modes.\",\n input: ExaSearchInput,\n output: ExaSearchOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.userLocation) body.userLocation = input.userLocation;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { z } from \"zod\";\nimport { exa } from \"../app\";\nimport { createExaClient } from \"../client\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaGroundingSchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchStructuredInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .describe(\"JSON Schema object for structured synthesis output.\"),\n type: exaSearchTypeSchema\n .default(\"deep\")\n .describe(\"Prefer deep or deep-reasoning for synthesis.\"),\n category: exaCategorySchema.optional(),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional(),\n endPublishedDate: z.string().optional(),\n systemPrompt: z.string().optional(),\n additionalQueries: z.array(z.string()).max(10).optional(),\n highlights: z.boolean().default(true),\n text: z.boolean().optional(),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchStructuredOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n output: z\n .object({\n content: z.unknown(),\n grounding: z.array(exaGroundingSchema).optional(),\n })\n .optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearchStructured = exa.action({\n slug: \"exa-search-structured\",\n name: \"Exa Structured Search\",\n description:\n \"Exa search with outputSchema for grounded structured JSON synthesis across sources.\",\n input: ExaSearchStructuredInput,\n output: ExaSearchStructuredOutput,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n outputSchema: input.outputSchema,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n output?: { content?: unknown; grounding?: unknown[] };\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n output: response.output\n ? {\n content: response.output.content,\n grounding: response.output.grounding?.map((g) => exaGroundingSchema.parse(g)),\n }\n : undefined,\n costDollars: response.costDollars,\n };\n },\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { defineApp } from "@keystrokehq/keystroke/app";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
//#region src/app.ts
|
|
4
|
+
/** Exa app — one static `apiKey` credential, actions defined via `exa.action(...)`. */
|
|
5
|
+
const exa = defineApp({
|
|
6
|
+
slug: "exa",
|
|
7
|
+
auth: "api_key",
|
|
8
|
+
credential: { apiKey: z.string() }
|
|
9
|
+
});
|
|
10
|
+
/** @deprecated Use `exa.credential`. */
|
|
11
|
+
const exaCredential = exa.credential;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { exaCredential as n, exa as t };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=app-CBLUruR0.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-CBLUruR0.mjs","names":[],"sources":["../src/app.ts"],"sourcesContent":["import { defineApp } from \"@keystrokehq/keystroke/app\";\nimport { z } from \"zod\";\n\n/** Exa app — one static `apiKey` credential, actions defined via `exa.action(...)`. */\nexport const exa = defineApp({\n slug: \"exa\",\n auth: \"api_key\",\n credential: { apiKey: z.string() },\n});\n\n/** @deprecated Use `exa.credential`. */\nexport const exaCredential = exa.credential;\n"],"mappings":";;;;AAIA,MAAa,MAAM,UAAU;CAC3B,MAAM;CACN,MAAM;CACN,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE;AACnC,CAAC;;AAGD,MAAa,gBAAgB,IAAI"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
let _keystrokehq_keystroke_app = require("@keystrokehq/keystroke/app");
|
|
2
|
+
let zod = require("zod");
|
|
3
|
+
//#region src/app.ts
|
|
4
|
+
/** Exa app — one static `apiKey` credential, actions defined via `exa.action(...)`. */
|
|
5
|
+
const exa = (0, _keystrokehq_keystroke_app.defineApp)({
|
|
6
|
+
slug: "exa",
|
|
7
|
+
auth: "api_key",
|
|
8
|
+
credential: { apiKey: zod.z.string() }
|
|
9
|
+
});
|
|
10
|
+
/** @deprecated Use `exa.credential`. */
|
|
11
|
+
const exaCredential = exa.credential;
|
|
12
|
+
//#endregion
|
|
13
|
+
Object.defineProperty(exports, "exa", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function() {
|
|
16
|
+
return exa;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "exaCredential", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function() {
|
|
22
|
+
return exaCredential;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=app-DMujvH6I.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-DMujvH6I.cjs","names":["z"],"sources":["../src/app.ts"],"sourcesContent":["import { defineApp } from \"@keystrokehq/keystroke/app\";\nimport { z } from \"zod\";\n\n/** Exa app — one static `apiKey` credential, actions defined via `exa.action(...)`. */\nexport const exa = defineApp({\n slug: \"exa\",\n auth: \"api_key\",\n credential: { apiKey: z.string() },\n});\n\n/** @deprecated Use `exa.credential`. */\nexport const exaCredential = exa.credential;\n"],"mappings":";;;;AAIA,MAAa,OAAA,GAAA,2BAAA,WAAgB;CAC3B,MAAM;CACN,MAAM;CACN,YAAY,EAAE,QAAQA,IAAAA,EAAE,OAAO,EAAE;AACnC,CAAC;;AAGD,MAAa,gBAAgB,IAAI"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-BwCGHs6v.d.cts","names":[],"sources":["../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index-BwCGHs6v.d.cts","names":[],"sources":["../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"mappings":";;;cAKa,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;cAYd,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;cAOf,SAAA,gCAAS,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;cCnBT,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;cAOnB,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAOpB,cAAA,gCAAc,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCfd,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;cAYlB,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;cAUnB,aAAA,gCAAa,wBAAA;;;;;;;;;;;;;;;;;;;;cCfb,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Cd,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;cAOf,SAAA,gCAAS,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCrDT,wBAAA,EAAwB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmCxB,yBAAA,EAAyB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAazB,mBAAA,gCAAmB,wBAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-BwCGHs6v.d.mts","names":[],"sources":["../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index-BwCGHs6v.d.mts","names":[],"sources":["../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"mappings":";;;cAKa,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;cAYd,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;cAOf,SAAA,gCAAS,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;cCnBT,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;cAOnB,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAOpB,cAAA,gCAAc,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCfd,kBAAA,EAAkB,CAAA,CAAA,SAAA;;;;cAYlB,mBAAA,EAAmB,CAAA,CAAA,SAAA;;;;;;;;;;;cAUnB,aAAA,gCAAa,wBAAA;;;;;;;;;;;;;;;;;;;;cCfb,cAAA,EAAc,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+Cd,eAAA,EAAe,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;cAOf,SAAA,gCAAS,wBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCrDT,wBAAA,EAAwB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmCxB,yBAAA,EAAyB,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAazB,mBAAA,gCAAmB,wBAAA"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_client = require("./client-DlwHA71b.cjs");
|
|
3
|
-
const
|
|
4
|
-
const require_actions = require("./actions-
|
|
3
|
+
const require_app = require("./app-DMujvH6I.cjs");
|
|
4
|
+
const require_actions = require("./actions-LoQVlbiT.cjs");
|
|
5
5
|
const require_mcp = require("./mcp.cjs");
|
|
6
6
|
exports.createExaClient = require_client.createExaClient;
|
|
7
|
+
exports.exa = require_app.exa;
|
|
7
8
|
exports.exaAnswer = require_actions.exaAnswer;
|
|
8
|
-
exports.exaCredential =
|
|
9
|
+
exports.exaCredential = require_app.exaCredential;
|
|
9
10
|
exports.exaGetContents = require_actions.exaGetContents;
|
|
10
11
|
exports.exaGetContext = require_actions.exaGetContext;
|
|
11
12
|
exports.exaMcp = require_mcp.exaMcp;
|
package/dist/index.d.cts
CHANGED
|
@@ -3,10 +3,15 @@ import { CreateExaClientOptions, ExaClient, createExaClient } from "./client.cjs
|
|
|
3
3
|
import { exaMcp, exaSearchMcp, exaWebsetsMcp } from "./mcp.cjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/app.d.ts
|
|
7
|
+
/** Exa app — one static `apiKey` credential, actions defined via `exa.action(...)`. */
|
|
8
|
+
declare const exa: import("@keystrokehq/app").App<import("@keystrokehq/shared").Credential<"exa", z.ZodObject<{
|
|
9
|
+
apiKey: z.ZodString;
|
|
10
|
+
}, z.core.$strip>>>;
|
|
11
|
+
/** @deprecated Use `exa.credential`. */
|
|
7
12
|
declare const exaCredential: import("@keystrokehq/shared").Credential<"exa", z.ZodObject<{
|
|
8
13
|
apiKey: z.ZodString;
|
|
9
14
|
}, z.core.$strip>>;
|
|
10
15
|
//#endregion
|
|
11
|
-
export { type CreateExaClientOptions, type ExaClient, createExaClient, exaAnswer, exaCredential, exaGetContents, exaGetContext, exaMcp, exaSearch, exaSearchMcp, exaSearchStructured, exaWebsetsMcp };
|
|
16
|
+
export { type CreateExaClientOptions, type ExaClient, createExaClient, exa, exaAnswer, exaCredential, exaGetContents, exaGetContext, exaMcp, exaSearch, exaSearchMcp, exaSearchStructured, exaWebsetsMcp };
|
|
12
17
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/app.ts"],"mappings":";;;;;;;cAIa,GAAA,6BAAG,GAAA,+BAAA,UAAA,QAAA,CAAA,CAAA,SAAA;;;;cAOH,aAAA,gCAAa,UAAA,QAAA,CAAA,CAAA,SAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -3,10 +3,15 @@ import { CreateExaClientOptions, ExaClient, createExaClient } from "./client.mjs
|
|
|
3
3
|
import { exaMcp, exaSearchMcp, exaWebsetsMcp } from "./mcp.mjs";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/app.d.ts
|
|
7
|
+
/** Exa app — one static `apiKey` credential, actions defined via `exa.action(...)`. */
|
|
8
|
+
declare const exa: import("@keystrokehq/app").App<import("@keystrokehq/shared").Credential<"exa", z.ZodObject<{
|
|
9
|
+
apiKey: z.ZodString;
|
|
10
|
+
}, z.core.$strip>>>;
|
|
11
|
+
/** @deprecated Use `exa.credential`. */
|
|
7
12
|
declare const exaCredential: import("@keystrokehq/shared").Credential<"exa", z.ZodObject<{
|
|
8
13
|
apiKey: z.ZodString;
|
|
9
14
|
}, z.core.$strip>>;
|
|
10
15
|
//#endregion
|
|
11
|
-
export { type CreateExaClientOptions, type ExaClient, createExaClient, exaAnswer, exaCredential, exaGetContents, exaGetContext, exaMcp, exaSearch, exaSearchMcp, exaSearchStructured, exaWebsetsMcp };
|
|
16
|
+
export { type CreateExaClientOptions, type ExaClient, createExaClient, exa, exaAnswer, exaCredential, exaGetContents, exaGetContext, exaMcp, exaSearch, exaSearchMcp, exaSearchStructured, exaWebsetsMcp };
|
|
12
17
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/app.ts"],"mappings":";;;;;;;cAIa,GAAA,6BAAG,GAAA,+BAAA,UAAA,QAAA,CAAA,CAAA,SAAA;;;;cAOH,aAAA,gCAAa,UAAA,QAAA,CAAA,CAAA,SAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { n as exaCredential, t as exa } from "./app-CBLUruR0.mjs";
|
|
2
2
|
import { createExaClient } from "./client.mjs";
|
|
3
|
-
import { f as exaGetContents, h as exaAnswer, l as exaGetContext, o as exaSearch, r as exaSearchStructured } from "./actions-
|
|
3
|
+
import { f as exaGetContents, h as exaAnswer, l as exaGetContext, o as exaSearch, r as exaSearchStructured } from "./actions-CJq1Nyt_.mjs";
|
|
4
4
|
import { exaMcp, exaSearchMcp, exaWebsetsMcp } from "./mcp.mjs";
|
|
5
|
-
export { createExaClient, exaAnswer, exaCredential, exaGetContents, exaGetContext, exaMcp, exaSearch, exaSearchMcp, exaSearchStructured, exaWebsetsMcp };
|
|
5
|
+
export { createExaClient, exa, exaAnswer, exaCredential, exaGetContents, exaGetContext, exaMcp, exaSearch, exaSearchMcp, exaSearchStructured, exaWebsetsMcp };
|
package/dist/mcp.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
2
|
+
const require_app = require("./app-DMujvH6I.cjs");
|
|
3
3
|
let _keystrokehq_credentials = require("@keystrokehq/credentials");
|
|
4
4
|
//#region src/mcp.ts
|
|
5
5
|
const EXA_SEARCH_MCP_URL = "https://mcp.exa.ai/mcp";
|
|
@@ -16,7 +16,7 @@ const exaSearchMcp = (0, _keystrokehq_credentials.defineMcp)({
|
|
|
16
16
|
type: "http",
|
|
17
17
|
url: EXA_SEARCH_MCP_URL
|
|
18
18
|
},
|
|
19
|
-
credentials: [
|
|
19
|
+
credentials: [require_app.exa.credential],
|
|
20
20
|
auth: (credentials) => ({ headers: { "x-api-key": credentials.exa.apiKey } }),
|
|
21
21
|
declaredTools: [{
|
|
22
22
|
name: "web_search_exa",
|
|
@@ -38,7 +38,7 @@ const exaWebsetsMcp = (0, _keystrokehq_credentials.defineMcp)({
|
|
|
38
38
|
type: "http",
|
|
39
39
|
url: EXA_WEBSETS_MCP_URL
|
|
40
40
|
},
|
|
41
|
-
credentials: [
|
|
41
|
+
credentials: [require_app.exa.credential],
|
|
42
42
|
auth: (credentials) => ({ searchParams: { exaApiKey: credentials.exa.apiKey } }),
|
|
43
43
|
declaredTools: [{
|
|
44
44
|
name: "list_websets",
|
package/dist/mcp.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.cjs","names":["
|
|
1
|
+
{"version":3,"file":"mcp.cjs","names":["exa"],"sources":["../src/mcp.ts"],"sourcesContent":["import { defineMcp } from \"@keystrokehq/credentials\";\nimport { exa } from \"./app\";\n\nconst EXA_SEARCH_MCP_URL = \"https://mcp.exa.ai/mcp\";\nconst EXA_WEBSETS_MCP_URL = \"https://websetsmcp.exa.ai/mcp\";\n\nconst objectSchema = { type: \"object\", properties: {} } as const;\n\n/** [Exa Web Search MCP](https://exa.ai/docs/reference/exa-mcp) — `web_search_exa`, `web_fetch_exa`, etc. */\nexport const exaSearchMcp = defineMcp({\n key: \"exa\",\n name: \"Exa Search\",\n transport: { type: \"http\", url: EXA_SEARCH_MCP_URL },\n credentials: [exa.credential],\n auth: (credentials) => ({\n headers: { \"x-api-key\": credentials.exa.apiKey },\n }),\n declaredTools: [\n {\n name: \"web_search_exa\",\n title: \"Web Search\",\n description: \"Search the web using Exa.\",\n inputSchema: objectSchema,\n },\n {\n name: \"web_fetch_exa\",\n title: \"Web Fetch\",\n description: \"Fetch a page using Exa.\",\n inputSchema: objectSchema,\n },\n ],\n});\n\n/** [Exa Websets MCP](https://exa.ai/docs/reference/websets-mcp) — collections, enrichments, imports. */\nexport const exaWebsetsMcp = defineMcp({\n key: \"exa-websets\",\n name: \"Exa Websets\",\n transport: { type: \"http\", url: EXA_WEBSETS_MCP_URL },\n credentials: [exa.credential],\n auth: (credentials) => ({\n searchParams: { exaApiKey: credentials.exa.apiKey },\n }),\n declaredTools: [\n {\n name: \"list_websets\",\n title: \"List Websets\",\n description: \"List Exa websets.\",\n inputSchema: objectSchema,\n },\n ],\n});\n\n/** @deprecated Use {@link exaSearchMcp}. */\nexport const exaMcp = exaSearchMcp;\n"],"mappings":";;;;AAGA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAE5B,MAAM,eAAe;CAAE,MAAM;CAAU,YAAY,CAAC;AAAE;;AAGtD,MAAa,gBAAA,GAAA,yBAAA,WAAyB;CACpC,KAAK;CACL,MAAM;CACN,WAAW;EAAE,MAAM;EAAQ,KAAK;CAAmB;CACnD,aAAa,CAACA,YAAAA,IAAI,UAAU;CAC5B,OAAO,iBAAiB,EACtB,SAAS,EAAE,aAAa,YAAY,IAAI,OAAO,EACjD;CACA,eAAe,CACb;EACE,MAAM;EACN,OAAO;EACP,aAAa;EACb,aAAa;CACf,GACA;EACE,MAAM;EACN,OAAO;EACP,aAAa;EACb,aAAa;CACf,CACF;AACF,CAAC;;AAGD,MAAa,iBAAA,GAAA,yBAAA,WAA0B;CACrC,KAAK;CACL,MAAM;CACN,WAAW;EAAE,MAAM;EAAQ,KAAK;CAAoB;CACpD,aAAa,CAACA,YAAAA,IAAI,UAAU;CAC5B,OAAO,iBAAiB,EACtB,cAAc,EAAE,WAAW,YAAY,IAAI,OAAO,EACpD;CACA,eAAe,CACb;EACE,MAAM;EACN,OAAO;EACP,aAAa;EACb,aAAa;CACf,CACF;AACF,CAAC;;AAGD,MAAa,SAAS"}
|
package/dist/mcp.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as
|
|
1
|
+
import { t as exa } from "./app-CBLUruR0.mjs";
|
|
2
2
|
import { defineMcp } from "@keystrokehq/credentials";
|
|
3
3
|
//#region src/mcp.ts
|
|
4
4
|
const EXA_SEARCH_MCP_URL = "https://mcp.exa.ai/mcp";
|
|
@@ -15,7 +15,7 @@ const exaSearchMcp = defineMcp({
|
|
|
15
15
|
type: "http",
|
|
16
16
|
url: EXA_SEARCH_MCP_URL
|
|
17
17
|
},
|
|
18
|
-
credentials: [
|
|
18
|
+
credentials: [exa.credential],
|
|
19
19
|
auth: (credentials) => ({ headers: { "x-api-key": credentials.exa.apiKey } }),
|
|
20
20
|
declaredTools: [{
|
|
21
21
|
name: "web_search_exa",
|
|
@@ -37,7 +37,7 @@ const exaWebsetsMcp = defineMcp({
|
|
|
37
37
|
type: "http",
|
|
38
38
|
url: EXA_WEBSETS_MCP_URL
|
|
39
39
|
},
|
|
40
|
-
credentials: [
|
|
40
|
+
credentials: [exa.credential],
|
|
41
41
|
auth: (credentials) => ({ searchParams: { exaApiKey: credentials.exa.apiKey } }),
|
|
42
42
|
declaredTools: [{
|
|
43
43
|
name: "list_websets",
|
package/dist/mcp.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.mjs","names":[],"sources":["../src/mcp.ts"],"sourcesContent":["import { defineMcp } from \"@keystrokehq/credentials\";\nimport {
|
|
1
|
+
{"version":3,"file":"mcp.mjs","names":[],"sources":["../src/mcp.ts"],"sourcesContent":["import { defineMcp } from \"@keystrokehq/credentials\";\nimport { exa } from \"./app\";\n\nconst EXA_SEARCH_MCP_URL = \"https://mcp.exa.ai/mcp\";\nconst EXA_WEBSETS_MCP_URL = \"https://websetsmcp.exa.ai/mcp\";\n\nconst objectSchema = { type: \"object\", properties: {} } as const;\n\n/** [Exa Web Search MCP](https://exa.ai/docs/reference/exa-mcp) — `web_search_exa`, `web_fetch_exa`, etc. */\nexport const exaSearchMcp = defineMcp({\n key: \"exa\",\n name: \"Exa Search\",\n transport: { type: \"http\", url: EXA_SEARCH_MCP_URL },\n credentials: [exa.credential],\n auth: (credentials) => ({\n headers: { \"x-api-key\": credentials.exa.apiKey },\n }),\n declaredTools: [\n {\n name: \"web_search_exa\",\n title: \"Web Search\",\n description: \"Search the web using Exa.\",\n inputSchema: objectSchema,\n },\n {\n name: \"web_fetch_exa\",\n title: \"Web Fetch\",\n description: \"Fetch a page using Exa.\",\n inputSchema: objectSchema,\n },\n ],\n});\n\n/** [Exa Websets MCP](https://exa.ai/docs/reference/websets-mcp) — collections, enrichments, imports. */\nexport const exaWebsetsMcp = defineMcp({\n key: \"exa-websets\",\n name: \"Exa Websets\",\n transport: { type: \"http\", url: EXA_WEBSETS_MCP_URL },\n credentials: [exa.credential],\n auth: (credentials) => ({\n searchParams: { exaApiKey: credentials.exa.apiKey },\n }),\n declaredTools: [\n {\n name: \"list_websets\",\n title: \"List Websets\",\n description: \"List Exa websets.\",\n inputSchema: objectSchema,\n },\n ],\n});\n\n/** @deprecated Use {@link exaSearchMcp}. */\nexport const exaMcp = exaSearchMcp;\n"],"mappings":";;;AAGA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAE5B,MAAM,eAAe;CAAE,MAAM;CAAU,YAAY,CAAC;AAAE;;AAGtD,MAAa,eAAe,UAAU;CACpC,KAAK;CACL,MAAM;CACN,WAAW;EAAE,MAAM;EAAQ,KAAK;CAAmB;CACnD,aAAa,CAAC,IAAI,UAAU;CAC5B,OAAO,iBAAiB,EACtB,SAAS,EAAE,aAAa,YAAY,IAAI,OAAO,EACjD;CACA,eAAe,CACb;EACE,MAAM;EACN,OAAO;EACP,aAAa;EACb,aAAa;CACf,GACA;EACE,MAAM;EACN,OAAO;EACP,aAAa;EACb,aAAa;CACf,CACF;AACF,CAAC;;AAGD,MAAa,gBAAgB,UAAU;CACrC,KAAK;CACL,MAAM;CACN,WAAW;EAAE,MAAM;EAAQ,KAAK;CAAoB;CACpD,aAAa,CAAC,IAAI,UAAU;CAC5B,OAAO,iBAAiB,EACtB,cAAc,EAAE,WAAW,YAAY,IAAI,OAAO,EACpD;CACA,eAAe,CACb;EACE,MAAM;EACN,OAAO;EACP,aAAa;EACb,aAAa;CACf,CACF;AACF,CAAC;;AAGD,MAAa,SAAS"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keystrokehq/exa",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.175",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/dallinbentley/keystroke.git",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"ky": "^2.0.2",
|
|
48
48
|
"zod": "^4.4.3",
|
|
49
|
-
"@keystrokehq/keystroke": "0.0.
|
|
49
|
+
"@keystrokehq/keystroke": "0.0.175"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/node": "^25.9.1",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions-Bog0HOWp.mjs","names":[],"sources":["../src/schemas.ts","../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const exaSearchTypeSchema = z.enum([\n \"instant\",\n \"fast\",\n \"auto\",\n \"deep-lite\",\n \"deep\",\n \"deep-reasoning\",\n]);\n\nexport const exaCategorySchema = z.enum([\n \"company\",\n \"people\",\n \"research paper\",\n \"news\",\n \"personal site\",\n \"financial report\",\n]);\n\nexport const exaSearchResultSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n highlights: z.array(z.string()).optional(),\n summary: z.string().nullable().optional(),\n entities: z.unknown().optional(),\n});\n\nexport const exaGroundingCitationSchema = z.object({\n url: z.string(),\n title: z.string().optional(),\n});\n\nexport const exaGroundingSchema = z.object({\n field: z.string(),\n citations: z.array(exaGroundingCitationSchema),\n confidence: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n});\n\nexport const exaContentStatusSchema = z.object({\n id: z.string(),\n status: z.enum([\"success\", \"error\"]),\n source: z.enum([\"cached\", \"crawled\"]).optional(),\n error: z\n .object({\n tag: z.string().optional(),\n httpStatusCode: z.number().optional(),\n })\n .optional(),\n});\n\nexport const exaCitationSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n});\n\nconst restrictedCategory = new Set([\"company\", \"people\"]);\n\nexport function assertCategoryFilters(\n category: z.infer<typeof exaCategorySchema> | undefined,\n filters: {\n excludeDomains?: string[] | undefined;\n startPublishedDate?: string | undefined;\n endPublishedDate?: string | undefined;\n },\n): void {\n if (!category || !restrictedCategory.has(category)) {\n return;\n }\n if (filters.excludeDomains?.length) {\n throw new Error(\"excludeDomains is not supported for company or people category searches\");\n }\n if (filters.startPublishedDate || filters.endPublishedDate) {\n throw new Error(\n \"published date filters are not supported for company or people category searches\",\n );\n }\n}\n\nexport function buildSearchContents(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> | undefined {\n const contents: Record<string, unknown> = {};\n if (input.highlights !== false) {\n contents.highlights = input.highlights === true ? true : { maxCharacters: 4000 };\n }\n if (input.text) {\n contents.text = true;\n }\n if (input.summary) {\n contents.summary = true;\n }\n return Object.keys(contents).length > 0 ? contents : undefined;\n}\n\nexport function buildContentsOptions(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> {\n const body: Record<string, unknown> = {};\n if (input.highlights) {\n body.highlights = typeof input.highlights === \"boolean\" ? true : input.highlights;\n }\n if (input.text) {\n body.text = true;\n }\n if (input.summary) {\n body.summary = true;\n }\n if (!Object.keys(body).length) {\n body.highlights = { maxCharacters: 4000 };\n }\n return body;\n}\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport { exaCitationSchema } from \"../schemas\";\n\nexport const ExaAnswerInput = z.object({\n query: z.string().describe(\"Natural-language question.\"),\n includeCitationText: z\n .boolean()\n .default(false)\n .describe(\"Include full text bodies on citations.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\"JSON Schema for structured answer output.\"),\n});\n\nexport const ExaAnswerOutput = z.object({\n requestId: z.string().optional(),\n answer: z.unknown(),\n citations: z.array(exaCitationSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaAnswer = defineAction({\n slug: \"exa-answer\",\n name: \"Exa Answer\",\n description: \"Search-backed grounded Q&A with citations.\",\n input: ExaAnswerInput,\n output: ExaAnswerOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n text: input.includeCitationText,\n };\n if (input.outputSchema) body.outputSchema = input.outputSchema;\n\n const response = (await client.answer(body)) as {\n requestId?: string;\n answer?: unknown;\n citations?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n answer: response.answer ?? null,\n citations: (response.citations ?? []).map((row) => exaCitationSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport { buildContentsOptions, exaContentStatusSchema, exaSearchResultSchema } from \"../schemas\";\n\nexport const ExaGetContentsInput = z.object({\n urls: z.array(z.string().url()).min(1).max(100).describe(\"URLs to extract content from.\"),\n highlights: z.boolean().optional().describe(\"Return token-efficient excerpts.\"),\n text: z.boolean().optional().describe(\"Return full page markdown.\"),\n summary: z.boolean().optional().describe(\"Return LLM summary per URL.\"),\n});\n\nexport const ExaGetContentsOutput = z.object({\n requestId: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n statuses: z.array(exaContentStatusSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContents = defineAction({\n slug: \"exa-get-contents\",\n name: \"Exa Get Contents\",\n description:\n \"Extract webpage content from known URLs. Check statuses for per-URL errors (API returns 200 with error statuses).\",\n input: ExaGetContentsInput,\n output: ExaGetContentsOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n urls: input.urls,\n ...buildContentsOptions({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n }),\n };\n\n const response = (await client.contents(body)) as {\n requestId?: string;\n results?: unknown[];\n statuses?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n statuses: (response.statuses ?? []).map((row) => exaContentStatusSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\n\nexport const ExaGetContextInput = z.object({\n query: z\n .string()\n .min(1)\n .max(2000)\n .describe(\"Code, API, or how-to question for Exa Code context.\"),\n tokensNum: z\n .union([z.number().int().min(50).max(100_000), z.literal(\"dynamic\")])\n .default(\"dynamic\")\n .describe(\"Max output tokens or dynamic sizing.\"),\n});\n\nexport const ExaGetContextOutput = z.object({\n requestId: z.string().optional(),\n query: z.string().optional(),\n response: z.string(),\n resultsCount: z.number().optional(),\n searchTime: z.number().optional(),\n outputTokens: z.number().optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContext = defineAction({\n slug: \"exa-get-context\",\n name: \"Exa Get Context\",\n description: \"Exa Code — token-efficient documentation and code snippets for coding agents.\",\n input: ExaGetContextInput,\n output: ExaGetContextOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const response = (await client.context({\n query: input.query,\n tokensNum: input.tokensNum,\n })) as {\n requestId?: string;\n query?: string;\n response?: string;\n resultsCount?: number;\n searchTime?: number;\n outputTokens?: number;\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n query: response.query,\n response: response.response ?? \"\",\n resultsCount: response.resultsCount,\n searchTime: response.searchTime,\n outputTokens: response.outputTokens,\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n type: exaSearchTypeSchema.default(\"auto\").describe(\"Search latency/depth profile.\"),\n category: exaCategorySchema\n .optional()\n .describe(\n \"Vertical index: company, people, research paper, news, personal site, financial report.\",\n ),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional().describe(\"ISO8601 published-after filter.\"),\n endPublishedDate: z.string().optional().describe(\"ISO8601 published-before filter.\"),\n userLocation: z\n .string()\n .length(2)\n .optional()\n .describe(\"Two-letter ISO country code for localized results.\"),\n additionalQueries: z\n .array(z.string())\n .max(10)\n .optional()\n .describe(\"Extra queries for deep search types only.\"),\n systemPrompt: z.string().optional().describe(\"Guides deep search planning.\"),\n highlights: z\n .boolean()\n .default(true)\n .describe(\"Return token-efficient page excerpts (recommended).\"),\n text: z.boolean().optional().describe(\"Include full page markdown text.\"),\n summary: z.boolean().optional().describe(\"Include LLM summary per result.\"),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearch = defineAction({\n slug: \"exa-search\",\n name: \"Exa Search\",\n description:\n \"Search the web with Exa. Supports categories (company, people, news, research paper, etc.), filters, and content modes.\",\n input: ExaSearchInput,\n output: ExaSearchOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.userLocation) body.userLocation = input.userLocation;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaGroundingSchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchStructuredInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .describe(\"JSON Schema object for structured synthesis output.\"),\n type: exaSearchTypeSchema\n .default(\"deep\")\n .describe(\"Prefer deep or deep-reasoning for synthesis.\"),\n category: exaCategorySchema.optional(),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional(),\n endPublishedDate: z.string().optional(),\n systemPrompt: z.string().optional(),\n additionalQueries: z.array(z.string()).max(10).optional(),\n highlights: z.boolean().default(true),\n text: z.boolean().optional(),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchStructuredOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n output: z\n .object({\n content: z.unknown(),\n grounding: z.array(exaGroundingSchema).optional(),\n })\n .optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearchStructured = defineAction({\n slug: \"exa-search-structured\",\n name: \"Exa Structured Search\",\n description:\n \"Exa search with outputSchema for grounded structured JSON synthesis across sources.\",\n input: ExaSearchStructuredInput,\n output: ExaSearchStructuredOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n outputSchema: input.outputSchema,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n output?: { content?: unknown; grounding?: unknown[] };\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n output: response.output\n ? {\n content: response.output.content,\n grounding: response.output.grounding?.map((g) => exaGroundingSchema.parse(g)),\n }\n : undefined,\n costDollars: response.costDollars,\n };\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions-CUxYXblx.cjs","names":["z","z","exaCredential","createExaClient","z","exaCredential","createExaClient","z","exaCredential","createExaClient","z","exaCredential","createExaClient","z","exaCredential","createExaClient"],"sources":["../src/schemas.ts","../src/actions/answer.ts","../src/actions/get-contents.ts","../src/actions/get-context.ts","../src/actions/search.ts","../src/actions/search-structured.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const exaSearchTypeSchema = z.enum([\n \"instant\",\n \"fast\",\n \"auto\",\n \"deep-lite\",\n \"deep\",\n \"deep-reasoning\",\n]);\n\nexport const exaCategorySchema = z.enum([\n \"company\",\n \"people\",\n \"research paper\",\n \"news\",\n \"personal site\",\n \"financial report\",\n]);\n\nexport const exaSearchResultSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n highlights: z.array(z.string()).optional(),\n summary: z.string().nullable().optional(),\n entities: z.unknown().optional(),\n});\n\nexport const exaGroundingCitationSchema = z.object({\n url: z.string(),\n title: z.string().optional(),\n});\n\nexport const exaGroundingSchema = z.object({\n field: z.string(),\n citations: z.array(exaGroundingCitationSchema),\n confidence: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n});\n\nexport const exaContentStatusSchema = z.object({\n id: z.string(),\n status: z.enum([\"success\", \"error\"]),\n source: z.enum([\"cached\", \"crawled\"]).optional(),\n error: z\n .object({\n tag: z.string().optional(),\n httpStatusCode: z.number().optional(),\n })\n .optional(),\n});\n\nexport const exaCitationSchema = z.object({\n title: z.string().nullable().optional(),\n url: z.string(),\n id: z.string().optional(),\n publishedDate: z.string().nullable().optional(),\n author: z.string().nullable().optional(),\n text: z.string().nullable().optional(),\n});\n\nconst restrictedCategory = new Set([\"company\", \"people\"]);\n\nexport function assertCategoryFilters(\n category: z.infer<typeof exaCategorySchema> | undefined,\n filters: {\n excludeDomains?: string[] | undefined;\n startPublishedDate?: string | undefined;\n endPublishedDate?: string | undefined;\n },\n): void {\n if (!category || !restrictedCategory.has(category)) {\n return;\n }\n if (filters.excludeDomains?.length) {\n throw new Error(\"excludeDomains is not supported for company or people category searches\");\n }\n if (filters.startPublishedDate || filters.endPublishedDate) {\n throw new Error(\n \"published date filters are not supported for company or people category searches\",\n );\n }\n}\n\nexport function buildSearchContents(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> | undefined {\n const contents: Record<string, unknown> = {};\n if (input.highlights !== false) {\n contents.highlights = input.highlights === true ? true : { maxCharacters: 4000 };\n }\n if (input.text) {\n contents.text = true;\n }\n if (input.summary) {\n contents.summary = true;\n }\n return Object.keys(contents).length > 0 ? contents : undefined;\n}\n\nexport function buildContentsOptions(input: {\n highlights?: boolean;\n text?: boolean;\n summary?: boolean;\n}): Record<string, unknown> {\n const body: Record<string, unknown> = {};\n if (input.highlights) {\n body.highlights = typeof input.highlights === \"boolean\" ? true : input.highlights;\n }\n if (input.text) {\n body.text = true;\n }\n if (input.summary) {\n body.summary = true;\n }\n if (!Object.keys(body).length) {\n body.highlights = { maxCharacters: 4000 };\n }\n return body;\n}\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport { exaCitationSchema } from \"../schemas\";\n\nexport const ExaAnswerInput = z.object({\n query: z.string().describe(\"Natural-language question.\"),\n includeCitationText: z\n .boolean()\n .default(false)\n .describe(\"Include full text bodies on citations.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .optional()\n .describe(\"JSON Schema for structured answer output.\"),\n});\n\nexport const ExaAnswerOutput = z.object({\n requestId: z.string().optional(),\n answer: z.unknown(),\n citations: z.array(exaCitationSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaAnswer = defineAction({\n slug: \"exa-answer\",\n name: \"Exa Answer\",\n description: \"Search-backed grounded Q&A with citations.\",\n input: ExaAnswerInput,\n output: ExaAnswerOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n text: input.includeCitationText,\n };\n if (input.outputSchema) body.outputSchema = input.outputSchema;\n\n const response = (await client.answer(body)) as {\n requestId?: string;\n answer?: unknown;\n citations?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n answer: response.answer ?? null,\n citations: (response.citations ?? []).map((row) => exaCitationSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport { buildContentsOptions, exaContentStatusSchema, exaSearchResultSchema } from \"../schemas\";\n\nexport const ExaGetContentsInput = z.object({\n urls: z.array(z.string().url()).min(1).max(100).describe(\"URLs to extract content from.\"),\n highlights: z.boolean().optional().describe(\"Return token-efficient excerpts.\"),\n text: z.boolean().optional().describe(\"Return full page markdown.\"),\n summary: z.boolean().optional().describe(\"Return LLM summary per URL.\"),\n});\n\nexport const ExaGetContentsOutput = z.object({\n requestId: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n statuses: z.array(exaContentStatusSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContents = defineAction({\n slug: \"exa-get-contents\",\n name: \"Exa Get Contents\",\n description:\n \"Extract webpage content from known URLs. Check statuses for per-URL errors (API returns 200 with error statuses).\",\n input: ExaGetContentsInput,\n output: ExaGetContentsOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n urls: input.urls,\n ...buildContentsOptions({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n }),\n };\n\n const response = (await client.contents(body)) as {\n requestId?: string;\n results?: unknown[];\n statuses?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n statuses: (response.statuses ?? []).map((row) => exaContentStatusSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\n\nexport const ExaGetContextInput = z.object({\n query: z\n .string()\n .min(1)\n .max(2000)\n .describe(\"Code, API, or how-to question for Exa Code context.\"),\n tokensNum: z\n .union([z.number().int().min(50).max(100_000), z.literal(\"dynamic\")])\n .default(\"dynamic\")\n .describe(\"Max output tokens or dynamic sizing.\"),\n});\n\nexport const ExaGetContextOutput = z.object({\n requestId: z.string().optional(),\n query: z.string().optional(),\n response: z.string(),\n resultsCount: z.number().optional(),\n searchTime: z.number().optional(),\n outputTokens: z.number().optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaGetContext = defineAction({\n slug: \"exa-get-context\",\n name: \"Exa Get Context\",\n description: \"Exa Code — token-efficient documentation and code snippets for coding agents.\",\n input: ExaGetContextInput,\n output: ExaGetContextOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const response = (await client.context({\n query: input.query,\n tokensNum: input.tokensNum,\n })) as {\n requestId?: string;\n query?: string;\n response?: string;\n resultsCount?: number;\n searchTime?: number;\n outputTokens?: number;\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n query: response.query,\n response: response.response ?? \"\",\n resultsCount: response.resultsCount,\n searchTime: response.searchTime,\n outputTokens: response.outputTokens,\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n type: exaSearchTypeSchema.default(\"auto\").describe(\"Search latency/depth profile.\"),\n category: exaCategorySchema\n .optional()\n .describe(\n \"Vertical index: company, people, research paper, news, personal site, financial report.\",\n ),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional().describe(\"ISO8601 published-after filter.\"),\n endPublishedDate: z.string().optional().describe(\"ISO8601 published-before filter.\"),\n userLocation: z\n .string()\n .length(2)\n .optional()\n .describe(\"Two-letter ISO country code for localized results.\"),\n additionalQueries: z\n .array(z.string())\n .max(10)\n .optional()\n .describe(\"Extra queries for deep search types only.\"),\n systemPrompt: z.string().optional().describe(\"Guides deep search planning.\"),\n highlights: z\n .boolean()\n .default(true)\n .describe(\"Return token-efficient page excerpts (recommended).\"),\n text: z.boolean().optional().describe(\"Include full page markdown text.\"),\n summary: z.boolean().optional().describe(\"Include LLM summary per result.\"),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearch = defineAction({\n slug: \"exa-search\",\n name: \"Exa Search\",\n description:\n \"Search the web with Exa. Supports categories (company, people, news, research paper, etc.), filters, and content modes.\",\n input: ExaSearchInput,\n output: ExaSearchOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.userLocation) body.userLocation = input.userLocation;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n summary: input.summary,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n costDollars: response.costDollars,\n };\n },\n});\n","import { defineAction } from \"@keystrokehq/keystroke/action\";\nimport { z } from \"zod\";\nimport { createExaClient } from \"../client\";\nimport { exaCredential } from \"../credential\";\nimport {\n assertCategoryFilters,\n buildSearchContents,\n exaCategorySchema,\n exaGroundingSchema,\n exaSearchResultSchema,\n exaSearchTypeSchema,\n} from \"../schemas\";\n\nexport const ExaSearchStructuredInput = z\n .object({\n query: z.string().describe(\"Natural-language search query.\"),\n outputSchema: z\n .record(z.string(), z.unknown())\n .describe(\"JSON Schema object for structured synthesis output.\"),\n type: exaSearchTypeSchema\n .default(\"deep\")\n .describe(\"Prefer deep or deep-reasoning for synthesis.\"),\n category: exaCategorySchema.optional(),\n numResults: z.number().int().min(1).max(100).default(10),\n includeDomains: z.array(z.string()).max(1200).optional(),\n excludeDomains: z.array(z.string()).max(1200).optional(),\n startPublishedDate: z.string().optional(),\n endPublishedDate: z.string().optional(),\n systemPrompt: z.string().optional(),\n additionalQueries: z.array(z.string()).max(10).optional(),\n highlights: z.boolean().default(true),\n text: z.boolean().optional(),\n })\n .superRefine((input, ctx) => {\n try {\n assertCategoryFilters(input.category, {\n excludeDomains: input.excludeDomains,\n startPublishedDate: input.startPublishedDate,\n endPublishedDate: input.endPublishedDate,\n });\n } catch (error) {\n ctx.addIssue({\n code: \"custom\",\n message: error instanceof Error ? error.message : \"Invalid category filters\",\n });\n }\n });\n\nexport const ExaSearchStructuredOutput = z.object({\n requestId: z.string().optional(),\n searchType: z.string().optional(),\n results: z.array(exaSearchResultSchema),\n output: z\n .object({\n content: z.unknown(),\n grounding: z.array(exaGroundingSchema).optional(),\n })\n .optional(),\n costDollars: z.object({ total: z.number().optional() }).optional(),\n});\n\nexport const exaSearchStructured = defineAction({\n slug: \"exa-search-structured\",\n name: \"Exa Structured Search\",\n description:\n \"Exa search with outputSchema for grounded structured JSON synthesis across sources.\",\n input: ExaSearchStructuredInput,\n output: ExaSearchStructuredOutput,\n credentials: [exaCredential] as const,\n async run(input, credentials) {\n const client = createExaClient(credentials.exa.apiKey);\n\n const body: Record<string, unknown> = {\n query: input.query,\n type: input.type,\n numResults: input.numResults,\n outputSchema: input.outputSchema,\n };\n\n if (input.category) body.category = input.category;\n if (input.includeDomains?.length) body.includeDomains = input.includeDomains;\n if (input.excludeDomains?.length) body.excludeDomains = input.excludeDomains;\n if (input.startPublishedDate) body.startPublishedDate = input.startPublishedDate;\n if (input.endPublishedDate) body.endPublishedDate = input.endPublishedDate;\n if (input.systemPrompt) body.systemPrompt = input.systemPrompt;\n if (input.additionalQueries?.length) body.additionalQueries = input.additionalQueries;\n\n const contents = buildSearchContents({\n highlights: input.highlights,\n text: input.text,\n });\n if (contents) body.contents = contents;\n\n const response = (await client.search(body)) as {\n requestId?: string;\n searchType?: string;\n results?: unknown[];\n output?: { content?: unknown; grounding?: unknown[] };\n costDollars?: { total?: number };\n };\n\n return {\n requestId: response.requestId,\n searchType: response.searchType,\n results: (response.results ?? []).map((row) => exaSearchResultSchema.parse(row)),\n output: response.output\n ? {\n content: response.output.content,\n grounding: response.output.grounding?.map((g) => exaGroundingSchema.parse(g)),\n }\n : undefined,\n costDollars: response.costDollars,\n };\n },\n});\n"],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
let _keystrokehq_keystroke_credentials = require("@keystrokehq/keystroke/credentials");
|
|
2
|
-
let zod = require("zod");
|
|
3
|
-
//#region src/credential.ts
|
|
4
|
-
const exaCredential = (0, _keystrokehq_keystroke_credentials.defineCredential)({
|
|
5
|
-
key: "exa",
|
|
6
|
-
fields: { apiKey: zod.z.string() }
|
|
7
|
-
});
|
|
8
|
-
//#endregion
|
|
9
|
-
Object.defineProperty(exports, "exaCredential", {
|
|
10
|
-
enumerable: true,
|
|
11
|
-
get: function() {
|
|
12
|
-
return exaCredential;
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=credential-BWous9Uu.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credential-BWous9Uu.cjs","names":["z"],"sources":["../src/credential.ts"],"sourcesContent":["import { defineCredential } from \"@keystrokehq/keystroke/credentials\";\nimport { z } from \"zod\";\n\nexport const exaCredential = defineCredential({\n key: \"exa\",\n fields: { apiKey: z.string() },\n});\n"],"mappings":";;;AAGA,MAAa,iBAAA,GAAA,mCAAA,kBAAiC;CAC5C,KAAK;CACL,QAAQ,EAAE,QAAQA,IAAAA,EAAE,OAAO,EAAE;AAC/B,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { defineCredential } from "@keystrokehq/keystroke/credentials";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
//#region src/credential.ts
|
|
4
|
-
const exaCredential = defineCredential({
|
|
5
|
-
key: "exa",
|
|
6
|
-
fields: { apiKey: z.string() }
|
|
7
|
-
});
|
|
8
|
-
//#endregion
|
|
9
|
-
export { exaCredential as t };
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=credential-NfXyV_Vy.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"credential-NfXyV_Vy.mjs","names":[],"sources":["../src/credential.ts"],"sourcesContent":["import { defineCredential } from \"@keystrokehq/keystroke/credentials\";\nimport { z } from \"zod\";\n\nexport const exaCredential = defineCredential({\n key: \"exa\",\n fields: { apiKey: z.string() },\n});\n"],"mappings":";;;AAGA,MAAa,gBAAgB,iBAAiB;CAC5C,KAAK;CACL,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC/B,CAAC"}
|