@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.
Files changed (215) hide show
  1. package/README.md +42 -0
  2. package/dist/{ThreadManager-JT0sqSSD.d.ts → ThreadManager-Dkp_eLty.d.ts} +1 -1
  3. package/dist/{ThreadManager-CUq5Ocu2.d.cts → ThreadManager-LfFRhr4e.d.cts} +1 -1
  4. package/dist/anthropic-6F5GRE3B.js +4 -0
  5. package/dist/anthropic-6F5GRE3B.js.map +1 -0
  6. package/dist/anthropic-DGalr_Fw.d.cts +17 -0
  7. package/dist/anthropic-DkCEDYOt.d.ts +17 -0
  8. package/dist/anthropic-NMTRABEH.cjs +21 -0
  9. package/dist/anthropic-NMTRABEH.cjs.map +1 -0
  10. package/dist/brave-DdnWb7Gb.d.cts +17 -0
  11. package/dist/brave-DsI9n7Wr.d.ts +17 -0
  12. package/dist/brave-OYKCOZEM.cjs +21 -0
  13. package/dist/brave-OYKCOZEM.cjs.map +1 -0
  14. package/dist/brave-XSASGGH2.js +4 -0
  15. package/dist/brave-XSASGGH2.js.map +1 -0
  16. package/dist/chunk-2FAWEBZS.cjs +88 -0
  17. package/dist/chunk-2FAWEBZS.cjs.map +1 -0
  18. package/dist/chunk-53UGJNHN.js +92 -0
  19. package/dist/chunk-53UGJNHN.js.map +1 -0
  20. package/dist/chunk-6T5XXJEP.cjs +80 -0
  21. package/dist/chunk-6T5XXJEP.cjs.map +1 -0
  22. package/dist/chunk-7K7HZMP4.cjs +1170 -0
  23. package/dist/chunk-7K7HZMP4.cjs.map +1 -0
  24. package/dist/chunk-7W7QLZNC.js +72 -0
  25. package/dist/chunk-7W7QLZNC.js.map +1 -0
  26. package/dist/{chunk-JM7PB2LP.js → chunk-7XFFRV7D.js} +10 -66
  27. package/dist/chunk-7XFFRV7D.js.map +1 -0
  28. package/dist/chunk-ASV6JLYG.cjs +99 -0
  29. package/dist/chunk-ASV6JLYG.cjs.map +1 -0
  30. package/dist/chunk-BH7MNDWW.js +1152 -0
  31. package/dist/chunk-BH7MNDWW.js.map +1 -0
  32. package/dist/chunk-BKO7DSPU.js +67 -0
  33. package/dist/chunk-BKO7DSPU.js.map +1 -0
  34. package/dist/chunk-CBAHCI4R.cjs +76 -0
  35. package/dist/chunk-CBAHCI4R.cjs.map +1 -0
  36. package/dist/chunk-CEKAYA2Q.cjs +74 -0
  37. package/dist/chunk-CEKAYA2Q.cjs.map +1 -0
  38. package/dist/chunk-CEOMTQTP.js +85 -0
  39. package/dist/chunk-CEOMTQTP.js.map +1 -0
  40. package/dist/chunk-DABZYCVX.js +84 -0
  41. package/dist/chunk-DABZYCVX.js.map +1 -0
  42. package/dist/chunk-DGUM43GV.js +10 -0
  43. package/dist/chunk-DGUM43GV.js.map +1 -0
  44. package/dist/chunk-G4SF2PNQ.js +33 -0
  45. package/dist/chunk-G4SF2PNQ.js.map +1 -0
  46. package/dist/chunk-GANCV72Z.cjs +110 -0
  47. package/dist/chunk-GANCV72Z.cjs.map +1 -0
  48. package/dist/{chunk-BLSI67J6.cjs → chunk-H5XMKBBA.cjs} +425 -30
  49. package/dist/chunk-H5XMKBBA.cjs.map +1 -0
  50. package/dist/{chunk-CJ7UWN2Y.js → chunk-IXFV6AW6.js} +397 -7
  51. package/dist/chunk-IXFV6AW6.js.map +1 -0
  52. package/dist/chunk-JEQ2X3Z6.cjs +12 -0
  53. package/dist/chunk-JEQ2X3Z6.cjs.map +1 -0
  54. package/dist/chunk-JO4BHPAD.cjs +40 -0
  55. package/dist/chunk-JO4BHPAD.cjs.map +1 -0
  56. package/dist/chunk-MEBXW75C.cjs +89 -0
  57. package/dist/chunk-MEBXW75C.cjs.map +1 -0
  58. package/dist/chunk-MNDGIW47.js +76 -0
  59. package/dist/chunk-MNDGIW47.js.map +1 -0
  60. package/dist/chunk-PPFHA6IL.js +83 -0
  61. package/dist/chunk-PPFHA6IL.js.map +1 -0
  62. package/dist/chunk-RQ74USYU.js +128 -0
  63. package/dist/chunk-RQ74USYU.js.map +1 -0
  64. package/dist/chunk-TXLIY7GF.cjs +132 -0
  65. package/dist/chunk-TXLIY7GF.cjs.map +1 -0
  66. package/dist/chunk-UIWFYMAO.cjs +82 -0
  67. package/dist/chunk-UIWFYMAO.cjs.map +1 -0
  68. package/dist/{chunk-4PRWNAXQ.cjs → chunk-UOWLKFXK.cjs} +27 -89
  69. package/dist/chunk-UOWLKFXK.cjs.map +1 -0
  70. package/dist/chunk-VD74IPKB.js +106 -0
  71. package/dist/chunk-VD74IPKB.js.map +1 -0
  72. package/dist/chunk-W73FBYIH.cjs +87 -0
  73. package/dist/chunk-W73FBYIH.cjs.map +1 -0
  74. package/dist/chunk-XGITAEXU.js +93 -0
  75. package/dist/chunk-XGITAEXU.js.map +1 -0
  76. package/dist/chunk-XWOHNY3F.cjs +96 -0
  77. package/dist/chunk-XWOHNY3F.cjs.map +1 -0
  78. package/dist/chunk-ZPYQDMUX.js +79 -0
  79. package/dist/chunk-ZPYQDMUX.js.map +1 -0
  80. package/dist/core/index.cjs +156 -84
  81. package/dist/core/index.d.cts +16 -4
  82. package/dist/core/index.d.ts +16 -4
  83. package/dist/core/index.js +13 -1
  84. package/dist/exa-72KFY5A7.cjs +21 -0
  85. package/dist/exa-72KFY5A7.cjs.map +1 -0
  86. package/dist/exa-Dp9U-WTc.d.ts +17 -0
  87. package/dist/exa-NNVPBC2M.js +4 -0
  88. package/dist/exa-NNVPBC2M.js.map +1 -0
  89. package/dist/exa-jJSPhyUW.d.cts +17 -0
  90. package/dist/google-CHU2yycE.d.cts +17 -0
  91. package/dist/google-CTEK6SV2.js +4 -0
  92. package/dist/google-CTEK6SV2.js.map +1 -0
  93. package/dist/google-Da8IQxaI.d.ts +17 -0
  94. package/dist/google-IIUXFFVF.cjs +21 -0
  95. package/dist/google-IIUXFFVF.cjs.map +1 -0
  96. package/dist/index-2VtgKM8S.d.cts +206 -0
  97. package/dist/index-pWEH7pUE.d.ts +206 -0
  98. package/dist/mcp/index.cjs +670 -0
  99. package/dist/mcp/index.cjs.map +1 -0
  100. package/dist/mcp/index.d.cts +779 -0
  101. package/dist/mcp/index.d.ts +779 -0
  102. package/dist/mcp/index.js +574 -0
  103. package/dist/mcp/index.js.map +1 -0
  104. package/dist/openai-6KTCQ7PZ.cjs +21 -0
  105. package/dist/openai-6KTCQ7PZ.cjs.map +1 -0
  106. package/dist/openai-7W2PCNW5.js +4 -0
  107. package/dist/openai-7W2PCNW5.js.map +1 -0
  108. package/dist/openai-Cam8hF4f.d.ts +17 -0
  109. package/dist/openai-HVSCuXgO.d.cts +17 -0
  110. package/dist/react/index.cjs +75 -42
  111. package/dist/react/index.d.cts +270 -45
  112. package/dist/react/index.d.ts +270 -45
  113. package/dist/react/index.js +15 -2
  114. package/dist/searxng-AXLVGY7Z.js +4 -0
  115. package/dist/searxng-AXLVGY7Z.js.map +1 -0
  116. package/dist/searxng-EJKNY236.cjs +21 -0
  117. package/dist/searxng-EJKNY236.cjs.map +1 -0
  118. package/dist/searxng-K0qtY9vp.d.ts +17 -0
  119. package/dist/searxng-QGOte_Gq.d.cts +17 -0
  120. package/dist/serper-3JYJHJX6.js +4 -0
  121. package/dist/serper-3JYJHJX6.js.map +1 -0
  122. package/dist/serper-63FT4AOL.cjs +21 -0
  123. package/dist/serper-63FT4AOL.cjs.map +1 -0
  124. package/dist/serper-7Czya3PW.d.ts +17 -0
  125. package/dist/serper-JzdaSnS9.d.cts +17 -0
  126. package/dist/styles.css +38 -0
  127. package/dist/tavily-AWFP4RM7.cjs +21 -0
  128. package/dist/tavily-AWFP4RM7.cjs.map +1 -0
  129. package/dist/tavily-C8cXXojE.d.cts +17 -0
  130. package/dist/tavily-CIWAAZPH.js +4 -0
  131. package/dist/tavily-CIWAAZPH.js.map +1 -0
  132. package/dist/tavily-DdSGVgkE.d.ts +17 -0
  133. package/dist/themes/catppuccin.css +2 -0
  134. package/dist/themes/claude.css +2 -0
  135. package/dist/themes/linear.css +2 -0
  136. package/dist/themes/modern-minimal.css +2 -0
  137. package/dist/themes/posthog.css +2 -0
  138. package/dist/themes/supabase.css +2 -0
  139. package/dist/themes/twitter.css +2 -0
  140. package/dist/themes/vercel.css +2 -0
  141. package/dist/tools/anthropic/index.cjs +61 -0
  142. package/dist/tools/anthropic/index.cjs.map +1 -0
  143. package/dist/tools/anthropic/index.d.cts +67 -0
  144. package/dist/tools/anthropic/index.d.ts +67 -0
  145. package/dist/tools/anthropic/index.js +56 -0
  146. package/dist/tools/anthropic/index.js.map +1 -0
  147. package/dist/tools/brave/index.cjs +85 -0
  148. package/dist/tools/brave/index.cjs.map +1 -0
  149. package/dist/tools/brave/index.d.cts +91 -0
  150. package/dist/tools/brave/index.d.ts +91 -0
  151. package/dist/tools/brave/index.js +80 -0
  152. package/dist/tools/brave/index.js.map +1 -0
  153. package/dist/tools/exa/index.cjs +90 -0
  154. package/dist/tools/exa/index.cjs.map +1 -0
  155. package/dist/tools/exa/index.d.cts +92 -0
  156. package/dist/tools/exa/index.d.ts +92 -0
  157. package/dist/tools/exa/index.js +85 -0
  158. package/dist/tools/exa/index.js.map +1 -0
  159. package/dist/tools/google/index.cjs +81 -0
  160. package/dist/tools/google/index.cjs.map +1 -0
  161. package/dist/tools/google/index.d.cts +81 -0
  162. package/dist/tools/google/index.d.ts +81 -0
  163. package/dist/tools/google/index.js +76 -0
  164. package/dist/tools/google/index.js.map +1 -0
  165. package/dist/tools/openai/index.cjs +83 -0
  166. package/dist/tools/openai/index.cjs.map +1 -0
  167. package/dist/tools/openai/index.d.cts +84 -0
  168. package/dist/tools/openai/index.d.ts +84 -0
  169. package/dist/tools/openai/index.js +78 -0
  170. package/dist/tools/openai/index.js.map +1 -0
  171. package/dist/tools/searxng/index.cjs +85 -0
  172. package/dist/tools/searxng/index.cjs.map +1 -0
  173. package/dist/tools/searxng/index.d.cts +91 -0
  174. package/dist/tools/searxng/index.d.ts +91 -0
  175. package/dist/tools/searxng/index.js +80 -0
  176. package/dist/tools/searxng/index.js.map +1 -0
  177. package/dist/tools/serper/index.cjs +85 -0
  178. package/dist/tools/serper/index.cjs.map +1 -0
  179. package/dist/tools/serper/index.d.cts +91 -0
  180. package/dist/tools/serper/index.d.ts +91 -0
  181. package/dist/tools/serper/index.js +80 -0
  182. package/dist/tools/serper/index.js.map +1 -0
  183. package/dist/tools/tavily/index.cjs +91 -0
  184. package/dist/tools/tavily/index.cjs.map +1 -0
  185. package/dist/tools/tavily/index.d.cts +95 -0
  186. package/dist/tools/tavily/index.d.ts +95 -0
  187. package/dist/tools/tavily/index.js +86 -0
  188. package/dist/tools/tavily/index.js.map +1 -0
  189. package/dist/tools/web-search/index.cjs +31 -0
  190. package/dist/tools/web-search/index.cjs.map +1 -0
  191. package/dist/tools/web-search/index.d.cts +3 -0
  192. package/dist/tools/web-search/index.d.ts +3 -0
  193. package/dist/tools/web-search/index.js +14 -0
  194. package/dist/tools/web-search/index.js.map +1 -0
  195. package/dist/{types-BtAaOV07.d.cts → tools-DDWrco4h.d.cts} +43 -367
  196. package/dist/{types-BtAaOV07.d.ts → tools-DDWrco4h.d.ts} +43 -367
  197. package/dist/types-B20VCJXL.d.cts +347 -0
  198. package/dist/types-B20VCJXL.d.ts +347 -0
  199. package/dist/types-Cizh9K_f.d.ts +441 -0
  200. package/dist/types-DG2ya08y.d.cts +367 -0
  201. package/dist/types-DG2ya08y.d.ts +367 -0
  202. package/dist/types-DjSfYNKj.d.cts +441 -0
  203. package/dist/types-ZguuKEs_.d.cts +127 -0
  204. package/dist/types-ZguuKEs_.d.ts +127 -0
  205. package/dist/ui/index.cjs +1075 -148
  206. package/dist/ui/index.cjs.map +1 -1
  207. package/dist/ui/index.d.cts +410 -4
  208. package/dist/ui/index.d.ts +410 -4
  209. package/dist/ui/index.js +1007 -96
  210. package/dist/ui/index.js.map +1 -1
  211. package/package.json +52 -2
  212. package/dist/chunk-4PRWNAXQ.cjs.map +0 -1
  213. package/dist/chunk-BLSI67J6.cjs.map +0 -1
  214. package/dist/chunk-CJ7UWN2Y.js.map +0 -1
  215. package/dist/chunk-JM7PB2LP.js.map +0 -1
@@ -0,0 +1,132 @@
1
+ 'use strict';
2
+
3
+ // src/core/tools/webSearch/providers/anthropic.ts
4
+ var ANTHROPIC_API_URL = "https://api.anthropic.com/v1/messages";
5
+ function validateAnthropicConfig(config) {
6
+ if (!config.apiKey) {
7
+ throw new Error(
8
+ "Anthropic API key is required for native web search. Pass apiKey or set ANTHROPIC_API_KEY environment variable."
9
+ );
10
+ }
11
+ }
12
+ async function searchAnthropic(params, config) {
13
+ validateAnthropicConfig(config);
14
+ const startTime = Date.now();
15
+ const apiKey = config.apiKey || process.env.ANTHROPIC_API_KEY;
16
+ const webSearchTool = {
17
+ type: "web_search_20250305",
18
+ // Use stable version
19
+ name: "web_search",
20
+ max_uses: config.maxResults ?? 5
21
+ };
22
+ if (config.includeDomains?.length) {
23
+ webSearchTool.allowed_domains = config.includeDomains;
24
+ }
25
+ if (config.excludeDomains?.length) {
26
+ webSearchTool.blocked_domains = config.excludeDomains;
27
+ }
28
+ if (config.country) {
29
+ webSearchTool.user_location = {
30
+ type: "approximate",
31
+ country: config.country.toUpperCase()
32
+ };
33
+ }
34
+ const response = await fetch(ANTHROPIC_API_URL, {
35
+ method: "POST",
36
+ headers: {
37
+ "Content-Type": "application/json",
38
+ "x-api-key": apiKey,
39
+ "anthropic-version": "2023-06-01"
40
+ },
41
+ body: JSON.stringify({
42
+ model: "claude-sonnet-4-20250514",
43
+ // Use Sonnet 4 for balance of speed/quality
44
+ max_tokens: 2048,
45
+ tools: [webSearchTool],
46
+ messages: [
47
+ {
48
+ role: "user",
49
+ content: params.query
50
+ }
51
+ ]
52
+ }),
53
+ signal: config.timeout ? AbortSignal.timeout(config.timeout) : void 0
54
+ });
55
+ if (!response.ok) {
56
+ const errorText = await response.text().catch(() => "Unknown error");
57
+ console.error(
58
+ "[Anthropic Native Search] API error:",
59
+ response.status,
60
+ errorText
61
+ );
62
+ throw new Error(
63
+ `Anthropic Messages API error (${response.status}): ${errorText}`
64
+ );
65
+ }
66
+ const data = await response.json();
67
+ const searchTime = Date.now() - startTime;
68
+ let outputText = "";
69
+ const sources = [];
70
+ const searchResults = [];
71
+ if (data.content && Array.isArray(data.content)) {
72
+ for (const block of data.content) {
73
+ if (block.type === "text" && block.text) {
74
+ outputText += block.text;
75
+ if (block.citations && Array.isArray(block.citations)) {
76
+ for (const citation of block.citations) {
77
+ if (citation.url && !sources.find((s) => s.url === citation.url)) {
78
+ sources.push({
79
+ url: citation.url,
80
+ title: citation.title || extractDomain(citation.url),
81
+ cited_text: citation.cited_text
82
+ });
83
+ }
84
+ }
85
+ }
86
+ }
87
+ if (block.type === "web_search_tool_result" && block.content) {
88
+ for (const result of block.content) {
89
+ if (result.type === "web_search_result" && result.url) {
90
+ searchResults.push({
91
+ url: result.url,
92
+ title: result.title || extractDomain(result.url),
93
+ page_age: result.page_age
94
+ });
95
+ }
96
+ }
97
+ }
98
+ }
99
+ }
100
+ const finalSources = sources.length > 0 ? sources : searchResults;
101
+ return {
102
+ query: params.query,
103
+ answer: outputText,
104
+ results: finalSources.slice(0, params.maxResults ?? config.maxResults ?? 5).map((source, i) => ({
105
+ title: source.title,
106
+ url: source.url,
107
+ content: "cited_text" in source ? source.cited_text || "" : "",
108
+ score: 1 - i * 0.1,
109
+ domain: extractDomain(source.url)
110
+ })),
111
+ provider: "anthropic",
112
+ totalResults: finalSources.length,
113
+ searchTime
114
+ };
115
+ }
116
+ function extractDomain(url) {
117
+ try {
118
+ return new URL(url).hostname.replace("www.", "");
119
+ } catch {
120
+ return url;
121
+ }
122
+ }
123
+ var anthropicProvider = {
124
+ search: searchAnthropic,
125
+ validateConfig: validateAnthropicConfig
126
+ };
127
+
128
+ exports.anthropicProvider = anthropicProvider;
129
+ exports.searchAnthropic = searchAnthropic;
130
+ exports.validateAnthropicConfig = validateAnthropicConfig;
131
+ //# sourceMappingURL=chunk-TXLIY7GF.cjs.map
132
+ //# sourceMappingURL=chunk-TXLIY7GF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/tools/webSearch/providers/anthropic.ts"],"names":[],"mappings":"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","file":"chunk-TXLIY7GF.cjs","sourcesContent":["/**\n * Anthropic Web Search Provider\n *\n * Uses Anthropic's built-in web_search tool via the Messages API.\n * Returns reliable citations with cited_text, url, and title.\n *\n * @see https://docs.anthropic.com/en/docs/build-with-claude/tool-use/web-search-tool\n */\n\nimport type {\n WebSearchConfig,\n WebSearchParams,\n WebSearchResponse,\n WebSearchProviderInterface,\n} from \"../types\";\n\nconst ANTHROPIC_API_URL = \"https://api.anthropic.com/v1/messages\";\n\n/**\n * Validate Anthropic native search configuration\n */\nexport function validateAnthropicConfig(config: WebSearchConfig): void {\n if (!config.apiKey) {\n throw new Error(\n \"Anthropic API key is required for native web search. \" +\n \"Pass apiKey or set ANTHROPIC_API_KEY environment variable.\",\n );\n }\n}\n\n// Type definitions for Anthropic response\ninterface AnthropicWebSearchResult {\n type: \"web_search_result\";\n url: string;\n title: string;\n encrypted_content?: string;\n page_age?: string;\n}\n\ninterface AnthropicCitation {\n type: \"web_search_result_location\";\n url: string;\n title: string;\n encrypted_index?: string;\n cited_text?: string;\n}\n\ninterface AnthropicContentBlock {\n type: string;\n text?: string;\n tool_use_id?: string;\n content?: AnthropicWebSearchResult[];\n citations?: AnthropicCitation[];\n}\n\ninterface AnthropicMessagesResponse {\n id: string;\n content: AnthropicContentBlock[];\n usage?: {\n input_tokens: number;\n output_tokens: number;\n server_tool_use?: {\n web_search_requests?: number;\n };\n };\n}\n\n/**\n * Search using Anthropic's native web_search tool\n */\nexport async function searchAnthropic(\n params: WebSearchParams,\n config: WebSearchConfig,\n): Promise<WebSearchResponse> {\n validateAnthropicConfig(config);\n\n const startTime = Date.now();\n const apiKey = config.apiKey || process.env.ANTHROPIC_API_KEY;\n\n // Build web search tool configuration\n const webSearchTool: Record<string, unknown> = {\n type: \"web_search_20250305\", // Use stable version\n name: \"web_search\",\n max_uses: config.maxResults ?? 5,\n };\n\n // Add domain filtering if provided\n if (config.includeDomains?.length) {\n webSearchTool.allowed_domains = config.includeDomains;\n }\n if (config.excludeDomains?.length) {\n webSearchTool.blocked_domains = config.excludeDomains;\n }\n\n // Add user location if country is set\n if (config.country) {\n webSearchTool.user_location = {\n type: \"approximate\",\n country: config.country.toUpperCase(),\n };\n }\n\n // Call Anthropic Messages API\n const response = await fetch(ANTHROPIC_API_URL, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-api-key\": apiKey!,\n \"anthropic-version\": \"2023-06-01\",\n },\n body: JSON.stringify({\n model: \"claude-sonnet-4-20250514\", // Use Sonnet 4 for balance of speed/quality\n max_tokens: 2048,\n tools: [webSearchTool],\n messages: [\n {\n role: \"user\",\n content: params.query,\n },\n ],\n }),\n signal: config.timeout ? AbortSignal.timeout(config.timeout) : undefined,\n });\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => \"Unknown error\");\n console.error(\n \"[Anthropic Native Search] API error:\",\n response.status,\n errorText,\n );\n throw new Error(\n `Anthropic Messages API error (${response.status}): ${errorText}`,\n );\n }\n\n const data: AnthropicMessagesResponse = await response.json();\n const searchTime = Date.now() - startTime;\n\n // Extract answer text and citations\n let outputText = \"\";\n const sources: Array<{ url: string; title: string; cited_text?: string }> =\n [];\n const searchResults: Array<{\n url: string;\n title: string;\n page_age?: string;\n }> = [];\n\n if (data.content && Array.isArray(data.content)) {\n for (const block of data.content) {\n // Extract text blocks\n if (block.type === \"text\" && block.text) {\n outputText += block.text;\n\n // Extract citations from text blocks\n if (block.citations && Array.isArray(block.citations)) {\n for (const citation of block.citations) {\n if (citation.url && !sources.find((s) => s.url === citation.url)) {\n sources.push({\n url: citation.url,\n title: citation.title || extractDomain(citation.url),\n cited_text: citation.cited_text,\n });\n }\n }\n }\n }\n\n // Extract search results from web_search_tool_result\n if (block.type === \"web_search_tool_result\" && block.content) {\n for (const result of block.content) {\n if (result.type === \"web_search_result\" && result.url) {\n searchResults.push({\n url: result.url,\n title: result.title || extractDomain(result.url),\n page_age: result.page_age,\n });\n }\n }\n }\n }\n }\n\n // Prefer citations (have cited_text) over raw search results\n const finalSources = sources.length > 0 ? sources : searchResults;\n\n return {\n query: params.query,\n answer: outputText,\n results: finalSources\n .slice(0, params.maxResults ?? config.maxResults ?? 5)\n .map((source, i) => ({\n title: source.title,\n url: source.url,\n content: \"cited_text\" in source ? source.cited_text || \"\" : \"\",\n score: 1 - i * 0.1,\n domain: extractDomain(source.url),\n })),\n provider: \"anthropic\",\n totalResults: finalSources.length,\n searchTime,\n };\n}\n\n/**\n * Extract domain from URL\n */\nfunction extractDomain(url: string): string {\n try {\n return new URL(url).hostname.replace(\"www.\", \"\");\n } catch {\n return url;\n }\n}\n\n/**\n * Anthropic native search provider implementation\n */\nexport const anthropicProvider: WebSearchProviderInterface = {\n search: searchAnthropic,\n validateConfig: validateAnthropicConfig,\n};\n"]}
@@ -0,0 +1,82 @@
1
+ 'use strict';
2
+
3
+ var chunkCEKAYA2Q_cjs = require('./chunk-CEKAYA2Q.cjs');
4
+ var chunkASV6JLYG_cjs = require('./chunk-ASV6JLYG.cjs');
5
+
6
+ // src/core/tools/builtin/webSearch.ts
7
+ var webSearchTool = chunkCEKAYA2Q_cjs.tool({
8
+ description: `Search the web for current information. Use this when the user asks about:
9
+ - Recent events, news, or current affairs
10
+ - Real-time data (prices, weather, stocks, sports scores)
11
+ - Information that might have changed after your training cutoff
12
+ - Facts that need verification with current sources
13
+ - Research topics that require up-to-date information`,
14
+ location: "server",
15
+ // Runs on server to protect API keys
16
+ title: (args) => `Searching for "${args.query}"`,
17
+ executingTitle: (args) => `Searching the web for "${args.query}"...`,
18
+ completedTitle: (args) => `Found results for "${args.query}"`,
19
+ inputSchema: {
20
+ type: "object",
21
+ properties: {
22
+ query: {
23
+ type: "string",
24
+ description: "The search query to find relevant information"
25
+ },
26
+ maxResults: {
27
+ type: "number",
28
+ description: "Maximum number of results to return (default: 5, max: 10)",
29
+ minimum: 1,
30
+ maximum: 10
31
+ },
32
+ searchDepth: {
33
+ type: "string",
34
+ enum: ["basic", "advanced"],
35
+ description: "Search depth - 'advanced' provides more thorough results but may be slower"
36
+ }
37
+ },
38
+ required: ["query"]
39
+ },
40
+ needsApproval: false,
41
+ // No user data exposed, just searching
42
+ // Control what AI sees from results
43
+ aiResponseMode: "full",
44
+ aiContext: (result, args) => {
45
+ if (!result.success) return `Search failed: ${result.error}`;
46
+ const data = result.data;
47
+ return chunkASV6JLYG_cjs.formatSearchResultsForAI(data);
48
+ }
49
+ });
50
+ function createWebSearchTool(config) {
51
+ return {
52
+ name: "web_search",
53
+ ...webSearchTool,
54
+ handler: async (params) => {
55
+ try {
56
+ const response = await chunkASV6JLYG_cjs.executeWebSearch(
57
+ {
58
+ query: params.query,
59
+ maxResults: params.maxResults ?? config.maxResults ?? 5,
60
+ searchDepth: params.searchDepth ?? config.searchDepth ?? "basic"
61
+ },
62
+ config
63
+ );
64
+ const aiContext = chunkASV6JLYG_cjs.formatSearchResultsForAI(response);
65
+ return {
66
+ success: true,
67
+ message: chunkASV6JLYG_cjs.summarizeSearchResults(response),
68
+ data: response,
69
+ _aiContext: aiContext
70
+ };
71
+ } catch (error) {
72
+ const errorMessage = error instanceof Error ? error.message : "Web search failed";
73
+ return chunkCEKAYA2Q_cjs.failure(errorMessage);
74
+ }
75
+ }
76
+ };
77
+ }
78
+
79
+ exports.createWebSearchTool = createWebSearchTool;
80
+ exports.webSearchTool = webSearchTool;
81
+ //# sourceMappingURL=chunk-UIWFYMAO.cjs.map
82
+ //# sourceMappingURL=chunk-UIWFYMAO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/tools/builtin/webSearch.ts"],"names":["tool","formatSearchResultsForAI","executeWebSearch","summarizeSearchResults","failure"],"mappings":";;;;;;AAoDO,IAAM,gBAAgBA,sBAAA,CAAsB;AAAA,EACjD,WAAA,EAAa,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qDAAA,CAAA;AAAA,EAOb,QAAA,EAAU,QAAA;AAAA;AAAA,EAEV,KAAA,EAAO,CAAC,IAAA,KAAS,CAAA,eAAA,EAAkB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAC7C,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,uBAAA,EAA0B,KAAK,KAAK,CAAA,IAAA,CAAA;AAAA,EAC9D,cAAA,EAAgB,CAAC,IAAA,KAAS,CAAA,mBAAA,EAAsB,KAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAE1D,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,QAAA;AAAA,IACN,UAAA,EAAY;AAAA,MACV,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EAAa;AAAA,OACf;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,WAAA,EACE,2DAAA;AAAA,QACF,OAAA,EAAS,CAAA;AAAA,QACT,OAAA,EAAS;AAAA,OACX;AAAA,MACA,WAAA,EAAa;AAAA,QACX,IAAA,EAAM,QAAA;AAAA,QACN,IAAA,EAAM,CAAC,OAAA,EAAS,UAAU,CAAA;AAAA,QAC1B,WAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,QAAA,EAAU,CAAC,OAAO;AAAA,GACpB;AAAA,EAEA,aAAA,EAAe,KAAA;AAAA;AAAA;AAAA,EAGf,cAAA,EAAgB,MAAA;AAAA,EAChB,SAAA,EAAW,CAAC,MAAA,EAAQ,IAAA,KAAS;AAC3B,IAAA,IAAI,CAAC,MAAA,CAAO,OAAA,EAAS,OAAO,CAAA,eAAA,EAAkB,OAAO,KAAK,CAAA,CAAA;AAC1D,IAAA,MAAM,OAAO,MAAA,CAAO,IAAA;AACpB,IAAA,OAAOC,2CAAyB,IAAI,CAAA;AAAA,EACtC;AACF,CAAC;AAoEM,SAAS,oBACd,MAAA,EACiC;AACjC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN,GAAG,aAAA;AAAA,IACH,OAAA,EAAS,OAAO,MAAA,KAA4B;AAC1C,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,MAAMC,kCAAA;AAAA,UACrB;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,SACF;AAGA,QAAA,MAAM,SAAA,GAAYD,2CAAyB,QAAQ,CAAA;AAEnD,QAAA,OAAO;AAAA,UACL,OAAA,EAAS,IAAA;AAAA,UACT,OAAA,EAASE,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":"chunk-UIWFYMAO.cjs","sourcesContent":["/**\n * Built-in Web Search Tool\n *\n * A pre-configured tool for searching the web with multiple provider support.\n * Runs on the server to protect API keys.\n *\n * Supports tree-shaking - import providers directly for smaller bundles.\n *\n * @example\n * ```typescript\n * // Option 1: String provider (lazy loaded at runtime)\n * import { createWebSearchTool } from '@yourgpt/copilot-sdk';\n * const webSearch = createWebSearchTool({\n * provider: 'tavily',\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * // Option 2: Direct provider import (best for tree-shaking)\n * import { createWebSearchTool, tavilyProvider } from '@yourgpt/copilot-sdk';\n * const webSearch = createWebSearchTool({\n * provider: tavilyProvider,\n * apiKey: process.env.TAVILY_API_KEY,\n * });\n *\n * // Add to your runtime\n * const runtime = createRuntime({\n * tools: [webSearch],\n * });\n * ```\n */\n\nimport { tool, success, failure } from \"../../types/tools\";\nimport type { ToolDefinition } from \"../../types/tools\";\nimport {\n executeWebSearch,\n formatSearchResultsForAI,\n summarizeSearchResults,\n type WebSearchConfigExtended,\n} from \"../webSearch\";\nimport type {\n WebSearchConfig,\n WebSearchParams,\n WebSearchResponse,\n WebSearchProviderInterface,\n} from \"../webSearch/types\";\n\n/**\n * Base web search tool definition\n *\n * This is the core tool definition. Use `createWebSearchTool()` to create\n * a configured instance with your provider settings.\n */\nexport const webSearchTool = tool<WebSearchParams>({\n description: `Search the web 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\", // Runs on server to protect API keys\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, // No user data exposed, just searching\n\n // Control what AI sees from results\n aiResponseMode: \"full\",\n aiContext: (result, args) => {\n if (!result.success) return `Search failed: ${result.error}`;\n const data = result.data as WebSearchResponse;\n return formatSearchResultsForAI(data);\n },\n});\n\n/**\n * Create a configured web search tool\n *\n * Supports both string provider names (lazy loaded) and direct provider imports (tree-shakeable).\n *\n * @param config - Web search configuration including provider and API key\n * @returns A configured tool definition ready to use\n *\n * @example\n * ```typescript\n * // ===== BEST FOR TREE-SHAKING: Direct provider import =====\n * import { createWebSearchTool, openaiProvider } from '@yourgpt/copilot-sdk/core';\n *\n * const webSearch = createWebSearchTool({\n * provider: openaiProvider, // Only this provider in bundle\n * apiKey: process.env.OPENAI_API_KEY,\n * });\n *\n * // ===== STRING PROVIDERS (Lazy loaded at runtime) =====\n *\n * // OpenAI (uses your OpenAI API key)\n * const webSearch = createWebSearchTool({\n * provider: 'openai',\n * apiKey: process.env.OPENAI_API_KEY,\n * });\n *\n * // Google (uses your Google/Gemini API key)\n * const webSearch = createWebSearchTool({\n * provider: 'google',\n * apiKey: process.env.GOOGLE_API_KEY,\n * });\n *\n * // Tavily (AI-optimized search with answer generation)\n * const webSearch = createWebSearchTool({\n * provider: 'tavily',\n * apiKey: process.env.TAVILY_API_KEY,\n * includeAnswer: true,\n * maxResults: 5,\n * });\n *\n * // Serper (Google results)\n * const webSearch = createWebSearchTool({\n * provider: 'serper',\n * apiKey: process.env.SERPER_API_KEY,\n * });\n *\n * // Brave Search (privacy-focused)\n * const webSearch = createWebSearchTool({\n * provider: 'brave',\n * apiKey: process.env.BRAVE_API_KEY,\n * });\n *\n * // Self-hosted SearXNG (no API key needed)\n * const webSearch = createWebSearchTool({\n * provider: 'searxng',\n * baseUrl: 'https://your-searxng-instance.com',\n * });\n *\n * // Exa (AI-optimized semantic search)\n * const webSearch = createWebSearchTool({\n * provider: 'exa',\n * apiKey: process.env.EXA_API_KEY,\n * searchDepth: 'advanced',\n * });\n * ```\n */\nexport function createWebSearchTool(\n config: WebSearchConfigExtended,\n): ToolDefinition<WebSearchParams> {\n return {\n name: \"web_search\",\n ...webSearchTool,\n handler: async (params: WebSearchParams) => {\n try {\n const response = await executeWebSearch(\n {\n query: params.query,\n maxResults: params.maxResults ?? config.maxResults ?? 5,\n searchDepth: params.searchDepth ?? config.searchDepth ?? \"basic\",\n },\n config,\n );\n\n // Build the AI context string\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\n/**\n * Utility types for web search tool configuration\n */\nexport type {\n WebSearchConfig,\n WebSearchParams,\n WebSearchResponse,\n WebSearchProviderInterface,\n};\nexport type { WebSearchConfigExtended };\n"]}
@@ -1,5 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ var chunkUIWFYMAO_cjs = require('./chunk-UIWFYMAO.cjs');
4
+ var chunkCEKAYA2Q_cjs = require('./chunk-CEKAYA2Q.cjs');
5
+
3
6
  // src/core/tools/screenshot.ts
4
7
  var isBrowser = typeof window !== "undefined" && typeof document !== "undefined";
5
8
  var DEFAULT_OPTIONS = {
@@ -1032,71 +1035,8 @@ function createCustomDetector(customKeywords) {
1032
1035
  };
1033
1036
  }
1034
1037
 
1035
- // src/core/types/tools.ts
1036
- function tool(config) {
1037
- return {
1038
- description: config.description,
1039
- location: config.location ?? "client",
1040
- // Display configuration
1041
- title: config.title,
1042
- executingTitle: config.executingTitle,
1043
- completedTitle: config.completedTitle,
1044
- // Schema and handlers
1045
- inputSchema: config.inputSchema ?? {
1046
- type: "object",
1047
- properties: {},
1048
- required: []
1049
- },
1050
- handler: config.handler,
1051
- render: config.render,
1052
- available: config.available,
1053
- needsApproval: config.needsApproval,
1054
- approvalMessage: config.approvalMessage,
1055
- aiResponseMode: config.aiResponseMode,
1056
- aiContext: config.aiContext
1057
- };
1058
- }
1059
- function toolToOpenAIFormat(tool2) {
1060
- return {
1061
- type: "function",
1062
- function: {
1063
- name: tool2.name,
1064
- description: tool2.description,
1065
- parameters: tool2.inputSchema
1066
- }
1067
- };
1068
- }
1069
- function toolToAnthropicFormat(tool2) {
1070
- return {
1071
- name: tool2.name,
1072
- description: tool2.description,
1073
- input_schema: tool2.inputSchema
1074
- };
1075
- }
1076
- function createToolResult(toolCallId, response) {
1077
- return {
1078
- toolCallId,
1079
- content: JSON.stringify(response),
1080
- success: response.success,
1081
- error: response.error
1082
- };
1083
- }
1084
- function success(data, message) {
1085
- return {
1086
- success: true,
1087
- data,
1088
- message
1089
- };
1090
- }
1091
- function failure(error) {
1092
- return {
1093
- success: false,
1094
- error
1095
- };
1096
- }
1097
-
1098
1038
  // src/core/tools/builtin/screenshot.ts
1099
- var screenshotTool = tool({
1039
+ var screenshotTool = chunkCEKAYA2Q_cjs.tool({
1100
1040
  description: "Capture a screenshot of the user's current screen/viewport. Use this when the user asks you to look at their screen, see what they're seeing, help with visual issues, or debug UI problems.",
1101
1041
  location: "client",
1102
1042
  inputSchema: {
@@ -1115,7 +1055,7 @@ var screenshotTool = tool({
1115
1055
  approvalMessage: "Allow AI to capture a screenshot of your screen?",
1116
1056
  handler: async (params) => {
1117
1057
  if (!isScreenshotSupported()) {
1118
- return failure("Screenshot capture is not supported in this environment");
1058
+ return chunkCEKAYA2Q_cjs.failure("Screenshot capture is not supported in this environment");
1119
1059
  }
1120
1060
  try {
1121
1061
  const options = {};
@@ -1141,20 +1081,20 @@ var screenshotTool = tool({
1141
1081
  }
1142
1082
  };
1143
1083
  } catch (error) {
1144
- return failure(
1084
+ return chunkCEKAYA2Q_cjs.failure(
1145
1085
  error instanceof Error ? error.message : "Screenshot capture failed"
1146
1086
  );
1147
1087
  }
1148
1088
  }
1149
1089
  });
1150
1090
  function createScreenshotTool(options) {
1151
- return tool({
1091
+ return chunkCEKAYA2Q_cjs.tool({
1152
1092
  ...screenshotTool,
1153
1093
  needsApproval: options?.needsApproval ?? true,
1154
1094
  approvalMessage: options?.approvalMessage ?? "Allow AI to capture a screenshot of your screen?",
1155
1095
  handler: async (params) => {
1156
1096
  if (!isScreenshotSupported()) {
1157
- return failure(
1097
+ return chunkCEKAYA2Q_cjs.failure(
1158
1098
  "Screenshot capture is not supported in this environment"
1159
1099
  );
1160
1100
  }
@@ -1180,7 +1120,7 @@ function createScreenshotTool(options) {
1180
1120
  }
1181
1121
  };
1182
1122
  } catch (error) {
1183
- return failure(
1123
+ return chunkCEKAYA2Q_cjs.failure(
1184
1124
  error instanceof Error ? error.message : "Screenshot capture failed"
1185
1125
  );
1186
1126
  }
@@ -1193,7 +1133,7 @@ var isBrowser4 = typeof window !== "undefined" && typeof console !== "undefined"
1193
1133
  if (isBrowser4 && !isConsoleCaptureActive()) {
1194
1134
  startConsoleCapture();
1195
1135
  }
1196
- var consoleLogsTool = tool({
1136
+ var consoleLogsTool = chunkCEKAYA2Q_cjs.tool({
1197
1137
  description: "Get recent console logs from the browser. Use this when debugging JavaScript errors, checking for warnings, or understanding what's happening in the application.",
1198
1138
  location: "client",
1199
1139
  inputSchema: {
@@ -1226,7 +1166,7 @@ var consoleLogsTool = tool({
1226
1166
  types: params.types
1227
1167
  });
1228
1168
  const formattedLogs = formatLogsForAI(logs.logs);
1229
- return success(
1169
+ return chunkCEKAYA2Q_cjs.success(
1230
1170
  {
1231
1171
  logs: formattedLogs,
1232
1172
  count: logs.logs.length,
@@ -1235,14 +1175,14 @@ var consoleLogsTool = tool({
1235
1175
  `Retrieved ${logs.logs.length} console logs`
1236
1176
  );
1237
1177
  } catch (error) {
1238
- return failure(
1178
+ return chunkCEKAYA2Q_cjs.failure(
1239
1179
  error instanceof Error ? error.message : "Failed to get console logs"
1240
1180
  );
1241
1181
  }
1242
1182
  }
1243
1183
  });
1244
1184
  function createConsoleLogsTool(options) {
1245
- return tool({
1185
+ return chunkCEKAYA2Q_cjs.tool({
1246
1186
  ...consoleLogsTool,
1247
1187
  needsApproval: options?.needsApproval ?? true,
1248
1188
  approvalMessage: options?.approvalMessage ?? "Allow AI to access browser console logs?",
@@ -1256,7 +1196,7 @@ function createConsoleLogsTool(options) {
1256
1196
  types: params.types
1257
1197
  });
1258
1198
  const formattedLogs = formatLogsForAI(logs.logs);
1259
- return success(
1199
+ return chunkCEKAYA2Q_cjs.success(
1260
1200
  {
1261
1201
  logs: formattedLogs,
1262
1202
  count: logs.logs.length,
@@ -1265,7 +1205,7 @@ function createConsoleLogsTool(options) {
1265
1205
  `Retrieved ${logs.logs.length} console logs`
1266
1206
  );
1267
1207
  } catch (error) {
1268
- return failure(
1208
+ return chunkCEKAYA2Q_cjs.failure(
1269
1209
  error instanceof Error ? error.message : "Failed to get console logs"
1270
1210
  );
1271
1211
  }
@@ -1274,7 +1214,7 @@ function createConsoleLogsTool(options) {
1274
1214
  }
1275
1215
 
1276
1216
  // src/core/tools/builtin/network.ts
1277
- var networkRequestsTool = tool({
1217
+ var networkRequestsTool = chunkCEKAYA2Q_cjs.tool({
1278
1218
  description: "Get recent network requests from the browser. Use this when debugging API calls, checking for failed requests, analyzing network activity, or troubleshooting connectivity issues.",
1279
1219
  location: "client",
1280
1220
  inputSchema: {
@@ -1303,7 +1243,7 @@ var networkRequestsTool = tool({
1303
1243
  failedOnly: params.failedOnly
1304
1244
  });
1305
1245
  const formattedRequests = formatRequestsForAI(requests.requests);
1306
- return success(
1246
+ return chunkCEKAYA2Q_cjs.success(
1307
1247
  {
1308
1248
  requests: formattedRequests,
1309
1249
  count: requests.requests.length,
@@ -1312,14 +1252,14 @@ var networkRequestsTool = tool({
1312
1252
  `Retrieved ${requests.requests.length} network requests`
1313
1253
  );
1314
1254
  } catch (error) {
1315
- return failure(
1255
+ return chunkCEKAYA2Q_cjs.failure(
1316
1256
  error instanceof Error ? error.message : "Failed to get network requests"
1317
1257
  );
1318
1258
  }
1319
1259
  }
1320
1260
  });
1321
1261
  function createNetworkRequestsTool(options) {
1322
- return tool({
1262
+ return chunkCEKAYA2Q_cjs.tool({
1323
1263
  ...networkRequestsTool,
1324
1264
  needsApproval: options?.needsApproval ?? true,
1325
1265
  approvalMessage: options?.approvalMessage ?? "Allow AI to access network request history?",
@@ -1333,7 +1273,7 @@ function createNetworkRequestsTool(options) {
1333
1273
  failedOnly: params.failedOnly
1334
1274
  });
1335
1275
  const formattedRequests = formatRequestsForAI(requests.requests);
1336
- return success(
1276
+ return chunkCEKAYA2Q_cjs.success(
1337
1277
  {
1338
1278
  requests: formattedRequests,
1339
1279
  count: requests.requests.length,
@@ -1342,7 +1282,7 @@ function createNetworkRequestsTool(options) {
1342
1282
  `Retrieved ${requests.requests.length} network requests`
1343
1283
  );
1344
1284
  } catch (error) {
1345
- return failure(
1285
+ return chunkCEKAYA2Q_cjs.failure(
1346
1286
  error instanceof Error ? error.message : "Failed to get network requests"
1347
1287
  );
1348
1288
  }
@@ -1363,6 +1303,10 @@ var builtinTools = {
1363
1303
  get_network_requests: {
1364
1304
  name: "get_network_requests",
1365
1305
  ...networkRequestsTool
1306
+ },
1307
+ web_search: {
1308
+ name: "web_search",
1309
+ ...chunkUIWFYMAO_cjs.webSearchTool
1366
1310
  }
1367
1311
  };
1368
1312
 
@@ -2900,14 +2844,12 @@ exports.createServerAdapter = createServerAdapter;
2900
2844
  exports.createThreadManager = createThreadManager;
2901
2845
  exports.createToolCall = createToolCall;
2902
2846
  exports.createToolMessage = createToolMessage;
2903
- exports.createToolResult = createToolResult;
2904
2847
  exports.createUserMessage = createUserMessage;
2905
2848
  exports.defaultSystemMessage = defaultSystemMessage;
2906
2849
  exports.defineClientTool = defineClientTool;
2907
2850
  exports.defineServerTool = defineServerTool;
2908
2851
  exports.defineTool = defineTool;
2909
2852
  exports.detectIntent = detectIntent;
2910
- exports.failure = failure;
2911
2853
  exports.formatLogsForAI = formatLogsForAI;
2912
2854
  exports.formatRequestsForAI = formatRequestsForAI;
2913
2855
  exports.formatSSE = formatSSE;
@@ -2945,11 +2887,7 @@ exports.startNetworkCapture = startNetworkCapture;
2945
2887
  exports.stopConsoleCapture = stopConsoleCapture;
2946
2888
  exports.stopNetworkCapture = stopNetworkCapture;
2947
2889
  exports.streamSSE = streamSSE;
2948
- exports.success = success;
2949
- exports.tool = tool;
2950
- exports.toolToAnthropicFormat = toolToAnthropicFormat;
2951
- exports.toolToOpenAIFormat = toolToOpenAIFormat;
2952
2890
  exports.zodObjectToInputSchema = zodObjectToInputSchema;
2953
2891
  exports.zodToJsonSchema = zodToJsonSchema;
2954
- //# sourceMappingURL=chunk-4PRWNAXQ.cjs.map
2955
- //# sourceMappingURL=chunk-4PRWNAXQ.cjs.map
2892
+ //# sourceMappingURL=chunk-UOWLKFXK.cjs.map
2893
+ //# sourceMappingURL=chunk-UOWLKFXK.cjs.map