@tianshu-ai/tianshu 0.4.21 → 0.4.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/server/builtinConfig/plugins/web-search/manifest.json +5 -53
- package/packages/server/builtinConfig/plugins/web-search/skills/web-search-howto.md +4 -7
- package/packages/web/dist/assets/{bundle-web-hHh7gz2L.js → bundle-web-B7eyKI4Y.js} +1 -1
- package/packages/web/dist/assets/index-D97NmBlG.css +2 -0
- package/packages/web/dist/assets/{index-B6oq6ed_.js → index-GoKNQUL6.js} +4 -4
- package/packages/web/dist/index.html +2 -2
- package/plugins/web-search/dist/server.d.ts.map +1 -1
- package/plugins/web-search/dist/server.js +18 -56
- package/plugins/web-search/dist/server.js.map +1 -1
- package/plugins/web-search/dist/tools/index.d.ts +2 -2
- package/plugins/web-search/dist/tools/index.d.ts.map +1 -1
- package/plugins/web-search/dist/tools/index.js +1 -1
- package/plugins/web-search/dist/tools/index.js.map +1 -1
- package/plugins/web-search/dist/tools/providers.d.ts +15 -20
- package/plugins/web-search/dist/tools/providers.d.ts.map +1 -1
- package/plugins/web-search/dist/tools/providers.js +24 -248
- package/plugins/web-search/dist/tools/providers.js.map +1 -1
- package/plugins/web-search/dist/tools/web-search.d.ts +4 -25
- package/plugins/web-search/dist/tools/web-search.d.ts.map +1 -1
- package/plugins/web-search/dist/tools/web-search.js +48 -203
- package/plugins/web-search/dist/tools/web-search.js.map +1 -1
- package/plugins/web-search/manifest.json +5 -53
- package/plugins/web-search/package.json +1 -1
- package/plugins/web-search/skills/web-search-howto.md +4 -7
- package/packages/web/dist/assets/index-DWOCI_kD.css +0 -2
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Tianshu — AI agent platform</title>
|
|
7
7
|
<meta name="description" content="An open AI agent platform with a sidecar browser. Built in public." />
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-GoKNQUL6.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-D97NmBlG.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body class="bg-slate-950 text-slate-100">
|
|
13
13
|
<div id="root"></div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAQhC,QAAA,MAAM,MAAM,EAAE,kBA6Cb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,41 +1,21 @@
|
|
|
1
1
|
// Server side of the `web-search` plugin.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
// and bakes them into a closure handed to the tool builder.
|
|
3
|
+
// Two agent tools:
|
|
4
|
+
// - web_search — key-free hosted MCP search (Exa or Parallel;
|
|
5
|
+
// the operator picks the backend in config)
|
|
6
|
+
// - web_fetch — dependency-free single-page fetch → markdown
|
|
8
7
|
//
|
|
9
|
-
// The plugin
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
// `POST /health/reset` admin route below.
|
|
15
|
-
import { buildWebSearchTool, buildWebFetchTool, readWebSearchConfig, effectiveScheme, isConfigured, } from "./tools/index.js";
|
|
8
|
+
// The plugin's `activate()` reads its config from
|
|
9
|
+
// `ctx.pluginConfig` and bakes it into the tool builders. A shared
|
|
10
|
+
// `ProviderHealth` cache is cleared on re-activation (any config
|
|
11
|
+
// change) and via `POST /health/reset`.
|
|
12
|
+
import { buildWebSearchTool, buildWebFetchTool, readWebSearchConfig, } from "./tools/index.js";
|
|
16
13
|
import { ProviderHealth } from "./tools/health.js";
|
|
17
14
|
const plugin = {
|
|
18
15
|
activate(ctx) {
|
|
19
16
|
const cfg = readWebSearchConfig(ctx.pluginConfig);
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
ctx.log.warn(`web-search: scheme "${scheme}" is selected but not fully ` +
|
|
23
|
-
`configured. Open Settings → Plugins → Web Search ` +
|
|
24
|
-
`(searxng needs a base URL; tavily/brave need a key). ` +
|
|
25
|
-
`web_fetch still works without any config.`);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
const detail = scheme === "hosted"
|
|
29
|
-
? `hosted (${cfg.hostedBackend ?? "exa"}${(cfg.hostedBackend === "parallel"
|
|
30
|
-
? cfg.parallelApiKey
|
|
31
|
-
: cfg.exaApiKey)
|
|
32
|
-
? ", keyed"
|
|
33
|
-
: ", key-free"})`
|
|
34
|
-
: scheme === "searxng"
|
|
35
|
-
? `searxng (${cfg.searxngBaseUrl})`
|
|
36
|
-
: scheme;
|
|
37
|
-
ctx.log.info(`web-search: enabled — scheme ${detail}; web_fetch on`);
|
|
38
|
-
}
|
|
17
|
+
const backend = cfg.backend ?? "exa";
|
|
18
|
+
ctx.log.info(`web-search: enabled — key-free hosted search via ${backend}; web_fetch on`);
|
|
39
19
|
const health = new ProviderHealth();
|
|
40
20
|
return {
|
|
41
21
|
tools: {
|
|
@@ -47,36 +27,19 @@ const plugin = {
|
|
|
47
27
|
getHealth: (_req, res) => {
|
|
48
28
|
res.json({
|
|
49
29
|
ok: true,
|
|
50
|
-
|
|
51
|
-
configured: isConfigured(cfg),
|
|
52
|
-
providers: {
|
|
53
|
-
hosted: {
|
|
54
|
-
configured: true,
|
|
55
|
-
backend: cfg.hostedBackend ?? "exa",
|
|
56
|
-
keyed: Boolean((cfg.hostedBackend === "parallel"
|
|
57
|
-
? cfg.parallelApiKey
|
|
58
|
-
: cfg.exaApiKey)),
|
|
59
|
-
},
|
|
60
|
-
searxng: { configured: Boolean(cfg.searxngBaseUrl) },
|
|
61
|
-
tavily: { configured: Boolean(cfg.tavilyApiKey) },
|
|
62
|
-
brave: { configured: Boolean(cfg.braveApiKey) },
|
|
63
|
-
},
|
|
30
|
+
backend,
|
|
64
31
|
timeoutMs: cfg.timeoutMs ?? 8000,
|
|
65
32
|
dead: health.snapshot(),
|
|
66
33
|
});
|
|
67
34
|
},
|
|
68
35
|
// POST /api/p/web-search/health/reset
|
|
69
|
-
// Body
|
|
70
|
-
//
|
|
36
|
+
// Body optional: { provider?: "hosted" }. Without it the
|
|
37
|
+
// whole cache clears.
|
|
71
38
|
resetHealth: (req, res) => {
|
|
72
39
|
const body = req.body;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
target === "hosted" ||
|
|
77
|
-
target === "searxng") {
|
|
78
|
-
health.resetOne(target);
|
|
79
|
-
res.json({ ok: true, cleared: [target] });
|
|
40
|
+
if (body?.provider === "hosted") {
|
|
41
|
+
health.resetOne("hosted");
|
|
42
|
+
res.json({ ok: true, cleared: ["hosted"] });
|
|
80
43
|
return;
|
|
81
44
|
}
|
|
82
45
|
const before = health.snapshot().map((e) => e.provider);
|
|
@@ -87,8 +50,7 @@ const plugin = {
|
|
|
87
50
|
};
|
|
88
51
|
},
|
|
89
52
|
async deactivate() {
|
|
90
|
-
// ProviderHealth is per-activation;
|
|
91
|
-
// when activate() is called again (registry invalidate cycle).
|
|
53
|
+
// ProviderHealth is per-activation; GC handles it on re-activate.
|
|
92
54
|
},
|
|
93
55
|
};
|
|
94
56
|
export default plugin;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,iEAAiE;AACjE,+DAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,EAAE;AACF,mBAAmB;AACnB,iEAAiE;AACjE,+DAA+D;AAC/D,iEAAiE;AACjE,EAAE;AACF,kDAAkD;AAClD,mEAAmE;AACnE,iEAAiE;AACjE,wCAAwC;AAQxC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,GAAuB;IACjC,QAAQ,CAAC,GAAkB;QACzB,MAAM,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,IAAI,CACV,oDAAoD,OAAO,gBAAgB,CAC5E,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QAEpC,OAAO;YACL,KAAK,EAAE;gBACL,aAAa,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC;gBAC9C,YAAY,EAAE,iBAAiB,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;aAC9D;YACD,MAAM,EAAE;gBACN,+BAA+B;gBAC/B,SAAS,EAAE,CAAC,IAAa,EAAE,GAAa,EAAE,EAAE;oBAC1C,GAAG,CAAC,IAAI,CAAC;wBACP,EAAE,EAAE,IAAI;wBACR,OAAO;wBACP,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,IAAI;wBAChC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;qBACxB,CAAC,CAAC;gBACL,CAAC;gBACD,sCAAsC;gBACtC,yDAAyD;gBACzD,sBAAsB;gBACtB,WAAW,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;oBAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAA0C,CAAC;oBAC5D,IAAI,IAAI,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAChC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAC1B,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBAC5C,OAAO;oBACT,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBACxD,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1C,CAAC;aACF;SACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,UAAU;QACd,kEAAkE;IACpE,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { buildWebSearchTool, readWebSearchConfig,
|
|
1
|
+
export { buildWebSearchTool, readWebSearchConfig, type WebSearchPluginConfig, } from "./web-search.js";
|
|
2
2
|
export { buildWebFetchTool, type WebFetchConfig } from "./web-fetch.js";
|
|
3
|
-
export { type SearchResult, type SearchOpts, type SearchProvider, type ProviderName, } from "./providers.js";
|
|
3
|
+
export { type SearchResult, type SearchOpts, type SearchProvider, type ProviderName, type HostedBackend, } from "./providers.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { buildWebSearchTool, readWebSearchConfig,
|
|
1
|
+
export { buildWebSearchTool, readWebSearchConfig, } from "./web-search.js";
|
|
2
2
|
export { buildWebFetchTool } from "./web-fetch.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAEpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAuB,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
export interface SearchResult {
|
|
2
2
|
title: string;
|
|
3
3
|
url: string;
|
|
4
|
-
/** 1-3 sentence snippet.
|
|
5
|
-
* one (Tavily always supplies, Brave usually does). */
|
|
4
|
+
/** 1-3 sentence snippet. */
|
|
6
5
|
content: string;
|
|
7
|
-
/** ISO-8601 string from the provider
|
|
8
|
-
*
|
|
9
|
-
* treat this as best-effort and not parse strictly. */
|
|
6
|
+
/** ISO-8601 / free-form date string from the provider when
|
|
7
|
+
* available; best-effort, agents shouldn't parse strictly. */
|
|
10
8
|
publishedDate?: string | null;
|
|
11
9
|
}
|
|
12
10
|
export interface SearchOpts {
|
|
13
|
-
/** 1-20.
|
|
11
|
+
/** 1-20. The provider clamps. */
|
|
14
12
|
count: number;
|
|
15
|
-
/** Free-text language hint
|
|
16
|
-
*
|
|
13
|
+
/** Free-text language hint (unused by the hosted endpoints today,
|
|
14
|
+
* kept for tool-schema compatibility). */
|
|
17
15
|
language?: string;
|
|
18
|
-
/** Recency window
|
|
19
|
-
*
|
|
16
|
+
/** Recency window (unused by the hosted endpoints today, kept for
|
|
17
|
+
* tool-schema compatibility). */
|
|
20
18
|
freshness?: "day" | "week" | "month" | "year";
|
|
21
|
-
/** Network timeout per fetch (ms).
|
|
19
|
+
/** Network timeout per fetch (ms). */
|
|
22
20
|
timeoutMs: number;
|
|
23
21
|
}
|
|
24
22
|
export interface ProviderError {
|
|
@@ -27,24 +25,21 @@ export interface ProviderError {
|
|
|
27
25
|
status: number;
|
|
28
26
|
message: string;
|
|
29
27
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
* call based on which are configured. */
|
|
28
|
+
/** The only backend name today. Kept as a type so the health cache
|
|
29
|
+
* and error trail stay generic. */
|
|
30
|
+
export type ProviderName = "hosted";
|
|
31
|
+
/** Which hosted MCP endpoint to query. */
|
|
32
|
+
export type HostedBackend = "exa" | "parallel";
|
|
36
33
|
export interface SearchProvider {
|
|
37
34
|
readonly name: ProviderName;
|
|
35
|
+
/** `key` carries the backend name ("exa" | "parallel"). */
|
|
38
36
|
search(query: string, key: string, opts: SearchOpts): Promise<{
|
|
39
37
|
results: SearchResult[];
|
|
40
38
|
} | {
|
|
41
39
|
error: ProviderError;
|
|
42
40
|
}>;
|
|
43
41
|
}
|
|
44
|
-
export declare const tavilyProvider: SearchProvider;
|
|
45
|
-
export declare const braveProvider: SearchProvider;
|
|
46
42
|
export declare const PARALLEL_MCP_URL = "https://search.parallel.ai/mcp";
|
|
47
43
|
export declare const EXA_MCP_URL = "https://mcp.exa.ai/mcp";
|
|
48
44
|
export declare const hostedProvider: SearchProvider;
|
|
49
|
-
export declare const searxngProvider: SearchProvider;
|
|
50
45
|
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/tools/providers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/tools/providers.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB;mEAC+D;IAC/D,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd;+CAC2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;sCACkC;IAClC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;oCACoC;AACpC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAEpC,0CAA0C;AAC1C,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,2DAA2D;IAC3D,MAAM,CACJ,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,eAAO,MAAM,gBAAgB,mCAAmC,CAAC;AACjE,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAMpD,eAAO,MAAM,cAAc,EAAE,cAkF5B,CAAC"}
|
|
@@ -1,185 +1,36 @@
|
|
|
1
|
-
//
|
|
2
|
-
// fall back from one to the other without branching on provider
|
|
3
|
-
// names. Both providers serve a JSON API; the only async is one
|
|
4
|
-
// fetch + json parse per call.
|
|
1
|
+
// Web search backend: hosted MCP only.
|
|
5
2
|
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
export const tavilyProvider = {
|
|
13
|
-
name: "tavily",
|
|
14
|
-
async search(query, key, opts) {
|
|
15
|
-
// Tavily's "advanced" mode summarises content; "basic" returns
|
|
16
|
-
// bare snippets. We pick basic — the agent will fetch the page
|
|
17
|
-
// when it needs the body, and basic is faster + cheaper.
|
|
18
|
-
const body = {
|
|
19
|
-
api_key: key,
|
|
20
|
-
query,
|
|
21
|
-
search_depth: "basic",
|
|
22
|
-
include_answer: false,
|
|
23
|
-
include_raw_content: false,
|
|
24
|
-
include_images: false,
|
|
25
|
-
max_results: clamp(opts.count, 1, 20),
|
|
26
|
-
};
|
|
27
|
-
if (opts.freshness) {
|
|
28
|
-
body.time_range = opts.freshness;
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
const ctl = new AbortController();
|
|
32
|
-
const timer = setTimeout(() => ctl.abort(), opts.timeoutMs);
|
|
33
|
-
const res = await fetch("https://api.tavily.com/search", {
|
|
34
|
-
method: "POST",
|
|
35
|
-
headers: { "content-type": "application/json" },
|
|
36
|
-
body: JSON.stringify(body),
|
|
37
|
-
signal: ctl.signal,
|
|
38
|
-
}).finally(() => clearTimeout(timer));
|
|
39
|
-
if (!res.ok) {
|
|
40
|
-
return {
|
|
41
|
-
error: {
|
|
42
|
-
provider: "tavily",
|
|
43
|
-
status: res.status,
|
|
44
|
-
message: await safeText(res),
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
const json = (await res.json());
|
|
49
|
-
const results = (json.results ?? []).map((r) => ({
|
|
50
|
-
title: typeof r.title === "string" ? r.title : "",
|
|
51
|
-
url: typeof r.url === "string" ? r.url : "",
|
|
52
|
-
content: typeof r.content === "string" ? r.content : "",
|
|
53
|
-
publishedDate: r.published_date ?? null,
|
|
54
|
-
}));
|
|
55
|
-
return { results };
|
|
56
|
-
}
|
|
57
|
-
catch (err) {
|
|
58
|
-
return {
|
|
59
|
-
error: {
|
|
60
|
-
provider: "tavily",
|
|
61
|
-
status: 0,
|
|
62
|
-
message: err instanceof Error ? err.message : String(err),
|
|
63
|
-
},
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
export const braveProvider = {
|
|
69
|
-
name: "brave",
|
|
70
|
-
async search(query, key, opts) {
|
|
71
|
-
// Brave's web search returns up to 20 in `web.results`; news /
|
|
72
|
-
// images live in sibling sections we ignore for now.
|
|
73
|
-
const params = new URLSearchParams({
|
|
74
|
-
q: query,
|
|
75
|
-
count: String(clamp(opts.count, 1, 20)),
|
|
76
|
-
safesearch: "off",
|
|
77
|
-
// Brave understands ISO 639-1 + locale; we only forward the
|
|
78
|
-
// first 5 chars to keep the param valid (`zh-CN` → `zh-CN`,
|
|
79
|
-
// `en` → `en`).
|
|
80
|
-
...(opts.language ? { search_lang: opts.language.slice(0, 5) } : {}),
|
|
81
|
-
// Recency: Brave uses pd / pw / pm / py.
|
|
82
|
-
...(opts.freshness
|
|
83
|
-
? {
|
|
84
|
-
freshness: { day: "pd", week: "pw", month: "pm", year: "py" }[opts.freshness],
|
|
85
|
-
}
|
|
86
|
-
: {}),
|
|
87
|
-
});
|
|
88
|
-
try {
|
|
89
|
-
const ctl = new AbortController();
|
|
90
|
-
const timer = setTimeout(() => ctl.abort(), opts.timeoutMs);
|
|
91
|
-
const res = await fetch(`https://api.search.brave.com/res/v1/web/search?${params.toString()}`, {
|
|
92
|
-
headers: {
|
|
93
|
-
"x-subscription-token": key,
|
|
94
|
-
accept: "application/json",
|
|
95
|
-
"accept-encoding": "gzip",
|
|
96
|
-
},
|
|
97
|
-
signal: ctl.signal,
|
|
98
|
-
}).finally(() => clearTimeout(timer));
|
|
99
|
-
if (!res.ok) {
|
|
100
|
-
return {
|
|
101
|
-
error: {
|
|
102
|
-
provider: "brave",
|
|
103
|
-
status: res.status,
|
|
104
|
-
message: await safeText(res),
|
|
105
|
-
},
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
const json = (await res.json());
|
|
109
|
-
const results = (json.web?.results ?? []).map((r) => ({
|
|
110
|
-
title: typeof r.title === "string" ? r.title : "",
|
|
111
|
-
url: typeof r.url === "string" ? r.url : "",
|
|
112
|
-
content: typeof r.description === "string" ? r.description : "",
|
|
113
|
-
publishedDate: r.page_age ?? null,
|
|
114
|
-
}));
|
|
115
|
-
return { results };
|
|
116
|
-
}
|
|
117
|
-
catch (err) {
|
|
118
|
-
return {
|
|
119
|
-
error: {
|
|
120
|
-
provider: "brave",
|
|
121
|
-
status: 0,
|
|
122
|
-
message: err instanceof Error ? err.message : String(err),
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
};
|
|
128
|
-
// ─── hosted MCP provider (Parallel / Exa free endpoints) ───────
|
|
129
|
-
//
|
|
130
|
-
// Key-free web search. Both Parallel and Exa expose a hosted MCP
|
|
131
|
-
// endpoint that answers anonymous JSON-RPC `tools/call` requests
|
|
132
|
-
// (a free tier). If the operator supplies an EXA/PARALLEL key we
|
|
133
|
-
// attach it, but the whole point of this provider is that it
|
|
134
|
-
// works with none. Same approach OpenCode uses.
|
|
3
|
+
// The plugin used to ship four schemes (Tavily / Brave / hosted
|
|
4
|
+
// MCP / SearXNG). Per Yu it's now just the key-free hosted MCP
|
|
5
|
+
// path — you only choose which anonymous endpoint to hit: Exa or
|
|
6
|
+
// Parallel. Both expose a hosted MCP endpoint answering anonymous
|
|
7
|
+
// JSON-RPC `tools/call` requests on a free tier (the same approach
|
|
8
|
+
// OpenCode uses). No API key, no account, no self-hosting.
|
|
135
9
|
//
|
|
136
|
-
// `
|
|
137
|
-
//
|
|
138
|
-
//
|
|
139
|
-
//
|
|
10
|
+
// The `SearchProvider` shape is kept so web_search's plumbing
|
|
11
|
+
// (health cache, error trail) doesn't have to special-case a
|
|
12
|
+
// single provider; `key` here is just the backend name
|
|
13
|
+
// ("exa" | "parallel"), not a credential.
|
|
140
14
|
export const PARALLEL_MCP_URL = "https://search.parallel.ai/mcp";
|
|
141
15
|
export const EXA_MCP_URL = "https://mcp.exa.ai/mcp";
|
|
142
|
-
function
|
|
143
|
-
|
|
144
|
-
const j = JSON.parse(key);
|
|
145
|
-
return {
|
|
146
|
-
backend: j.backend === "parallel" ? "parallel" : "exa",
|
|
147
|
-
apiKey: typeof j.apiKey === "string" && j.apiKey ? j.apiKey : undefined,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
return { backend: "exa" };
|
|
152
|
-
}
|
|
16
|
+
function normBackend(key) {
|
|
17
|
+
return key === "parallel" ? "parallel" : "exa";
|
|
153
18
|
}
|
|
154
19
|
export const hostedProvider = {
|
|
155
20
|
name: "hosted",
|
|
156
21
|
async search(query, key, opts) {
|
|
157
|
-
const
|
|
158
|
-
const url = backend === "parallel"
|
|
159
|
-
? PARALLEL_MCP_URL
|
|
160
|
-
: apiKey
|
|
161
|
-
? `${EXA_MCP_URL}?exaApiKey=${encodeURIComponent(apiKey)}`
|
|
162
|
-
: EXA_MCP_URL;
|
|
22
|
+
const backend = normBackend(key);
|
|
23
|
+
const url = backend === "parallel" ? PARALLEL_MCP_URL : EXA_MCP_URL;
|
|
163
24
|
// MCP tool + args differ per backend.
|
|
164
25
|
const toolName = backend === "parallel" ? "web_search" : "web_search_exa";
|
|
165
26
|
const toolArgs = backend === "parallel"
|
|
166
|
-
? {
|
|
167
|
-
|
|
168
|
-
search_queries: [query],
|
|
169
|
-
}
|
|
170
|
-
: {
|
|
171
|
-
query,
|
|
172
|
-
numResults: clamp(opts.count, 1, 20),
|
|
173
|
-
type: "auto",
|
|
174
|
-
};
|
|
27
|
+
? { objective: query, search_queries: [query] }
|
|
28
|
+
: { query, numResults: clamp(opts.count, 1, 20), type: "auto" };
|
|
175
29
|
const headers = {
|
|
176
30
|
"content-type": "application/json",
|
|
177
31
|
accept: "application/json, text/event-stream",
|
|
178
|
-
"user-agent": "tianshu-web-search/0.
|
|
32
|
+
"user-agent": "tianshu-web-search/0.3",
|
|
179
33
|
};
|
|
180
|
-
if (backend === "parallel" && apiKey) {
|
|
181
|
-
headers.authorization = `Bearer ${apiKey}`;
|
|
182
|
-
}
|
|
183
34
|
const rpc = {
|
|
184
35
|
jsonrpc: "2.0",
|
|
185
36
|
id: 1,
|
|
@@ -220,9 +71,9 @@ export const hostedProvider = {
|
|
|
220
71
|
// JSON (array or {results:[...]}). Parse per backend, with a
|
|
221
72
|
// cross-fallback so a format change on either side degrades
|
|
222
73
|
// gracefully instead of returning nothing.
|
|
223
|
-
const
|
|
224
|
-
const final = (
|
|
225
|
-
?
|
|
74
|
+
const primary = backend === "exa" ? parseExaText(text) : parseHostedResults(text);
|
|
75
|
+
const final = (primary.length > 0
|
|
76
|
+
? primary
|
|
226
77
|
: backend === "exa"
|
|
227
78
|
? parseHostedResults(text)
|
|
228
79
|
: parseExaText(text)).slice(0, clamp(opts.count, 1, 20));
|
|
@@ -268,18 +119,13 @@ function extractMcpText(body) {
|
|
|
268
119
|
}
|
|
269
120
|
return null;
|
|
270
121
|
}
|
|
271
|
-
/**
|
|
272
|
-
* results. Both Exa and Parallel return an array of
|
|
273
|
-
* `{title,url,text/snippet,publishedDate}`-ish objects, sometimes
|
|
274
|
-
* wrapped in `{ results: [...] }`. Be liberal. */
|
|
122
|
+
/** Parallel-style payload: JSON, either an array or `{results:[...]}`. */
|
|
275
123
|
function parseHostedResults(text) {
|
|
276
124
|
let data;
|
|
277
125
|
try {
|
|
278
126
|
data = JSON.parse(text);
|
|
279
127
|
}
|
|
280
128
|
catch {
|
|
281
|
-
// Non-JSON payload: hand it back as a single synthetic result
|
|
282
|
-
// so the agent at least sees the content.
|
|
283
129
|
const t = text.trim();
|
|
284
130
|
return t ? [{ title: "result", url: "", content: t.slice(0, 2000) }] : [];
|
|
285
131
|
}
|
|
@@ -305,9 +151,8 @@ function parseHostedResults(text) {
|
|
|
305
151
|
};
|
|
306
152
|
});
|
|
307
153
|
}
|
|
308
|
-
/**
|
|
309
|
-
*
|
|
310
|
-
* `Title:`, `URL:`, `Published:`, and `Highlights:` labels. */
|
|
154
|
+
/** Exa's plain-text MCP payload: blocks split by a `---` line, each
|
|
155
|
+
* carrying `Title:` / `URL:` / `Published:` / `Highlights:`. */
|
|
311
156
|
function parseExaText(text) {
|
|
312
157
|
const blocks = text
|
|
313
158
|
.split(/\n\s*---\s*\n/)
|
|
@@ -318,7 +163,6 @@ function parseExaText(text) {
|
|
|
318
163
|
const title = block.match(/^\s*Title:\s*(.+)$/im)?.[1]?.trim() ?? "";
|
|
319
164
|
const url = block.match(/^\s*URL:\s*(\S+)/im)?.[1]?.trim() ?? "";
|
|
320
165
|
const published = block.match(/^\s*Published:\s*(.+)$/im)?.[1]?.trim();
|
|
321
|
-
// Highlights are everything after the `Highlights:` label.
|
|
322
166
|
const hi = block.split(/^\s*Highlights:\s*$/im)[1] ?? "";
|
|
323
167
|
const content = hi
|
|
324
168
|
.replace(/\n\.\.\.\n/g, " ")
|
|
@@ -336,74 +180,6 @@ function parseExaText(text) {
|
|
|
336
180
|
}
|
|
337
181
|
return out;
|
|
338
182
|
}
|
|
339
|
-
// ─── SearXNG provider (self-hosted meta-search) ────────────────
|
|
340
|
-
//
|
|
341
|
-
// `key` is the operator's SearXNG base URL (e.g.
|
|
342
|
-
// "http://localhost:8080" or "https://searx.example.com"). We hit
|
|
343
|
-
// its JSON API (`/search?format=json`). No API key; the endpoint
|
|
344
|
-
// is the credential.
|
|
345
|
-
export const searxngProvider = {
|
|
346
|
-
name: "searxng",
|
|
347
|
-
async search(query, key, opts) {
|
|
348
|
-
const base = key.replace(/\/+$/, "");
|
|
349
|
-
if (!base) {
|
|
350
|
-
return {
|
|
351
|
-
error: {
|
|
352
|
-
provider: "searxng",
|
|
353
|
-
status: 0,
|
|
354
|
-
message: "no SearXNG base URL configured",
|
|
355
|
-
},
|
|
356
|
-
};
|
|
357
|
-
}
|
|
358
|
-
const params = new URLSearchParams({
|
|
359
|
-
q: query,
|
|
360
|
-
format: "json",
|
|
361
|
-
safesearch: "0",
|
|
362
|
-
});
|
|
363
|
-
if (opts.language)
|
|
364
|
-
params.set("language", opts.language.slice(0, 5));
|
|
365
|
-
if (opts.freshness) {
|
|
366
|
-
// SearXNG time_range accepts day/week/month/year directly.
|
|
367
|
-
params.set("time_range", opts.freshness);
|
|
368
|
-
}
|
|
369
|
-
try {
|
|
370
|
-
const ctl = new AbortController();
|
|
371
|
-
const timer = setTimeout(() => ctl.abort(), opts.timeoutMs);
|
|
372
|
-
const res = await fetch(`${base}/search?${params.toString()}`, {
|
|
373
|
-
headers: { accept: "application/json" },
|
|
374
|
-
signal: ctl.signal,
|
|
375
|
-
}).finally(() => clearTimeout(timer));
|
|
376
|
-
if (!res.ok) {
|
|
377
|
-
return {
|
|
378
|
-
error: {
|
|
379
|
-
provider: "searxng",
|
|
380
|
-
status: res.status,
|
|
381
|
-
message: await safeText(res),
|
|
382
|
-
},
|
|
383
|
-
};
|
|
384
|
-
}
|
|
385
|
-
const json = (await res.json());
|
|
386
|
-
const results = (json.results ?? [])
|
|
387
|
-
.slice(0, clamp(opts.count, 1, 20))
|
|
388
|
-
.map((r) => ({
|
|
389
|
-
title: typeof r.title === "string" ? r.title : "",
|
|
390
|
-
url: typeof r.url === "string" ? r.url : "",
|
|
391
|
-
content: typeof r.content === "string" ? r.content : "",
|
|
392
|
-
publishedDate: r.publishedDate ?? null,
|
|
393
|
-
}));
|
|
394
|
-
return { results };
|
|
395
|
-
}
|
|
396
|
-
catch (err) {
|
|
397
|
-
return {
|
|
398
|
-
error: {
|
|
399
|
-
provider: "searxng",
|
|
400
|
-
status: 0,
|
|
401
|
-
message: err instanceof Error ? err.message : String(err),
|
|
402
|
-
},
|
|
403
|
-
};
|
|
404
|
-
}
|
|
405
|
-
},
|
|
406
|
-
};
|
|
407
183
|
function clamp(n, lo, hi) {
|
|
408
184
|
return Math.max(lo, Math.min(hi, Math.floor(n)));
|
|
409
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/tools/providers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/tools/providers.ts"],"names":[],"mappings":"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"}
|