c4e83d317a
- Export SEARCH_PROVIDER_ORDER from provider.ts as single source of truth - Remove duplicate provider arrays from web-search.ts and web-search-cli.ts - Add missing 'kimi' to CLI command validation (was causing --provider kimi to reject) - Move perplexity to top of auto-resolve priority - Fix kimi position in priority order to match documentation
43 lines
1.4 KiB
TypeScript
43 lines
1.4 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 { SEARCH_PROVIDER_ORDER } from "../web/search/provider";
|
|
|
|
const PROVIDERS: Array<string> = ["auto", ...SEARCH_PROVIDER_ORDER];
|
|
|
|
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 SearchCommandArgs["provider"],
|
|
recency: flags.recency as SearchCommandArgs["recency"],
|
|
limit: flags.limit,
|
|
expanded: !flags.compact,
|
|
};
|
|
|
|
await runSearchCommand(cmd);
|
|
}
|
|
}
|