mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-16 03:31:10 +00:00
49 lines
1.9 KiB
TypeScript
49 lines
1.9 KiB
TypeScript
import type { AgentToolResult } from "@mariozechner/pi-agent-core";
|
|
import { Type } from "@sinclair/typebox";
|
|
|
|
export function buildMissingXSearchApiKeyPayload() {
|
|
return {
|
|
error: "missing_xai_api_key",
|
|
message:
|
|
"x_search needs an xAI API key. Set XAI_API_KEY in the Gateway environment, or configure plugins.entries.xai.config.webSearch.apiKey.",
|
|
docs: "https://docs.openclaw.ai/tools/web",
|
|
};
|
|
}
|
|
|
|
export function createXSearchToolDefinition(
|
|
execute: (toolCallId: string, args: Record<string, unknown>) => Promise<AgentToolResult<unknown>>,
|
|
) {
|
|
return {
|
|
label: "X Search",
|
|
name: "x_search",
|
|
description:
|
|
"Search X (formerly Twitter) using xAI, including targeted post or thread lookups. For per-post stats like reposts, replies, bookmarks, or views, prefer the exact post URL or status ID.",
|
|
parameters: Type.Object({
|
|
query: Type.String({ description: "X search query string." }),
|
|
allowed_x_handles: Type.Optional(
|
|
Type.Array(Type.String({ minLength: 1 }), {
|
|
description: "Only include posts from these X handles.",
|
|
}),
|
|
),
|
|
excluded_x_handles: Type.Optional(
|
|
Type.Array(Type.String({ minLength: 1 }), {
|
|
description: "Exclude posts from these X handles.",
|
|
}),
|
|
),
|
|
from_date: Type.Optional(
|
|
Type.String({ description: "Only include posts on or after this date (YYYY-MM-DD)." }),
|
|
),
|
|
to_date: Type.Optional(
|
|
Type.String({ description: "Only include posts on or before this date (YYYY-MM-DD)." }),
|
|
),
|
|
enable_image_understanding: Type.Optional(
|
|
Type.Boolean({ description: "Allow xAI to inspect images attached to matching posts." }),
|
|
),
|
|
enable_video_understanding: Type.Optional(
|
|
Type.Boolean({ description: "Allow xAI to inspect videos attached to matching posts." }),
|
|
),
|
|
}),
|
|
execute,
|
|
};
|
|
}
|