64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
import { AgentSelectionStrategyEnum, OAIModelsEnum } from '@/utils/enum';
|
|
import { z } from 'zod';
|
|
|
|
const VARIABLE_NAME_REGEX = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
const VariableName = z
|
|
.string({
|
|
required_error:
|
|
'Variable name must start with a letter or underscore, and can only contain letters, numbers, and underscores.',
|
|
})
|
|
.regex(VARIABLE_NAME_REGEX, {
|
|
message:
|
|
'Variable name must start with a letter or underscore, and can only contain letters, numbers, and underscores.',
|
|
});
|
|
|
|
const LLMEnum = z.nativeEnum(OAIModelsEnum);
|
|
const AgentSelectionEnum = z.nativeEnum(AgentSelectionStrategyEnum);
|
|
|
|
//
|
|
|
|
const UserProxy = z.object({
|
|
variableName: VariableName,
|
|
initialPrompt: z
|
|
.string({
|
|
required_error: 'Initial Prompt is required. Your workforce will take this prompt to start the conversation.',
|
|
})
|
|
.min(1, { message: 'Initial Prompt is required. Your workforce will take this prompt to start the conversation.' }),
|
|
});
|
|
const Hub = z.object({
|
|
variableName: VariableName,
|
|
maxRounds: z.number().optional(),
|
|
agentSelection: AgentSelectionEnum.default(AgentSelectionStrategyEnum.AUTO),
|
|
});
|
|
const GPTAssistantAgent = z.object({
|
|
variableName: VariableName,
|
|
OAIId: z
|
|
.string({ required_error: 'The OpenAI Id of the assistant agent is required.' })
|
|
.min(1, { message: 'The OpenAI Id of the assistant agent is required.' }),
|
|
});
|
|
const AssistantAgent = z.object({
|
|
variableName: VariableName,
|
|
systemMessage: z.string().optional(),
|
|
});
|
|
const CustomFunction = z.object({
|
|
func: z.string().optional(),
|
|
});
|
|
|
|
const LLMOpenAI = z.object({
|
|
model: LLMEnum.default(OAIModelsEnum.GPT_3_5_TURBO),
|
|
apiKey: z.string().optional(),
|
|
});
|
|
|
|
export const DnDFlowValidationSchema = z.array(
|
|
z.object({
|
|
BRIDGE: z.optional(UserProxy),
|
|
HUB: z.optional(Hub),
|
|
LUMINA: z.optional(GPTAssistantAgent),
|
|
NEXUS: z.optional(AssistantAgent),
|
|
SPARK: z.optional(CustomFunction),
|
|
LLM_OPENAI: z.optional(LLMOpenAI),
|
|
}),
|
|
);
|
|
|
|
export type DnDFlowValidationSchemaType = z.infer<typeof DnDFlowValidationSchema>;
|