@yourgpt/copilot-sdk 2.0.1 → 2.0.2-beta.2
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 +42 -0
- package/dist/{ThreadManager-JT0sqSSD.d.ts → ThreadManager-Dkp_eLty.d.ts} +1 -1
- package/dist/{ThreadManager-CUq5Ocu2.d.cts → ThreadManager-LfFRhr4e.d.cts} +1 -1
- package/dist/anthropic-6F5GRE3B.js +4 -0
- package/dist/anthropic-6F5GRE3B.js.map +1 -0
- package/dist/anthropic-DGalr_Fw.d.cts +17 -0
- package/dist/anthropic-DkCEDYOt.d.ts +17 -0
- package/dist/anthropic-NMTRABEH.cjs +21 -0
- package/dist/anthropic-NMTRABEH.cjs.map +1 -0
- package/dist/brave-DdnWb7Gb.d.cts +17 -0
- package/dist/brave-DsI9n7Wr.d.ts +17 -0
- package/dist/brave-OYKCOZEM.cjs +21 -0
- package/dist/brave-OYKCOZEM.cjs.map +1 -0
- package/dist/brave-XSASGGH2.js +4 -0
- package/dist/brave-XSASGGH2.js.map +1 -0
- package/dist/chunk-2FAWEBZS.cjs +88 -0
- package/dist/chunk-2FAWEBZS.cjs.map +1 -0
- package/dist/chunk-53UGJNHN.js +92 -0
- package/dist/chunk-53UGJNHN.js.map +1 -0
- package/dist/chunk-6T5XXJEP.cjs +80 -0
- package/dist/chunk-6T5XXJEP.cjs.map +1 -0
- package/dist/chunk-7K7HZMP4.cjs +1170 -0
- package/dist/chunk-7K7HZMP4.cjs.map +1 -0
- package/dist/chunk-7W7QLZNC.js +72 -0
- package/dist/chunk-7W7QLZNC.js.map +1 -0
- package/dist/{chunk-JM7PB2LP.js → chunk-7XFFRV7D.js} +10 -66
- package/dist/chunk-7XFFRV7D.js.map +1 -0
- package/dist/chunk-ASV6JLYG.cjs +99 -0
- package/dist/chunk-ASV6JLYG.cjs.map +1 -0
- package/dist/chunk-BH7MNDWW.js +1152 -0
- package/dist/chunk-BH7MNDWW.js.map +1 -0
- package/dist/chunk-BKO7DSPU.js +67 -0
- package/dist/chunk-BKO7DSPU.js.map +1 -0
- package/dist/chunk-CBAHCI4R.cjs +76 -0
- package/dist/chunk-CBAHCI4R.cjs.map +1 -0
- package/dist/chunk-CEKAYA2Q.cjs +74 -0
- package/dist/chunk-CEKAYA2Q.cjs.map +1 -0
- package/dist/chunk-CEOMTQTP.js +85 -0
- package/dist/chunk-CEOMTQTP.js.map +1 -0
- package/dist/chunk-DABZYCVX.js +84 -0
- package/dist/chunk-DABZYCVX.js.map +1 -0
- package/dist/chunk-DGUM43GV.js +10 -0
- package/dist/chunk-DGUM43GV.js.map +1 -0
- package/dist/chunk-G4SF2PNQ.js +33 -0
- package/dist/chunk-G4SF2PNQ.js.map +1 -0
- package/dist/chunk-GANCV72Z.cjs +110 -0
- package/dist/chunk-GANCV72Z.cjs.map +1 -0
- package/dist/{chunk-BLSI67J6.cjs → chunk-H5XMKBBA.cjs} +425 -30
- package/dist/chunk-H5XMKBBA.cjs.map +1 -0
- package/dist/{chunk-CJ7UWN2Y.js → chunk-IXFV6AW6.js} +397 -7
- package/dist/chunk-IXFV6AW6.js.map +1 -0
- package/dist/chunk-JEQ2X3Z6.cjs +12 -0
- package/dist/chunk-JEQ2X3Z6.cjs.map +1 -0
- package/dist/chunk-JO4BHPAD.cjs +40 -0
- package/dist/chunk-JO4BHPAD.cjs.map +1 -0
- package/dist/chunk-MEBXW75C.cjs +89 -0
- package/dist/chunk-MEBXW75C.cjs.map +1 -0
- package/dist/chunk-MNDGIW47.js +76 -0
- package/dist/chunk-MNDGIW47.js.map +1 -0
- package/dist/chunk-PPFHA6IL.js +83 -0
- package/dist/chunk-PPFHA6IL.js.map +1 -0
- package/dist/chunk-RQ74USYU.js +128 -0
- package/dist/chunk-RQ74USYU.js.map +1 -0
- package/dist/chunk-TXLIY7GF.cjs +132 -0
- package/dist/chunk-TXLIY7GF.cjs.map +1 -0
- package/dist/chunk-UIWFYMAO.cjs +82 -0
- package/dist/chunk-UIWFYMAO.cjs.map +1 -0
- package/dist/{chunk-4PRWNAXQ.cjs → chunk-UOWLKFXK.cjs} +27 -89
- package/dist/chunk-UOWLKFXK.cjs.map +1 -0
- package/dist/chunk-VD74IPKB.js +106 -0
- package/dist/chunk-VD74IPKB.js.map +1 -0
- package/dist/chunk-W73FBYIH.cjs +87 -0
- package/dist/chunk-W73FBYIH.cjs.map +1 -0
- package/dist/chunk-XGITAEXU.js +93 -0
- package/dist/chunk-XGITAEXU.js.map +1 -0
- package/dist/chunk-XWOHNY3F.cjs +96 -0
- package/dist/chunk-XWOHNY3F.cjs.map +1 -0
- package/dist/chunk-ZPYQDMUX.js +79 -0
- package/dist/chunk-ZPYQDMUX.js.map +1 -0
- package/dist/core/index.cjs +156 -84
- package/dist/core/index.d.cts +16 -4
- package/dist/core/index.d.ts +16 -4
- package/dist/core/index.js +13 -1
- package/dist/exa-72KFY5A7.cjs +21 -0
- package/dist/exa-72KFY5A7.cjs.map +1 -0
- package/dist/exa-Dp9U-WTc.d.ts +17 -0
- package/dist/exa-NNVPBC2M.js +4 -0
- package/dist/exa-NNVPBC2M.js.map +1 -0
- package/dist/exa-jJSPhyUW.d.cts +17 -0
- package/dist/google-CHU2yycE.d.cts +17 -0
- package/dist/google-CTEK6SV2.js +4 -0
- package/dist/google-CTEK6SV2.js.map +1 -0
- package/dist/google-Da8IQxaI.d.ts +17 -0
- package/dist/google-IIUXFFVF.cjs +21 -0
- package/dist/google-IIUXFFVF.cjs.map +1 -0
- package/dist/index-2VtgKM8S.d.cts +206 -0
- package/dist/index-pWEH7pUE.d.ts +206 -0
- package/dist/mcp/index.cjs +670 -0
- package/dist/mcp/index.cjs.map +1 -0
- package/dist/mcp/index.d.cts +779 -0
- package/dist/mcp/index.d.ts +779 -0
- package/dist/mcp/index.js +574 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/openai-6KTCQ7PZ.cjs +21 -0
- package/dist/openai-6KTCQ7PZ.cjs.map +1 -0
- package/dist/openai-7W2PCNW5.js +4 -0
- package/dist/openai-7W2PCNW5.js.map +1 -0
- package/dist/openai-Cam8hF4f.d.ts +17 -0
- package/dist/openai-HVSCuXgO.d.cts +17 -0
- package/dist/react/index.cjs +75 -42
- package/dist/react/index.d.cts +270 -45
- package/dist/react/index.d.ts +270 -45
- package/dist/react/index.js +15 -2
- package/dist/searxng-AXLVGY7Z.js +4 -0
- package/dist/searxng-AXLVGY7Z.js.map +1 -0
- package/dist/searxng-EJKNY236.cjs +21 -0
- package/dist/searxng-EJKNY236.cjs.map +1 -0
- package/dist/searxng-K0qtY9vp.d.ts +17 -0
- package/dist/searxng-QGOte_Gq.d.cts +17 -0
- package/dist/serper-3JYJHJX6.js +4 -0
- package/dist/serper-3JYJHJX6.js.map +1 -0
- package/dist/serper-63FT4AOL.cjs +21 -0
- package/dist/serper-63FT4AOL.cjs.map +1 -0
- package/dist/serper-7Czya3PW.d.ts +17 -0
- package/dist/serper-JzdaSnS9.d.cts +17 -0
- package/dist/styles.css +38 -0
- package/dist/tavily-AWFP4RM7.cjs +21 -0
- package/dist/tavily-AWFP4RM7.cjs.map +1 -0
- package/dist/tavily-C8cXXojE.d.cts +17 -0
- package/dist/tavily-CIWAAZPH.js +4 -0
- package/dist/tavily-CIWAAZPH.js.map +1 -0
- package/dist/tavily-DdSGVgkE.d.ts +17 -0
- package/dist/themes/catppuccin.css +2 -0
- package/dist/themes/claude.css +2 -0
- package/dist/themes/linear.css +2 -0
- package/dist/themes/modern-minimal.css +2 -0
- package/dist/themes/posthog.css +2 -0
- package/dist/themes/supabase.css +2 -0
- package/dist/themes/twitter.css +2 -0
- package/dist/themes/vercel.css +2 -0
- package/dist/tools/anthropic/index.cjs +61 -0
- package/dist/tools/anthropic/index.cjs.map +1 -0
- package/dist/tools/anthropic/index.d.cts +67 -0
- package/dist/tools/anthropic/index.d.ts +67 -0
- package/dist/tools/anthropic/index.js +56 -0
- package/dist/tools/anthropic/index.js.map +1 -0
- package/dist/tools/brave/index.cjs +85 -0
- package/dist/tools/brave/index.cjs.map +1 -0
- package/dist/tools/brave/index.d.cts +91 -0
- package/dist/tools/brave/index.d.ts +91 -0
- package/dist/tools/brave/index.js +80 -0
- package/dist/tools/brave/index.js.map +1 -0
- package/dist/tools/exa/index.cjs +90 -0
- package/dist/tools/exa/index.cjs.map +1 -0
- package/dist/tools/exa/index.d.cts +92 -0
- package/dist/tools/exa/index.d.ts +92 -0
- package/dist/tools/exa/index.js +85 -0
- package/dist/tools/exa/index.js.map +1 -0
- package/dist/tools/google/index.cjs +81 -0
- package/dist/tools/google/index.cjs.map +1 -0
- package/dist/tools/google/index.d.cts +81 -0
- package/dist/tools/google/index.d.ts +81 -0
- package/dist/tools/google/index.js +76 -0
- package/dist/tools/google/index.js.map +1 -0
- package/dist/tools/openai/index.cjs +83 -0
- package/dist/tools/openai/index.cjs.map +1 -0
- package/dist/tools/openai/index.d.cts +84 -0
- package/dist/tools/openai/index.d.ts +84 -0
- package/dist/tools/openai/index.js +78 -0
- package/dist/tools/openai/index.js.map +1 -0
- package/dist/tools/searxng/index.cjs +85 -0
- package/dist/tools/searxng/index.cjs.map +1 -0
- package/dist/tools/searxng/index.d.cts +91 -0
- package/dist/tools/searxng/index.d.ts +91 -0
- package/dist/tools/searxng/index.js +80 -0
- package/dist/tools/searxng/index.js.map +1 -0
- package/dist/tools/serper/index.cjs +85 -0
- package/dist/tools/serper/index.cjs.map +1 -0
- package/dist/tools/serper/index.d.cts +91 -0
- package/dist/tools/serper/index.d.ts +91 -0
- package/dist/tools/serper/index.js +80 -0
- package/dist/tools/serper/index.js.map +1 -0
- package/dist/tools/tavily/index.cjs +91 -0
- package/dist/tools/tavily/index.cjs.map +1 -0
- package/dist/tools/tavily/index.d.cts +95 -0
- package/dist/tools/tavily/index.d.ts +95 -0
- package/dist/tools/tavily/index.js +86 -0
- package/dist/tools/tavily/index.js.map +1 -0
- package/dist/tools/web-search/index.cjs +31 -0
- package/dist/tools/web-search/index.cjs.map +1 -0
- package/dist/tools/web-search/index.d.cts +3 -0
- package/dist/tools/web-search/index.d.ts +3 -0
- package/dist/tools/web-search/index.js +14 -0
- package/dist/tools/web-search/index.js.map +1 -0
- package/dist/{types-BtAaOV07.d.cts → tools-DDWrco4h.d.cts} +43 -367
- package/dist/{types-BtAaOV07.d.ts → tools-DDWrco4h.d.ts} +43 -367
- package/dist/types-B20VCJXL.d.cts +347 -0
- package/dist/types-B20VCJXL.d.ts +347 -0
- package/dist/types-Cizh9K_f.d.ts +441 -0
- package/dist/types-DG2ya08y.d.cts +367 -0
- package/dist/types-DG2ya08y.d.ts +367 -0
- package/dist/types-DjSfYNKj.d.cts +441 -0
- package/dist/types-ZguuKEs_.d.cts +127 -0
- package/dist/types-ZguuKEs_.d.ts +127 -0
- package/dist/ui/index.cjs +1075 -148
- package/dist/ui/index.cjs.map +1 -1
- package/dist/ui/index.d.cts +410 -4
- package/dist/ui/index.d.ts +410 -4
- package/dist/ui/index.js +1007 -96
- package/dist/ui/index.js.map +1 -1
- package/package.json +52 -2
- package/dist/chunk-4PRWNAXQ.cjs.map +0 -1
- package/dist/chunk-BLSI67J6.cjs.map +0 -1
- package/dist/chunk-CJ7UWN2Y.js.map +0 -1
- package/dist/chunk-JM7PB2LP.js.map +0 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkCEKAYA2Q_cjs = require('../../chunk-CEKAYA2Q.cjs');
|
|
4
|
+
var chunkASV6JLYG_cjs = require('../../chunk-ASV6JLYG.cjs');
|
|
5
|
+
var chunkCBAHCI4R_cjs = require('../../chunk-CBAHCI4R.cjs');
|
|
6
|
+
require('../../chunk-MEBXW75C.cjs');
|
|
7
|
+
require('../../chunk-W73FBYIH.cjs');
|
|
8
|
+
require('../../chunk-2FAWEBZS.cjs');
|
|
9
|
+
require('../../chunk-6T5XXJEP.cjs');
|
|
10
|
+
require('../../chunk-GANCV72Z.cjs');
|
|
11
|
+
require('../../chunk-XWOHNY3F.cjs');
|
|
12
|
+
require('../../chunk-TXLIY7GF.cjs');
|
|
13
|
+
require('../../chunk-JEQ2X3Z6.cjs');
|
|
14
|
+
|
|
15
|
+
// src/tools/tavily/index.ts
|
|
16
|
+
function tavilySearch(config) {
|
|
17
|
+
return {
|
|
18
|
+
name: "web_search",
|
|
19
|
+
description: `Search the web using Tavily for current information. Use this when the user asks about:
|
|
20
|
+
- Recent events, news, or current affairs
|
|
21
|
+
- Real-time data (prices, weather, stocks, sports scores)
|
|
22
|
+
- Information that might have changed after your training cutoff
|
|
23
|
+
- Facts that need verification with current sources
|
|
24
|
+
- Research topics that require up-to-date information`,
|
|
25
|
+
location: "server",
|
|
26
|
+
title: (args) => `Searching for "${args.query}"`,
|
|
27
|
+
executingTitle: (args) => `Searching the web for "${args.query}"...`,
|
|
28
|
+
completedTitle: (args) => `Found results for "${args.query}"`,
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: "object",
|
|
31
|
+
properties: {
|
|
32
|
+
query: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "The search query to find relevant information"
|
|
35
|
+
},
|
|
36
|
+
maxResults: {
|
|
37
|
+
type: "number",
|
|
38
|
+
description: "Maximum number of results to return (default: 5, max: 10)",
|
|
39
|
+
minimum: 1,
|
|
40
|
+
maximum: 10
|
|
41
|
+
},
|
|
42
|
+
searchDepth: {
|
|
43
|
+
type: "string",
|
|
44
|
+
enum: ["basic", "advanced"],
|
|
45
|
+
description: "Search depth - 'advanced' provides more thorough results but may be slower"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
required: ["query"]
|
|
49
|
+
},
|
|
50
|
+
needsApproval: false,
|
|
51
|
+
aiResponseMode: "full",
|
|
52
|
+
handler: async (params) => {
|
|
53
|
+
try {
|
|
54
|
+
const response = await chunkCBAHCI4R_cjs.searchTavily(
|
|
55
|
+
{
|
|
56
|
+
query: params.query,
|
|
57
|
+
maxResults: params.maxResults ?? config.maxResults ?? 5,
|
|
58
|
+
searchDepth: params.searchDepth ?? config.searchDepth ?? "basic"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
provider: "tavily",
|
|
62
|
+
apiKey: config.apiKey,
|
|
63
|
+
includeAnswer: config.includeAnswer,
|
|
64
|
+
includeDomains: config.includeDomains,
|
|
65
|
+
excludeDomains: config.excludeDomains,
|
|
66
|
+
includeImages: config.includeImages,
|
|
67
|
+
timeout: config.timeout
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
const aiContext = chunkASV6JLYG_cjs.formatSearchResultsForAI(response);
|
|
71
|
+
return {
|
|
72
|
+
success: true,
|
|
73
|
+
message: chunkASV6JLYG_cjs.summarizeSearchResults(response),
|
|
74
|
+
data: response,
|
|
75
|
+
_aiContext: aiContext
|
|
76
|
+
};
|
|
77
|
+
} catch (error) {
|
|
78
|
+
const errorMessage = error instanceof Error ? error.message : "Web search failed";
|
|
79
|
+
return chunkCEKAYA2Q_cjs.failure(errorMessage);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
Object.defineProperty(exports, "tavilyProvider", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function () { return chunkCBAHCI4R_cjs.tavilyProvider; }
|
|
88
|
+
});
|
|
89
|
+
exports.tavilySearch = tavilySearch;
|
|
90
|
+
//# sourceMappingURL=index.cjs.map
|
|
91
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/tavily/index.ts"],"names":["searchTavily","formatSearchResultsForAI","summarizeSearchResults","failure"],"mappings":";;;;;;;;;;;;;;;AAyGO,SAAS,aACd,MAAA,EACoC;AACpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAAA,CAAA;AAAA,IAOb,QAAA,EAAU,QAAA;AAAA,IAEV,KAAA,EAAO,CAAC,IAAA,KAAS,CAAA,eAAA,EAAkB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,IAC7C,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,uBAAA,EAA0B,KAAK,KAAK,CAAA,IAAA,CAAA;AAAA,IAC9D,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,mBAAA,EAAsB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,IAE1D,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa;AAAA,SACf;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EACE,2DAAA;AAAA,UACF,OAAA,EAAS,CAAA;AAAA,UACT,OAAA,EAAS;AAAA,SACX;AAAA,QACA,WAAA,EAAa;AAAA,UACX,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,CAAC,OAAA,EAAS,UAAU,CAAA;AAAA,UAC1B,WAAA,EACE;AAAA;AACJ,OACF;AAAA,MACA,QAAA,EAAU,CAAC,OAAO;AAAA,KACpB;AAAA,IAEA,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,MAAA;AAAA,IAEhB,OAAA,EAAS,OAAO,MAAA,KAAW;AACzB,MAAA,IAAI;AACF,QAAA,MAAM,WAA8B,MAAMA,8BAAA;AAAA,UACxC;AAAA,YACE,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAA,EAAY,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,UAAA,IAAc,CAAA;AAAA,YACtD,WAAA,EAAa,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,WAAA,IAAe;AAAA,WAC3D;AAAA,UACA;AAAA,YACE,QAAA,EAAU,QAAA;AAAA,YACV,QAAQ,MAAA,CAAO,MAAA;AAAA,YACf,eAAe,MAAA,CAAO,aAAA;AAAA,YACtB,gBAAgB,MAAA,CAAO,cAAA;AAAA,YACvB,gBAAgB,MAAA,CAAO,cAAA;AAAA,YACvB,eAAe,MAAA,CAAO,aAAA;AAAA,YACtB,SAAS,MAAA,CAAO;AAAA;AAClB,SACF;AAEA,QAAA,MAAM,SAAA,GAAYC,2CAAyB,QAAQ,CAAA;AAEnD,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAASC,yCAAuB,QAAQ,CAAA;AAAA,UACxC,IAAA,EAAM,QAAA;AAAA,UACN,UAAA,EAAY;AAAA,SACd;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,YAAA,GACJ,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,mBAAA;AAC3C,QAAA,OAAOC,0BAAQ,YAAY,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,GACF;AACF","file":"index.cjs","sourcesContent":["/**\n * Tavily Search Tool\n *\n * Tree-shakeable import for Tavily web search provider.\n * Only imports Tavily code - no other providers bundled.\n *\n * @example\n * ```typescript\n * import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';\n *\n * const webSearch = tavilySearch({\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * const runtime = createRuntime({\n * tools: [webSearch],\n * });\n * ```\n *\n * @see https://tavily.com/\n * @module @yourgpt/copilot-sdk/tools/tavily\n */\n\nimport type { ToolDefinition } from \"../../core/types/tools\";\nimport { failure } from \"../../core/types/tools\";\nimport {\n searchTavily,\n tavilyProvider,\n} from \"../../core/tools/webSearch/providers/tavily\";\nimport {\n formatSearchResultsForAI,\n summarizeSearchResults,\n} from \"../../core/tools/webSearch\";\nimport type { WebSearchResponse } from \"../../core/tools/webSearch/types\";\n\n// Re-export provider for direct access\nexport { tavilyProvider };\n\n/**\n * Tavily search configuration\n */\nexport interface TavilySearchConfig {\n /** Tavily API key - get one at https://tavily.com/ */\n apiKey: string;\n /** Include AI-generated answer summary (default: true) */\n includeAnswer?: boolean;\n /** Maximum number of results (default: 5) */\n maxResults?: number;\n /** Search depth - 'advanced' provides more thorough results */\n searchDepth?: \"basic\" | \"advanced\";\n /** Only include results from these domains */\n includeDomains?: string[];\n /** Exclude results from these domains */\n excludeDomains?: string[];\n /** Include image results */\n includeImages?: boolean;\n /** Request timeout in milliseconds */\n timeout?: number;\n}\n\n/**\n * Search parameters passed to the tool\n */\ninterface TavilySearchParams {\n /** The search query */\n query: string;\n /** Maximum number of results (overrides config) */\n maxResults?: number;\n /** Search depth (overrides config) */\n searchDepth?: \"basic\" | \"advanced\";\n}\n\n/**\n * Create a Tavily web search tool\n *\n * Tavily is an AI-native search engine optimized for LLMs.\n * It provides high-quality results with optional AI-generated answers.\n *\n * @param config - Tavily configuration including API key\n * @returns A configured tool definition ready to use\n *\n * @example\n * ```typescript\n * import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';\n *\n * // Basic usage\n * const webSearch = tavilySearch({\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * // With options\n * const webSearch = tavilySearch({\n * apiKey: process.env.TAVILY_API_KEY,\n * includeAnswer: true,\n * searchDepth: 'advanced',\n * maxResults: 10,\n * });\n *\n * const runtime = createRuntime({\n * provider: openai,\n * model: 'gpt-4o',\n * tools: [webSearch],\n * });\n * ```\n */\nexport function tavilySearch(\n config: TavilySearchConfig,\n): ToolDefinition<TavilySearchParams> {\n return {\n name: \"web_search\",\n description: `Search the web using Tavily for current information. Use this when the user asks about:\n- Recent events, news, or current affairs\n- Real-time data (prices, weather, stocks, sports scores)\n- Information that might have changed after your training cutoff\n- Facts that need verification with current sources\n- Research topics that require up-to-date information`,\n\n location: \"server\",\n\n title: (args) => `Searching for \"${args.query}\"`,\n executingTitle: (args) => `Searching the web for \"${args.query}\"...`,\n completedTitle: (args) => `Found results for \"${args.query}\"`,\n\n inputSchema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: \"The search query to find relevant information\",\n },\n maxResults: {\n type: \"number\",\n description:\n \"Maximum number of results to return (default: 5, max: 10)\",\n minimum: 1,\n maximum: 10,\n },\n searchDepth: {\n type: \"string\",\n enum: [\"basic\", \"advanced\"],\n description:\n \"Search depth - 'advanced' provides more thorough results but may be slower\",\n },\n },\n required: [\"query\"],\n },\n\n needsApproval: false,\n aiResponseMode: \"full\",\n\n handler: async (params) => {\n try {\n const response: WebSearchResponse = await searchTavily(\n {\n query: params.query,\n maxResults: params.maxResults ?? config.maxResults ?? 5,\n searchDepth: params.searchDepth ?? config.searchDepth ?? \"basic\",\n },\n {\n provider: \"tavily\",\n apiKey: config.apiKey,\n includeAnswer: config.includeAnswer,\n includeDomains: config.includeDomains,\n excludeDomains: config.excludeDomains,\n includeImages: config.includeImages,\n timeout: config.timeout,\n },\n );\n\n const aiContext = formatSearchResultsForAI(response);\n\n return {\n success: true,\n message: summarizeSearchResults(response),\n data: response,\n _aiContext: aiContext,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Web search failed\";\n return failure(errorMessage);\n }\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { T as ToolDefinition } from '../../tools-DDWrco4h.cjs';
|
|
2
|
+
export { t as tavilyProvider } from '../../tavily-C8cXXojE.cjs';
|
|
3
|
+
import '../../types-ZguuKEs_.cjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Tavily Search Tool
|
|
7
|
+
*
|
|
8
|
+
* Tree-shakeable import for Tavily web search provider.
|
|
9
|
+
* Only imports Tavily code - no other providers bundled.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';
|
|
14
|
+
*
|
|
15
|
+
* const webSearch = tavilySearch({
|
|
16
|
+
* apiKey: process.env.TAVILY_API_KEY,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* const runtime = createRuntime({
|
|
20
|
+
* tools: [webSearch],
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @see https://tavily.com/
|
|
25
|
+
* @module @yourgpt/copilot-sdk/tools/tavily
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Tavily search configuration
|
|
30
|
+
*/
|
|
31
|
+
interface TavilySearchConfig {
|
|
32
|
+
/** Tavily API key - get one at https://tavily.com/ */
|
|
33
|
+
apiKey: string;
|
|
34
|
+
/** Include AI-generated answer summary (default: true) */
|
|
35
|
+
includeAnswer?: boolean;
|
|
36
|
+
/** Maximum number of results (default: 5) */
|
|
37
|
+
maxResults?: number;
|
|
38
|
+
/** Search depth - 'advanced' provides more thorough results */
|
|
39
|
+
searchDepth?: "basic" | "advanced";
|
|
40
|
+
/** Only include results from these domains */
|
|
41
|
+
includeDomains?: string[];
|
|
42
|
+
/** Exclude results from these domains */
|
|
43
|
+
excludeDomains?: string[];
|
|
44
|
+
/** Include image results */
|
|
45
|
+
includeImages?: boolean;
|
|
46
|
+
/** Request timeout in milliseconds */
|
|
47
|
+
timeout?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Search parameters passed to the tool
|
|
51
|
+
*/
|
|
52
|
+
interface TavilySearchParams {
|
|
53
|
+
/** The search query */
|
|
54
|
+
query: string;
|
|
55
|
+
/** Maximum number of results (overrides config) */
|
|
56
|
+
maxResults?: number;
|
|
57
|
+
/** Search depth (overrides config) */
|
|
58
|
+
searchDepth?: "basic" | "advanced";
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a Tavily web search tool
|
|
62
|
+
*
|
|
63
|
+
* Tavily is an AI-native search engine optimized for LLMs.
|
|
64
|
+
* It provides high-quality results with optional AI-generated answers.
|
|
65
|
+
*
|
|
66
|
+
* @param config - Tavily configuration including API key
|
|
67
|
+
* @returns A configured tool definition ready to use
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';
|
|
72
|
+
*
|
|
73
|
+
* // Basic usage
|
|
74
|
+
* const webSearch = tavilySearch({
|
|
75
|
+
* apiKey: process.env.TAVILY_API_KEY,
|
|
76
|
+
* });
|
|
77
|
+
*
|
|
78
|
+
* // With options
|
|
79
|
+
* const webSearch = tavilySearch({
|
|
80
|
+
* apiKey: process.env.TAVILY_API_KEY,
|
|
81
|
+
* includeAnswer: true,
|
|
82
|
+
* searchDepth: 'advanced',
|
|
83
|
+
* maxResults: 10,
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* const runtime = createRuntime({
|
|
87
|
+
* provider: openai,
|
|
88
|
+
* model: 'gpt-4o',
|
|
89
|
+
* tools: [webSearch],
|
|
90
|
+
* });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
declare function tavilySearch(config: TavilySearchConfig): ToolDefinition<TavilySearchParams>;
|
|
94
|
+
|
|
95
|
+
export { type TavilySearchConfig, tavilySearch };
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { T as ToolDefinition } from '../../tools-DDWrco4h.js';
|
|
2
|
+
export { t as tavilyProvider } from '../../tavily-DdSGVgkE.js';
|
|
3
|
+
import '../../types-ZguuKEs_.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Tavily Search Tool
|
|
7
|
+
*
|
|
8
|
+
* Tree-shakeable import for Tavily web search provider.
|
|
9
|
+
* Only imports Tavily code - no other providers bundled.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';
|
|
14
|
+
*
|
|
15
|
+
* const webSearch = tavilySearch({
|
|
16
|
+
* apiKey: process.env.TAVILY_API_KEY,
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* const runtime = createRuntime({
|
|
20
|
+
* tools: [webSearch],
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @see https://tavily.com/
|
|
25
|
+
* @module @yourgpt/copilot-sdk/tools/tavily
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Tavily search configuration
|
|
30
|
+
*/
|
|
31
|
+
interface TavilySearchConfig {
|
|
32
|
+
/** Tavily API key - get one at https://tavily.com/ */
|
|
33
|
+
apiKey: string;
|
|
34
|
+
/** Include AI-generated answer summary (default: true) */
|
|
35
|
+
includeAnswer?: boolean;
|
|
36
|
+
/** Maximum number of results (default: 5) */
|
|
37
|
+
maxResults?: number;
|
|
38
|
+
/** Search depth - 'advanced' provides more thorough results */
|
|
39
|
+
searchDepth?: "basic" | "advanced";
|
|
40
|
+
/** Only include results from these domains */
|
|
41
|
+
includeDomains?: string[];
|
|
42
|
+
/** Exclude results from these domains */
|
|
43
|
+
excludeDomains?: string[];
|
|
44
|
+
/** Include image results */
|
|
45
|
+
includeImages?: boolean;
|
|
46
|
+
/** Request timeout in milliseconds */
|
|
47
|
+
timeout?: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Search parameters passed to the tool
|
|
51
|
+
*/
|
|
52
|
+
interface TavilySearchParams {
|
|
53
|
+
/** The search query */
|
|
54
|
+
query: string;
|
|
55
|
+
/** Maximum number of results (overrides config) */
|
|
56
|
+
maxResults?: number;
|
|
57
|
+
/** Search depth (overrides config) */
|
|
58
|
+
searchDepth?: "basic" | "advanced";
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a Tavily web search tool
|
|
62
|
+
*
|
|
63
|
+
* Tavily is an AI-native search engine optimized for LLMs.
|
|
64
|
+
* It provides high-quality results with optional AI-generated answers.
|
|
65
|
+
*
|
|
66
|
+
* @param config - Tavily configuration including API key
|
|
67
|
+
* @returns A configured tool definition ready to use
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';
|
|
72
|
+
*
|
|
73
|
+
* // Basic usage
|
|
74
|
+
* const webSearch = tavilySearch({
|
|
75
|
+
* apiKey: process.env.TAVILY_API_KEY,
|
|
76
|
+
* });
|
|
77
|
+
*
|
|
78
|
+
* // With options
|
|
79
|
+
* const webSearch = tavilySearch({
|
|
80
|
+
* apiKey: process.env.TAVILY_API_KEY,
|
|
81
|
+
* includeAnswer: true,
|
|
82
|
+
* searchDepth: 'advanced',
|
|
83
|
+
* maxResults: 10,
|
|
84
|
+
* });
|
|
85
|
+
*
|
|
86
|
+
* const runtime = createRuntime({
|
|
87
|
+
* provider: openai,
|
|
88
|
+
* model: 'gpt-4o',
|
|
89
|
+
* tools: [webSearch],
|
|
90
|
+
* });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
declare function tavilySearch(config: TavilySearchConfig): ToolDefinition<TavilySearchParams>;
|
|
94
|
+
|
|
95
|
+
export { type TavilySearchConfig, tavilySearch };
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { failure } from '../../chunk-BKO7DSPU.js';
|
|
2
|
+
import { formatSearchResultsForAI, summarizeSearchResults } from '../../chunk-XGITAEXU.js';
|
|
3
|
+
import { searchTavily } from '../../chunk-7W7QLZNC.js';
|
|
4
|
+
export { tavilyProvider } from '../../chunk-7W7QLZNC.js';
|
|
5
|
+
import '../../chunk-CEOMTQTP.js';
|
|
6
|
+
import '../../chunk-PPFHA6IL.js';
|
|
7
|
+
import '../../chunk-DABZYCVX.js';
|
|
8
|
+
import '../../chunk-MNDGIW47.js';
|
|
9
|
+
import '../../chunk-VD74IPKB.js';
|
|
10
|
+
import '../../chunk-53UGJNHN.js';
|
|
11
|
+
import '../../chunk-RQ74USYU.js';
|
|
12
|
+
import '../../chunk-DGUM43GV.js';
|
|
13
|
+
|
|
14
|
+
// src/tools/tavily/index.ts
|
|
15
|
+
function tavilySearch(config) {
|
|
16
|
+
return {
|
|
17
|
+
name: "web_search",
|
|
18
|
+
description: `Search the web using Tavily for current information. Use this when the user asks about:
|
|
19
|
+
- Recent events, news, or current affairs
|
|
20
|
+
- Real-time data (prices, weather, stocks, sports scores)
|
|
21
|
+
- Information that might have changed after your training cutoff
|
|
22
|
+
- Facts that need verification with current sources
|
|
23
|
+
- Research topics that require up-to-date information`,
|
|
24
|
+
location: "server",
|
|
25
|
+
title: (args) => `Searching for "${args.query}"`,
|
|
26
|
+
executingTitle: (args) => `Searching the web for "${args.query}"...`,
|
|
27
|
+
completedTitle: (args) => `Found results for "${args.query}"`,
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: "object",
|
|
30
|
+
properties: {
|
|
31
|
+
query: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "The search query to find relevant information"
|
|
34
|
+
},
|
|
35
|
+
maxResults: {
|
|
36
|
+
type: "number",
|
|
37
|
+
description: "Maximum number of results to return (default: 5, max: 10)",
|
|
38
|
+
minimum: 1,
|
|
39
|
+
maximum: 10
|
|
40
|
+
},
|
|
41
|
+
searchDepth: {
|
|
42
|
+
type: "string",
|
|
43
|
+
enum: ["basic", "advanced"],
|
|
44
|
+
description: "Search depth - 'advanced' provides more thorough results but may be slower"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
required: ["query"]
|
|
48
|
+
},
|
|
49
|
+
needsApproval: false,
|
|
50
|
+
aiResponseMode: "full",
|
|
51
|
+
handler: async (params) => {
|
|
52
|
+
try {
|
|
53
|
+
const response = await searchTavily(
|
|
54
|
+
{
|
|
55
|
+
query: params.query,
|
|
56
|
+
maxResults: params.maxResults ?? config.maxResults ?? 5,
|
|
57
|
+
searchDepth: params.searchDepth ?? config.searchDepth ?? "basic"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
provider: "tavily",
|
|
61
|
+
apiKey: config.apiKey,
|
|
62
|
+
includeAnswer: config.includeAnswer,
|
|
63
|
+
includeDomains: config.includeDomains,
|
|
64
|
+
excludeDomains: config.excludeDomains,
|
|
65
|
+
includeImages: config.includeImages,
|
|
66
|
+
timeout: config.timeout
|
|
67
|
+
}
|
|
68
|
+
);
|
|
69
|
+
const aiContext = formatSearchResultsForAI(response);
|
|
70
|
+
return {
|
|
71
|
+
success: true,
|
|
72
|
+
message: summarizeSearchResults(response),
|
|
73
|
+
data: response,
|
|
74
|
+
_aiContext: aiContext
|
|
75
|
+
};
|
|
76
|
+
} catch (error) {
|
|
77
|
+
const errorMessage = error instanceof Error ? error.message : "Web search failed";
|
|
78
|
+
return failure(errorMessage);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export { tavilySearch };
|
|
85
|
+
//# sourceMappingURL=index.js.map
|
|
86
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/tavily/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAyGO,SAAS,aACd,MAAA,EACoC;AACpC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAAA,CAAA;AAAA,IAOb,QAAA,EAAU,QAAA;AAAA,IAEV,KAAA,EAAO,CAAC,IAAA,KAAS,CAAA,eAAA,EAAkB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,IAC7C,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,uBAAA,EAA0B,KAAK,KAAK,CAAA,IAAA,CAAA;AAAA,IAC9D,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,mBAAA,EAAsB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,IAE1D,WAAA,EAAa;AAAA,MACX,IAAA,EAAM,QAAA;AAAA,MACN,UAAA,EAAY;AAAA,QACV,KAAA,EAAO;AAAA,UACL,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EAAa;AAAA,SACf;AAAA,QACA,UAAA,EAAY;AAAA,UACV,IAAA,EAAM,QAAA;AAAA,UACN,WAAA,EACE,2DAAA;AAAA,UACF,OAAA,EAAS,CAAA;AAAA,UACT,OAAA,EAAS;AAAA,SACX;AAAA,QACA,WAAA,EAAa;AAAA,UACX,IAAA,EAAM,QAAA;AAAA,UACN,IAAA,EAAM,CAAC,OAAA,EAAS,UAAU,CAAA;AAAA,UAC1B,WAAA,EACE;AAAA;AACJ,OACF;AAAA,MACA,QAAA,EAAU,CAAC,OAAO;AAAA,KACpB;AAAA,IAEA,aAAA,EAAe,KAAA;AAAA,IACf,cAAA,EAAgB,MAAA;AAAA,IAEhB,OAAA,EAAS,OAAO,MAAA,KAAW;AACzB,MAAA,IAAI;AACF,QAAA,MAAM,WAA8B,MAAM,YAAA;AAAA,UACxC;AAAA,YACE,OAAO,MAAA,CAAO,KAAA;AAAA,YACd,UAAA,EAAY,MAAA,CAAO,UAAA,IAAc,MAAA,CAAO,UAAA,IAAc,CAAA;AAAA,YACtD,WAAA,EAAa,MAAA,CAAO,WAAA,IAAe,MAAA,CAAO,WAAA,IAAe;AAAA,WAC3D;AAAA,UACA;AAAA,YACE,QAAA,EAAU,QAAA;AAAA,YACV,QAAQ,MAAA,CAAO,MAAA;AAAA,YACf,eAAe,MAAA,CAAO,aAAA;AAAA,YACtB,gBAAgB,MAAA,CAAO,cAAA;AAAA,YACvB,gBAAgB,MAAA,CAAO,cAAA;AAAA,YACvB,eAAe,MAAA,CAAO,aAAA;AAAA,YACtB,SAAS,MAAA,CAAO;AAAA;AAClB,SACF;AAEA,QAAA,MAAM,SAAA,GAAY,yBAAyB,QAAQ,CAAA;AAEnD,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAAS,uBAAuB,QAAQ,CAAA;AAAA,UACxC,IAAA,EAAM,QAAA;AAAA,UACN,UAAA,EAAY;AAAA,SACd;AAAA,MACF,SAAS,KAAA,EAAO;AACd,QAAA,MAAM,YAAA,GACJ,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,mBAAA;AAC3C,QAAA,OAAO,QAAQ,YAAY,CAAA;AAAA,MAC7B;AAAA,IACF;AAAA,GACF;AACF","file":"index.js","sourcesContent":["/**\n * Tavily Search Tool\n *\n * Tree-shakeable import for Tavily web search provider.\n * Only imports Tavily code - no other providers bundled.\n *\n * @example\n * ```typescript\n * import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';\n *\n * const webSearch = tavilySearch({\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * const runtime = createRuntime({\n * tools: [webSearch],\n * });\n * ```\n *\n * @see https://tavily.com/\n * @module @yourgpt/copilot-sdk/tools/tavily\n */\n\nimport type { ToolDefinition } from \"../../core/types/tools\";\nimport { failure } from \"../../core/types/tools\";\nimport {\n searchTavily,\n tavilyProvider,\n} from \"../../core/tools/webSearch/providers/tavily\";\nimport {\n formatSearchResultsForAI,\n summarizeSearchResults,\n} from \"../../core/tools/webSearch\";\nimport type { WebSearchResponse } from \"../../core/tools/webSearch/types\";\n\n// Re-export provider for direct access\nexport { tavilyProvider };\n\n/**\n * Tavily search configuration\n */\nexport interface TavilySearchConfig {\n /** Tavily API key - get one at https://tavily.com/ */\n apiKey: string;\n /** Include AI-generated answer summary (default: true) */\n includeAnswer?: boolean;\n /** Maximum number of results (default: 5) */\n maxResults?: number;\n /** Search depth - 'advanced' provides more thorough results */\n searchDepth?: \"basic\" | \"advanced\";\n /** Only include results from these domains */\n includeDomains?: string[];\n /** Exclude results from these domains */\n excludeDomains?: string[];\n /** Include image results */\n includeImages?: boolean;\n /** Request timeout in milliseconds */\n timeout?: number;\n}\n\n/**\n * Search parameters passed to the tool\n */\ninterface TavilySearchParams {\n /** The search query */\n query: string;\n /** Maximum number of results (overrides config) */\n maxResults?: number;\n /** Search depth (overrides config) */\n searchDepth?: \"basic\" | \"advanced\";\n}\n\n/**\n * Create a Tavily web search tool\n *\n * Tavily is an AI-native search engine optimized for LLMs.\n * It provides high-quality results with optional AI-generated answers.\n *\n * @param config - Tavily configuration including API key\n * @returns A configured tool definition ready to use\n *\n * @example\n * ```typescript\n * import { tavilySearch } from '@yourgpt/copilot-sdk/tools/tavily';\n *\n * // Basic usage\n * const webSearch = tavilySearch({\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * // With options\n * const webSearch = tavilySearch({\n * apiKey: process.env.TAVILY_API_KEY,\n * includeAnswer: true,\n * searchDepth: 'advanced',\n * maxResults: 10,\n * });\n *\n * const runtime = createRuntime({\n * provider: openai,\n * model: 'gpt-4o',\n * tools: [webSearch],\n * });\n * ```\n */\nexport function tavilySearch(\n config: TavilySearchConfig,\n): ToolDefinition<TavilySearchParams> {\n return {\n name: \"web_search\",\n description: `Search the web using Tavily for current information. Use this when the user asks about:\n- Recent events, news, or current affairs\n- Real-time data (prices, weather, stocks, sports scores)\n- Information that might have changed after your training cutoff\n- Facts that need verification with current sources\n- Research topics that require up-to-date information`,\n\n location: \"server\",\n\n title: (args) => `Searching for \"${args.query}\"`,\n executingTitle: (args) => `Searching the web for \"${args.query}\"...`,\n completedTitle: (args) => `Found results for \"${args.query}\"`,\n\n inputSchema: {\n type: \"object\",\n properties: {\n query: {\n type: \"string\",\n description: \"The search query to find relevant information\",\n },\n maxResults: {\n type: \"number\",\n description:\n \"Maximum number of results to return (default: 5, max: 10)\",\n minimum: 1,\n maximum: 10,\n },\n searchDepth: {\n type: \"string\",\n enum: [\"basic\", \"advanced\"],\n description:\n \"Search depth - 'advanced' provides more thorough results but may be slower\",\n },\n },\n required: [\"query\"],\n },\n\n needsApproval: false,\n aiResponseMode: \"full\",\n\n handler: async (params) => {\n try {\n const response: WebSearchResponse = await searchTavily(\n {\n query: params.query,\n maxResults: params.maxResults ?? config.maxResults ?? 5,\n searchDepth: params.searchDepth ?? config.searchDepth ?? \"basic\",\n },\n {\n provider: \"tavily\",\n apiKey: config.apiKey,\n includeAnswer: config.includeAnswer,\n includeDomains: config.includeDomains,\n excludeDomains: config.excludeDomains,\n includeImages: config.includeImages,\n timeout: config.timeout,\n },\n );\n\n const aiContext = formatSearchResultsForAI(response);\n\n return {\n success: true,\n message: summarizeSearchResults(response),\n data: response,\n _aiContext: aiContext,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Web search failed\";\n return failure(errorMessage);\n }\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkUIWFYMAO_cjs = require('../../chunk-UIWFYMAO.cjs');
|
|
4
|
+
require('../../chunk-CEKAYA2Q.cjs');
|
|
5
|
+
var chunkASV6JLYG_cjs = require('../../chunk-ASV6JLYG.cjs');
|
|
6
|
+
require('../../chunk-CBAHCI4R.cjs');
|
|
7
|
+
require('../../chunk-MEBXW75C.cjs');
|
|
8
|
+
require('../../chunk-W73FBYIH.cjs');
|
|
9
|
+
require('../../chunk-2FAWEBZS.cjs');
|
|
10
|
+
require('../../chunk-6T5XXJEP.cjs');
|
|
11
|
+
require('../../chunk-GANCV72Z.cjs');
|
|
12
|
+
require('../../chunk-XWOHNY3F.cjs');
|
|
13
|
+
require('../../chunk-TXLIY7GF.cjs');
|
|
14
|
+
require('../../chunk-JEQ2X3Z6.cjs');
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Object.defineProperty(exports, "webSearchTool", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return chunkUIWFYMAO_cjs.webSearchTool; }
|
|
21
|
+
});
|
|
22
|
+
Object.defineProperty(exports, "formatSearchResultsForAI", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return chunkASV6JLYG_cjs.formatSearchResultsForAI; }
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, "summarizeSearchResults", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return chunkASV6JLYG_cjs.summarizeSearchResults; }
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=index.cjs.map
|
|
31
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { b as WebSearchConfig, e as WebSearchImage, c as WebSearchParams, a as WebSearchProvider, W as WebSearchProviderInterface, f as WebSearchResponse, d as WebSearchResult } from '../../types-ZguuKEs_.cjs';
|
|
2
|
+
export { f as formatSearchResultsForAI, s as summarizeSearchResults, w as webSearchTool } from '../../index-2VtgKM8S.cjs';
|
|
3
|
+
import '../../tools-DDWrco4h.cjs';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { b as WebSearchConfig, e as WebSearchImage, c as WebSearchParams, a as WebSearchProvider, W as WebSearchProviderInterface, f as WebSearchResponse, d as WebSearchResult } from '../../types-ZguuKEs_.js';
|
|
2
|
+
export { f as formatSearchResultsForAI, s as summarizeSearchResults, w as webSearchTool } from '../../index-pWEH7pUE.js';
|
|
3
|
+
import '../../tools-DDWrco4h.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { webSearchTool } from '../../chunk-ZPYQDMUX.js';
|
|
2
|
+
import '../../chunk-BKO7DSPU.js';
|
|
3
|
+
export { formatSearchResultsForAI, summarizeSearchResults } from '../../chunk-XGITAEXU.js';
|
|
4
|
+
import '../../chunk-7W7QLZNC.js';
|
|
5
|
+
import '../../chunk-CEOMTQTP.js';
|
|
6
|
+
import '../../chunk-PPFHA6IL.js';
|
|
7
|
+
import '../../chunk-DABZYCVX.js';
|
|
8
|
+
import '../../chunk-MNDGIW47.js';
|
|
9
|
+
import '../../chunk-VD74IPKB.js';
|
|
10
|
+
import '../../chunk-53UGJNHN.js';
|
|
11
|
+
import '../../chunk-RQ74USYU.js';
|
|
12
|
+
import '../../chunk-DGUM43GV.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|