Files
oh-my-pi/packages/coding-agent/src/commands/web-search.ts
T
can1357 35dbf43670 feat(coding-agent/web): added Brave web search provider with recency filtering and API integration
- Added Brave web search provider with support for query, result count, and recency filtering.
- Added BRAVE_API_KEY environment variable configuration for Brave search authentication.
- Updated web search provider priority order to include Brave as second-highest priority after Exa.
- Extended recency filter support to Brave search provider alongside Perplexity.
- Implemented BraveProvider class with API integration, response mapping, and parameter validation.
- Added helper functions for recency mapping, result clamping, and snippet building in Brave provider.
2026-02-16 18:33:02 +01:00

53 lines
1.5 KiB
TypeScript

/**
* Test web search providers.
*/
import { Args, Command, Flags } from "@oh-my-pi/pi-utils/cli";
import { runSearchCommand, type SearchCommandArgs } from "../cli/web-search-cli";
import type { SearchProviderId } from "../web/search/types";
const PROVIDERS: Array<SearchProviderId | "auto"> = [
"auto",
"anthropic",
"perplexity",
"exa",
"brave",
"jina",
"zai",
"gemini",
"codex",
];
const RECENCY: NonNullable<SearchCommandArgs["recency"]>[] = ["day", "week", "month", "year"];
export default class Search extends Command {
static description = "Test web search providers";
static aliases = ["q"];
static args = {
query: Args.string({ description: "Search query text", required: false, multiple: true }),
};
static flags = {
provider: Flags.string({ description: "Search provider", options: PROVIDERS }),
recency: Flags.string({ description: "Recency filter", options: RECENCY }),
limit: Flags.integer({ char: "l", description: "Max results to return" }),
compact: Flags.boolean({ description: "Render condensed output" }),
};
async run(): Promise<void> {
const { args, flags } = await this.parse(Search);
const query = Array.isArray(args.query) ? args.query.join(" ") : (args.query ?? "");
const cmd: SearchCommandArgs = {
query,
provider: flags.provider as SearchProviderId | "auto" | undefined,
recency: flags.recency as SearchCommandArgs["recency"],
limit: flags.limit,
expanded: !flags.compact,
};
await runSearchCommand(cmd);
}
}