@humain/terminal 0.0.3-beta.2 → 0.0.4-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.
- package/CHANGELOG.md +16 -0
- package/dist/bun/cli.d.ts.map +1 -1
- package/dist/bun/cli.js +0 -1
- package/dist/bun/cli.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +7 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -1
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +4 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +46 -22
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/tools/index.d.ts +2 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +9 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/subagent.d.ts +82 -0
- package/dist/core/tools/subagent.d.ts.map +1 -0
- package/dist/core/tools/subagent.js +980 -0
- package/dist/core/tools/subagent.js.map +1 -0
- package/dist/humain/bedrock-provider/vendor/index.bundle.d.mts +3 -0
- package/dist/humain/bedrock-provider/vendor/index.bundle.mjs +1509 -0
- package/dist/humain/index.d.ts.map +1 -1
- package/dist/humain/index.js +3 -0
- package/dist/humain/index.js.map +1 -1
- package/dist/humain/mcp-adapter/vendor/CHANGELOG.md +36 -0
- package/dist/humain/mcp-adapter/vendor/README.md +47 -5
- package/dist/humain/mcp-adapter/vendor/cli.js +163 -1
- package/dist/humain/mcp-adapter/vendor/commands.ts +128 -22
- package/dist/humain/mcp-adapter/vendor/config.ts +25 -7
- package/dist/humain/mcp-adapter/vendor/direct-tools.ts +5 -4
- package/dist/humain/mcp-adapter/vendor/index.bundle.mjs +1663 -458
- package/dist/humain/mcp-adapter/vendor/index.ts +219 -32
- package/dist/humain/mcp-adapter/vendor/init.ts +36 -4
- package/dist/humain/mcp-adapter/vendor/lifecycle.ts +315 -24
- package/dist/humain/mcp-adapter/vendor/mcp-auth-flow.ts +39 -6
- package/dist/humain/mcp-adapter/vendor/mcp-bearer-store.ts +387 -0
- package/dist/humain/mcp-adapter/vendor/mcp-callback-server.ts +27 -3
- package/dist/humain/mcp-adapter/vendor/mcp-code.ts +4 -0
- package/dist/humain/mcp-adapter/vendor/mcp-panel.ts +42 -13
- package/dist/humain/mcp-adapter/vendor/metadata-cache.ts +32 -21
- package/dist/humain/mcp-adapter/vendor/package-mcp-loader.ts +168 -0
- package/dist/humain/mcp-adapter/vendor/package.json +179 -177
- package/dist/humain/mcp-adapter/vendor/proxy-modes.ts +5 -4
- package/dist/humain/mcp-adapter/vendor/request-headers-command.ts +31 -37
- package/dist/humain/mcp-adapter/vendor/search-ranking.ts +92 -22
- package/dist/humain/mcp-adapter/vendor/server-manager.ts +140 -2
- package/dist/humain/mcp-adapter/vendor/session-recovery.ts +7 -0
- package/dist/humain/mcp-adapter/vendor/tool-approval.ts +15 -2
- package/dist/humain/mcp-adapter/vendor/tool-result-renderer.ts +44 -4
- package/dist/humain/mcp-adapter/vendor/types.ts +2 -0
- package/dist/humain/mcp-adapter/vendor/ui-server.ts +18 -16
- package/dist/humain/mcp-adapter/vendor/utils.ts +70 -0
- package/dist/humain/web-access/vendor/anysearch.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/anysearch.js +3 -2
- package/dist/humain/web-access/vendor/anysearch.js.map +1 -1
- package/dist/humain/web-access/vendor/brave.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/brave.js +14 -4
- package/dist/humain/web-access/vendor/brave.js.map +1 -1
- package/dist/humain/web-access/vendor/curator-page.d.ts +3 -0
- package/dist/humain/web-access/vendor/curator-page.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/curator-page.js +4 -1
- package/dist/humain/web-access/vendor/curator-page.js.map +1 -1
- package/dist/humain/web-access/vendor/curator-server.d.ts +3 -0
- package/dist/humain/web-access/vendor/curator-server.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/curator-server.js +6 -0
- package/dist/humain/web-access/vendor/curator-server.js.map +1 -1
- package/dist/humain/web-access/vendor/exa.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/exa.js +16 -7
- package/dist/humain/web-access/vendor/exa.js.map +1 -1
- package/dist/humain/web-access/vendor/extract.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/extract.js +31 -3
- package/dist/humain/web-access/vendor/extract.js.map +1 -1
- package/dist/humain/web-access/vendor/gemini-search.d.ts +2 -2
- package/dist/humain/web-access/vendor/gemini-search.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/gemini-search.js +25 -4
- package/dist/humain/web-access/vendor/gemini-search.js.map +1 -1
- package/dist/humain/web-access/vendor/index.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/index.js +36 -49
- package/dist/humain/web-access/vendor/index.js.map +1 -1
- package/dist/humain/web-access/vendor/page-query.d.ts +1 -2
- package/dist/humain/web-access/vendor/page-query.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/page-query.js +5 -2
- package/dist/humain/web-access/vendor/page-query.js.map +1 -1
- package/dist/humain/web-access/vendor/parallel-mcp.d.ts +10 -0
- package/dist/humain/web-access/vendor/parallel-mcp.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/parallel-mcp.js +224 -0
- package/dist/humain/web-access/vendor/parallel-mcp.js.map +1 -0
- package/dist/humain/web-access/vendor/parallel.d.ts +1 -0
- package/dist/humain/web-access/vendor/parallel.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/parallel.js +2 -2
- package/dist/humain/web-access/vendor/parallel.js.map +1 -1
- package/dist/humain/web-access/vendor/query-rewrite.d.ts +3 -0
- package/dist/humain/web-access/vendor/query-rewrite.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/query-rewrite.js +42 -0
- package/dist/humain/web-access/vendor/query-rewrite.js.map +1 -0
- package/dist/humain/web-access/vendor/serper.d.ts +4 -0
- package/dist/humain/web-access/vendor/serper.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/serper.js +206 -0
- package/dist/humain/web-access/vendor/serper.js.map +1 -0
- package/dist/humain/web-access/vendor/summary-model-scope.d.ts +5 -0
- package/dist/humain/web-access/vendor/summary-model-scope.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/summary-model-scope.js +10 -5
- package/dist/humain/web-access/vendor/summary-model-scope.js.map +1 -1
- package/dist/humain/web-access/vendor/summary-review.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/summary-review.js +40 -14
- package/dist/humain/web-access/vendor/summary-review.js.map +1 -1
- package/dist/humain/web-access/vendor/tavily.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/tavily.js +14 -4
- package/dist/humain/web-access/vendor/tavily.js.map +1 -1
- package/dist/humain/web-access/vendor/utils.d.ts +10 -0
- package/dist/humain/web-access/vendor/utils.d.ts.map +1 -1
- package/dist/humain/web-access/vendor/utils.js +70 -0
- package/dist/humain/web-access/vendor/utils.js.map +1 -1
- package/dist/humain/web-access/vendor/valyu.d.ts +6 -0
- package/dist/humain/web-access/vendor/valyu.d.ts.map +1 -0
- package/dist/humain/web-access/vendor/valyu.js +194 -0
- package/dist/humain/web-access/vendor/valyu.js.map +1 -0
- package/docs/extensions.md +1 -1
- package/examples/extensions/README.md +1 -1
- package/examples/extensions/subagent/README.md +24 -147
- package/npm-shrinkwrap.json +7 -2
- package/package.json +7 -2
- package/src/humain/mcp-adapter/UPSTREAM.md +1 -1
- package/src/humain/mcp-adapter/upstream.json +3 -3
- package/src/humain/mcp-adapter/vendor/CHANGELOG.md +36 -0
- package/src/humain/web-access/UPSTREAM.md +1 -1
- package/src/humain/web-access/upstream.json +4 -4
- package/dist/bun/register-bedrock.d.ts +0 -2
- package/dist/bun/register-bedrock.d.ts.map +0 -1
- package/dist/bun/register-bedrock.js +0 -4
- package/dist/bun/register-bedrock.js.map +0 -1
- package/examples/extensions/subagent/agents.ts +0 -126
- package/examples/extensions/subagent/index.ts +0 -1015
|
@@ -8,11 +8,12 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
8
8
|
};
|
|
9
9
|
import { Box, Text, truncateToWidth } from "@earendil-works/pi-tui";
|
|
10
10
|
import { Type } from "typebox";
|
|
11
|
-
import { StringEnum
|
|
11
|
+
import { StringEnum } from "@earendil-works/pi-ai/compat";
|
|
12
12
|
import { normalizeFetchContentParams } from "./fetch-params.js";
|
|
13
13
|
import { resolveAuthFetchProfile } from "./auth-fetch.js";
|
|
14
14
|
import { findContent } from "./content-find.js";
|
|
15
15
|
import { answerFromPage } from "./page-query.js";
|
|
16
|
+
import { rewriteSearchQuery } from "./query-rewrite.js";
|
|
16
17
|
import { clearCloneCache } from "./github-extract.js";
|
|
17
18
|
import { getConfiguredSearchRouting, normalizeSearchProviderSelection, RESOLVED_SEARCH_PROVIDERS, SEARCH_PROVIDERS, search } from "./gemini-search.js";
|
|
18
19
|
import { formatSeconds, getWebSearchConfigDir, getWebSearchConfigPath, resolveCuratorNetworkConfig } from "./utils.js";
|
|
@@ -34,6 +35,7 @@ import { isBrowserCookieAccessAllowed } from "./gemini-web-config.js";
|
|
|
34
35
|
import { isBraveAvailable } from "./brave.js";
|
|
35
36
|
import { isOpenAISearchAvailable } from "./openai-search.js";
|
|
36
37
|
import { isParallelAvailable } from "./parallel.js";
|
|
38
|
+
import { isParallelMcpAvailable } from "./parallel-mcp.js";
|
|
37
39
|
import { isTinyFishAvailable } from "./tinyfish.js";
|
|
38
40
|
import { isSearch1APIAvailable } from "./search1api.js";
|
|
39
41
|
import { isSearchinfinityAvailable } from "./searchinfinity.js";
|
|
@@ -51,8 +53,10 @@ import { isAnySearchAvailable } from "./anysearch.js";
|
|
|
51
53
|
import { isXaiSearchAvailable } from "./xai-search.js";
|
|
52
54
|
import { isBrightDataAvailable } from "./brightdata.js";
|
|
53
55
|
import { isSerpBaseAvailable } from "./serpbase.js";
|
|
56
|
+
import { isSerperAvailable } from "./serper.js";
|
|
57
|
+
import { isValyuAvailable } from "./valyu.js";
|
|
54
58
|
import { buildSearchErrorPlan } from "./render-search-error.js";
|
|
55
|
-
import { findModelWithProviderRouting, loadEnabledModelPatterns, modelMatchesEnabledPatterns } from "./summary-model-scope.js";
|
|
59
|
+
import { findModelWithProviderRouting, loadEnabledModelPatterns, modelMatchesEnabledPatterns, splitThinkingSuffix } from "./summary-model-scope.js";
|
|
56
60
|
import { buildResearchArtifact, withClaimAssessment, storeResearchArtifact, getResearchArtifact, } from "./source-check.js";
|
|
57
61
|
const WEB_SEARCH_CONFIG_PATH = getWebSearchConfigPath();
|
|
58
62
|
let extractModulePromise;
|
|
@@ -273,6 +277,7 @@ async function getProviderAvailability(ctx) {
|
|
|
273
277
|
openai: await isOpenAISearchAvailable(ctx),
|
|
274
278
|
brave: isBraveAvailable(),
|
|
275
279
|
parallel: isParallelAvailable(),
|
|
280
|
+
"parallel-mcp": isParallelMcpAvailable(),
|
|
276
281
|
tinyfish: isTinyFishAvailable(),
|
|
277
282
|
search1api: isSearch1APIAvailable(),
|
|
278
283
|
searchinfinity: isSearchinfinityAvailable(),
|
|
@@ -293,10 +298,12 @@ async function getProviderAvailability(ctx) {
|
|
|
293
298
|
xai: await isXaiSearchAvailable(ctx),
|
|
294
299
|
brightdata: isBrightDataAvailable(),
|
|
295
300
|
serpbase: isSerpBaseAvailable(),
|
|
301
|
+
serper: isSerperAvailable(),
|
|
302
|
+
valyu: isValyuAvailable(),
|
|
296
303
|
};
|
|
297
304
|
return {
|
|
298
|
-
// DuckDuckGo, AnySearch, xAI, Bright Data, and
|
|
299
|
-
all: Object.entries(providers).some(([provider, available]) => provider !== "duckduckgo" && provider !== "anysearch" && provider !== "xai" && provider !== "brightdata" && provider !== "serpbase" && provider !== "gemini" && available) || geminiApiAvail,
|
|
305
|
+
// Parallel MCP, DuckDuckGo, AnySearch, xAI, Bright Data, SerpBase, Serper, and Valyu are explicit-only, so they never make `all` eligible.
|
|
306
|
+
all: Object.entries(providers).some(([provider, available]) => provider !== "parallel-mcp" && provider !== "duckduckgo" && provider !== "anysearch" && provider !== "xai" && provider !== "brightdata" && provider !== "serpbase" && provider !== "serper" && provider !== "valyu" && provider !== "gemini" && available) || geminiApiAvail,
|
|
300
307
|
...providers,
|
|
301
308
|
};
|
|
302
309
|
}
|
|
@@ -825,9 +832,14 @@ export default function (pi) {
|
|
|
825
832
|
};
|
|
826
833
|
pi.appendEntry("web-search-results", storeFetchedContentResult(fetchId, data));
|
|
827
834
|
const ok = fetched.filter(f => !f.error).length;
|
|
835
|
+
const availability = ok === fetched.length
|
|
836
|
+
? "Full page content now available."
|
|
837
|
+
: ok > 0
|
|
838
|
+
? "Partial page content now available."
|
|
839
|
+
: "No page content was fetched. Stored fetch diagnostics are available.";
|
|
828
840
|
pi.sendMessage({
|
|
829
841
|
customType: "web-search-content-ready",
|
|
830
|
-
content: `Content fetched for ${ok}/${fetched.length} URLs [${fetchId}].
|
|
842
|
+
content: `Content fetched for ${ok}/${fetched.length} URLs [${fetchId}]. ${availability}`,
|
|
831
843
|
display: true,
|
|
832
844
|
}, { triggerTurn: true });
|
|
833
845
|
})
|
|
@@ -908,42 +920,6 @@ export default function (pi) {
|
|
|
908
920
|
},
|
|
909
921
|
};
|
|
910
922
|
}
|
|
911
|
-
async function resolveFirstAvailableModel(ctx, candidates) {
|
|
912
|
-
const enabledModelPatterns = loadEnabledModelPatterns(ctx);
|
|
913
|
-
for (const { provider, id } of candidates) {
|
|
914
|
-
const model = findModelWithProviderRouting(ctx.modelRegistry, provider, id);
|
|
915
|
-
if (!model || !modelMatchesEnabledPatterns(model, enabledModelPatterns))
|
|
916
|
-
continue;
|
|
917
|
-
const auth = await ctx.modelRegistry.getApiKeyAndHeaders(model);
|
|
918
|
-
if (auth.ok && auth.apiKey)
|
|
919
|
-
return { model, apiKey: auth.apiKey, headers: auth.headers };
|
|
920
|
-
}
|
|
921
|
-
throw new Error(`No enabled model available: ${candidates.map(c => `${c.provider}/${c.id}`).join(", ")}`);
|
|
922
|
-
}
|
|
923
|
-
async function rewriteSearchQuery(query, ctx, signal) {
|
|
924
|
-
const { model, apiKey, headers } = await resolveFirstAvailableModel(ctx, [
|
|
925
|
-
{ provider: "anthropic", id: "claude-haiku-4-5" },
|
|
926
|
-
{ provider: "google", id: "gemini-3.6-flash" },
|
|
927
|
-
{ provider: "openai", id: "gpt-4.1-mini" },
|
|
928
|
-
]);
|
|
929
|
-
const response = await complete(model, {
|
|
930
|
-
messages: [{
|
|
931
|
-
role: "user",
|
|
932
|
-
content: [{ type: "text", text: `Rewrite this web search query to get better, more specific results. Add relevant year qualifiers, precise technical terms, and specificity. Return ONLY the improved query text, nothing else.\n\nQuery: ${query}` }],
|
|
933
|
-
timestamp: Date.now(),
|
|
934
|
-
}],
|
|
935
|
-
}, { apiKey, headers, signal });
|
|
936
|
-
if (response.stopReason === "aborted")
|
|
937
|
-
throw new Error("Aborted");
|
|
938
|
-
const contentParts = Array.isArray(response.content) ? response.content : [];
|
|
939
|
-
const text = contentParts
|
|
940
|
-
.map(part => part.type === "text" ? part.text : "")
|
|
941
|
-
.join("")
|
|
942
|
-
.trim();
|
|
943
|
-
if (!text)
|
|
944
|
-
throw new Error("Rewrite returned empty response");
|
|
945
|
-
return text;
|
|
946
|
-
}
|
|
947
923
|
async function generateSummaryForSelectedIndices(selectedQueryIndices, resultsByIndex, summaryContext, signal, modelOverride, feedback) {
|
|
948
924
|
const selectedResults = [];
|
|
949
925
|
for (const qi of selectedQueryIndices) {
|
|
@@ -1010,17 +986,28 @@ export default function (pi) {
|
|
|
1010
986
|
const configuredSummaryModel = typeof config.summaryModel === "string" ? config.summaryModel.trim() : "";
|
|
1011
987
|
const preferredDefaults = [
|
|
1012
988
|
{ provider: "anthropic", id: "claude-haiku-4-5" },
|
|
1013
|
-
{ provider: "openai-codex", id: "gpt-5.
|
|
989
|
+
{ provider: "openai-codex", id: "gpt-5.6-luna" },
|
|
990
|
+
{ provider: "openai-codex", id: "gpt-5.6-terra" },
|
|
991
|
+
{ provider: "google", id: "gemini-3.6-flash" },
|
|
992
|
+
{ provider: "openai", id: "gpt-5-mini" },
|
|
993
|
+
{ provider: "deepseek", id: "deepseek-v4-flash" },
|
|
1014
994
|
];
|
|
1015
995
|
const resolveAvailableModelValue = (selector) => {
|
|
1016
|
-
const
|
|
1017
|
-
|
|
996
|
+
const parsed = splitThinkingSuffix(selector);
|
|
997
|
+
const slashIndex = parsed.value.indexOf("/");
|
|
998
|
+
if (slashIndex <= 0 || slashIndex >= parsed.value.length - 1)
|
|
1018
999
|
return null;
|
|
1019
|
-
const model = findModelWithProviderRouting(summaryContext.modelRegistry,
|
|
1000
|
+
const model = findModelWithProviderRouting(summaryContext.modelRegistry, parsed.value.slice(0, slashIndex), parsed.value.slice(slashIndex + 1));
|
|
1020
1001
|
if (!model)
|
|
1021
1002
|
return null;
|
|
1022
1003
|
const value = `${model.provider}/${model.id}`;
|
|
1023
|
-
|
|
1004
|
+
if (!availableValues.has(value))
|
|
1005
|
+
return null;
|
|
1006
|
+
if (selector !== value && !seen.has(selector)) {
|
|
1007
|
+
seen.add(selector);
|
|
1008
|
+
summaryModels.push({ value: selector, label: selector });
|
|
1009
|
+
}
|
|
1010
|
+
return selector;
|
|
1024
1011
|
};
|
|
1025
1012
|
let defaultSummaryModel = null;
|
|
1026
1013
|
if (scopeLoaded && configuredSummaryModel.length > 0) {
|
|
@@ -1447,7 +1434,7 @@ export default function (pi) {
|
|
|
1447
1434
|
pi.registerTool({
|
|
1448
1435
|
name: toolNames.webSearch,
|
|
1449
1436
|
label: "Web Search",
|
|
1450
|
-
description: `Search the web using OpenAI, Brave, Parallel, TinyFish, Search1API, Searchinfinity, Querit, Tavily, Firecrawl, Jina, SERPdive, Kagi, Bocha, Ollama, SearXNG, DuckDuckGo, Exa, Perplexity, Gemini, AnySearch, xAI, Bright Data, or
|
|
1437
|
+
description: `Search the web using OpenAI, Brave, Parallel, Parallel MCP, TinyFish, Search1API, Searchinfinity, Querit, Tavily, Firecrawl, Jina, SERPdive, Kagi, Bocha, Ollama, SearXNG, DuckDuckGo, Exa, Perplexity, Gemini, AnySearch, Valyu, xAI, Bright Data, SerpBase, or Serper. Pass a provider array to search only those providers simultaneously, or use provider "all" to search every eligible provider except Parallel MCP, DuckDuckGo, AnySearch, Valyu, xAI, Bright Data, SerpBase, and Serper. Returns an AI-synthesized answer with source citations. OpenAI search uses a Codex subscription or OpenAI API key; xAI search uses a SuperGrok/X Premium subscription or xAI API key. Parallel MCP, DuckDuckGo, AnySearch, Valyu, xAI, Bright Data, SerpBase, and Serper are available only when explicitly selected. For comprehensive research, prefer queries (plural) with 2-4 varied angles over a single query — each query gets its own synthesized answer, so varying phrasing and scope gives much broader coverage. When includeContent is true, full page content is fetched in the background. Searches auto-open the interactive browser curator and stream results live; set workflow to "none" to skip curation or "auto-summary" for a model-generated summary without the browser curator. The configured provider is used when provider is omitted or set to auto; omit provider unless explicitly overriding it. Without a configured provider, auto-selects OpenAI when suitable and available, then Exa, Brave, Parallel, TinyFish, Search1API, Searchinfinity, Querit, Tavily, Firecrawl, Jina, SERPdive, Kagi, Bocha, Ollama, Perplexity, Gemini API, or Gemini Web. When SearXNG is configured, it is preferred first for local/private search.`,
|
|
1451
1438
|
promptSnippet: "Use for web research questions. Prefer {queries:[...]} with 2-4 varied angles over a single query for broader coverage. Omit provider unless explicitly overriding the configured default.",
|
|
1452
1439
|
parameters: Type.Object({
|
|
1453
1440
|
query: Type.Optional(Type.String({ description: "Single search query. For research tasks, prefer 'queries' with multiple varied angles instead." })),
|
|
@@ -1456,7 +1443,7 @@ export default function (pi) {
|
|
|
1456
1443
|
includeContent: Type.Optional(Type.Boolean({ description: "Fetch full page content (async)" })),
|
|
1457
1444
|
recencyFilter: Type.Optional(StringEnum(["day", "week", "month", "year"], { description: "Filter by recency" })),
|
|
1458
1445
|
domainFilter: Type.Optional(Type.Array(Type.String(), { description: "Limit to domains (prefix with - to exclude)" })),
|
|
1459
|
-
provider: Type.Optional(searchProviderSchema("Search provider or non-empty list of providers to search simultaneously; use all to search every eligible provider except DuckDuckGo, AnySearch, xAI, Bright Data, and
|
|
1446
|
+
provider: Type.Optional(searchProviderSchema("Search provider or non-empty list of providers to search simultaneously; use all to search every eligible provider except Parallel MCP, DuckDuckGo, AnySearch, xAI, Bright Data, SerpBase, Serper, and Valyu, omit this field to use the configured provider, or use auto when none is configured")),
|
|
1460
1447
|
workflow: Type.Optional(StringEnum(["none", "summary-review", "auto-summary"], {
|
|
1461
1448
|
description: "Search workflow mode: none = no curator, summary-review = open curator with auto summary draft (default), auto-summary = generate summary without opening curator",
|
|
1462
1449
|
})),
|
|
@@ -1959,7 +1946,7 @@ export default function (pi) {
|
|
|
1959
1946
|
fetchContent: Type.Optional(Type.Boolean({ description: "Fetch up to 5 result pages for exact passage extraction." })),
|
|
1960
1947
|
recencyFilter: Type.Optional(StringEnum(["day", "week", "month", "year"], { description: "Filter by recency." })),
|
|
1961
1948
|
domainFilter: Type.Optional(Type.Array(Type.String(), { description: "Limit to domains; prefix with - to exclude." })),
|
|
1962
|
-
provider: Type.Optional(searchProviderSchema("Search provider or non-empty list of providers to search simultaneously; all searches every eligible provider except DuckDuckGo, AnySearch, xAI, Bright Data, and
|
|
1949
|
+
provider: Type.Optional(searchProviderSchema("Search provider or non-empty list of providers to search simultaneously; all searches every eligible provider except DuckDuckGo, AnySearch, xAI, Bright Data, SerpBase, Serper, and Valyu")),
|
|
1963
1950
|
}),
|
|
1964
1951
|
async execute(_callId, params, signal, _onUpdate, ctx) {
|
|
1965
1952
|
const claim = typeof params.claim === "string" ? params.claim.trim() : "";
|