import {z} from 'zod' export type TextPart = {type?: 'text' | undefined, text: string}; export type CompletionTranscriptCloseParams = {tool_call_id: string, tool_content: string | Array, answer: string}; export type CreateApiV1ChatCompletionsCompletionIdTranscriptCloseArgs = {completion_id: string, body: CompletionTranscriptCloseParams}; export type CreateApiV1ChatCompletionsCompletionIdTranscriptCloseOptions = {baseUrl?: string | undefined, ApiKeyAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const toolCallFunction = z.object({name: z.string(), arguments: z.string()}); export const messageToolCall = z.object({id: z.string(), type: z.literal("function").optional(), function: toolCallFunction}); export const fileCitation = z.object({type: z.literal("file_citation").optional(), file_id: z.string(), filename: z.string(), index: z.number().int(), chunk_id: z.string(), store_id: z.string()}); export const urlCitation = z.object({type: z.literal("url_citation").optional(), url: z.string(), title: z.string(), start_index: z.number().int(), end_index: z.number().int(), chunk_id: z.string()}); export const chatCompletionMessage = z.object({role: z.literal("assistant").optional(), content: z.string().nullable().optional(), refusal: z.string().nullable().optional(), tool_calls: z.array(messageToolCall).nullable().optional(), reasoning_content: z.string().nullable().optional(), annotations: z.array(z.discriminatedUnion("type", [fileCitation, urlCitation])).nullable().optional()}); export const chatCompletionChoice = z.object({index: z.number().int().optional(), message: chatCompletionMessage, finish_reason: z.enum(["stop", "tool_calls", "length"]).optional(), logprobs: z.unknown()}); export const promptTokensDetails = z.object({cached_tokens: z.number().int().optional()}); export const completionTokensDetails = z.object({reasoning_tokens: z.number().int().optional()}); export const completionUsage = z.object({prompt_tokens: z.number().int().optional(), completion_tokens: z.number().int().optional(), total_tokens: z.number().int().optional(), prompt_tokens_details: promptTokensDetails.optional(), completion_tokens_details: completionTokensDetails.optional()}); export const conditionOperator = z.enum(["eq", "not_eq", "gt", "gte", "lt", "lte", "in", "not_in", "like", "contains", "starts_with", "not_like", "regex"]); export const metadataFilter = z.object({key: z.string().min(1), operator: conditionOperator, value: z.union([z.string(), z.number().int(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number().int(), z.number(), z.boolean()]))]).nullable()}); export const toolCallError = z.object({code: z.enum(["permission_denied", "invalid_arguments", "server_error"]), message: z.string()}); export const searchCorpusCallItem = z.object({type: z.literal("search_corpus_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), queries: z.array(z.string()).optional(), metadata_filters: z.array(metadataFilter).nullable().optional(), filter_mode: z.enum(["all", "any"]).optional(), store: z.string().nullable().optional(), results: z.array(z.record(z.string(), z.unknown())).nullable().optional(), error: toolCallError.nullable().optional()}); export const storeChunkGrepTarget = z.enum(["text", "generated"]); export const grepCallItem = z.object({type: z.literal("grep_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), pattern: z.string().nullable().optional(), targets: z.array(storeChunkGrepTarget).nullable().optional(), case_sensitive: z.boolean().optional(), metadata_filters: z.array(metadataFilter).nullable().optional(), filter_mode: z.enum(["all", "any"]).optional(), store: z.string().nullable().optional(), results: z.array(z.record(z.string(), z.unknown())).nullable().optional(), error: toolCallError.nullable().optional()}); export const filterChunksCallItem = z.object({type: z.literal("filter_chunks_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), metadata_filters: z.array(metadataFilter).nullable().optional(), filter_mode: z.enum(["all", "any"]).optional(), rank_by: z.string().nullable().optional(), direction: z.enum(["asc", "desc"]).optional(), store: z.string().nullable().optional(), results: z.array(z.record(z.string(), z.unknown())).nullable().optional(), error: toolCallError.nullable().optional()}); export const inspectMetadataCallItem = z.object({type: z.literal("inspect_metadata_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), store: z.string().nullable().optional(), facets: z.record(z.string(), z.unknown()).nullable().optional(), error: toolCallError.nullable().optional()}); export const getChunksCallItem = z.object({type: z.literal("get_chunks_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), chunk_ids: z.array(z.string()).optional(), results: z.array(z.record(z.string(), z.unknown())).nullable().optional(), error: toolCallError.nullable().optional()}); export const storeSearchCallItem = z.object({type: z.literal("store_search_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), queries: z.array(z.string()).optional(), metadata_filters: z.array(metadataFilter).nullable().optional(), filter_mode: z.enum(["all", "any"]).optional(), store: z.string().nullable().optional(), results: z.array(z.record(z.string(), z.unknown())).nullable().optional(), error: toolCallError.nullable().optional()}); export const storeGrepCallItem = z.object({type: z.literal("store_grep_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), pattern: z.string().nullable().optional(), targets: z.array(storeChunkGrepTarget).nullable().optional(), case_sensitive: z.boolean().optional(), metadata_filters: z.array(metadataFilter).nullable().optional(), filter_mode: z.enum(["all", "any"]).optional(), store: z.string().nullable().optional(), results: z.array(z.record(z.string(), z.unknown())).nullable().optional(), error: toolCallError.nullable().optional()}); export const storeListChunksCallItem = z.object({type: z.literal("store_list_chunks_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), metadata_filters: z.array(metadataFilter).nullable().optional(), filter_mode: z.enum(["all", "any"]).optional(), rank_by: z.string().nullable().optional(), direction: z.enum(["asc", "desc"]).optional(), store: z.string().nullable().optional(), results: z.array(z.record(z.string(), z.unknown())).nullable().optional(), error: toolCallError.nullable().optional()}); export const metadataFacetsCallItem = z.object({type: z.literal("store_metadata_facets_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), store: z.string().nullable().optional(), facets: z.record(z.string(), z.unknown()).nullable().optional(), error: toolCallError.nullable().optional()}); export const listStoresResult = z.object({name: z.string(), description: z.string().nullable().optional(), connectors: z.array(z.string()).optional()}); export const listStoresCallItem = z.object({type: z.literal("list_stores_call").optional(), id: z.string(), status: z.enum(["in_progress", "completed", "failed"]).optional(), cursor: z.string().nullable().optional(), stores: z.array(listStoresResult).nullable().optional(), has_more: z.boolean().optional(), next_cursor: z.string().nullable().optional(), error: toolCallError.nullable().optional()}); export const appliedPruneContextEdit = z.object({type: z.literal("prune_context").optional(), calls: z.number().int(), cleared_input_tokens: z.number().int()}); export const appliedTruncateToolResultEdit = z.object({type: z.literal("truncate_tool_result").optional(), tool_call_id: z.string(), cleared_input_tokens: z.number().int()}); export const contextManagementResult = z.object({applied_edits: z.array(z.discriminatedUnion("type", [appliedPruneContextEdit, appliedTruncateToolResultEdit]))}); export const toolTicket = z.object({tool_call_id: z.string(), ticket: z.string(), expires_at: z.number().int()}); export const textPart = z.object({type: z.literal("text").optional(), text: z.string()}); export const systemMessage = z.object({role: z.literal("system"), content: z.union([z.string(), z.array(textPart)])}); export const developerMessage = z.object({role: z.literal("developer"), content: z.union([z.string(), z.array(textPart)])}); export const userMessage = z.object({role: z.literal("user"), content: z.union([z.string(), z.array(textPart)])}); export const assistantMessageOutput = z.object({role: z.literal("assistant"), content: z.union([z.string(), z.array(textPart)]).nullable().optional(), tool_calls: z.array(messageToolCall).optional(), reasoning_content: z.string().nullable().optional(), annotations: z.array(z.discriminatedUnion("type", [fileCitation, urlCitation])).optional()}); export const toolMessage = z.object({role: z.literal("tool"), content: z.union([z.string(), z.array(textPart)]), tool_call_id: z.string()}); export const chatCompletion = z.object({id: z.string(), object: z.literal("chat.completion").optional(), created: z.number().int(), model: z.string(), choices: z.array(chatCompletionChoice), usage: completionUsage.nullable().optional(), metadata: z.record(z.string(), z.string()).nullable().optional(), title: z.string().nullable().optional(), hosted_tool_calls: z.array(z.discriminatedUnion("type", [searchCorpusCallItem, grepCallItem, filterChunksCallItem, inspectMetadataCallItem, getChunksCallItem, storeSearchCallItem, storeGrepCallItem, storeListChunksCallItem, metadataFacetsCallItem, listStoresCallItem])).optional(), context_management: contextManagementResult.nullable().optional(), tool_tickets: z.array(toolTicket).optional(), transcript: z.array(z.discriminatedUnion("role", [systemMessage, developerMessage, userMessage, assistantMessageOutput, toolMessage])).nullable().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Close a stored completion transcript (deprecated) * * POST /v1/chat/completions/{completion_id}/transcript/close */ export const createApiV1ChatCompletionsCompletionIdTranscriptClose = async (args: CreateApiV1ChatCompletionsCompletionIdTranscriptCloseArgs, options?: CreateApiV1ChatCompletionsCompletionIdTranscriptCloseOptions) => { const {baseUrl = "https://api.mixedbread.com", fetch: fetchFn = fetch, ApiKeyAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (ApiKeyAuth !== undefined) headers.set('authorization', `Bearer ${ApiKeyAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/chat/completions/${encodeURIComponent(String(args.completion_id))}/transcript/close${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(chatCompletion, await res.json()) };