@noirhare/dsh-web-search-tavily 0.0.1 → 0.0.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.
@@ -0,0 +1,13 @@
1
+ import z from "@deepseek-ai/schemastery";
2
+ import { Context } from "@deepseek-ai/cordis";
3
+ export type Config = {
4
+ url: string;
5
+ token?: string;
6
+ keyless: boolean;
7
+ searchDepth?: "basic" | "advanced" | "fast" | "ultra-fast";
8
+ chunksPerSource?: number;
9
+ };
10
+ export declare const name = "@noirhare/web-search-tavily";
11
+ export declare const inject: string[];
12
+ export declare const Config: z<Config>;
13
+ export declare const apply: (ctx: Context, config: Config) => void;
package/lib/host/index.js CHANGED
@@ -1,58 +1,60 @@
1
1
  // src/host/index.ts
2
2
  import z from "@deepseek-ai/schemastery";
3
+ import { launchEnvironmentOf } from "@deepseek-ai/dsh-launch-environment";
4
+ import { settingsNamespace } from "@deepseek-ai/dsh-settings";
3
5
 
4
6
  // src/host/provider.ts
5
7
  import { WebError } from "@deepseek-ai/dsh-web";
6
- var TAVILY_PROVIDER_ID = "tavily";
7
- var TAVILY_DEFAULT_URL = "https://api.tavily.com/search";
8
- var USER_AGENT = "deepseek-harness/0.0.1";
9
- var TavilySearchProvider = class {
10
- constructor(options) {
11
- this.options = options;
8
+ var TAILY_DEFAULT_URL = "https://api.tavily.com/search";
9
+ var isAbortError = (error) => {
10
+ return error instanceof DOMException && error.name === "AbortError";
11
+ };
12
+ var TailyWebSearchProvider = class {
13
+ constructor(settings) {
14
+ this.settings = settings;
12
15
  }
13
- options;
14
- id = TAVILY_PROVIDER_ID;
16
+ settings;
17
+ id = name;
15
18
  available() {
16
- return this.options.apiKey.length > 0 && URL.canParse(this.options.url);
19
+ const config = this.settings.get();
20
+ if (!config.token) return false;
21
+ if (config.token.trim().length === 0) return false;
22
+ return true;
17
23
  }
18
24
  async search(request, signal) {
19
- const maxResults = request.maxResults ?? this.options.maxResults;
25
+ const config = this.settings.get();
20
26
  let response;
21
27
  try {
22
- response = await fetch(this.options.url, {
28
+ response = await fetch(config.url, {
23
29
  method: "POST",
24
- redirect: "error",
30
+ redirect: "follow",
25
31
  headers: {
26
- "authorization": `Bearer ${this.options.apiKey}`,
32
+ ...!config.keyless ? { authorization: `Bearer ${config.token}` } : { "X-Tavily-Access-Mode": "keyless" },
27
33
  "content-type": "application/json",
28
34
  "accept": "application/json",
29
- "user-agent": USER_AGENT
35
+ "user-agent": "deepseek-harness/0.0.1"
30
36
  },
31
37
  body: JSON.stringify({
32
38
  query: request.query,
33
- search_depth: this.options.searchDepth,
34
- chunks_per_source: this.options.chunksPerSource,
35
- max_results: maxResults,
39
+ search_depth: config.searchDepth,
40
+ chunks_per_source: config.chunksPerSource,
41
+ max_results: request.maxResults,
36
42
  include_answer: true
37
43
  }),
38
44
  ...signal !== void 0 ? { signal } : {}
39
45
  });
40
46
  } catch (error) {
41
- if (error instanceof DOMException && error.name === "AbortError") {
42
- throw new WebError("Tavily search aborted", "WEB_ABORTED", { cause: error });
43
- }
47
+ if (isAbortError(error)) throw new WebError("Tavily search aborted", "WEB_ABORTED", { cause: error });
44
48
  throw new WebError(`Tavily search request failed: ${String(error)}`, "WEB_PROVIDER_ERROR", { cause: error });
45
49
  }
46
50
  if (!response.ok) {
47
51
  const status = response.status;
48
52
  let message = `Tavily API error (HTTP ${status})`;
49
53
  try {
50
- const error = (await response.json()).detail?.error;
54
+ const error = (await response.json())?.detail?.error;
51
55
  if (error !== void 0 && error.length > 0) message = error;
52
56
  } catch (error) {
53
- if (error instanceof DOMException && error.name === "AbortError") {
54
- throw new WebError("Tavily search aborted", "WEB_ABORTED", { cause: error });
55
- }
57
+ if (isAbortError(error)) throw new WebError("Exa search aborted", "WEB_ABORTED", { cause: error });
56
58
  }
57
59
  throw new WebError(message, "WEB_PROVIDER_ERROR");
58
60
  }
@@ -68,40 +70,35 @@ var TavilySearchProvider = class {
68
70
  truncated: true
69
71
  };
70
72
  } catch (error) {
71
- if (error instanceof DOMException && error.name === "AbortError") {
72
- throw new WebError("Tavily search aborted", "WEB_ABORTED", { cause: error });
73
- }
74
- throw new WebError(`Tavily returned an unprocessable response body: ${String(error)}`, "WEB_PROVIDER_ERROR", { cause: error });
73
+ if (isAbortError(error)) throw new WebError("Taily search aborted", "WEB_ABORTED", { cause: error });
74
+ throw new WebError(`Taily returned an unprocessable response body: ${String(error)}`, "WEB_PROVIDER_ERROR", { cause: error });
75
75
  }
76
76
  }
77
77
  };
78
78
 
79
79
  // src/host/index.ts
80
- import { launchEnvironmentOf } from "@deepseek-ai/dsh-launch-environment";
81
- var name = "web-search-tavily";
82
- var inject = ["web"];
83
- var Config = z.object({
84
- apiKey: z.string(),
85
- url: z.string(),
80
+ var name = "@noirhare/web-search-tavily";
81
+ var inject = ["settings", "web"];
82
+ var Config2 = z.object({
83
+ url: z.string().default(TAILY_DEFAULT_URL),
84
+ token: z.string().min(2),
85
+ keyless: z.boolean().default(false),
86
86
  searchDepth: z.union(["basic", "advanced", "fast", "ultra-fast"]),
87
- chunksPerSource: z.number(),
88
- maxResults: z.number()
87
+ chunksPerSource: z.number().min(1).max(3)
89
88
  });
90
- function apply(ctx, config) {
91
- ctx.web.registerSearchProvider(
92
- new TavilySearchProvider({
93
- apiKey: config.apiKey ?? launchEnvironmentOf(ctx).get("TAVILY_API_KEY")?.value ?? "",
94
- url: config.url ?? TAVILY_DEFAULT_URL,
95
- searchDepth: config.searchDepth,
96
- chunksPerSource: config.chunksPerSource,
97
- maxResults: config.maxResults
98
- })
99
- );
100
- }
89
+ var apply = (ctx, config) => {
90
+ const settings = ctx.settings.register(settingsNamespace(name), Config2, {
91
+ base: {
92
+ ...config,
93
+ token: config.token ?? launchEnvironmentOf(ctx).get("TAVILY_API_KEY")?.value
94
+ }
95
+ });
96
+ ctx.web.registerSearchProvider(new TailyWebSearchProvider(settings));
97
+ };
101
98
  export {
102
- Config,
99
+ Config2 as Config,
103
100
  apply,
104
101
  inject,
105
102
  name
106
103
  };
107
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2hvc3QvaW5kZXgudHMiLCAiLi4vLi4vc3JjL2hvc3QvcHJvdmlkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB6IGZyb20gXCJAZGVlcHNlZWstYWkvc2NoZW1hc3RlcnlcIjtcclxuXHJcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tIFwiQGRlZXBzZWVrLWFpL2NvcmRpc1wiO1xyXG5pbXBvcnQgeyBUQVZJTFlfREVGQVVMVF9VUkwsIFRhdmlseVNlYXJjaFByb3ZpZGVyIH0gZnJvbSBcIi4vcHJvdmlkZXJcIjtcclxuaW1wb3J0IHsgbGF1bmNoRW52aXJvbm1lbnRPZiB9IGZyb20gXCJAZGVlcHNlZWstYWkvZHNoLWxhdW5jaC1lbnZpcm9ubWVudFwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IG5hbWUgPSBcIndlYi1zZWFyY2gtdGF2aWx5XCI7XHJcbmV4cG9ydCBjb25zdCBpbmplY3QgPSBbXCJ3ZWJcIl07XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnIHtcclxuICAgIGFwaUtleT86IHN0cmluZ1xyXG4gICAgdXJsPzogc3RyaW5nXHJcblxyXG4gICAgc2VhcmNoRGVwdGg/OiBcImJhc2ljXCIgfCBcImFkdmFuY2VkXCIgfCBcImZhc3RcIiB8IFwidWx0cmEtZmFzdFwiXHJcbiAgICBjaHVua3NQZXJTb3VyY2U/OiBudW1iZXJcclxuICAgIG1heFJlc3VsdHM/OiBudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IENvbmZpZzogejxDb25maWc+ID0gei5vYmplY3Qoe1xyXG4gICAgYXBpS2V5OiB6LnN0cmluZygpLFxyXG4gICAgdXJsOiB6LnN0cmluZygpLFxyXG5cclxuICAgIHNlYXJjaERlcHRoOiB6LnVuaW9uKFtcImJhc2ljXCIsIFwiYWR2YW5jZWRcIiwgXCJmYXN0XCIsIFwidWx0cmEtZmFzdFwiXSBhcyBjb25zdCksXHJcbiAgICBjaHVua3NQZXJTb3VyY2U6IHoubnVtYmVyKCksXHJcbiAgICBtYXhSZXN1bHRzOiB6Lm51bWJlcigpLFxyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBseShjdHg6IENvbnRleHQsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XHJcbiAgICBjdHgud2ViLnJlZ2lzdGVyU2VhcmNoUHJvdmlkZXIoXHJcbiAgICAgICAgbmV3IFRhdmlseVNlYXJjaFByb3ZpZGVyKHtcclxuICAgICAgICAgICAgYXBpS2V5OiBjb25maWcuYXBpS2V5ID8/IGxhdW5jaEVudmlyb25tZW50T2YoY3R4KS5nZXQoXCJUQVZJTFlfQVBJX0tFWVwiKT8udmFsdWUgPz8gXCJcIixcclxuICAgICAgICAgICAgdXJsOiBjb25maWcudXJsID8/IFRBVklMWV9ERUZBVUxUX1VSTCxcclxuICAgICAgICAgICAgc2VhcmNoRGVwdGg6IGNvbmZpZy5zZWFyY2hEZXB0aCxcclxuICAgICAgICAgICAgY2h1bmtzUGVyU291cmNlOiBjb25maWcuY2h1bmtzUGVyU291cmNlLFxyXG4gICAgICAgICAgICBtYXhSZXN1bHRzOiBjb25maWcubWF4UmVzdWx0cyxcclxuICAgICAgICB9KSxcclxuICAgICk7XHJcbn1cclxuIiwgImltcG9ydCB7IFdlYkVycm9yLCBXZWJTZWFyY2hQcm92aWRlciwgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoUmVzdWx0IH0gZnJvbSBcIkBkZWVwc2Vlay1haS9kc2gtd2ViXCI7XHJcbmltcG9ydCB0eXBlIHsgVGF2aWx5RXJyb3IsIFRhdmlseVNlYXJjaFJlc3BvbnNlIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBUQVZJTFlfUFJPVklERVJfSUQgPSBcInRhdmlseVwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRBVklMWV9ERUZBVUxUX1VSTCA9IFwiaHR0cHM6Ly9hcGkudGF2aWx5LmNvbS9zZWFyY2hcIjtcclxuXHJcbmNvbnN0IFVTRVJfQUdFTlQgPSBcImRlZXBzZWVrLWhhcm5lc3MvMC4wLjFcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVGF2aWx5U2VhcmNoUHJvdmlkZXJPcHRpb25zIHtcclxuICAgIGFwaUtleTogc3RyaW5nXHJcbiAgICB1cmw6IHN0cmluZ1xyXG4gICAgc2VhcmNoRGVwdGg/OiBcImJhc2ljXCIgfCBcImFkdmFuY2VkXCIgfCBcImZhc3RcIiB8IFwidWx0cmEtZmFzdFwiXHJcbiAgICBjaHVua3NQZXJTb3VyY2U/OiBudW1iZXJcclxuICAgIG1heFJlc3VsdHM/OiBudW1iZXJcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRhdmlseVNlYXJjaFByb3ZpZGVyIGltcGxlbWVudHMgV2ViU2VhcmNoUHJvdmlkZXIge1xyXG4gICAgcmVhZG9ubHkgaWQgPSBUQVZJTFlfUFJPVklERVJfSUQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBUYXZpbHlTZWFyY2hQcm92aWRlck9wdGlvbnMpIHt9XHJcblxyXG4gICAgYXZhaWxhYmxlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuYXBpS2V5Lmxlbmd0aCA+IDAgJiYgVVJMLmNhblBhcnNlKHRoaXMub3B0aW9ucy51cmwpO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHNlYXJjaChyZXF1ZXN0OiBXZWJTZWFyY2hSZXF1ZXN0LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8V2ViU2VhcmNoUmVzdWx0PiB7XHJcbiAgICAgICAgY29uc3QgbWF4UmVzdWx0cyA9IHJlcXVlc3QubWF4UmVzdWx0cyA/PyB0aGlzLm9wdGlvbnMubWF4UmVzdWx0cztcclxuICAgICAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godGhpcy5vcHRpb25zLnVybCwge1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcclxuICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBcImVycm9yXCIsXHJcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgXCJhdXRob3JpemF0aW9uXCI6IGBCZWFyZXIgJHt0aGlzLm9wdGlvbnMuYXBpS2V5fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50LXR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJhY2NlcHRcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgXCJ1c2VyLWFnZW50XCI6IFVTRVJfQUdFTlQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiByZXF1ZXN0LnF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9kZXB0aDogdGhpcy5vcHRpb25zLnNlYXJjaERlcHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIGNodW5rc19wZXJfc291cmNlOiB0aGlzLm9wdGlvbnMuY2h1bmtzUGVyU291cmNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1heF9yZXN1bHRzOiBtYXhSZXN1bHRzLFxyXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfYW5zd2VyOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAuLi5zaWduYWwgIT09IHVuZGVmaW5lZCA/IHsgc2lnbmFsIH0gOiB7fSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcclxuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uICYmIGVycm9yLm5hbWUgPT09IFwiQWJvcnRFcnJvclwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV2ViRXJyb3IoXCJUYXZpbHkgc2VhcmNoIGFib3J0ZWRcIiwgXCJXRUJfQUJPUlRFRFwiLCB7IGNhdXNlOiBlcnJvciB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgV2ViRXJyb3IoYFRhdmlseSBzZWFyY2ggcmVxdWVzdCBmYWlsZWQ6ICR7U3RyaW5nKGVycm9yKX1gLCBcIldFQl9QUk9WSURFUl9FUlJPUlwiLCB7IGNhdXNlOiBlcnJvciB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzO1xyXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA9IGBUYXZpbHkgQVBJIGVycm9yIChIVFRQICR7c3RhdHVzfSlgO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIFRhdmlseUVycm9yKS5kZXRhaWw/LmVycm9yO1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yICE9PSB1bmRlZmluZWQgJiYgZXJyb3IubGVuZ3RoID4gMCkgbWVzc2FnZSA9IGVycm9yO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRE9NRXhjZXB0aW9uICYmIGVycm9yLm5hbWUgPT09IFwiQWJvcnRFcnJvclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkVycm9yKFwiVGF2aWx5IHNlYXJjaCBhYm9ydGVkXCIsIFwiV0VCX0FCT1JURURcIiwgeyBjYXVzZTogZXJyb3IgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkVycm9yKG1lc3NhZ2UsIFwiV0VCX1BST1ZJREVSX0VSUk9SXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyBUYXZpbHlTZWFyY2hSZXNwb25zZTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHBheWxvYWQuYW5zd2VyLFxyXG4gICAgICAgICAgICAgICAgc291cmNlczogcGF5bG9hZC5yZXN1bHRzLm1hcCgocikgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHIudXJsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiByLnRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIHNuaXBwZXQ6IHIuY29udGVudCxcclxuICAgICAgICAgICAgICAgIH0pKSxcclxuICAgICAgICAgICAgICAgIHRydW5jYXRlZDogdHJ1ZSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBET01FeGNlcHRpb24gJiYgZXJyb3IubmFtZSA9PT0gXCJBYm9ydEVycm9yXCIpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBXZWJFcnJvcihcIlRhdmlseSBzZWFyY2ggYWJvcnRlZFwiLCBcIldFQl9BQk9SVEVEXCIsIHsgY2F1c2U6IGVycm9yIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBXZWJFcnJvcihgVGF2aWx5IHJldHVybmVkIGFuIHVucHJvY2Vzc2FibGUgcmVzcG9uc2UgYm9keTogJHtTdHJpbmcoZXJyb3IpfWAsIFwiV0VCX1BST1ZJREVSX0VSUk9SXCIsIHsgY2F1c2U6IGVycm9yIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsT0FBTyxPQUFPOzs7QUNBZCxTQUFTLGdCQUFzRTtBQUd4RSxJQUFNLHFC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
104
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2hvc3QvaW5kZXgudHMiLCAiLi4vLi4vc3JjL2hvc3QvcHJvdmlkZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB6IGZyb20gXCJAZGVlcHNlZWstYWkvc2NoZW1hc3RlcnlcIjtcclxuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gXCJAZGVlcHNlZWstYWkvY29yZGlzXCI7XHJcbmltcG9ydCB7IGxhdW5jaEVudmlyb25tZW50T2YgfSBmcm9tIFwiQGRlZXBzZWVrLWFpL2RzaC1sYXVuY2gtZW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgc2V0dGluZ3NOYW1lc3BhY2UgfSBmcm9tIFwiQGRlZXBzZWVrLWFpL2RzaC1zZXR0aW5nc1wiO1xyXG5cclxuaW1wb3J0IHsgVEFJTFlfREVGQVVMVF9VUkwsIFRhaWx5V2ViU2VhcmNoUHJvdmlkZXIgfSBmcm9tIFwiLi9wcm92aWRlclwiO1xyXG5cclxuZXhwb3J0IHR5cGUgQ29uZmlnID0ge1xyXG4gICAgdXJsOiBzdHJpbmdcclxuICAgIHRva2VuPzogc3RyaW5nXHJcbiAgICBrZXlsZXNzOiBib29sZWFuXHJcblxyXG4gICAgc2VhcmNoRGVwdGg/OiBcImJhc2ljXCIgfCBcImFkdmFuY2VkXCIgfCBcImZhc3RcIiB8IFwidWx0cmEtZmFzdFwiXHJcbiAgICBjaHVua3NQZXJTb3VyY2U/OiBudW1iZXJcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBuYW1lID0gXCJAbm9pcmhhcmUvd2ViLXNlYXJjaC10YXZpbHlcIjtcclxuZXhwb3J0IGNvbnN0IGluamVjdCA9IFtcInNldHRpbmdzXCIsIFwid2ViXCJdO1xyXG5leHBvcnQgY29uc3QgQ29uZmlnOiB6PENvbmZpZz4gPSB6Lm9iamVjdCh7XHJcbiAgICB1cmw6IHouc3RyaW5nKCkuZGVmYXVsdChUQUlMWV9ERUZBVUxUX1VSTCksXHJcbiAgICB0b2tlbjogei5zdHJpbmcoKS5taW4oMiksXHJcbiAgICBrZXlsZXNzOiB6LmJvb2xlYW4oKS5kZWZhdWx0KGZhbHNlKSxcclxuXHJcbiAgICBzZWFyY2hEZXB0aDogei51bmlvbihbXCJiYXNpY1wiLCBcImFkdmFuY2VkXCIsIFwiZmFzdFwiLCBcInVsdHJhLWZhc3RcIl0gYXMgY29uc3QpLFxyXG4gICAgY2h1bmtzUGVyU291cmNlOiB6Lm51bWJlcigpLm1pbigxKS5tYXgoMyksXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IGFwcGx5ID0gKGN0eDogQ29udGV4dCwgY29uZmlnOiBDb25maWcpID0+IHtcclxuICAgIGNvbnN0IHNldHRpbmdzID0gY3R4LnNldHRpbmdzLnJlZ2lzdGVyKHNldHRpbmdzTmFtZXNwYWNlKG5hbWUpLCBDb25maWcsIHtcclxuICAgICAgICBiYXNlOiB7XHJcbiAgICAgICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICAgICAgdG9rZW46IGNvbmZpZy50b2tlbiA/PyBsYXVuY2hFbnZpcm9ubWVudE9mKGN0eCkuZ2V0KFwiVEFWSUxZX0FQSV9LRVlcIik/LnZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBjdHgud2ViLnJlZ2lzdGVyU2VhcmNoUHJvdmlkZXIobmV3IFRhaWx5V2ViU2VhcmNoUHJvdmlkZXIoc2V0dGluZ3MpKTtcclxufTtcclxuIiwgImltcG9ydCB7IFdlYkVycm9yLCBXZWJTZWFyY2hQcm92aWRlciwgV2ViU2VhcmNoUmVxdWVzdCwgV2ViU2VhcmNoUmVzdWx0IH0gZnJvbSBcIkBkZWVwc2Vlay1haS9kc2gtd2ViXCI7XHJcbmltcG9ydCB7IENvbmZpZywgbmFtZSB9IGZyb20gXCIuXCI7XHJcbmltcG9ydCB7IFNldHRpbmdzU2NvcGUgfSBmcm9tIFwiQGRlZXBzZWVrLWFpL2RzaC1zZXR0aW5nc1wiO1xyXG5cclxudHlwZSBUYWlseVNlYXJjaFJlc3BvbnNlID0ge1xyXG4gICAgYW5zd2VyOiBzdHJpbmdcclxuICAgIHJlc3VsdHM6IHtcclxuICAgICAgICB0aXRsZTogc3RyaW5nXHJcbiAgICAgICAgdXJsOiBzdHJpbmdcclxuICAgICAgICBjb250ZW50OiBzdHJpbmdcclxuICAgIH1bXVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IFRBSUxZX0RFRkFVTFRfVVJMID0gXCJodHRwczovL2FwaS50YXZpbHkuY29tL3NlYXJjaFwiO1xyXG5cclxuY29uc3QgaXNBYm9ydEVycm9yID0gKGVycm9yOiB1bmtub3duKSA9PiB7XHJcbiAgICByZXR1cm4gZXJyb3IgaW5zdGFuY2VvZiBET01FeGNlcHRpb24gJiYgZXJyb3IubmFtZSA9PT0gXCJBYm9ydEVycm9yXCI7XHJcbn07XHJcblxyXG5leHBvcnQgY2xhc3MgVGFpbHlXZWJTZWFyY2hQcm92aWRlciBpbXBsZW1lbnRzIFdlYlNlYXJjaFByb3ZpZGVyIHtcclxuICAgIHJlYWRvbmx5IGlkID0gbmFtZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBzZXR0aW5nczogU2V0dGluZ3NTY29wZTxDb25maWc+KSB7IH1cclxuXHJcbiAgICBhdmFpbGFibGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5zZXR0aW5ncy5nZXQoKTtcclxuXHJcbiAgICAgICAgaWYgKCFjb25maWcudG9rZW4pIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoY29uZmlnLnRva2VuLnRyaW0oKS5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc2VhcmNoKHJlcXVlc3Q6IFdlYlNlYXJjaFJlcXVlc3QsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxXZWJTZWFyY2hSZXN1bHQ+IHtcclxuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLnNldHRpbmdzLmdldCgpO1xyXG5cclxuICAgICAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goY29uZmlnLnVybCwge1xyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcclxuICAgICAgICAgICAgICAgIHJlZGlyZWN0OiBcImZvbGxvd1wiLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLighY29uZmlnLmtleWxlc3NcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7IGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHtjb25maWcudG9rZW59YCB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBcIlgtVGF2aWx5LUFjY2Vzcy1Nb2RlXCI6IFwia2V5bGVzc1wiIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwiYWNjZXB0XCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgICAgICAgICAgICAgIFwidXNlci1hZ2VudFwiOiBcImRlZXBzZWVrLWhhcm5lc3MvMC4wLjFcIixcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHJlcXVlc3QucXVlcnksXHJcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2RlcHRoOiBjb25maWcuc2VhcmNoRGVwdGgsXHJcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzX3Blcl9zb3VyY2U6IGNvbmZpZy5jaHVua3NQZXJTb3VyY2UsXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4X3Jlc3VsdHM6IHJlcXVlc3QubWF4UmVzdWx0cyxcclxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2Fuc3dlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgLi4uc2lnbmFsICE9PSB1bmRlZmluZWQgPyB7IHNpZ25hbCB9IDoge30sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XHJcbiAgICAgICAgICAgIGlmIChpc0Fib3J0RXJyb3IoZXJyb3IpKSB0aHJvdyBuZXcgV2ViRXJyb3IoXCJUYXZpbHkgc2VhcmNoIGFib3J0ZWRcIiwgXCJXRUJfQUJPUlRFRFwiLCB7IGNhdXNlOiBlcnJvciB9KTtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFdlYkVycm9yKGBUYXZpbHkgc2VhcmNoIHJlcXVlc3QgZmFpbGVkOiAke1N0cmluZyhlcnJvcil9YCwgXCJXRUJfUFJPVklERVJfRVJST1JcIiwgeyBjYXVzZTogZXJyb3IgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IHJlc3BvbnNlLnN0YXR1cztcclxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBgVGF2aWx5IEFQSSBlcnJvciAoSFRUUCAke3N0YXR1c30pYDtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gKGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyB7IGRldGFpbD86IHsgZXJyb3I/OiBzdHJpbmcgfSB9KT8uZGV0YWlsPy5lcnJvcjtcclxuICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPT0gdW5kZWZpbmVkICYmIGVycm9yLmxlbmd0aCA+IDApIG1lc3NhZ2UgPSBlcnJvcjtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc0Fib3J0RXJyb3IoZXJyb3IpKSB0aHJvdyBuZXcgV2ViRXJyb3IoXCJFeGEgc2VhcmNoIGFib3J0ZWRcIiwgXCJXRUJfQUJPUlRFRFwiLCB7IGNhdXNlOiBlcnJvciB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgV2ViRXJyb3IobWVzc2FnZSwgXCJXRUJfUFJPVklERVJfRVJST1JcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gYXdhaXQgcmVzcG9uc2UuanNvbigpIGFzIFRhaWx5U2VhcmNoUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBjb250ZW50OiBwYXlsb2FkLmFuc3dlcixcclxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IHBheWxvYWQucmVzdWx0cy5tYXAoKHIpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiByLnVybCxcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogci50aXRsZSxcclxuICAgICAgICAgICAgICAgICAgICBzbmlwcGV0OiByLmNvbnRlbnQsXHJcbiAgICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICAgICAgICB0cnVuY2F0ZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcclxuICAgICAgICAgICAgaWYgKGlzQWJvcnRFcnJvcihlcnJvcikpIHRocm93IG5ldyBXZWJFcnJvcihcIlRhaWx5IHNlYXJjaCBhYm9ydGVkXCIsIFwiV0VCX0FCT1JURURcIiwgeyBjYXVzZTogZXJyb3IgfSk7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBXZWJFcnJvcihgVGFpbHkgcmV0dXJuZWQgYW4gdW5wcm9jZXNzYWJsZSByZXNwb25zZSBib2R5OiAke1N0cmluZyhlcnJvcil9YCwgXCJXRUJfUFJPVklERVJfRVJST1JcIiwgeyBjYXVzZTogZXJyb3IgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBQSxPQUFPLE9BQU87QUFFZCxTQUFTLDJCQUEyQjtBQUNwQyxTQUFTLHlCQUF5Qjs7O0FDSGxD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
@@ -0,0 +1,11 @@
1
+ import { WebSearchProvider, WebSearchRequest, WebSearchResult } from "@deepseek-ai/dsh-web";
2
+ import { Config } from ".";
3
+ import { SettingsScope } from "@deepseek-ai/dsh-settings";
4
+ export declare const TAILY_DEFAULT_URL = "https://api.tavily.com/search";
5
+ export declare class TailyWebSearchProvider implements WebSearchProvider {
6
+ readonly settings: SettingsScope<Config>;
7
+ readonly id = "@noirhare/web-search-tavily";
8
+ constructor(settings: SettingsScope<Config>);
9
+ available(): boolean;
10
+ search(request: WebSearchRequest, signal?: AbortSignal): Promise<WebSearchResult>;
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@noirhare/dsh-web-search-tavily",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "license": "MIT",
5
5
  "author": {
6
6
  "name": "NoirHare",
@@ -27,6 +27,7 @@
27
27
  "@deepseek-ai/cordis": "^4.0.1",
28
28
  "@deepseek-ai/schemastery": "^3.18.1",
29
29
  "@deepseek-ai/dsh-launch-environment": "^0.1.1-rc.2",
30
+ "@deepseek-ai/dsh-settings": "^0.1.1-rc.2",
30
31
  "@deepseek-ai/dsh-web": "^0.1.1-rc.2"
31
32
  },
32
33
  "dsh": {