2
0

♻️ (mistral) Use new ai sdk Mistral core

This commit is contained in:
Baptiste Arnaud
2024-05-21 16:08:35 +02:00
parent e91fced41d
commit 15b2901f8a
26 changed files with 191 additions and 645 deletions

View File

@ -79,7 +79,7 @@
"nextjs-cors": "2.1.2", "nextjs-cors": "2.1.2",
"nodemailer": "6.9.8", "nodemailer": "6.9.8",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"openai": "4.28.4", "openai": "4.47.1",
"papaparse": "5.4.1", "papaparse": "5.4.1",
"prettier": "2.8.8", "prettier": "2.8.8",
"qs": "6.11.2", "qs": "6.11.2",

View File

@ -10,6 +10,6 @@
"devDependencies": { "devDependencies": {
"mintlify": "4.0.75", "mintlify": "4.0.75",
"tsx": "^4.6.2", "tsx": "^4.6.2",
"dotenv-cli": "7.2.1" "dotenv-cli": "7.4.1"
} }
} }

View File

@ -40,7 +40,7 @@
"@types/react": "18.2.15", "@types/react": "18.2.15",
"autoprefixer": "10.4.14", "autoprefixer": "10.4.14",
"cross-env": "7.0.3", "cross-env": "7.0.3",
"dotenv-cli": "7.2.1", "dotenv-cli": "7.4.1",
"eslint": "8.44.0", "eslint": "8.44.0",
"eslint-config-custom": "workspace:*", "eslint-config-custom": "workspace:*",
"next-runtime-env": "1.6.2", "next-runtime-env": "1.6.2",

View File

@ -21,7 +21,7 @@
"@typebot.io/js": "workspace:*", "@typebot.io/js": "workspace:*",
"@typebot.io/nextjs": "workspace:*", "@typebot.io/nextjs": "workspace:*",
"@typebot.io/prisma": "workspace:*", "@typebot.io/prisma": "workspace:*",
"ai": "3.0.31", "ai": "3.1.12",
"bot-engine": "workspace:*", "bot-engine": "workspace:*",
"cors": "2.8.5", "cors": "2.8.5",
"google-spreadsheet": "4.1.1", "google-spreadsheet": "4.1.1",
@ -30,7 +30,7 @@
"next": "14.1.0", "next": "14.1.0",
"nextjs-cors": "2.1.2", "nextjs-cors": "2.1.2",
"nodemailer": "6.9.8", "nodemailer": "6.9.8",
"openai": "4.38.3", "openai": "4.47.1",
"qs": "6.11.2", "qs": "6.11.2",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",

View File

@ -20,7 +20,7 @@
"@typebot.io/variables": "workspace:*", "@typebot.io/variables": "workspace:*",
"@udecode/plate-common": "30.4.5", "@udecode/plate-common": "30.4.5",
"@typebot.io/logic": "workspace:*", "@typebot.io/logic": "workspace:*",
"ai": "3.0.31", "ai": "3.1.12",
"chrono-node": "2.7.5", "chrono-node": "2.7.5",
"date-fns": "2.30.0", "date-fns": "2.30.0",
"date-fns-tz": "2.0.0", "date-fns-tz": "2.0.0",
@ -30,14 +30,14 @@
"libphonenumber-js": "1.10.37", "libphonenumber-js": "1.10.37",
"node-html-parser": "6.1.5", "node-html-parser": "6.1.5",
"nodemailer": "6.9.8", "nodemailer": "6.9.8",
"openai": "4.38.3", "openai": "4.47.1",
"qs": "6.11.2", "qs": "6.11.2",
"stripe": "12.13.0" "stripe": "12.13.0"
}, },
"devDependencies": { "devDependencies": {
"@typebot.io/forge": "workspace:*", "@typebot.io/forge": "workspace:*",
"@typebot.io/forge-repository": "workspace:*", "@typebot.io/forge-repository": "workspace:*",
"@types/node": "^20.12.3", "@types/node": "20.4.2",
"@types/nodemailer": "6.4.14", "@types/nodemailer": "6.4.14",
"@types/qs": "6.9.7" "@types/qs": "6.9.7"
} }

View File

@ -20,7 +20,7 @@
"resize-observer": "1.0.4" "resize-observer": "1.0.4"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "18.11.18", "@types/node": "20.4.2",
"@types/qs": "6.9.7", "@types/qs": "6.9.7",
"@types/react": "18.2.15", "@types/react": "18.2.15",
"@types/react-phone-number-input": "3.0.14", "@types/react-phone-number-input": "3.0.14",
@ -29,7 +29,7 @@
"autoprefixer": "10.4.13", "autoprefixer": "10.4.13",
"@typebot.io/prisma": "workspace:*", "@typebot.io/prisma": "workspace:*",
"esbuild": "0.17.5", "esbuild": "0.17.5",
"eslint": "8.32.0", "eslint": "8.44.0",
"eslint-config-custom": "workspace:*", "eslint-config-custom": "workspace:*",
"@typebot.io/schemas": "workspace:*", "@typebot.io/schemas": "workspace:*",
"postcss": "8.4.21", "postcss": "8.4.21",

View File

@ -12,7 +12,7 @@
"devDependencies": { "devDependencies": {
"@types/jest": "29.4.0", "@types/jest": "29.4.0",
"tsup": "6.5.0", "tsup": "6.5.0",
"eslint": "8.32.0", "eslint": "8.44.0",
"eslint-config-custom": "workspace:*", "eslint-config-custom": "workspace:*",
"jest": "29.4.1", "jest": "29.4.1",
"jest-environment-jsdom": "29.4.1", "jest-environment-jsdom": "29.4.1",

View File

@ -15,6 +15,6 @@
}, },
"dependencies": { "dependencies": {
"@anthropic-ai/sdk": "0.20.6", "@anthropic-ai/sdk": "0.20.6",
"ai": "3.0.31" "ai": "3.1.12"
} }
} }

View File

@ -38,6 +38,8 @@ export const convertTextToSpeech = createAction({
{ {
id: 'fetchVoices', id: 'fetchVoices',
fetch: async ({ credentials }) => { fetch: async ({ credentials }) => {
if (!credentials?.apiKey) return []
const response = await got const response = await got
.get(baseUrl + '/v1/voices', { .get(baseUrl + '/v1/voices', {
headers: { headers: {
@ -56,6 +58,8 @@ export const convertTextToSpeech = createAction({
{ {
id: 'fetchModels', id: 'fetchModels',
fetch: async ({ credentials }) => { fetch: async ({ credentials }) => {
if (!credentials?.apiKey) return []
const response = await got const response = await got
.get(baseUrl + '/v1/models', { .get(baseUrl + '/v1/models', {
headers: { headers: {

View File

@ -2,9 +2,10 @@ import { option, createAction } from '@typebot.io/forge'
import { isDefined } from '@typebot.io/lib' import { isDefined } from '@typebot.io/lib'
import { auth } from '../auth' import { auth } from '../auth'
import { parseMessages } from '../helpers/parseMessages' import { parseMessages } from '../helpers/parseMessages'
import { OpenAIStream } from 'ai' import { createMistral } from '@ai-sdk/mistral'
// @ts-ignore import { apiBaseUrl } from '../constants'
import MistralClient from '../helpers/client' import ky from 'ky'
import { generateText, streamText } from 'ai'
const nativeMessageContentSchema = { const nativeMessageContentSchema = {
content: option.string.layout({ content: option.string.layout({
@ -98,35 +99,38 @@ export const createChatCompletion = createAction({
id: 'fetchModels', id: 'fetchModels',
dependencies: [], dependencies: [],
fetch: async ({ credentials }) => { fetch: async ({ credentials }) => {
const client = new MistralClient(credentials.apiKey) if (!credentials?.apiKey) return []
const listModelsResponse: any = await client.listModels() const { data } = await ky
.get(apiBaseUrl + '/v1/models', {
headers: {
Authorization: `Bearer ${credentials.apiKey}`,
},
})
.json<{ data: { id: string }[] }>()
return ( return data.map((model) => model.id)
listModelsResponse.data
.sort(
(a: { created: number }, b: { created: number }) =>
b.created - a.created
)
.map((model: { id: any }) => model.id) ?? []
)
}, },
}, },
], ],
run: { run: {
server: async ({ credentials: { apiKey }, options, variables, logs }) => { server: async ({ credentials: { apiKey }, options, variables, logs }) => {
if (!options.model) return logs.add('No model selected') if (!options.model) return logs.add('No model selected')
const client = new MistralClient(apiKey)
const response: any = await client.chat({ const model = createMistral({
model: options.model, apiKey,
})(options.model)
const { text } = await generateText({
model,
messages: parseMessages({ options, variables }), messages: parseMessages({ options, variables }),
tools: {},
}) })
options.responseMapping?.forEach((mapping) => { options.responseMapping?.forEach((mapping) => {
if (!mapping.variableId) return if (!mapping.variableId) return
if (!mapping.item || mapping.item === 'Message content') if (!mapping.item || mapping.item === 'Message content')
variables.set(mapping.variableId, response.choices[0].message.content) variables.set(mapping.variableId, text)
}) })
}, },
stream: { stream: {
@ -136,14 +140,16 @@ export const createChatCompletion = createAction({
)?.variableId, )?.variableId,
run: async ({ credentials: { apiKey }, options, variables }) => { run: async ({ credentials: { apiKey }, options, variables }) => {
if (!options.model) return if (!options.model) return
const client = new MistralClient(apiKey) const model = createMistral({
apiKey,
})(options.model)
const response: any = client.chatStream({ const response = await streamText({
model: options.model, model,
messages: parseMessages({ options, variables }), messages: parseMessages({ options, variables }),
}) })
return OpenAIStream(response) return response.toAIStream()
}, },
}, },
}, },

View File

@ -0,0 +1 @@
export const apiBaseUrl = 'https://api.mistral.ai'

View File

@ -1,341 +0,0 @@
// Taken from https://github.com/mistralai/client-js/blob/main/src/client.js
// Lib seems not actively maintained, and we need this patch: https://github.com/mistralai/client-js/pull/42
let isNode = false
let fetch
const VERSION = '0.0.3'
const RETRY_STATUS_CODES = [429, 500, 502, 503, 504]
const ENDPOINT = 'https://api.mistral.ai'
/**
* Initialize fetch
* @return {Promise<void>}
*/
async function initializeFetch() {
if (typeof globalThis.fetch === 'undefined')
throw new Error('No fetch implementation found')
if (typeof window === 'undefined') {
isNode = true
}
fetch = globalThis.fetch
}
initializeFetch()
/**
* MistralAPIError
* @return {MistralAPIError}
* @extends {Error}
*/
class MistralAPIError extends Error {
/**
* A simple error class for Mistral API errors
* @param {*} message
*/
constructor(message) {
super(message)
this.name = 'MistralAPIError'
}
}
/**
* MistralClient
* @return {MistralClient}
*/
class MistralClient {
/**
* A simple and lightweight client for the Mistral API
* @param {*} apiKey can be set as an environment variable MISTRAL_API_KEY,
* or provided in this parameter
* @param {*} endpoint defaults to https://api.mistral.ai
* @param {*} maxRetries defaults to 5
* @param {*} timeout defaults to 120 seconds
*/
constructor(
apiKey = process.env.MISTRAL_API_KEY,
endpoint = ENDPOINT,
maxRetries = 5,
timeout = 120
) {
this.endpoint = endpoint
this.apiKey = apiKey
this.maxRetries = maxRetries
this.timeout = timeout
if (this.endpoint.indexOf('inference.azure.com')) {
this.modelDefault = 'mistral'
}
}
/**
*
* @param {*} method
* @param {*} path
* @param {*} request
* @return {Promise<*>}
*/
_request = async function (method, path, request) {
const url = `${this.endpoint}/${path}`
const options = {
method: method,
headers: {
'User-Agent': `mistral-client-js/${VERSION}`,
Accept: request?.stream ? 'text/event-stream' : 'application/json',
'Content-Type': 'application/json',
Authorization: `Bearer ${this.apiKey}`,
},
body: method !== 'get' ? JSON.stringify(request) : null,
timeout: this.timeout * 1000,
}
for (let attempts = 0; attempts < this.maxRetries; attempts++) {
try {
const response = await fetch(url, options)
if (response.ok) {
if (request?.stream) {
if (isNode) {
return response.body
} else {
const reader = response.body.getReader()
// Chrome does not support async iterators yet, so polyfill it
const asyncIterator = async function* () {
try {
while (true) {
// Read from the stream
const { done, value } = await reader.read()
// Exit if we're done
if (done) return
// Else yield the chunk
yield value
}
} finally {
reader.releaseLock()
}
}
return asyncIterator()
}
}
return await response.json()
} else if (RETRY_STATUS_CODES.includes(response.status)) {
console.debug(
`Retrying request on response status: ${response.status}`,
`Response: ${await response.text()}`,
`Attempt: ${attempts + 1}`
)
// eslint-disable-next-line max-len
await new Promise((resolve) =>
setTimeout(resolve, Math.pow(2, attempts + 1) * 500)
)
} else {
throw new MistralAPIError(
`HTTP error! status: ${response.status} ` +
`Response: \n${await response.text()}`
)
}
} catch (error) {
console.error(`Request failed: ${error.message}`)
if (error.name === 'MistralAPIError') {
throw error
}
if (attempts === this.maxRetries - 1) throw error
// eslint-disable-next-line max-len
await new Promise((resolve) =>
setTimeout(resolve, Math.pow(2, attempts + 1) * 500)
)
}
}
throw new Error('Max retries reached')
}
/**
* Creates a chat completion request
* @param {*} model
* @param {*} messages
* @param {*} tools
* @param {*} temperature
* @param {*} maxTokens
* @param {*} topP
* @param {*} randomSeed
* @param {*} stream
* @param {*} safeMode deprecated use safePrompt instead
* @param {*} safePrompt
* @param {*} toolChoice
* @param {*} responseFormat
* @return {Promise<Object>}
*/
_makeChatCompletionRequest = function (
model,
messages,
tools,
temperature,
maxTokens,
topP,
randomSeed,
stream,
safeMode,
safePrompt,
toolChoice,
responseFormat
) {
// if modelDefault and model are undefined, throw an error
if (!model && !this.modelDefault) {
throw new MistralAPIError('You must provide a model name')
}
return {
model: model ?? this.modelDefault,
messages: messages,
tools: tools ?? undefined,
temperature: temperature ?? undefined,
max_tokens: maxTokens ?? undefined,
top_p: topP ?? undefined,
random_seed: randomSeed ?? undefined,
stream: stream ?? undefined,
safe_prompt: (safeMode || safePrompt) ?? undefined,
tool_choice: toolChoice ?? undefined,
response_format: responseFormat ?? undefined,
}
}
/**
* Returns a list of the available models
* @return {Promise<Object>}
*/
listModels = async function () {
const response = await this._request('get', 'v1/models')
return response
}
/**
* A chat endpoint without streaming
* @param {*} model the name of the model to chat with, e.g. mistral-tiny
* @param {*} messages an array of messages to chat with, e.g.
* [{role: 'user', content: 'What is the best French cheese?'}]
* @param {*} tools a list of tools to use.
* @param {*} temperature the temperature to use for sampling, e.g. 0.5
* @param {*} maxTokens the maximum number of tokens to generate, e.g. 100
* @param {*} topP the cumulative probability of tokens to generate, e.g. 0.9
* @param {*} randomSeed the random seed to use for sampling, e.g. 42
* @param {*} safeMode deprecated use safePrompt instead
* @param {*} safePrompt whether to use safe mode, e.g. true
* @param {*} toolChoice the tool to use, e.g. 'auto'
* @param {*} responseFormat the format of the response, e.g. 'json_format'
* @return {Promise<Object>}
*/
chat = async function ({
model,
messages,
tools,
temperature,
maxTokens,
topP,
randomSeed,
safeMode,
safePrompt,
toolChoice,
responseFormat,
}) {
const request = this._makeChatCompletionRequest(
model,
messages,
tools,
temperature,
maxTokens,
topP,
randomSeed,
false,
safeMode,
safePrompt,
toolChoice,
responseFormat
)
const response = await this._request('post', 'v1/chat/completions', request)
return response
}
/**
* A chat endpoint that streams responses.
* @param {*} model the name of the model to chat with, e.g. mistral-tiny
* @param {*} messages an array of messages to chat with, e.g.
* [{role: 'user', content: 'What is the best French cheese?'}]
* @param {*} tools a list of tools to use.
* @param {*} temperature the temperature to use for sampling, e.g. 0.5
* @param {*} maxTokens the maximum number of tokens to generate, e.g. 100
* @param {*} topP the cumulative probability of tokens to generate, e.g. 0.9
* @param {*} randomSeed the random seed to use for sampling, e.g. 42
* @param {*} safeMode deprecated use safePrompt instead
* @param {*} safePrompt whether to use safe mode, e.g. true
* @param {*} toolChoice the tool to use, e.g. 'auto'
* @param {*} responseFormat the format of the response, e.g. 'json_format'
* @return {Promise<Object>}
*/
chatStream = async function* ({
model,
messages,
tools,
temperature,
maxTokens,
topP,
randomSeed,
safeMode,
safePrompt,
toolChoice,
responseFormat,
}) {
const request = this._makeChatCompletionRequest(
model,
messages,
tools,
temperature,
maxTokens,
topP,
randomSeed,
true,
safeMode,
safePrompt,
toolChoice,
responseFormat
)
const response = await this._request('post', 'v1/chat/completions', request)
let buffer = ''
const decoder = new TextDecoder()
for await (const chunk of response) {
buffer += decoder.decode(chunk, { stream: true })
let firstNewline
while ((firstNewline = buffer.indexOf('\n')) !== -1) {
const chunkLine = buffer.substring(0, firstNewline)
buffer = buffer.substring(firstNewline + 1)
if (chunkLine.startsWith('data:')) {
const json = chunkLine.substring(6).trim()
if (json !== '[DONE]') {
yield JSON.parse(json)
}
}
}
}
}
/**
* An embeddings endpoint that returns embeddings for a single,
* or batch of inputs
* @param {*} model The embedding model to use, e.g. mistral-embed
* @param {*} input The input to embed,
* e.g. ['What is the best French cheese?']
* @return {Promise<Object>}
*/
embeddings = async function ({ model, input }) {
const request = {
model: model,
input: input,
}
const response = await this._request('post', 'v1/embeddings', request)
return response
}
}
export default MistralClient

View File

@ -2,6 +2,7 @@ import { options as createChatCompletionOption } from '../actions/createChatComp
import { VariableStore } from '@typebot.io/forge' import { VariableStore } from '@typebot.io/forge'
import { isDefined, isNotEmpty } from '@typebot.io/lib' import { isDefined, isNotEmpty } from '@typebot.io/lib'
import { z } from '@typebot.io/forge/zod' import { z } from '@typebot.io/forge/zod'
import { CoreMessage } from 'ai'
export const parseMessages = ({ export const parseMessages = ({
options: { messages }, options: { messages },
@ -11,7 +12,7 @@ export const parseMessages = ({
variables: VariableStore variables: VariableStore
}) => }) =>
messages messages
?.flatMap((message) => { ?.flatMap<CoreMessage | undefined>((message) => {
if (!message.role) return if (!message.role) return
if (message.role === 'Dialogue') { if (message.role === 'Dialogue') {

View File

@ -9,11 +9,13 @@
"@typebot.io/forge": "workspace:*", "@typebot.io/forge": "workspace:*",
"@typebot.io/lib": "workspace:*", "@typebot.io/lib": "workspace:*",
"@typebot.io/tsconfig": "workspace:*", "@typebot.io/tsconfig": "workspace:*",
"@types/node": "^20.12.4", "@types/node": "20.4.2",
"@types/react": "18.2.15", "@types/react": "18.2.15",
"typescript": "5.4.5" "typescript": "5.4.5"
}, },
"dependencies": { "dependencies": {
"ai": "3.0.31" "@ai-sdk/mistral": "0.0.11",
"ai": "3.1.12",
"ky": "1.2.4"
} }
} }

View File

@ -67,6 +67,8 @@ export const askAssistant = createAction({
{ {
id: 'fetchAssistants', id: 'fetchAssistants',
fetch: async ({ options, credentials }) => { fetch: async ({ options, credentials }) => {
if (!credentials?.apiKey) return []
const config = { const config = {
apiKey: credentials.apiKey, apiKey: credentials.apiKey,
baseURL: options.baseUrl, baseURL: options.baseUrl,
@ -100,7 +102,8 @@ export const askAssistant = createAction({
{ {
id: 'fetchAssistantFunctions', id: 'fetchAssistantFunctions',
fetch: async ({ options, credentials }) => { fetch: async ({ options, credentials }) => {
if (!options.assistantId) return [] if (!options.assistantId || !credentials?.apiKey) return []
const config = { const config = {
apiKey: credentials.apiKey, apiKey: credentials.apiKey,
baseURL: options.baseUrl, baseURL: options.baseUrl,

View File

@ -46,6 +46,8 @@ export const createChatCompletion = createAction({
id: 'fetchModels', id: 'fetchModels',
dependencies: ['baseUrl', 'apiVersion'], dependencies: ['baseUrl', 'apiVersion'],
fetch: async ({ credentials, options }) => { fetch: async ({ credentials, options }) => {
if (!credentials?.apiKey) return []
const baseUrl = options?.baseUrl ?? defaultOpenAIOptions.baseUrl const baseUrl = options?.baseUrl ?? defaultOpenAIOptions.baseUrl
const config = { const config = {
apiKey: credentials.apiKey, apiKey: credentials.apiKey,

View File

@ -37,6 +37,8 @@ export const createSpeech = createAction({
id: 'fetchSpeechModels', id: 'fetchSpeechModels',
dependencies: ['baseUrl', 'apiVersion'], dependencies: ['baseUrl', 'apiVersion'],
fetch: async ({ credentials, options }) => { fetch: async ({ credentials, options }) => {
if (!credentials?.apiKey) return []
const baseUrl = options?.baseUrl ?? defaultOpenAIOptions.baseUrl const baseUrl = options?.baseUrl ?? defaultOpenAIOptions.baseUrl
const config = { const config = {
apiKey: credentials.apiKey, apiKey: credentials.apiKey,

View File

@ -7,8 +7,8 @@
"author": "Baptiste Arnaud", "author": "Baptiste Arnaud",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"ai": "3.0.31", "ai": "3.1.12",
"openai": "4.38.3" "openai": "4.47.1"
}, },
"devDependencies": { "devDependencies": {
"@typebot.io/forge": "workspace:*", "@typebot.io/forge": "workspace:*",

View File

@ -16,13 +16,15 @@ export const zemanticAiBlock = createBlock({
{ {
id: 'fetchProjects', id: 'fetchProjects',
dependencies: [], dependencies: [],
fetch: async ({ credentials: { apiKey } }) => { fetch: async ({ credentials }) => {
if (!credentials?.apiKey) return []
const url = 'https://api.zemantic.ai/v1/projects' const url = 'https://api.zemantic.ai/v1/projects'
const response = await ky const response = await ky
.get(url, { .get(url, {
headers: { headers: {
Authorization: `Bearer ${apiKey}`, Authorization: `Bearer ${credentials.apiKey}`,
}, },
}) })
.json() .json()

View File

@ -12,7 +12,7 @@
"devDependencies": { "devDependencies": {
"@clack/prompts": "^0.7.0", "@clack/prompts": "^0.7.0",
"@typebot.io/tsconfig": "workspace:*", "@typebot.io/tsconfig": "workspace:*",
"@types/node": "^20.10.1", "@types/node": "20.4.2",
"tsx": "^4.6.1", "tsx": "^4.6.1",
"prettier": "3.0.0" "prettier": "3.0.0"
} }

View File

@ -101,7 +101,7 @@ export type FetcherDefinition<A extends AuthDefinition, T = {}> = {
*/ */
dependencies: (keyof T)[] dependencies: (keyof T)[]
fetch: (params: { fetch: (params: {
credentials: CredentialsFromAuthDef<A> credentials: CredentialsFromAuthDef<A> | undefined
options: T options: T
}) => Promise<(string | { label: string; value: string })[]> }) => Promise<(string | { label: string; value: string })[]>
} }

View File

@ -12,7 +12,7 @@
"@typebot.io/prisma": "workspace:*", "@typebot.io/prisma": "workspace:*",
"@typebot.io/tsconfig": "workspace:*", "@typebot.io/tsconfig": "workspace:*",
"@types/escape-html": "^1.0.4", "@types/escape-html": "^1.0.4",
"@types/nodemailer": "6.4.8", "@types/nodemailer": "6.4.14",
"@types/validator": "13.11.9", "@types/validator": "13.11.9",
"next": "14.1.0", "next": "14.1.0",
"nodemailer": "6.9.8", "nodemailer": "6.9.8",

View File

@ -13,7 +13,7 @@
"@typebot.io/schemas": "workspace:*" "@typebot.io/schemas": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.11.26", "@types/node": "20.4.2",
"@typebot.io/tsconfig": "workspace:*" "@typebot.io/tsconfig": "workspace:*"
} }
} }

View File

@ -18,7 +18,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/node": "20.4.2", "@types/node": "20.4.2",
"dotenv-cli": "7.2.1", "dotenv-cli": "7.4.1",
"prisma": "5.12.1", "prisma": "5.12.1",
"@typebot.io/tsconfig": "workspace:*", "@typebot.io/tsconfig": "workspace:*",
"tsx": "3.12.7", "tsx": "3.12.7",

View File

@ -14,6 +14,6 @@
"@typebot.io/env": "workspace:*" "@typebot.io/env": "workspace:*"
}, },
"devDependencies": { "devDependencies": {
"dotenv-cli": "7.2.1" "dotenv-cli": "7.4.1"
} }
} }

378
pnpm-lock.yaml generated
View File

@ -228,8 +228,8 @@ importers:
specifier: 0.2.0 specifier: 0.2.0
version: 0.2.0 version: 0.2.0
openai: openai:
specifier: 4.28.4 specifier: 4.47.1
version: 4.28.4 version: 4.47.1
papaparse: papaparse:
specifier: 5.4.1 specifier: 5.4.1
version: 5.4.1 version: 5.4.1
@ -382,8 +382,8 @@ importers:
apps/docs: apps/docs:
devDependencies: devDependencies:
dotenv-cli: dotenv-cli:
specifier: 7.2.1 specifier: 7.4.1
version: 7.2.1 version: 7.4.1
mintlify: mintlify:
specifier: 4.0.75 specifier: 4.0.75
version: 4.0.75(acorn@8.11.3)(axios@1.6.7)(openapi-types@12.1.3) version: 4.0.75(acorn@8.11.3)(axios@1.6.7)(openapi-types@12.1.3)
@ -482,8 +482,8 @@ importers:
specifier: 7.0.3 specifier: 7.0.3
version: 7.0.3 version: 7.0.3
dotenv-cli: dotenv-cli:
specifier: 7.2.1 specifier: 7.4.1
version: 7.2.1 version: 7.4.1
eslint: eslint:
specifier: 8.44.0 specifier: 8.44.0
version: 8.44.0 version: 8.44.0
@ -536,8 +536,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../../packages/prisma version: link:../../packages/prisma
ai: ai:
specifier: 3.0.31 specifier: 3.1.12
version: 3.0.31(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4) version: 3.1.12(openai@4.47.1)(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4)
bot-engine: bot-engine:
specifier: workspace:* specifier: workspace:*
version: link:../../packages/deprecated/bot-engine version: link:../../packages/deprecated/bot-engine
@ -563,8 +563,8 @@ importers:
specifier: 6.9.8 specifier: 6.9.8
version: 6.9.8 version: 6.9.8
openai: openai:
specifier: 4.38.3 specifier: 4.47.1
version: 4.38.3 version: 4.47.1
qs: qs:
specifier: 6.11.2 specifier: 6.11.2
version: 6.11.2 version: 6.11.2
@ -727,8 +727,8 @@ importers:
specifier: 30.4.5 specifier: 30.4.5
version: 30.4.5(@types/react@18.2.15)(immer@10.0.2)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0) version: 30.4.5(@types/react@18.2.15)(immer@10.0.2)(react-dom@18.2.0)(react@18.2.0)(scheduler@0.23.0)(slate-history@0.100.0)(slate-hyperscript@0.100.0)(slate-react@0.102.0)(slate@0.102.0)
ai: ai:
specifier: 3.0.31 specifier: 3.1.12
version: 3.0.31(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4) version: 3.1.12(openai@4.47.1)(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4)
chrono-node: chrono-node:
specifier: 2.7.5 specifier: 2.7.5
version: 2.7.5 version: 2.7.5
@ -757,8 +757,8 @@ importers:
specifier: 6.9.8 specifier: 6.9.8
version: 6.9.8 version: 6.9.8
openai: openai:
specifier: 4.38.3 specifier: 4.47.1
version: 4.38.3 version: 4.47.1
qs: qs:
specifier: 6.11.2 specifier: 6.11.2
version: 6.11.2 version: 6.11.2
@ -773,8 +773,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../forge/repository version: link:../forge/repository
'@types/node': '@types/node':
specifier: ^20.12.3 specifier: 20.4.2
version: 20.12.3 version: 20.4.2
'@types/nodemailer': '@types/nodemailer':
specifier: 6.4.14 specifier: 6.4.14
version: 6.4.14 version: 6.4.14
@ -825,8 +825,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../../tsconfig version: link:../../tsconfig
'@types/node': '@types/node':
specifier: 18.11.18 specifier: 20.4.2
version: 18.11.18 version: 20.4.2
'@types/qs': '@types/qs':
specifier: 6.9.7 specifier: 6.9.7
version: 6.9.7 version: 6.9.7
@ -849,8 +849,8 @@ importers:
specifier: 0.17.5 specifier: 0.17.5
version: 0.17.5 version: 0.17.5
eslint: eslint:
specifier: 8.32.0 specifier: 8.44.0
version: 8.32.0 version: 8.44.0
eslint-config-custom: eslint-config-custom:
specifier: workspace:* specifier: workspace:*
version: link:../../eslint-config-custom version: link:../../eslint-config-custom
@ -888,8 +888,8 @@ importers:
specifier: 29.4.0 specifier: 29.4.0
version: 29.4.0 version: 29.4.0
eslint: eslint:
specifier: 8.32.0 specifier: 8.44.0
version: 8.32.0 version: 8.44.0
eslint-config-custom: eslint-config-custom:
specifier: workspace:* specifier: workspace:*
version: link:../../eslint-config-custom version: link:../../eslint-config-custom
@ -1249,8 +1249,8 @@ importers:
specifier: 0.20.6 specifier: 0.20.6
version: 0.20.6 version: 0.20.6
ai: ai:
specifier: 3.0.31 specifier: 3.1.12
version: 3.0.31(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4) version: 3.1.12(openai@4.47.1)(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4)
devDependencies: devDependencies:
'@typebot.io/forge': '@typebot.io/forge':
specifier: workspace:* specifier: workspace:*
@ -1352,9 +1352,15 @@ importers:
packages/forge/blocks/mistral: packages/forge/blocks/mistral:
dependencies: dependencies:
'@ai-sdk/mistral':
specifier: 0.0.11
version: 0.0.11(zod@3.22.4)
ai: ai:
specifier: 3.0.31 specifier: 3.1.12
version: 3.0.31(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4) version: 3.1.12(openai@4.47.1)(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4)
ky:
specifier: 1.2.4
version: 1.2.4
devDependencies: devDependencies:
'@typebot.io/forge': '@typebot.io/forge':
specifier: workspace:* specifier: workspace:*
@ -1366,8 +1372,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../../../tsconfig version: link:../../../tsconfig
'@types/node': '@types/node':
specifier: ^20.12.4 specifier: 20.4.2
version: 20.12.4 version: 20.4.2
'@types/react': '@types/react':
specifier: 18.2.15 specifier: 18.2.15
version: 18.2.15 version: 18.2.15
@ -1402,11 +1408,11 @@ importers:
packages/forge/blocks/openai: packages/forge/blocks/openai:
dependencies: dependencies:
ai: ai:
specifier: 3.0.31 specifier: 3.1.12
version: 3.0.31(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4) version: 3.1.12(openai@4.47.1)(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4)
openai: openai:
specifier: 4.38.3 specifier: 4.47.1
version: 4.38.3 version: 4.47.1
devDependencies: devDependencies:
'@typebot.io/forge': '@typebot.io/forge':
specifier: workspace:* specifier: workspace:*
@ -1506,8 +1512,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../../tsconfig version: link:../../tsconfig
'@types/node': '@types/node':
specifier: ^20.10.1 specifier: 20.4.2
version: 20.11.26 version: 20.4.2
prettier: prettier:
specifier: 3.0.0 specifier: 3.0.0
version: 3.0.0 version: 3.0.0
@ -1655,8 +1661,8 @@ importers:
specifier: ^1.0.4 specifier: ^1.0.4
version: 1.0.4 version: 1.0.4
'@types/nodemailer': '@types/nodemailer':
specifier: 6.4.8 specifier: 6.4.14
version: 6.4.8 version: 6.4.14
'@types/validator': '@types/validator':
specifier: 13.11.9 specifier: 13.11.9
version: 13.11.9 version: 13.11.9
@ -1727,8 +1733,8 @@ importers:
specifier: workspace:* specifier: workspace:*
version: link:../tsconfig version: link:../tsconfig
'@types/node': '@types/node':
specifier: ^20.11.26 specifier: 20.4.2
version: 20.11.26 version: 20.4.2
packages/prisma: packages/prisma:
dependencies: dependencies:
@ -1743,8 +1749,8 @@ importers:
specifier: 20.4.2 specifier: 20.4.2
version: 20.4.2 version: 20.4.2
dotenv-cli: dotenv-cli:
specifier: 7.2.1 specifier: 7.4.1
version: 7.2.1 version: 7.4.1
prisma: prisma:
specifier: 5.12.1 specifier: 5.12.1
version: 5.12.1 version: 5.12.1
@ -1929,8 +1935,8 @@ importers:
version: 2.0.0(eslint@8.44.0) version: 2.0.0(eslint@8.44.0)
devDependencies: devDependencies:
dotenv-cli: dotenv-cli:
specifier: 7.2.1 specifier: 7.4.1
version: 7.2.1 version: 7.4.1
packages/tsconfig: {} packages/tsconfig: {}
@ -1949,8 +1955,8 @@ packages:
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
/@ai-sdk/provider-utils@0.0.3(zod@3.22.4): /@ai-sdk/mistral@0.0.11(zod@3.22.4):
resolution: {integrity: sha512-13+4v62ylduGvwz8966SdnT1aoQRO4QkWzZJyVswdgmYeX2vrXuU4bssK578+FXIXc1jwi2hLZO8lqgLPT/xDA==} resolution: {integrity: sha512-Y/2V7BMwyaTnVRfhs6YhI5MGcQgjBrTwo2K6CftUAjJvNIDtSJ+eVc9hCuw02uMvTScfeiTB6lZ8OrzGyCNHoQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
zod: ^3.0.0 zod: ^3.0.0
@ -1958,15 +1964,29 @@ packages:
zod: zod:
optional: true optional: true
dependencies: dependencies:
'@ai-sdk/provider': 0.0.2 '@ai-sdk/provider': 0.0.5
'@ai-sdk/provider-utils': 0.0.8(zod@3.22.4)
zod: 3.22.4
dev: false
/@ai-sdk/provider-utils@0.0.8(zod@3.22.4):
resolution: {integrity: sha512-J/ZNvFhORd3gCeK3jFvNrxp1Dnvy6PvPq21RJ+OsIEjsoHeKQaHALCWG0aJunXDuzd+Mck/lCg7LqA0qmIbHIg==}
engines: {node: '>=18'}
peerDependencies:
zod: ^3.0.0
peerDependenciesMeta:
zod:
optional: true
dependencies:
'@ai-sdk/provider': 0.0.5
eventsource-parser: 1.1.2 eventsource-parser: 1.1.2
nanoid: 3.3.6 nanoid: 3.3.6
secure-json-parse: 2.7.0 secure-json-parse: 2.7.0
zod: 3.22.4 zod: 3.22.4
dev: false dev: false
/@ai-sdk/provider@0.0.2: /@ai-sdk/provider@0.0.5:
resolution: {integrity: sha512-LDRx7TFWjuuW1V8bGCMvOk4ap5gNGeSxa6w65Y+pHskiLRk/nn+Z2xzMy1JjCTksUblu0i/plai4bOLgqkxJHA==} resolution: {integrity: sha512-TZDldBZ5clAsNwJ2PSeo/b1uILj9a2lvi0rnOj2RCNZDgaVqFRVIAnKyeHusCRv2lzhPIw03B3fiGI6VoLzOAA==}
engines: {node: '>=18'} engines: {node: '>=18'}
dependencies: dependencies:
json-schema: 0.4.0 json-schema: 0.4.0
@ -6433,23 +6453,6 @@ packages:
resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
/@eslint/eslintrc@1.4.1:
resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
dev: true
/@eslint/eslintrc@2.1.4: /@eslint/eslintrc@2.1.4:
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -6843,7 +6846,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
chalk: 4.1.2 chalk: 4.1.2
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -6864,14 +6867,14 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
ansi-escapes: 4.3.2 ansi-escapes: 4.3.2
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-changed-files: 29.7.0 jest-changed-files: 29.7.0
jest-config: 29.7.0(@types/node@20.12.4) jest-config: 29.7.0(@types/node@20.4.9)
jest-haste-map: 29.7.0 jest-haste-map: 29.7.0
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-regex-util: 29.6.3 jest-regex-util: 29.6.3
@ -6899,7 +6902,7 @@ packages:
dependencies: dependencies:
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
jest-mock: 29.7.0 jest-mock: 29.7.0
dev: true dev: true
@ -6926,7 +6929,7 @@ packages:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@sinonjs/fake-timers': 10.3.0 '@sinonjs/fake-timers': 10.3.0
'@types/node': 20.12.4 '@types/node': 20.4.9
jest-message-util: 29.7.0 jest-message-util: 29.7.0
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
@ -6959,7 +6962,7 @@ packages:
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@jridgewell/trace-mapping': 0.3.25 '@jridgewell/trace-mapping': 0.3.25
'@types/node': 20.12.4 '@types/node': 20.4.9
chalk: 4.1.2 chalk: 4.1.2
collect-v8-coverage: 1.0.2 collect-v8-coverage: 1.0.2
exit: 0.1.2 exit: 0.1.2
@ -7047,7 +7050,7 @@ packages:
'@jest/schemas': 29.6.3 '@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4 '@types/istanbul-reports': 3.0.4
'@types/node': 20.12.4 '@types/node': 20.4.9
'@types/yargs': 17.0.32 '@types/yargs': 17.0.32
chalk: 4.1.2 chalk: 4.1.2
dev: true dev: true
@ -7852,7 +7855,7 @@ packages:
engines: {node: '>=16'} engines: {node: '>=16'}
hasBin: true hasBin: true
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
playwright-core: 1.36.0 playwright-core: 1.36.0
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2
@ -9459,7 +9462,7 @@ packages:
resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==}
dependencies: dependencies:
'@types/connect': 3.4.38 '@types/connect': 3.4.38
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: false dev: false
/@types/canvas-confetti@1.6.0: /@types/canvas-confetti@1.6.0:
@ -9469,13 +9472,13 @@ packages:
/@types/cli-progress@3.11.5: /@types/cli-progress@3.11.5:
resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==} resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: true dev: true
/@types/connect@3.4.38: /@types/connect@3.4.38:
resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: false dev: false
/@types/content-type@1.1.8: /@types/content-type@1.1.8:
@ -9534,7 +9537,7 @@ packages:
/@types/express-serve-static-core@4.17.43: /@types/express-serve-static-core@4.17.43:
resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
'@types/qs': 6.9.7 '@types/qs': 6.9.7
'@types/range-parser': 1.2.7 '@types/range-parser': 1.2.7
'@types/send': 0.17.4 '@types/send': 0.17.4
@ -9552,7 +9555,7 @@ packages:
/@types/graceful-fs@4.1.9: /@types/graceful-fs@4.1.9:
resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: true dev: true
/@types/hast@2.3.10: /@types/hast@2.3.10:
@ -9610,7 +9613,7 @@ packages:
/@types/jsdom@20.0.1: /@types/jsdom@20.0.1:
resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
'@types/tough-cookie': 4.0.5 '@types/tough-cookie': 4.0.5
parse5: 7.1.2 parse5: 7.1.2
dev: true dev: true
@ -9665,7 +9668,7 @@ packages:
/@types/micro@7.3.7: /@types/micro@7.3.7:
resolution: {integrity: sha512-MFsX7eCj0Tg3TtphOQvANNvNtFpya+s/rYOCdV6o+DFjOQPFi2EVRbBALjbbgZTXUaJP1Q281MJiJOD40d0UxQ==} resolution: {integrity: sha512-MFsX7eCj0Tg3TtphOQvANNvNtFpya+s/rYOCdV6o+DFjOQPFi2EVRbBALjbbgZTXUaJP1Q281MJiJOD40d0UxQ==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: true dev: true
/@types/mime@1.3.5: /@types/mime@1.3.5:
@ -9686,24 +9689,13 @@ packages:
/@types/node-fetch@2.6.11: /@types/node-fetch@2.6.11:
resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
form-data: 4.0.0 form-data: 4.0.0
dev: false dev: false
/@types/node@18.11.18: /@types/node@18.11.18:
resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==}
dev: false
/@types/node@20.11.26:
resolution: {integrity: sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==}
dependencies:
undici-types: 5.26.5
dev: true
/@types/node@20.12.3:
resolution: {integrity: sha512-sD+ia2ubTeWrOu+YMF+MTAB7E+O7qsMqAbMfW7DG3K1URwhZ5hN1pLlRVGbf4wDFzSfikL05M17EyorS86jShw==}
dependencies:
undici-types: 5.26.5
dev: true
/@types/node@20.12.4: /@types/node@20.12.4:
resolution: {integrity: sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw==} resolution: {integrity: sha512-E+Fa9z3wSQpzgYQdYmme5X3OTuejnnTx88A6p6vkkJosR3KBz+HpE3kqNm98VE6cfLFcISx7zW7MsJkH6KwbTw==}
@ -9715,18 +9707,11 @@ packages:
/@types/node@20.4.9: /@types/node@20.4.9:
resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==} resolution: {integrity: sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ==}
dev: true
/@types/nodemailer@6.4.14: /@types/nodemailer@6.4.14:
resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==} resolution: {integrity: sha512-fUWthHO9k9DSdPCSPRqcu6TWhYyxTBg382vlNIttSe9M7XfsT06y0f24KHXtbnijPGGRIcVvdKHTNikOI6qiHA==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: true
/@types/nodemailer@6.4.8:
resolution: {integrity: sha512-oVsJSCkqViCn8/pEu2hfjwVO+Gb3e+eTWjg3PcjeFKRItfKpKwHphQqbYmPQrlMk+op7pNNWPbsJIEthpFN/OQ==}
dependencies:
'@types/node': 20.12.4
dev: true dev: true
/@types/normalize-package-data@2.4.4: /@types/normalize-package-data@2.4.4:
@ -9757,7 +9742,7 @@ packages:
/@types/prompts@2.4.4: /@types/prompts@2.4.4:
resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==} resolution: {integrity: sha512-p5N9uoTH76lLvSAaYSZtBCdEXzpOOufsRjnhjVSrZGXikVGHX9+cc9ERtHRV4hvBKHyZb1bg4K+56Bd2TqUn4A==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
kleur: 3.0.3 kleur: 3.0.3
dev: true dev: true
@ -9767,7 +9752,7 @@ packages:
/@types/qrcode@1.5.5: /@types/qrcode@1.5.5:
resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==} resolution: {integrity: sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: true dev: true
/@types/qs@6.9.7: /@types/qs@6.9.7:
@ -9823,7 +9808,7 @@ packages:
resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
dependencies: dependencies:
'@types/mime': 1.3.5 '@types/mime': 1.3.5
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: false dev: false
/@types/serve-static@1.15.5: /@types/serve-static@1.15.5:
@ -9831,7 +9816,7 @@ packages:
dependencies: dependencies:
'@types/http-errors': 2.0.4 '@types/http-errors': 2.0.4
'@types/mime': 3.0.4 '@types/mime': 3.0.4
'@types/node': 20.12.4 '@types/node': 20.4.9
dev: false dev: false
/@types/stack-utils@2.0.3: /@types/stack-utils@2.0.3:
@ -9863,7 +9848,7 @@ packages:
/@types/webpack@5.28.5(@swc/core@1.3.101)(esbuild@0.19.11): /@types/webpack@5.28.5(@swc/core@1.3.101)(esbuild@0.19.11):
resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
tapable: 2.2.1 tapable: 2.2.1
webpack: 5.90.3(@swc/core@1.3.101)(esbuild@0.19.11) webpack: 5.90.3(@swc/core@1.3.101)(esbuild@0.19.11)
transitivePeerDependencies: transitivePeerDependencies:
@ -11000,16 +10985,19 @@ packages:
indent-string: 5.0.0 indent-string: 5.0.0
dev: true dev: true
/ai@3.0.31(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4): /ai@3.1.12(openai@4.47.1)(react@18.2.0)(solid-js@1.7.8)(svelte@4.2.12)(vue@3.4.21)(zod@3.22.4):
resolution: {integrity: sha512-SmwVgBcTLchKTcQjFYRskCkw9H9p/PivUxAQzqIT+aX97kfBr3uBw3nFOH+RKseCsVEMt3w27K2h9n2u0bskZA==} resolution: {integrity: sha512-XlurBw1sdgQCFmCTPYjKjpm+fPS6iY+tLb/PYNUEjZn3bhqosAkcqUkGJTsFP49OMAWO1Lm2oPthCakKcn6Lzw==}
engines: {node: '>=18'} engines: {node: '>=18'}
peerDependencies: peerDependencies:
openai: ^4.42.0
react: ^18.2.0 react: ^18.2.0
solid-js: ^1.7.7 solid-js: ^1.7.7
svelte: ^3.0.0 || ^4.0.0 svelte: ^3.0.0 || ^4.0.0
vue: ^3.3.4 vue: ^3.3.4
zod: ^3.0.0 zod: ^3.0.0
peerDependenciesMeta: peerDependenciesMeta:
openai:
optional: true
react: react:
optional: true optional: true
solid-js: solid-js:
@ -11021,12 +11009,13 @@ packages:
zod: zod:
optional: true optional: true
dependencies: dependencies:
'@ai-sdk/provider': 0.0.2 '@ai-sdk/provider': 0.0.5
'@ai-sdk/provider-utils': 0.0.3(zod@3.22.4) '@ai-sdk/provider-utils': 0.0.8(zod@3.22.4)
eventsource-parser: 1.1.2 eventsource-parser: 1.1.2
json-schema: 0.4.0 json-schema: 0.4.0
jsondiffpatch: 0.6.0 jsondiffpatch: 0.6.0
nanoid: 3.3.6 nanoid: 3.3.6
openai: 4.47.1
react: 18.2.0 react: 18.2.0
secure-json-parse: 2.7.0 secure-json-parse: 2.7.0
solid-js: 1.7.8 solid-js: 1.7.8
@ -11591,10 +11580,6 @@ packages:
/balanced-match@1.0.2: /balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
/base-64@0.1.0:
resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==}
dev: false
/base32-decode@1.0.0: /base32-decode@1.0.0:
resolution: {integrity: sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g==} resolution: {integrity: sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g==}
dev: true dev: true
@ -11958,10 +11943,6 @@ packages:
resolution: {integrity: sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==} resolution: {integrity: sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==}
dev: true dev: true
/charenc@0.0.2:
resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==}
dev: false
/cheerio-select@2.1.0: /cheerio-select@2.1.0:
resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==}
dependencies: dependencies:
@ -12468,7 +12449,7 @@ packages:
chalk: 4.1.2 chalk: 4.1.2
exit: 0.1.2 exit: 0.1.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
jest-config: 29.7.0(@types/node@20.12.4) jest-config: 29.7.0(@types/node@20.4.9)
jest-util: 29.7.0 jest-util: 29.7.0
prompts: 2.4.2 prompts: 2.4.2
transitivePeerDependencies: transitivePeerDependencies:
@ -12515,10 +12496,6 @@ packages:
optional: true optional: true
dev: false dev: false
/crypt@0.0.2:
resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==}
dev: false
/css-box-model@1.2.1: /css-box-model@1.2.1:
resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==}
dependencies: dependencies:
@ -12953,13 +12930,6 @@ packages:
resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
engines: {node: '>=0.3.1'} engines: {node: '>=0.3.1'}
/digest-fetch@1.3.0:
resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==}
dependencies:
base-64: 0.1.0
md5: 2.3.0
dev: false
/dijkstrajs@1.0.3: /dijkstrajs@1.0.3:
resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
dev: false dev: false
@ -13076,16 +13046,6 @@ packages:
domelementtype: 2.3.0 domelementtype: 2.3.0
domhandler: 5.0.3 domhandler: 5.0.3
/dotenv-cli@7.2.1:
resolution: {integrity: sha512-ODHbGTskqRtXAzZapDPvgNuDVQApu4oKX8lZW7Y0+9hKA6le1ZJlyRS687oU9FXjOVEDU/VFV6zI125HzhM1UQ==}
hasBin: true
dependencies:
cross-spawn: 7.0.3
dotenv: 16.4.5
dotenv-expand: 10.0.0
minimist: 1.2.8
dev: true
/dotenv-cli@7.4.1: /dotenv-cli@7.4.1:
resolution: {integrity: sha512-fE1aywjRrWGxV3miaiUr3d2zC/VAiuzEGghi+QzgIA9fEf/M5hLMaRSXb4IxbUAwGmaLi0IozdZddnVU96acag==} resolution: {integrity: sha512-fE1aywjRrWGxV3miaiUr3d2zC/VAiuzEGghi+QzgIA9fEf/M5hLMaRSXb4IxbUAwGmaLi0IozdZddnVU96acag==}
hasBin: true hasBin: true
@ -13189,7 +13149,7 @@ packages:
dependencies: dependencies:
'@types/cookie': 0.4.1 '@types/cookie': 0.4.1
'@types/cors': 2.8.13 '@types/cors': 2.8.13
'@types/node': 20.12.4 '@types/node': 20.4.9
accepts: 1.3.8 accepts: 1.3.8
base64id: 2.0.0 base64id: 2.0.0
cookie: 0.4.2 cookie: 0.4.2
@ -14031,73 +13991,10 @@ packages:
esrecurse: 4.3.0 esrecurse: 4.3.0
estraverse: 5.3.0 estraverse: 5.3.0
/eslint-utils@3.0.0(eslint@8.32.0):
resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
peerDependencies:
eslint: '>=5'
dependencies:
eslint: 8.32.0
eslint-visitor-keys: 2.1.0
dev: true
/eslint-visitor-keys@2.1.0:
resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
engines: {node: '>=10'}
dev: true
/eslint-visitor-keys@3.4.3: /eslint-visitor-keys@3.4.3:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
/eslint@8.32.0:
resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
hasBin: true
dependencies:
'@eslint/eslintrc': 1.4.1
'@humanwhocodes/config-array': 0.11.14
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
debug: 4.3.4
doctrine: 3.0.0
escape-string-regexp: 4.0.0
eslint-scope: 7.2.2
eslint-utils: 3.0.0(eslint@8.32.0)
eslint-visitor-keys: 3.4.3
espree: 9.6.1
esquery: 1.5.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
find-up: 5.0.0
glob-parent: 6.0.2
globals: 13.24.0
grapheme-splitter: 1.0.4
ignore: 5.3.1
import-fresh: 3.3.0
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
js-sdsl: 4.4.2
js-yaml: 4.1.0
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.3
regexpp: 3.2.0
strip-ansi: 6.0.1
strip-json-comments: 3.1.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
dev: true
/eslint@8.44.0: /eslint@8.44.0:
resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==} resolution: {integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -15619,10 +15516,6 @@ packages:
call-bind: 1.0.7 call-bind: 1.0.7
has-tostringtag: 1.0.2 has-tostringtag: 1.0.2
/is-buffer@1.1.6:
resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
dev: false
/is-buffer@2.0.5: /is-buffer@2.0.5:
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -15983,7 +15876,7 @@ packages:
'@jest/expect': 29.7.0 '@jest/expect': 29.7.0
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
chalk: 4.1.2 chalk: 4.1.2
co: 4.6.0 co: 4.6.0
dedent: 1.5.1 dedent: 1.5.1
@ -16021,7 +15914,7 @@ packages:
create-jest: 29.7.0 create-jest: 29.7.0
exit: 0.1.2 exit: 0.1.2
import-local: 3.1.0 import-local: 3.1.0
jest-config: 29.7.0(@types/node@20.12.4) jest-config: 29.7.0(@types/node@20.4.9)
jest-util: 29.7.0 jest-util: 29.7.0
jest-validate: 29.7.0 jest-validate: 29.7.0
yargs: 17.7.2 yargs: 17.7.2
@ -16032,7 +15925,7 @@ packages:
- ts-node - ts-node
dev: true dev: true
/jest-config@29.7.0(@types/node@20.12.4): /jest-config@29.7.0(@types/node@20.4.9):
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies: peerDependencies:
@ -16047,7 +15940,7 @@ packages:
'@babel/core': 7.22.9 '@babel/core': 7.22.9
'@jest/test-sequencer': 29.7.0 '@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
babel-jest: 29.7.0(@babel/core@7.22.9) babel-jest: 29.7.0(@babel/core@7.22.9)
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
@ -16113,7 +16006,7 @@ packages:
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/jsdom': 20.0.1 '@types/jsdom': 20.0.1
'@types/node': 20.12.4 '@types/node': 20.4.9
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
jsdom: 20.0.3 jsdom: 20.0.3
@ -16130,7 +16023,7 @@ packages:
'@jest/environment': 29.7.0 '@jest/environment': 29.7.0
'@jest/fake-timers': 29.7.0 '@jest/fake-timers': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
jest-mock: 29.7.0 jest-mock: 29.7.0
jest-util: 29.7.0 jest-util: 29.7.0
dev: true dev: true
@ -16146,7 +16039,7 @@ packages:
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9 '@types/graceful-fs': 4.1.9
'@types/node': 20.12.4 '@types/node': 20.4.9
anymatch: 3.1.3 anymatch: 3.1.3
fb-watchman: 2.0.2 fb-watchman: 2.0.2
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -16197,7 +16090,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
jest-util: 29.7.0 jest-util: 29.7.0
dev: true dev: true
@ -16252,7 +16145,7 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
chalk: 4.1.2 chalk: 4.1.2
emittery: 0.13.1 emittery: 0.13.1
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -16283,7 +16176,7 @@ packages:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/transform': 29.7.0 '@jest/transform': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
chalk: 4.1.2 chalk: 4.1.2
cjs-module-lexer: 1.2.3 cjs-module-lexer: 1.2.3
collect-v8-coverage: 1.0.2 collect-v8-coverage: 1.0.2
@ -16335,7 +16228,7 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
chalk: 4.1.2 chalk: 4.1.2
ci-info: 3.9.0 ci-info: 3.9.0
graceful-fs: 4.2.11 graceful-fs: 4.2.11
@ -16360,7 +16253,7 @@ packages:
dependencies: dependencies:
'@jest/test-result': 29.7.0 '@jest/test-result': 29.7.0
'@jest/types': 29.6.3 '@jest/types': 29.6.3
'@types/node': 20.12.4 '@types/node': 20.4.9
ansi-escapes: 4.3.2 ansi-escapes: 4.3.2
chalk: 4.1.2 chalk: 4.1.2
emittery: 0.13.1 emittery: 0.13.1
@ -16372,7 +16265,7 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'} engines: {node: '>= 10.13.0'}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
dev: false dev: false
@ -16381,7 +16274,7 @@ packages:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dependencies: dependencies:
'@types/node': 20.12.4 '@types/node': 20.4.9
jest-util: 29.7.0 jest-util: 29.7.0
merge-stream: 2.0.0 merge-stream: 2.0.0
supports-color: 8.1.1 supports-color: 8.1.1
@ -16480,10 +16373,6 @@ packages:
resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
engines: {node: '>=14'} engines: {node: '>=14'}
/js-sdsl@4.4.2:
resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==}
dev: true
/js-tokens@4.0.0: /js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@ -16717,6 +16606,11 @@ packages:
resolution: {integrity: sha512-2IM3VssHfG2zYz2FsHRUqIp8chhLc9uxDMcK2THxgFfv8pQhnMfN8L0ul+iW4RdBl5AglF8ooPIflRm3yNH0IA==} resolution: {integrity: sha512-2IM3VssHfG2zYz2FsHRUqIp8chhLc9uxDMcK2THxgFfv8pQhnMfN8L0ul+iW4RdBl5AglF8ooPIflRm3yNH0IA==}
engines: {node: '>=18'} engines: {node: '>=18'}
/ky@1.2.4:
resolution: {integrity: sha512-CfSrf4a0yj1n6WgPT6kQNQOopIGLkQzqSAXo05oKByaH7G3SiqW4a8jGox0p9whMXqO49H7ljgigivrMyycAVA==}
engines: {node: '>=18'}
dev: false
/language-subtag-registry@0.3.22: /language-subtag-registry@0.3.22:
resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==}
dev: false dev: false
@ -16985,14 +16879,6 @@ packages:
hasBin: true hasBin: true
dev: false dev: false
/md5@2.3.0:
resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==}
dependencies:
charenc: 0.0.2
crypt: 0.0.2
is-buffer: 1.1.6
dev: false
/mdast-util-definitions@5.1.2: /mdast-util-definitions@5.1.2:
resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==}
dependencies: dependencies:
@ -18802,25 +18688,8 @@ packages:
is-docker: 2.2.1 is-docker: 2.2.1
is-wsl: 2.2.0 is-wsl: 2.2.0
/openai@4.28.4: /openai@4.47.1:
resolution: {integrity: sha512-RNIwx4MT/F0zyizGcwS+bXKLzJ8QE9IOyigDG/ttnwB220d58bYjYFp0qjvGwEFBO6+pvFVIDABZPGDl46RFsg==} resolution: {integrity: sha512-WWSxhC/69ZhYWxH/OBsLEirIjUcfpQ5+ihkXKp06hmeYXgBBIUCa9IptMzYx6NdkiOCsSGYCnTIsxaic3AjRCQ==}
hasBin: true
dependencies:
'@types/node': 18.11.18
'@types/node-fetch': 2.6.11
abort-controller: 3.0.0
agentkeepalive: 4.5.0
digest-fetch: 1.3.0
form-data-encoder: 1.7.2
formdata-node: 4.4.1
node-fetch: 2.7.0
web-streams-polyfill: 3.3.3
transitivePeerDependencies:
- encoding
dev: false
/openai@4.38.3:
resolution: {integrity: sha512-mIL9WtrFNOanpx98mJ+X/wkoepcxdqqu0noWFoNQHl/yODQ47YM7NEYda7qp8JfjqpLFVxY9mQhshoS/Fqac0A==}
hasBin: true hasBin: true
dependencies: dependencies:
'@types/node': 18.11.18 '@types/node': 18.11.18
@ -20407,11 +20276,6 @@ packages:
es-errors: 1.3.0 es-errors: 1.3.0
set-function-name: 2.0.2 set-function-name: 2.0.2
/regexpp@3.2.0:
resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
engines: {node: '>=8'}
dev: true
/regexpu-core@5.3.2: /regexpu-core@5.3.2:
resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==}
engines: {node: '>=4'} engines: {node: '>=4'}