From f78ce12860d020fa57d5e8da4664454daabe7b2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nuno=20G=C3=B3is?= Date: Thu, 10 Oct 2024 09:43:28 +0100 Subject: [PATCH] chore: add unleashAI chat schemas (#8405) https://linear.app/unleash/issue/2-2788/add-unleash-ai-chat-openapi-schemas Adds OpenAPI schemas for the Unleash AI chat and respective messages. --- .../openapi/spec/ai-chat-message-schema.ts | 26 +++++++++++++++++++ src/lib/openapi/spec/ai-chat-schema.ts | 26 +++++++++++++++++++ src/lib/openapi/spec/index.ts | 2 ++ 3 files changed, 54 insertions(+) create mode 100644 src/lib/openapi/spec/ai-chat-message-schema.ts create mode 100644 src/lib/openapi/spec/ai-chat-schema.ts diff --git a/src/lib/openapi/spec/ai-chat-message-schema.ts b/src/lib/openapi/spec/ai-chat-message-schema.ts new file mode 100644 index 0000000000..a07b12b868 --- /dev/null +++ b/src/lib/openapi/spec/ai-chat-message-schema.ts @@ -0,0 +1,26 @@ +import type { FromSchema } from 'json-schema-to-ts'; + +export const aiChatMessageSchema = { + $id: '#/components/schemas/aiChatMessageSchema', + type: 'object', + description: 'Describes an Unleash AI chat message.', + required: ['role', 'content'], + properties: { + role: { + type: 'string', + enum: ['system', 'user', 'assistant'], + description: 'The role of the message sender.', + example: 'user', + }, + content: { + type: 'string', + description: 'The message content.', + example: 'What is your purpose?', + }, + }, + components: { + schemas: {}, + }, +} as const; + +export type AIChatMessageSchema = FromSchema; diff --git a/src/lib/openapi/spec/ai-chat-schema.ts b/src/lib/openapi/spec/ai-chat-schema.ts new file mode 100644 index 0000000000..0376e97eec --- /dev/null +++ b/src/lib/openapi/spec/ai-chat-schema.ts @@ -0,0 +1,26 @@ +import type { FromSchema } from 'json-schema-to-ts'; +import { aiChatMessageSchema } from './ai-chat-message-schema'; + +export const aiChatSchema = { + $id: '#/components/schemas/aiChatSchema', + type: 'object', + description: 'Describes an Unleash AI chat.', + required: ['messages'], + properties: { + messages: { + type: 'array', + description: + 'The messages exchanged between the user and the Unleash AI.', + items: { + $ref: '#/components/schemas/aiChatMessageSchema', + }, + }, + }, + components: { + schemas: { + aiChatMessageSchema, + }, + }, +} as const; + +export type AIChatSchema = FromSchema; diff --git a/src/lib/openapi/spec/index.ts b/src/lib/openapi/spec/index.ts index 4341ec77c9..9272850c07 100644 --- a/src/lib/openapi/spec/index.ts +++ b/src/lib/openapi/spec/index.ts @@ -14,6 +14,8 @@ export * from './advanced-playground-environment-feature-schema'; export * from './advanced-playground-feature-schema'; export * from './advanced-playground-request-schema'; export * from './advanced-playground-response-schema'; +export * from './ai-chat-message-schema'; +export * from './ai-chat-schema'; export * from './api-token-schema'; export * from './api-tokens-schema'; export * from './application-environment-instances-schema';