@yourgpt/copilot-sdk 2.0.0 → 2.0.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/README.md +68 -27
  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-CJ7UWN2Y.js → chunk-3YKHVLNP.js} +397 -7
  19. package/dist/chunk-3YKHVLNP.js.map +1 -0
  20. package/dist/chunk-4WWWMNUA.js +1142 -0
  21. package/dist/chunk-4WWWMNUA.js.map +1 -0
  22. package/dist/chunk-53UGJNHN.js +92 -0
  23. package/dist/chunk-53UGJNHN.js.map +1 -0
  24. package/dist/chunk-6BXQFCK3.js +79 -0
  25. package/dist/chunk-6BXQFCK3.js.map +1 -0
  26. package/dist/chunk-6T5XXJEP.cjs +80 -0
  27. package/dist/chunk-6T5XXJEP.cjs.map +1 -0
  28. package/dist/chunk-7W7QLZNC.js +72 -0
  29. package/dist/chunk-7W7QLZNC.js.map +1 -0
  30. package/dist/chunk-ASV6JLYG.cjs +99 -0
  31. package/dist/chunk-ASV6JLYG.cjs.map +1 -0
  32. package/dist/chunk-CBAHCI4R.cjs +76 -0
  33. package/dist/chunk-CBAHCI4R.cjs.map +1 -0
  34. package/dist/chunk-CEOMTQTP.js +85 -0
  35. package/dist/chunk-CEOMTQTP.js.map +1 -0
  36. package/dist/chunk-DABZYCVX.js +84 -0
  37. package/dist/chunk-DABZYCVX.js.map +1 -0
  38. package/dist/chunk-DGUM43GV.js +10 -0
  39. package/dist/chunk-DGUM43GV.js.map +1 -0
  40. package/dist/{chunk-4PRWNAXQ.cjs → chunk-DUPNYVBP.cjs} +27 -89
  41. package/dist/chunk-DUPNYVBP.cjs.map +1 -0
  42. package/dist/chunk-DVC63PGD.cjs +1160 -0
  43. package/dist/chunk-DVC63PGD.cjs.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-J4OMGO5O.js +66 -0
  49. package/dist/chunk-J4OMGO5O.js.map +1 -0
  50. package/dist/chunk-JEQ2X3Z6.cjs +12 -0
  51. package/dist/chunk-JEQ2X3Z6.cjs.map +1 -0
  52. package/dist/chunk-JO4BHPAD.cjs +40 -0
  53. package/dist/chunk-JO4BHPAD.cjs.map +1 -0
  54. package/dist/chunk-MEBXW75C.cjs +89 -0
  55. package/dist/chunk-MEBXW75C.cjs.map +1 -0
  56. package/dist/chunk-MNDGIW47.js +76 -0
  57. package/dist/chunk-MNDGIW47.js.map +1 -0
  58. package/dist/chunk-PPFHA6IL.js +83 -0
  59. package/dist/chunk-PPFHA6IL.js.map +1 -0
  60. package/dist/{chunk-BLSI67J6.cjs → chunk-RBZXLBGI.cjs} +425 -30
  61. package/dist/chunk-RBZXLBGI.cjs.map +1 -0
  62. package/dist/chunk-RQ74USYU.js +128 -0
  63. package/dist/chunk-RQ74USYU.js.map +1 -0
  64. package/dist/chunk-TX7CGITI.cjs +82 -0
  65. package/dist/chunk-TX7CGITI.cjs.map +1 -0
  66. package/dist/chunk-TXLIY7GF.cjs +132 -0
  67. package/dist/chunk-TXLIY7GF.cjs.map +1 -0
  68. package/dist/chunk-VD74IPKB.js +106 -0
  69. package/dist/chunk-VD74IPKB.js.map +1 -0
  70. package/dist/chunk-W73FBYIH.cjs +87 -0
  71. package/dist/chunk-W73FBYIH.cjs.map +1 -0
  72. package/dist/chunk-W74OTXXX.cjs +73 -0
  73. package/dist/chunk-W74OTXXX.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-JM7PB2LP.js → chunk-Z7PHGSJT.js} +10 -66
  79. package/dist/chunk-Z7PHGSJT.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-DBNh0jhE.d.ts +206 -0
  97. package/dist/index-DOlhSb79.d.cts +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-EiPWA9Ay.d.cts} +34 -367
  196. package/dist/{types-BtAaOV07.d.ts → tools-EiPWA9Ay.d.ts} +34 -367
  197. package/dist/types-B20VCJXL.d.cts +347 -0
  198. package/dist/types-B20VCJXL.d.ts +347 -0
  199. package/dist/types-CKA6U74u.d.cts +441 -0
  200. package/dist/types-DG2ya08y.d.cts +367 -0
  201. package/dist/types-DG2ya08y.d.ts +367 -0
  202. package/dist/types-ZguuKEs_.d.cts +127 -0
  203. package/dist/types-ZguuKEs_.d.ts +127 -0
  204. package/dist/types-iBkPICvQ.d.ts +441 -0
  205. package/dist/ui/index.cjs +1069 -146
  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 +1001 -94
  210. package/dist/ui/index.js.map +1 -1
  211. package/package.json +53 -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
package/README.md CHANGED
@@ -1,9 +1,19 @@
1
- # @yourgpt/copilot-sdk
1
+ <a href="https://copilot-sdk.yourgpt.ai">
2
+ <img src="https://copilot-sdk.yourgpt.ai/images/yourgpt-copilot-sdk-npm.png" alt="YourGPT Copilot SDK" width="100%" />
3
+ </a>
4
+
5
+ # Copilot SDK
6
+
7
+ [![npm version](https://img.shields.io/npm/v/@yourgpt/copilot-sdk)](https://www.npmjs.com/package/@yourgpt/copilot-sdk)
8
+ [![npm downloads](https://img.shields.io/npm/dm/@yourgpt/copilot-sdk)](https://www.npmjs.com/package/@yourgpt/copilot-sdk)
9
+ [![License](https://img.shields.io/npm/l/@yourgpt/copilot-sdk)](https://github.com/YourGPT/copilot-sdk/blob/main/LICENSE)
2
10
 
3
11
  Build AI Copilots for Your Product.
4
12
 
5
13
  Production-ready AI Copilots for any product. Connect any LLM, deploy on your infrastructure, own your data.
6
14
 
15
+ **Documentation:** [copilot-sdk.yourgpt.ai](https://copilot-sdk.yourgpt.ai)
16
+
7
17
  ## Installation
8
18
 
9
19
  ```bash
@@ -34,46 +44,77 @@ function App() {
34
44
  | `/ui` | Pre-built UI components |
35
45
  | `/core` | Types, utilities, tool helpers |
36
46
 
37
- ## Styling (Tailwind CSS v4)
47
+ ## Built-in Tools
48
+
49
+ ### Web Search
38
50
 
39
- ```css
40
- /* app/globals.css */
41
- @import "tailwindcss";
51
+ Add real-time web search capabilities to your AI copilot. **No extra API key needed** - use your existing OpenAI or Google key.
42
52
 
43
- /* IMPORTANT: Path is relative to your CSS file location */
44
- /* If globals.css is in app/ folder, use ../ prefix */
45
- @source "../node_modules/@yourgpt/copilot-sdk/dist/**/*.{js,ts,jsx,tsx}";
53
+ ```typescript
54
+ import { createWebSearchTool } from "@yourgpt/copilot-sdk/core";
46
55
 
47
- @custom-variant dark (&:is(.dark *));
56
+ // Use OpenAI's built-in search (recommended)
57
+ const webSearch = createWebSearchTool({
58
+ provider: "openai",
59
+ apiKey: process.env.OPENAI_API_KEY,
60
+ });
61
+
62
+ // Or use Google's built-in search
63
+ const webSearch = createWebSearchTool({
64
+ provider: "google",
65
+ apiKey: process.env.GOOGLE_API_KEY,
66
+ });
67
+
68
+ const runtime = createRuntime({
69
+ provider: openai,
70
+ model: "gpt-4o",
71
+ tools: [webSearch],
72
+ });
48
73
  ```
49
74
 
50
- > **Note:** The `@source` path must point to `dist/` (not `src/`) and include all file extensions `{js,ts,jsx,tsx}`.
75
+ **Native Providers (No extra API needed):**
51
76
 
52
- > **Important:** For Tailwind v4, you also need the `@theme inline` block to map CSS variables like `--background` to Tailwind utilities like `bg-background`. If you have shadcn/ui, this is already configured. Otherwise, see the [Quick Start guide](https://copilot-sdk.yourgpt.ai/docs/quickstart) for complete setup.
77
+ - `openai` - OpenAI's built-in web search
78
+ - `google` - Google's grounding with Google Search
79
+ - `anthropic` - Anthropic's built-in web search
53
80
 
54
- ## Theming
81
+ **Third-Party Providers:**
55
82
 
56
- Works automatically with existing shadcn/ui setup. For projects without shadcn:
83
+ - [Tavily](https://tavily.com/) - AI-native search with answer generation
84
+ - [Serper](https://serper.dev/) - Google Search API
85
+ - [Brave](https://brave.com/search/api/) - Privacy-focused search
86
+ - [Exa](https://exa.ai/) - Semantic AI search
87
+ - [SearXNG](https://docs.searxng.org/) - Self-hosted metasearch
57
88
 
58
- ```tsx
59
- import "@yourgpt/copilot-sdk/ui/styles.css";
60
- import "@yourgpt/copilot-sdk/ui/themes/claude.css"; // Optional preset
89
+ ## Examples
61
90
 
62
- <div className="csdk-theme-claude">
63
- <CopilotChat />
64
- </div>;
65
- ```
91
+ Explore real-world implementations and demo projects.
92
+
93
+ ### Debug Assistant
94
+
95
+ AI-powered debugging companion that captures console logs, takes screenshots, and provides intelligent analysis.
96
+
97
+ <a href="https://copilot-sdk.yourgpt.ai/docs/examples">
98
+ <img src="https://copilot-sdk.yourgpt.ai/images/debug-assistant-demo.webp" alt="Debug Assistant" width="100%" style="border-radius: 12px;" />
99
+ </a>
100
+
101
+ ### Support Ticket System
102
+
103
+ AI-powered customer support with intelligent ticket routing, automatic escalation, and context-aware responses.
104
+
105
+ <a href="https://copilot-sdk.yourgpt.ai/docs/examples">
106
+ <img src="https://copilot-sdk.yourgpt.ai/images/copilot-sdk-support-demo.png" alt="Support Ticket System" width="100%" style="border-radius: 12px;" />
107
+ </a>
66
108
 
67
- **8 theme presets available:** Claude, Vercel, Supabase, Twitter, Linear, PostHog, Catppuccin, Modern
109
+ ### SaaS Application
68
110
 
69
- ## Documentation
111
+ SaaS template with AI copilot integration. Includes subscription handling, billing management, and intelligent assistance.
70
112
 
71
- Visit [copilot-sdk.yourgpt.ai](https://copilot-sdk.yourgpt.ai) for full documentation including:
113
+ <a href="https://copilot-sdk.yourgpt.ai/docs/examples">
114
+ <img src="https://copilot-sdk.yourgpt.ai/images/saas-demo.webp" alt="SaaS Application" width="100%" style="border-radius: 12px;" />
115
+ </a>
72
116
 
73
- - Theme customization & CSS variables
74
- - Semantic CSS classes (`csdk-*`)
75
- - Creating custom themes
76
- - Dark mode support
117
+ **[View all examples →](https://copilot-sdk.yourgpt.ai/docs/examples)**
77
118
 
78
119
  ## License
79
120
 
@@ -1,4 +1,4 @@
1
- import { k as Thread, l as ThreadData, _ as ThreadStorageAdapter, X as AsyncThreadStorageAdapter, g as Message } from './types-BtAaOV07.js';
1
+ import { T as Thread, a as ThreadData, b as ThreadStorageAdapter, A as AsyncThreadStorageAdapter, M as Message } from './types-DG2ya08y.js';
2
2
 
3
3
  /**
4
4
  * Tool types for App Context Awareness
@@ -1,4 +1,4 @@
1
- import { k as Thread, l as ThreadData, _ as ThreadStorageAdapter, X as AsyncThreadStorageAdapter, g as Message } from './types-BtAaOV07.cjs';
1
+ import { T as Thread, a as ThreadData, b as ThreadStorageAdapter, A as AsyncThreadStorageAdapter, M as Message } from './types-DG2ya08y.cjs';
2
2
 
3
3
  /**
4
4
  * Tool types for App Context Awareness
@@ -0,0 +1,4 @@
1
+ export { anthropicProvider, searchAnthropic, validateAnthropicConfig } from './chunk-RQ74USYU.js';
2
+ import './chunk-DGUM43GV.js';
3
+ //# sourceMappingURL=anthropic-6F5GRE3B.js.map
4
+ //# sourceMappingURL=anthropic-6F5GRE3B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"anthropic-6F5GRE3B.js"}
@@ -0,0 +1,17 @@
1
+ import { W as WebSearchProviderInterface } from './types-ZguuKEs_.cjs';
2
+
3
+ /**
4
+ * Anthropic Web Search Provider
5
+ *
6
+ * Uses Anthropic's built-in web_search tool via the Messages API.
7
+ * Returns reliable citations with cited_text, url, and title.
8
+ *
9
+ * @see https://docs.anthropic.com/en/docs/build-with-claude/tool-use/web-search-tool
10
+ */
11
+
12
+ /**
13
+ * Anthropic native search provider implementation
14
+ */
15
+ declare const anthropicProvider: WebSearchProviderInterface;
16
+
17
+ export { anthropicProvider as a };
@@ -0,0 +1,17 @@
1
+ import { W as WebSearchProviderInterface } from './types-ZguuKEs_.js';
2
+
3
+ /**
4
+ * Anthropic Web Search Provider
5
+ *
6
+ * Uses Anthropic's built-in web_search tool via the Messages API.
7
+ * Returns reliable citations with cited_text, url, and title.
8
+ *
9
+ * @see https://docs.anthropic.com/en/docs/build-with-claude/tool-use/web-search-tool
10
+ */
11
+
12
+ /**
13
+ * Anthropic native search provider implementation
14
+ */
15
+ declare const anthropicProvider: WebSearchProviderInterface;
16
+
17
+ export { anthropicProvider as a };
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var chunkTXLIY7GF_cjs = require('./chunk-TXLIY7GF.cjs');
4
+ require('./chunk-JEQ2X3Z6.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "anthropicProvider", {
9
+ enumerable: true,
10
+ get: function () { return chunkTXLIY7GF_cjs.anthropicProvider; }
11
+ });
12
+ Object.defineProperty(exports, "searchAnthropic", {
13
+ enumerable: true,
14
+ get: function () { return chunkTXLIY7GF_cjs.searchAnthropic; }
15
+ });
16
+ Object.defineProperty(exports, "validateAnthropicConfig", {
17
+ enumerable: true,
18
+ get: function () { return chunkTXLIY7GF_cjs.validateAnthropicConfig; }
19
+ });
20
+ //# sourceMappingURL=anthropic-NMTRABEH.cjs.map
21
+ //# sourceMappingURL=anthropic-NMTRABEH.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"anthropic-NMTRABEH.cjs"}
@@ -0,0 +1,17 @@
1
+ import { W as WebSearchProviderInterface } from './types-ZguuKEs_.cjs';
2
+
3
+ /**
4
+ * Brave Search Provider
5
+ *
6
+ * Brave Search is a privacy-focused search engine with its own index.
7
+ * Provides independent search results without tracking.
8
+ *
9
+ * @see https://brave.com/search/api/
10
+ */
11
+
12
+ /**
13
+ * Brave provider implementation
14
+ */
15
+ declare const braveProvider: WebSearchProviderInterface;
16
+
17
+ export { braveProvider as b };
@@ -0,0 +1,17 @@
1
+ import { W as WebSearchProviderInterface } from './types-ZguuKEs_.js';
2
+
3
+ /**
4
+ * Brave Search Provider
5
+ *
6
+ * Brave Search is a privacy-focused search engine with its own index.
7
+ * Provides independent search results without tracking.
8
+ *
9
+ * @see https://brave.com/search/api/
10
+ */
11
+
12
+ /**
13
+ * Brave provider implementation
14
+ */
15
+ declare const braveProvider: WebSearchProviderInterface;
16
+
17
+ export { braveProvider as b };
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ var chunkW73FBYIH_cjs = require('./chunk-W73FBYIH.cjs');
4
+ require('./chunk-JEQ2X3Z6.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "braveProvider", {
9
+ enumerable: true,
10
+ get: function () { return chunkW73FBYIH_cjs.braveProvider; }
11
+ });
12
+ Object.defineProperty(exports, "searchBrave", {
13
+ enumerable: true,
14
+ get: function () { return chunkW73FBYIH_cjs.searchBrave; }
15
+ });
16
+ Object.defineProperty(exports, "validateBraveConfig", {
17
+ enumerable: true,
18
+ get: function () { return chunkW73FBYIH_cjs.validateBraveConfig; }
19
+ });
20
+ //# sourceMappingURL=brave-OYKCOZEM.cjs.map
21
+ //# sourceMappingURL=brave-OYKCOZEM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"brave-OYKCOZEM.cjs"}
@@ -0,0 +1,4 @@
1
+ export { braveProvider, searchBrave, validateBraveConfig } from './chunk-PPFHA6IL.js';
2
+ import './chunk-DGUM43GV.js';
3
+ //# sourceMappingURL=brave-XSASGGH2.js.map
4
+ //# sourceMappingURL=brave-XSASGGH2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"brave-XSASGGH2.js"}
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ // src/core/tools/webSearch/providers/searxng.ts
4
+ var DEFAULT_SEARXNG_URL = "https://searxng.instance.local";
5
+ function validateSearxngConfig(config) {
6
+ if (!config.baseUrl) {
7
+ throw new Error(
8
+ "SearXNG base URL is required. Self-host SearXNG or use a public instance. See https://docs.searxng.org/ for setup instructions."
9
+ );
10
+ }
11
+ }
12
+ async function searchSearxng(params, config) {
13
+ validateSearxngConfig(config);
14
+ const startTime = Date.now();
15
+ const baseUrl = config.baseUrl || DEFAULT_SEARXNG_URL;
16
+ const searchParams = new URLSearchParams({
17
+ q: params.query,
18
+ format: "json"
19
+ });
20
+ if (config.language) {
21
+ searchParams.set("language", config.language);
22
+ }
23
+ const url = `${baseUrl.replace(/\/$/, "")}/search?${searchParams.toString()}`;
24
+ const headers = {
25
+ Accept: "application/json"
26
+ };
27
+ if (config.apiKey) {
28
+ headers["Authorization"] = `Bearer ${config.apiKey}`;
29
+ }
30
+ const response = await fetch(url, {
31
+ method: "GET",
32
+ headers,
33
+ signal: config.timeout ? AbortSignal.timeout(config.timeout) : void 0
34
+ });
35
+ if (!response.ok) {
36
+ const errorText = await response.text().catch(() => "Unknown error");
37
+ throw new Error(`SearXNG API error (${response.status}): ${errorText}`);
38
+ }
39
+ const data = await response.json();
40
+ const searchTime = Date.now() - startTime;
41
+ let results = data.results || [];
42
+ if (config.includeDomains?.length) {
43
+ results = results.filter(
44
+ (r) => config.includeDomains.some((domain) => r.url.includes(domain))
45
+ );
46
+ }
47
+ if (config.excludeDomains?.length) {
48
+ results = results.filter(
49
+ (r) => !config.excludeDomains.some((domain) => r.url.includes(domain))
50
+ );
51
+ }
52
+ const maxResults = params.maxResults ?? config.maxResults ?? 5;
53
+ results = results.slice(0, maxResults);
54
+ const answer = data.answers?.[0] || data.infoboxes?.[0]?.content;
55
+ return {
56
+ query: params.query,
57
+ answer,
58
+ results: results.map((result) => ({
59
+ title: result.title,
60
+ url: result.url,
61
+ content: result.content,
62
+ score: result.score,
63
+ publishedDate: result.publishedDate,
64
+ image: result.img_src,
65
+ domain: extractDomain(result.url)
66
+ })),
67
+ provider: "searxng",
68
+ totalResults: data.number_of_results,
69
+ searchTime
70
+ };
71
+ }
72
+ function extractDomain(url) {
73
+ try {
74
+ return new URL(url).hostname;
75
+ } catch {
76
+ return url;
77
+ }
78
+ }
79
+ var searxngProvider = {
80
+ search: searchSearxng,
81
+ validateConfig: validateSearxngConfig
82
+ };
83
+
84
+ exports.searchSearxng = searchSearxng;
85
+ exports.searxngProvider = searxngProvider;
86
+ exports.validateSearxngConfig = validateSearxngConfig;
87
+ //# sourceMappingURL=chunk-2FAWEBZS.cjs.map
88
+ //# sourceMappingURL=chunk-2FAWEBZS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/tools/webSearch/providers/searxng.ts"],"names":[],"mappings":"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","file":"chunk-2FAWEBZS.cjs","sourcesContent":["/**\n * SearXNG Search Provider\n *\n * SearXNG is a privacy-respecting, self-hostable metasearch engine.\n * It aggregates results from multiple search engines without tracking.\n *\n * @see https://docs.searxng.org/\n */\n\nimport type {\n WebSearchConfig,\n WebSearchParams,\n WebSearchResponse,\n SearxngApiResponse,\n WebSearchProviderInterface,\n} from \"../types\";\n\n// Default public instance (users should self-host for production)\nconst DEFAULT_SEARXNG_URL = \"https://searxng.instance.local\";\n\n/**\n * Validate SearXNG configuration\n */\nexport function validateSearxngConfig(config: WebSearchConfig): void {\n if (!config.baseUrl) {\n throw new Error(\n \"SearXNG base URL is required. Self-host SearXNG or use a public instance. \" +\n \"See https://docs.searxng.org/ for setup instructions.\",\n );\n }\n}\n\n/**\n * Search using SearXNG API\n */\nexport async function searchSearxng(\n params: WebSearchParams,\n config: WebSearchConfig,\n): Promise<WebSearchResponse> {\n validateSearxngConfig(config);\n\n const startTime = Date.now();\n\n const baseUrl = config.baseUrl || DEFAULT_SEARXNG_URL;\n const searchParams = new URLSearchParams({\n q: params.query,\n format: \"json\",\n });\n\n // SearXNG doesn't have a direct max_results param, but we can limit after\n if (config.language) {\n searchParams.set(\"language\", config.language);\n }\n\n // Add specific engines if needed\n // searchParams.set('engines', 'google,duckduckgo,bing');\n\n const url = `${baseUrl.replace(/\\/$/, \"\")}/search?${searchParams.toString()}`;\n\n const headers: Record<string, string> = {\n Accept: \"application/json\",\n };\n\n // Add API key if provided (some instances require it)\n if (config.apiKey) {\n headers[\"Authorization\"] = `Bearer ${config.apiKey}`;\n }\n\n const response = await fetch(url, {\n method: \"GET\",\n headers,\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 throw new Error(`SearXNG API error (${response.status}): ${errorText}`);\n }\n\n const data: SearxngApiResponse = await response.json();\n const searchTime = Date.now() - startTime;\n\n // Filter by domains if specified\n let results = data.results || [];\n if (config.includeDomains?.length) {\n results = results.filter((r) =>\n config.includeDomains!.some((domain) => r.url.includes(domain)),\n );\n }\n if (config.excludeDomains?.length) {\n results = results.filter(\n (r) => !config.excludeDomains!.some((domain) => r.url.includes(domain)),\n );\n }\n\n // Limit results\n const maxResults = params.maxResults ?? config.maxResults ?? 5;\n results = results.slice(0, maxResults);\n\n // Extract answer from infoboxes or answers if available\n const answer = data.answers?.[0] || data.infoboxes?.[0]?.content;\n\n return {\n query: params.query,\n answer,\n results: results.map((result) => ({\n title: result.title,\n url: result.url,\n content: result.content,\n score: result.score,\n publishedDate: result.publishedDate,\n image: result.img_src,\n domain: extractDomain(result.url),\n })),\n provider: \"searxng\",\n totalResults: data.number_of_results,\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;\n } catch {\n return url;\n }\n}\n\n/**\n * SearXNG provider implementation\n */\nexport const searxngProvider: WebSearchProviderInterface = {\n search: searchSearxng,\n validateConfig: validateSearxngConfig,\n};\n"]}