KeiSeiKit-1.0/_ts_packages/packages/grok-adapter/src/tools.ts
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

40 lines
1.2 KiB
TypeScript

import { z } from "zod";
import { GrokClient } from "./client.js";
export interface GrokTool {
name: string;
description: string;
inputSchema: z.ZodObject<Record<string, z.ZodTypeAny>>;
handler: (args: Record<string, unknown>) => Promise<string>;
}
const ResearchArgs = z.object({ query: z.string().min(1) });
const ImagineArgs = z.object({
prompt: z.string().min(1),
quality: z.enum(["standard", "pro"]).default("standard"),
});
export function buildGrokTools(client: GrokClient): GrokTool[] {
return [
{
name: "grok_research",
description: "Deep research via Grok heavy model. Returns assistant message content.",
inputSchema: ResearchArgs,
handler: async (raw) => {
const args = ResearchArgs.parse(raw);
return client.deepResearch(args.query);
},
},
{
name: "grok_imagine",
description: "Generate an image from a prompt via Grok Imagine.",
inputSchema: ImagineArgs,
handler: async (raw) => {
const args = ImagineArgs.parse(raw);
const urls = await client.imageGenerate(args.prompt, args.quality === "pro");
if (urls.length === 0) return "No image returned.";
return urls.join("\n");
},
},
];
}