UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

81 lines (79 loc) 2.47 kB
import { zodJsonSchema7Parser } from "../utils/zod-jsonschema7-parser.js"; import { ProviderAnthropic, ProviderGoogle, ProviderOpenAi, ProviderOpenAiCompatible } from "./providers.js"; import "ai"; import { z as z$1 } from "zod"; //#region src/ai/chat/models/chat-request.ts const ChatRequestTool = z$1.union([z$1.string(), z$1.object({ name: z$1.string(), description: z$1.string(), inputSchema: z$1.custom(zodJsonSchema7Parser, { message: "Invalid JSON schema" }) })]); const ToolApprovalMode = z$1.enum([ "always", "ask", "disabled" ]); const ItemContextData = z$1.object({ collection: z$1.string(), key: z$1.union([z$1.string(), z$1.number()]) }); const VisualElementContextData = z$1.object({ key: z$1.string(), collection: z$1.string(), item: z$1.union([z$1.string(), z$1.number()]), fields: z$1.array(z$1.string()).optional(), rect: z$1.object({ top: z$1.number(), left: z$1.number(), width: z$1.number(), height: z$1.number() }).optional() }); const PromptContextData = z$1.object({ text: z$1.string(), prompt: z$1.record(z$1.string(), z$1.unknown()), values: z$1.record(z$1.string(), z$1.string()) }); const ContextAttachment = z$1.discriminatedUnion("type", [ z$1.object({ type: z$1.literal("item"), display: z$1.string(), data: ItemContextData, snapshot: z$1.record(z$1.string(), z$1.unknown()) }), z$1.object({ type: z$1.literal("visual-element"), display: z$1.string(), data: VisualElementContextData, snapshot: z$1.record(z$1.string(), z$1.unknown()) }), z$1.object({ type: z$1.literal("prompt"), display: z$1.string(), data: PromptContextData, snapshot: z$1.record(z$1.string(), z$1.unknown()) }) ]); const PageContext = z$1.object({ path: z$1.string(), collection: z$1.string().optional(), item: z$1.union([z$1.string(), z$1.number()]).optional(), module: z$1.string().optional() }); const ChatContext = z$1.object({ attachments: z$1.array(ContextAttachment).max(10).optional(), page: PageContext.optional() }); const ChatRequest = z$1.intersection(z$1.discriminatedUnion("provider", [ ProviderOpenAi, ProviderAnthropic, ProviderGoogle, ProviderOpenAiCompatible ]), z$1.object({ tools: z$1.array(ChatRequestTool), messages: z$1.array(z$1.looseObject({})), toolApprovals: z$1.record(z$1.string(), ToolApprovalMode).optional(), context: ChatContext.optional() })); //#endregion export { ChatContext, ChatRequest, ChatRequestTool, ContextAttachment, PageContext, ToolApprovalMode };