UNPKG

@genkit-ai/core

Version:

Genkit AI framework core libraries.

68 lines (64 loc) 2.83 kB
import { z } from 'zod'; import { t as Action, s as ActionFnArg, $ as Registry } from './action-RMHksrTZ.mjs'; import 'json-schema'; import './statusTypes.mjs'; import 'dotprompt'; import 'ajv'; /** * Copyright 2024 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Flow is an observable, streamable, (optionally) strongly typed function. */ interface Flow<I extends z.ZodTypeAny = z.ZodTypeAny, O extends z.ZodTypeAny = z.ZodTypeAny, S extends z.ZodTypeAny = z.ZodTypeAny> extends Action<I, O, S> { } /** * Configuration for a streaming flow. */ interface FlowConfig<I extends z.ZodTypeAny = z.ZodTypeAny, O extends z.ZodTypeAny = z.ZodTypeAny, S extends z.ZodTypeAny = z.ZodTypeAny> { /** Name of the flow. */ name: string; /** Schema of the input to the flow. */ inputSchema?: I; /** Schema of the output from the flow. */ outputSchema?: O; /** Schema of the streaming chunks from the flow. */ streamSchema?: S; /** Metadata of the flow used by tooling. */ metadata?: Record<string, any>; } /** * Flow execution context for flow to access the streaming callback and * side-channel context data. The context itself is a function, a short-cut * for streaming callback. */ interface FlowSideChannel<S> extends ActionFnArg<S> { (chunk: S): void; } /** * Function to be executed in the flow. */ type FlowFn<I extends z.ZodTypeAny = z.ZodTypeAny, O extends z.ZodTypeAny = z.ZodTypeAny, S extends z.ZodTypeAny = z.ZodTypeAny> = ( /** Input to the flow. */ input: z.infer<I>, /** Callback for streaming functions only. */ streamingCallback: FlowSideChannel<z.infer<S>>) => Promise<z.infer<O>> | z.infer<O>; /** * Defines a non-streaming flow. This operates on the currently active registry. */ declare function defineFlow<I extends z.ZodTypeAny = z.ZodTypeAny, O extends z.ZodTypeAny = z.ZodTypeAny, S extends z.ZodTypeAny = z.ZodTypeAny>(registry: Registry, config: FlowConfig<I, O, S> | string, fn: FlowFn<I, O, S>): Flow<I, O, S>; declare function run<T>(name: string, func: () => Promise<T>, registry?: Registry): Promise<T>; declare function run<T>(name: string, input: any, func: (input?: any) => Promise<T>, registry?: Registry): Promise<T>; export { type Flow, type FlowConfig, type FlowFn, type FlowSideChannel, defineFlow, run };