diff --git a/THIRD_PARTY_LICENSES.md b/THIRD_PARTY_LICENSES.md index da917880c3..5d6eb4696c 100644 --- a/THIRD_PARTY_LICENSES.md +++ b/THIRD_PARTY_LICENSES.md @@ -3153,7 +3153,7 @@ MIT License The following npm package may be included in this product: - - genaiscript-vscode@1.47.1 + - genaiscript-vscode@1.47.3 This package contains the following license and notice below: @@ -14667,7 +14667,7 @@ Apache-2.0 The following npm package may be included in this product: - - caniuse-lite@1.0.30001649 + - caniuse-lite@1.0.30001650 This package contains the following license and notice below: @@ -17132,6 +17132,7 @@ The following npm packages may be included in this product: - domhandler@5.0.3 - domutils@3.1.0 - entities@4.5.0 + - entities@5.0.0 - nth-check@2.1.1 These packages each contain the following license and notice below: @@ -17860,7 +17861,7 @@ THIS SOFTWARE. The following npm package may be included in this product: - - electron-to-chromium@1.5.4 + - electron-to-chromium@1.5.5 This package contains the following license and notice below: @@ -19851,11 +19852,11 @@ The following npm packages may be included in this product: - dagre-d3-es@7.0.10 - de-indent@1.0.2 - dlv@1.1.3 - - docs@1.47.1 + - docs@1.47.3 - eastasianwidth@0.2.0 - - genaiscript-core-internal@1.47.1 - - genaiscript-sample@1.47.1 - - genaiscript@1.47.1 + - genaiscript-core-internal@1.47.3 + - genaiscript-sample@1.47.3 + - genaiscript@1.47.3 - hast-util-is-body-ok-link@3.0.0 - hast-util-to-string@3.0.0 - html-whitespace-sensitive-tag-names@3.0.0 @@ -21461,7 +21462,7 @@ SOFTWARE. The following npm packages may be included in this product: - @drauu/core@0.4.0 - - @slidev/cli@0.49.23 + - @slidev/cli@0.49.24 - @slidev/types@0.47.5 - drauu@0.4.0 @@ -21493,9 +21494,9 @@ SOFTWARE. The following npm packages may be included in this product: - - @slidev/client@0.49.23 - - @slidev/parser@0.49.23 - - @slidev/types@0.49.23 + - @slidev/client@0.49.24 + - @slidev/parser@0.49.24 + - @slidev/types@0.49.24 These packages each contain the following license and notice below: @@ -21525,7 +21526,7 @@ SOFTWARE. The following npm packages may be included in this product: - - unplugin-icons@0.19.1 + - unplugin-icons@0.19.2 - unplugin-vue-components@0.27.3 - unplugin-vue-markdown@0.26.2 @@ -21649,7 +21650,7 @@ SOFTWARE. The following npm package may be included in this product: - - @astrojs/compiler@2.10.1 + - @astrojs/compiler@2.10.2 This package contains the following license and notice below: @@ -22147,8 +22148,8 @@ SOFTWARE. The following npm packages may be included in this product: - - @floating-ui/core@1.6.5 - - @floating-ui/utils@0.2.5 + - @floating-ui/core@1.6.7 + - @floating-ui/utils@0.2.7 These packages each contain the following license and notice below: @@ -22398,7 +22399,7 @@ SOFTWARE. The following npm package may be included in this product: - - @astrojs/check@0.9.1 + - @astrojs/check@0.9.2 This package contains the following license and notice below: @@ -22645,7 +22646,7 @@ SOFTWARE. The following npm package may be included in this product: - - @astrojs/starlight@0.25.3 + - @astrojs/starlight@0.25.4 This package contains the following license and notice below: @@ -22826,7 +22827,7 @@ SOFTWARE. The following npm package may be included in this product: - - @astrojs/language-server@2.13.1 + - @astrojs/language-server@2.13.2 This package contains the following license and notice below: @@ -26688,16 +26689,16 @@ SOFTWARE. The following npm packages may be included in this product: - - @vue/compiler-core@3.4.35 - - @vue/compiler-dom@3.4.35 - - @vue/compiler-sfc@3.4.35 - - @vue/compiler-ssr@3.4.35 - - @vue/reactivity@3.4.35 - - @vue/runtime-core@3.4.35 - - @vue/runtime-dom@3.4.35 - - @vue/server-renderer@3.4.35 - - @vue/shared@3.4.35 - - vue@3.4.35 + - @vue/compiler-core@3.4.36 + - @vue/compiler-dom@3.4.36 + - @vue/compiler-sfc@3.4.36 + - @vue/compiler-ssr@3.4.36 + - @vue/reactivity@3.4.36 + - @vue/runtime-core@3.4.36 + - @vue/runtime-dom@3.4.36 + - @vue/server-renderer@3.4.36 + - @vue/shared@3.4.36 + - vue@3.4.36 These packages each contain the following license and notice below: @@ -26757,7 +26758,7 @@ THE SOFTWARE. The following npm package may be included in this product: - - vue-router@4.4.2 + - vue-router@4.4.3 This package contains the following license and notice below: @@ -27068,7 +27069,7 @@ THE SOFTWARE. The following npm package may be included in this product: - - @lvce-editor/verror@1.3.0 + - @lvce-editor/verror@1.4.0 This package contains the following license and notice below: @@ -27659,7 +27660,7 @@ THE SOFTWARE IS PROVIDED β€œAS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR I The following npm package may be included in this product: - - postcss@8.4.40 + - postcss@8.4.41 This package contains the following license and notice below: diff --git a/demo/genaisrc/genaiscript.d.ts b/demo/genaisrc/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/demo/genaisrc/genaiscript.d.ts +++ b/demo/genaisrc/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/docs/genaisrc/genaiscript.d.ts b/docs/genaisrc/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/docs/genaisrc/genaiscript.d.ts +++ b/docs/genaisrc/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/docs/src/content/docs/reference/cli/commands.md b/docs/src/content/docs/reference/cli/commands.md index 29f532d092..bfb9e45161 100644 --- a/docs/src/content/docs/reference/cli/commands.md +++ b/docs/src/content/docs/reference/cli/commands.md @@ -87,7 +87,7 @@ Options: -td, --test-delay delay between tests in seconds --no-cache disable LLM result cache -v, --verbose verbose output - -pv, --promptfoo-version [version] promptfoo version, default is ^0.75.0 + -pv, --promptfoo-version [version] promptfoo version, default is ^0.75.2 -os, --out-summary append output summary in file -h, --help display help for command ``` diff --git a/docs/src/content/docs/reference/scripts/json-mode.md b/docs/src/content/docs/reference/scripts/json-mode.md index 5ae207d230..3c4a9240f4 100644 --- a/docs/src/content/docs/reference/scripts/json-mode.md +++ b/docs/src/content/docs/reference/scripts/json-mode.md @@ -10,52 +10,41 @@ Some models support forcing the output format to a JSON object, like the [JSON O The generated file name will be `[spec].[template].json`. -## `responseSchema` +```js 'responseType: "json_object"' +script({ + responseType: "json_object", +}) +``` + +## Schema validation -You can specify a `responseSchema` in the script metadata which will automatically turn on the JSON mode. The output will be validated against the schema, and GenAIScript will attempt to repair the output is not valid. The script will fail if the output does not match the schema. +You can specify a [schema](/genaiscript/reference/scripts/schemas) through `responseSchema` which will automatically turn on the JSON mode. The output will be validated against the schema, and GenAIScript will attempt to repair the output is not valid. The script will fail if the output does not match the schema. ```js "responseSchema" script({ + responseType: "json_object", responseSchema: { type: "object", properties: { - cities: { - type: "array", - description: - "A list of cities with population and elevation information.", - items: { - type: "object", - description: - "A city with population and elevation information.", - properties: { - name: { - type: "string", - description: "The name of the city.", - }, - population: { - type: "number", - description: "The population of the city.", - }, - }, - required: ["name", "population", "url"], - }, - }, + name: { type: "string" }, + age: { type: "number" }, }, + required: ["name", "age"], }, }) ``` -## `responseType` +## Inline schemas + +You can also specify the [schema inline](/genaiscript/reference/scripts/schemas) in the script and use a mixed markdown/data that GenAIScript will parse. -You can also enable this mode without a schema by setting `response_type` to `json_object`. +## Structured Output -```javascript +Recent models have added a [structured output](/genaiscript/reference/scripts/structured-output) mode that is more strict than JSON mode. This mode is enabled by setting `responseType` to `json_schema`. + +```js "responseSchema" script({ - ..., - responseType: `json_object`, + responseType: "json_schema", + responseSchema: {...}, }) ``` - -## Inline schemas - -You can also specify the [schema inline](/genaiscript/reference/scripts/schemas) in the script and use a mixed markdown/data that GenAIScript will parse. diff --git a/docs/src/content/docs/reference/scripts/structured-output.md b/docs/src/content/docs/reference/scripts/structured-output.md new file mode 100644 index 0000000000..d761350fdf --- /dev/null +++ b/docs/src/content/docs/reference/scripts/structured-output.md @@ -0,0 +1,28 @@ +--- +title: Structured Output +sidebar: + order: 12.1 +--- + +Structured output is a feature that allows you to generate structured data in JSON format with a [JSON schema](/genaiscript/reference/scripts/schemas). This is more strict than [JSON mode](/genaiscript/reference/scripts/json-mode) and is supported by `gpt-4o-mini`, `gpt-4o-2024-08-06` and [later models](https://platform.openai.com/docs/guides/structured-outputs/structured-outputs-vs-json-mode). + +To enable this mode, set `responseType` to `json_schema`. + +```js "responseType: 'json_schema'" +script({ + responseType: "json_schema", + responseSchema: { + type: "object", + properties: { + name: { type: "string" }, + age: { type: "number" }, + }, + required: ["name", "age"], + }, +}) +``` + +Note that there are [several restrictions](https://platform.openai.com/docs/guides/structured-outputs/how-to-use) on the schema features supported by this mode. + +- `additionalProperties: true` is not supported. +- all optional fields (e.g. not in `required`) will be returned and might be `null` \ No newline at end of file diff --git a/genaisrc/genaiscript.d.ts b/genaisrc/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/genaisrc/genaiscript.d.ts +++ b/genaisrc/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/cli/package.json b/packages/cli/package.json index cabd1b1ab4..bca2a9beb6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -61,10 +61,10 @@ "glob": "^11.0.0", "memorystream": "^0.3.1", "node-sarif-builder": "^3.1.0", - "openai": "^4.54.0", + "openai": "^4.55.0", "ora": "^8.0.1", "pretty-bytes": "^6.1.1", - "promptfoo": "^0.75.0", + "promptfoo": "^0.75.2", "prompts": "^2.4.2", "replace-ext": "^2.0.0", "semver": "^7.6.3", diff --git a/packages/core/package.json b/packages/core/package.json index b4270e11a6..28cdd98db3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -49,7 +49,7 @@ "mime-types": "^2.1.35", "minimatch": "^10.0.1", "minisearch": "^7.1.0", - "openai": "^4.54.0", + "openai": "^4.55.0", "parse-diff": "^0.11.1", "prettier": "^3.3.3", "pretty-bytes": "^6.1.1", diff --git a/packages/core/src/chat.ts b/packages/core/src/chat.ts index 1beafc34ed..8369d6c9a1 100644 --- a/packages/core/src/chat.ts +++ b/packages/core/src/chat.ts @@ -3,10 +3,18 @@ import { PromptImage, renderPromptNode } from "./promptdom" import { LanguageModelConfiguration, host } from "./host" import { GenerationOptions } from "./generation" import { JSON5TryParse, JSON5parse, isJSONObjectOrArray } from "./json5" -import { CancellationOptions, CancellationToken, checkCancelled } from "./cancellation" +import { + CancellationOptions, + CancellationToken, + checkCancelled, +} from "./cancellation" import { assert } from "./util" import { extractFenced, findFirstDataFence } from "./fence" -import { validateFencesWithSchema, validateJSONWithSchema } from "./schema" +import { + toStrictJSONSchema, + validateFencesWithSchema, + validateJSONWithSchema, +} from "./schema" import { MAX_DATA_REPAIRS, MAX_TOOL_CALLS } from "./constants" import { parseAnnotations } from "./annotations" import { errorMessage, isCancelError, serializeError } from "./error" @@ -16,11 +24,14 @@ import { createChatTurnGenerationContext } from "./runpromptcontext" import { dedent } from "./indent" import { traceLanguageModelConnection } from "./models" import { + ChatCompletionAssistantMessageParam, ChatCompletionContentPartImage, ChatCompletionMessageParam, ChatCompletionResponse, ChatCompletionsOptions, + ChatCompletionSystemMessageParam, ChatCompletionTool, + ChatCompletionToolMessageParam, ChatCompletionUserMessageParam, CreateChatCompletionRequest, } from "./chattypes" @@ -189,6 +200,21 @@ async function runToolCalls( return { edits } } +export function renderMessageContent( + msg: + | ChatCompletionAssistantMessageParam + | ChatCompletionSystemMessageParam + | ChatCompletionToolMessageParam +): string { + const content = msg.content + if (typeof content === "string") return content + else if (Array.isArray(content)) + return content + .map((c) => (c.type === "text" ? c.text : c.refusal)) + .join(` `) + return undefined +} + async function applyRepairs( messages: ChatCompletionMessageParam[], schemas: Record, @@ -202,19 +228,20 @@ async function applyRepairs( infoCb, } = options const lastMessage = messages[messages.length - 1] - if (lastMessage.role !== "assistant") return false + if (lastMessage.role !== "assistant" || lastMessage.refusal) return false - const fences = extractFenced(lastMessage.content) + const content = renderMessageContent(lastMessage) + const fences = extractFenced(content) validateFencesWithSchema(fences, schemas, { trace }) const invalids = fences.filter((f) => f?.validation?.valid === false) if (responseSchema) { - const value = JSON5TryParse(lastMessage.content) + const value = JSON5TryParse(content) const res = validateJSONWithSchema(value, responseSchema, { trace }) if (!res.valid) invalids.push({ label: "", - content: lastMessage.content, + content, validation: res, }) } @@ -290,7 +317,13 @@ function structurifyChatSession( const fences = extractFenced(text) let json: any - if (responseType === "json_object") { + if (responseType === "json_schema") { + try { + json = JSON.parse(text) + } catch (e) { + trace.error("response json_schema parsing failed", e) + } + } else if (responseType === "json_object") { try { json = JSON5parse(text, { repair: true }) if (responseSchema) { @@ -453,6 +486,7 @@ export async function executeChatSession( maxTokens, seed, responseType, + responseSchema, stats, infoCb, } = genOptions @@ -493,9 +527,21 @@ export async function executeChatSession( stream: true, messages, tools, - response_format: responseType - ? { type: responseType } - : undefined, + response_format: + responseType === "json_object" + ? { type: responseType } + : responseType === "json_schema" + ? { + type: "json_schema", + json_schema: { + name: "result", + schema: toStrictJSONSchema( + responseSchema + ), + strict: true, + }, + } + : undefined, }, connectionToken, genOptions, diff --git a/packages/core/src/chatrender.ts b/packages/core/src/chatrender.ts index 60f3ee603c..b4e4d89e30 100644 --- a/packages/core/src/chatrender.ts +++ b/packages/core/src/chatrender.ts @@ -2,6 +2,7 @@ import { ChatCompletionMessageParam } from "./chattypes" import { JSON5TryParse } from "./json5" import { details, fenceMD } from "./markdown" import { YAMLStringify } from "./yaml" +import { renderMessageContent } from "./chat" export function renderMessagesToMarkdown( messages: ChatCompletionMessageParam[], @@ -37,7 +38,7 @@ export function renderMessagesToMarkdown( res.push( details( "πŸ“™ system", - fenceMD(msg.content, "markdown"), + fenceMD(renderMessageContent(msg), "markdown"), false ) ) @@ -62,7 +63,7 @@ export function renderMessagesToMarkdown( details( `πŸ€– assistant ${msg.name ? msg.name : ""}`, [ - fenceMD(msg.content, "markdown"), + fenceMD(renderMessageContent(msg), "markdown"), ...(msg.tool_calls?.map((tc) => details( `πŸ“  tool call ${tc.function.name} (${tc.id})`, @@ -85,7 +86,7 @@ export function renderMessagesToMarkdown( res.push( details( `πŸ› οΈ tool output ${msg.tool_call_id}`, - fenceMD(msg.content, "json") + fenceMD(renderMessageContent(msg), "json") ) ) break diff --git a/packages/core/src/chattypes.ts b/packages/core/src/chattypes.ts index 8e5fc7d0a3..6b83e55059 100644 --- a/packages/core/src/chattypes.ts +++ b/packages/core/src/chattypes.ts @@ -20,6 +20,9 @@ export type ChatCompletionChunk = OpenAI.Chat.Completions.ChatCompletionChunk export type ChatCompletionSystemMessageParam = OpenAI.Chat.Completions.ChatCompletionSystemMessageParam + export type ChatCompletionToolMessageParam = + OpenAI.Chat.Completions.ChatCompletionToolMessageParam + export type ChatCompletionMessageParam = | OpenAI.Chat.Completions.ChatCompletionMessageParam | AICIRequest diff --git a/packages/core/src/expander.ts b/packages/core/src/expander.ts index 4f9cbe96f6..fca2737960 100644 --- a/packages/core/src/expander.ts +++ b/packages/core/src/expander.ts @@ -15,7 +15,7 @@ import { renderAICI } from "./aici" import { toChatCompletionUserMessage } from "./chat" import { importPrompt } from "./importprompt" import { parseModelIdentifier } from "./models" -import { JSONSchemaStringifyToTypeScript } from "./schema" +import { JSONSchemaStringifyToTypeScript, toStrictJSONSchema } from "./schema" import { host } from "./host" import { resolveSystems } from "./systems" import { GenerationOptions, GenerationStatus } from "./generation" @@ -281,7 +281,7 @@ export async function expandTemplate( const responseSchema: JSONSchema = template.responseSchema let responseType = template.responseType - if (responseSchema) { + if (responseSchema && responseType !== "json_schema") { responseType = "json_object" const typeName = "Output" const schemaTs = JSONSchemaStringifyToTypeScript(responseSchema, { @@ -301,6 +301,11 @@ ${schemaTs} role: "system", content: `Answer using JSON.`, }) + } else if (responseType === "json_schema") { + if (!responseSchema) + throw new Error(`responseSchema is required for json_schema`) + // try conversion + toStrictJSONSchema(responseSchema) } if (systemMessage.content) messages.unshift(systemMessage) diff --git a/packages/core/src/genaisrc/genaiscript.d.ts b/packages/core/src/genaisrc/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/core/src/genaisrc/genaiscript.d.ts +++ b/packages/core/src/genaisrc/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/core/src/schema.test.ts b/packages/core/src/schema.test.ts index 2af6b1c57d..af2ef79457 100644 --- a/packages/core/src/schema.test.ts +++ b/packages/core/src/schema.test.ts @@ -1,6 +1,6 @@ import { describe, test } from "node:test" import assert from "node:assert/strict" -import { JSONSchemaStringifyToTypeScript } from "./schema" +import { JSONSchemaStringifyToTypeScript, toStrictJSONSchema } from "./schema" describe("schema", () => { test("cities", () => { @@ -31,18 +31,18 @@ describe("schema", () => { } const ts = JSONSchemaStringifyToTypeScript(source, { typeName: "Foo" }) - // console.log(ts) + // console.log(ts) assert.equal( ts, - '// A list of cities with population and elevation information.\n' - + 'type Foo = Array<{\n' - + ' // The name of the city.\n' - + ' name: string,\n' - + ' // The population of the city.\n' - + ' population: number,\n' - + " // The URL of the city's Wikipedia page.\n" - + ' url: string,\n' - + ' }>' + "// A list of cities with population and elevation information.\n" + + "type Foo = Array<{\n" + + " // The name of the city.\n" + + " name: string,\n" + + " // The population of the city.\n" + + " population: number,\n" + + " // The URL of the city's Wikipedia page.\n" + + " url: string,\n" + + " }>" ) }), test("city", () => { @@ -69,7 +69,7 @@ of the city.`, } const ts = JSONSchemaStringifyToTypeScript(source) - // console.log(ts) + // console.log(ts) assert.equal( ts, "// A city with population and elevation information.\n" + @@ -84,4 +84,32 @@ of the city.`, "}" ) }) + test("strict", () => { + const source: JSONSchema = { + type: "object", + description: "A city with population and elevation information.", + properties: { + name: { + type: "string", + description: "The name of the city.", + }, + population: { + type: "number", + description: `The population +of the city.`, + }, + url: { + type: "string", + description: "The URL of the city's Wikipedia page.", + }, + }, + required: ["url"], + } + + const res = toStrictJSONSchema(source) + assert.deepStrictEqual(res.required, ["url", "name", "population"]) + assert.deepStrictEqual(res.properties["url"].type, "string") + assert.deepStrictEqual(res.properties["name"].type, ["string", "null"]) + assert.strictEqual(res.additionalProperties, false) + }) }) diff --git a/packages/core/src/schema.ts b/packages/core/src/schema.ts index 3a045b2b99..dc62d4d52f 100644 --- a/packages/core/src/schema.ts +++ b/packages/core/src/schema.ts @@ -204,3 +204,42 @@ export function JSONSchemaStringify(schema: JSONSchema) { 2 ) } + +// https://platform.openai.com/docs/guides/structured-outputs/supported-schemas +export function toStrictJSONSchema(schema: JSONSchema): any { + const clone = structuredClone(schema) + visit(clone) + + function visit(node: JSONSchemaType): void { + const { type } = node + switch (type) { + case "object": { + if (node.additionalProperties) + throw new Error("additionalProperties: true not supported") + node.additionalProperties = false + node.required = node.required || [] + for (const key in node.properties) { + // https://platform.openai.com/docs/guides/structured-outputs/all-fields-must-be-required + const child = node.properties[key] + visit(child) + if (!node.required.includes(key)) { + node.required.push(key) + if ( + ["string", "number", "boolean", "integer"].includes( + child.type + ) + ) { + child.type = [child.type, "null"] as any + } + } + } + break + } + case "array": { + visit(node.items) + break + } + } + } + return clone +} diff --git a/packages/core/src/types/prompt_template.d.ts b/packages/core/src/types/prompt_template.d.ts index 14527d29f5..566fd08449 100644 --- a/packages/core/src/types/prompt_template.d.ts +++ b/packages/core/src/types/prompt_template.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject diff --git a/packages/core/src/types/prompt_type.d.ts b/packages/core/src/types/prompt_type.d.ts index e978896a87..bbcd28aa23 100644 --- a/packages/core/src/types/prompt_type.d.ts +++ b/packages/core/src/types/prompt_type.d.ts @@ -76,7 +76,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/.vscode/settings.json b/packages/sample/.vscode/settings.json index b77490d441..a17b8d6e63 100644 --- a/packages/sample/.vscode/settings.json +++ b/packages/sample/.vscode/settings.json @@ -1,6 +1,7 @@ { "cSpell.words": [ "frontmatter", + "genaiscript", "openai", "outputfilename" ], diff --git a/packages/sample/genaisrc/genaiscript.d.ts b/packages/sample/genaisrc/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/genaisrc/genaiscript.d.ts +++ b/packages/sample/genaisrc/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/genaisrc/json_object.genai.mjs b/packages/sample/genaisrc/json_object.genai.mjs new file mode 100644 index 0000000000..59b1187ebc --- /dev/null +++ b/packages/sample/genaisrc/json_object.genai.mjs @@ -0,0 +1,17 @@ +script({ + model: "openai:gpt-3.5-turbo", + responseType: "json_object", + responseSchema: { + type: "object", + properties: { + sentences: { + type: "array", + items: { + type: "string", + }, + }, + }, + }, + tests: {}, +}) +$`Generate 3 random sentences.` diff --git a/packages/sample/genaisrc/json_schema.genai.mjs b/packages/sample/genaisrc/json_schema.genai.mjs new file mode 100644 index 0000000000..f4e4dc9132 --- /dev/null +++ b/packages/sample/genaisrc/json_schema.genai.mjs @@ -0,0 +1,16 @@ +script({ + model: "openai:gpt-4o", + responseType: "json_schema", + responseSchema: { + type: "object", + properties: { + sentences: { + type: "array", + items: { + type: "string", + }, + }, + }, + }, +}) +$`Generate 3 random sentences!` diff --git a/packages/sample/genaisrc/node/genaiscript.d.ts b/packages/sample/genaisrc/node/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/genaisrc/node/genaiscript.d.ts +++ b/packages/sample/genaisrc/node/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/genaisrc/python/genaiscript.d.ts b/packages/sample/genaisrc/python/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/genaisrc/python/genaiscript.d.ts +++ b/packages/sample/genaisrc/python/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/genaisrc/style/genaiscript.d.ts b/packages/sample/genaisrc/style/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/genaisrc/style/genaiscript.d.ts +++ b/packages/sample/genaisrc/style/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/src/aici/genaiscript.d.ts b/packages/sample/src/aici/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/src/aici/genaiscript.d.ts +++ b/packages/sample/src/aici/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/src/errors/genaiscript.d.ts b/packages/sample/src/errors/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/src/errors/genaiscript.d.ts +++ b/packages/sample/src/errors/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/src/makecode/genaiscript.d.ts b/packages/sample/src/makecode/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/src/makecode/genaiscript.d.ts +++ b/packages/sample/src/makecode/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/src/tla/genaiscript.d.ts b/packages/sample/src/tla/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/src/tla/genaiscript.d.ts +++ b/packages/sample/src/tla/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/packages/sample/src/vision/genaiscript.d.ts b/packages/sample/src/vision/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/packages/sample/src/vision/genaiscript.d.ts +++ b/packages/sample/src/vision/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/slides/genaisrc/genaiscript.d.ts b/slides/genaisrc/genaiscript.d.ts index 2f9b2b90bb..5fe0d10b40 100644 --- a/slides/genaisrc/genaiscript.d.ts +++ b/slides/genaisrc/genaiscript.d.ts @@ -100,7 +100,7 @@ type PromptOutputProcessorHandler = ( | undefined | Promise -type PromptTemplateResponseType = "json_object" | undefined +type PromptTemplateResponseType = "json_object" | "json_schema" | undefined interface ModelConnectionOptions { /** @@ -129,13 +129,15 @@ interface ModelOptions extends ModelConnectionOptions { temperature?: number /** - * Specifies the type of output. Default is `markdown`. Use `responseSchema` to - * specify an output schema. + * Specifies the type of output. Default is plain text. + * - `json_object` enables JSON mode + * - `json_schema` enables structured outputs + * Use `responseSchema` to specify an output schema. */ responseType?: PromptTemplateResponseType /** - * JSON object schema for the output. Enables the `JSON` output mode. + * JSON object schema for the output. Enables the `JSON` output mode by default. */ responseSchema?: JSONSchemaObject @@ -1730,7 +1732,7 @@ declare function defFileOutput( declare function defTool( name: string, description: string, - parameters: ChatFunctionParameters, + parameters: PromptParametersSchema | JSONSchema, fn: ChatFunctionHandler ): void diff --git a/yarn.lock b/yarn.lock index dde7f55dd6..1334bfaee2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -58,32 +58,32 @@ js-yaml "^4.1.0" "@astrojs/check@^0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@astrojs/check/-/check-0.9.1.tgz#c64d48009eecb129bd54172575f8cac25e018b2c" - integrity sha512-VvN5ukVzg0IccKuZlI/pdsp4MSpHxWf9a36eOmS8Wpp+NM0MhJLYv3yvQC+qa472Kdf8DHEt/wmVZYwJUMFW+w== + version "0.9.2" + resolved "https://registry.yarnpkg.com/@astrojs/check/-/check-0.9.2.tgz#7d5be563d1833690ae9c93209f76c44351574a55" + integrity sha512-6rWxtJTbd/ctdAlmla0CAvloGaai5IUTG0K21kctJHHGKJKnGH6Xana7m0zNOtHpVPEJi1SgC/TcsN+ltYt0Cg== dependencies: - "@astrojs/language-server" "^2.13.1" + "@astrojs/language-server" "^2.13.2" chokidar "^3.5.3" fast-glob "^3.3.1" kleur "^4.1.5" yargs "^17.7.2" -"@astrojs/compiler@^2.10.0", "@astrojs/compiler@^2.10.1": - version "2.10.1" - resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-2.10.1.tgz#36eb9dcf55f0ddc774e245eadc8c1132caac58fd" - integrity sha512-XmM4j6BjvOVMag2xELq0JuG2yKOW8wgIu6dvb9BsjbGYmnvoStJn/pqEzVqc1EBszf2xYT7onIkftIOUz9AwrQ== +"@astrojs/compiler@^2.10.0", "@astrojs/compiler@^2.10.2": + version "2.10.2" + resolved "https://registry.yarnpkg.com/@astrojs/compiler/-/compiler-2.10.2.tgz#74d06c4316cb9fe16364b23a8fc90cb456018091" + integrity sha512-bvH+v8AirwpRWCkYJEyWYdc5Cs/BjG2ZTxIJzttHilXgfKJAdW2496KsUQKzf5j2tOHtaHXKKn9hb9WZiBGpEg== "@astrojs/internal-helpers@0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@astrojs/internal-helpers/-/internal-helpers-0.4.1.tgz#ceb5de49346dbdbfb6cba1b683c07fef7df56e1c" integrity sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g== -"@astrojs/language-server@^2.13.1": - version "2.13.1" - resolved "https://registry.yarnpkg.com/@astrojs/language-server/-/language-server-2.13.1.tgz#0140f52eff5163491d84d3dbea63ee9918ec2cbf" - integrity sha512-Cl9ynfnge6+MaCpehYn7w9WrAE+sVS7onhxhMzCdqzPtIt/Yo5zIaiGZdu4QgvmOV/mdNBZCZgaTpAIeGjWwsQ== +"@astrojs/language-server@^2.13.2": + version "2.13.2" + resolved "https://registry.yarnpkg.com/@astrojs/language-server/-/language-server-2.13.2.tgz#e49974236c40d432bc476b3261e3c47fc12c4b56" + integrity sha512-l435EZLKjaUO/6iewJ7xqd3eHf3zAosVWG4woILbxluQcianBoNPepnnqAg7uUriZUaC44ae5v0Q+AfB8UI64g== dependencies: - "@astrojs/compiler" "^2.10.1" + "@astrojs/compiler" "^2.10.2" "@jridgewell/sourcemap-codec" "^1.4.15" "@volar/kit" "~2.4.0-alpha.15" "@volar/language-core" "~2.4.0-alpha.15" @@ -125,7 +125,7 @@ unist-util-visit-parents "^6.0.1" vfile "^6.0.2" -"@astrojs/mdx@^3.1.0": +"@astrojs/mdx@^3.1.3": version "3.1.3" resolved "https://registry.yarnpkg.com/@astrojs/mdx/-/mdx-3.1.3.tgz#583445541e92a8da3059ccb011526de3dfb580a2" integrity sha512-hOM4dMM4RfJI254d3p/AnOZuk2VyKszRtuY5FBm+Xc4XdhIpGrR56OXMNEcWchtwz4HQyPe/eJSgvBjSROcQIQ== @@ -153,7 +153,7 @@ dependencies: prismjs "^1.29.0" -"@astrojs/sitemap@^3.1.5": +"@astrojs/sitemap@^3.1.6": version "3.1.6" resolved "https://registry.yarnpkg.com/@astrojs/sitemap/-/sitemap-3.1.6.tgz#32bba41b6512ee97ea42633593046b1a22658260" integrity sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ== @@ -163,16 +163,16 @@ zod "^3.23.8" "@astrojs/starlight@^0.25.3": - version "0.25.3" - resolved "https://registry.yarnpkg.com/@astrojs/starlight/-/starlight-0.25.3.tgz#f1faa850e649e3c4029d16cdbf3cf2124cbb9364" - integrity sha512-XNpGbZ54ungtzen4wQkPXn50D1ZquB51paWrZftA0jWxUkj4b/pP8PijAFrGFypydhvu7Dhl0DjD07lrnSSUhQ== + version "0.25.4" + resolved "https://registry.yarnpkg.com/@astrojs/starlight/-/starlight-0.25.4.tgz#8d8e120937d3fb97e4914e3382fe511fabbad2cc" + integrity sha512-TRPgRsd5opi2tCXvh8rWizpLsJsRRXbYecULG5b/1x4BFyp40ZJVB77cLMjTj3lHwqWs0Sybtq5OBpOy6fuIEQ== dependencies: - "@astrojs/mdx" "^3.1.0" - "@astrojs/sitemap" "^3.1.5" + "@astrojs/mdx" "^3.1.3" + "@astrojs/sitemap" "^3.1.6" "@pagefind/default-ui" "^1.0.3" "@types/hast" "^3.0.4" "@types/mdast" "^4.0.4" - astro-expressive-code "^0.35.3" + astro-expressive-code "^0.35.6" bcp-47 "^2.1.0" hast-util-from-html "^2.0.1" hast-util-select "^6.0.2" @@ -185,9 +185,9 @@ rehype "^13.0.1" rehype-format "^5.0.0" remark-directive "^3.0.0" - unified "^11.0.4" + unified "^11.0.5" unist-util-visit "^5.0.0" - vfile "^6.0.1" + vfile "^6.0.2" "@astrojs/telemetry@3.1.0": version "3.1.0" @@ -1008,11 +1008,11 @@ "@expressive-code/core" "^0.35.6" "@floating-ui/core@^1.1.0": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.5.tgz#102335cac0d22035b04d70ca5ff092d2d1a26f2b" - integrity sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA== + version "1.6.7" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12" + integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g== dependencies: - "@floating-ui/utils" "^0.2.5" + "@floating-ui/utils" "^0.2.7" "@floating-ui/dom@~1.1.1": version "1.1.1" @@ -1021,10 +1021,10 @@ dependencies: "@floating-ui/core" "^1.1.0" -"@floating-ui/utils@^0.2.5": - version "0.2.5" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.5.tgz#105c37d9d9620ce69b7f692a20c821bf1ad2cbf9" - integrity sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ== +"@floating-ui/utils@^0.2.7": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e" + integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA== "@googleapis/sheets@^9.0.0": version "9.0.0" @@ -1200,29 +1200,29 @@ resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz#106f911134035b4157ec92a0c154a6b6f88fa4c1" integrity sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw== -"@inquirer/checkbox@^2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-2.4.6.tgz#e6a0ff19e61b511f321e97fcc0871d7d79d41391" - integrity sha512-PvTeflvpyZMknHBVh9g9GPaffO/zyHcLk2i2HQN7q79SN1e0Tq2orAVzLAaZR1E5YDAdOB94znJurxzY/0HbFg== +"@inquirer/checkbox@^2.4.7": + version "2.4.7" + resolved "https://registry.yarnpkg.com/@inquirer/checkbox/-/checkbox-2.4.7.tgz#0a2867a3a8c5853c79e43e99634e80c1721934ca" + integrity sha512-5YwCySyV1UEgqzz34gNsC38eKxRBtlRDpJLlKcRtTjlYA/yDKuc1rfw+hjw+2WJxbAZtaDPsRl5Zk7J14SBoBw== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/figures" "^1.0.5" "@inquirer/type" "^1.5.2" ansi-escapes "^4.3.2" yoctocolors-cjs "^2.1.2" -"@inquirer/confirm@^3.1.21": - version "3.1.21" - resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.1.21.tgz#3d2182407d21ffbb6728234f0fe695dbec1b03de" - integrity sha512-v4O/jX5b6nm7Kxf9Gn/pjIz8RzGp1e8paFTl2GuMGL2OIWcaR9fx1HhkB8CnHZrGo3J7scLwSsgTK1fG8olxZA== +"@inquirer/confirm@^3.1.22": + version "3.1.22" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-3.1.22.tgz#23990624c11f60c6f7a5b0558c7505c35076a037" + integrity sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/type" "^1.5.2" -"@inquirer/core@^9.0.9": - version "9.0.9" - resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.0.9.tgz#bcc46e9dee79b83d22670c8021027266d55a6fa7" - integrity sha512-mvQmOz1hf5dtvY+bpVK22YiwLxn5arEhykSt1IWT5GS7ojgqKLSE9P8WXI4fPimtC0ggmnf0bVbKtERlIZkV0g== +"@inquirer/core@^9.0.10": + version "9.0.10" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-9.0.10.tgz#4270191e2ad3bea6223530a093dd9479bcbc7dd0" + integrity sha512-TdESOKSVwf6+YWDz8GhS6nKscwzkIyakEzCLJ5Vh6O3Co2ClhCJ0A4MG909MUWfaWdpJm7DE45ii51/2Kat9tA== dependencies: "@inquirer/figures" "^1.0.5" "@inquirer/type" "^1.5.2" @@ -1238,21 +1238,21 @@ wrap-ansi "^6.2.0" yoctocolors-cjs "^2.1.2" -"@inquirer/editor@^2.1.21": - version "2.1.21" - resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-2.1.21.tgz#2649552daa1f0e6e444fdf1cbce71ba0ccb8b3b4" - integrity sha512-p5JYfAmEA6nqqDVCX0Cuu6EACA6/qejVBVataMew29mld3mtBWXy1g29Co86UMDQIiHA4HpOkH0hQGHlOvbGSw== +"@inquirer/editor@^2.1.22": + version "2.1.22" + resolved "https://registry.yarnpkg.com/@inquirer/editor/-/editor-2.1.22.tgz#f97eda20954da1dab47df9f4c3ae11604d56360c" + integrity sha512-K1QwTu7GCK+nKOVRBp5HY9jt3DXOfPGPr6WRDrPImkcJRelG9UTx2cAtK1liXmibRrzJlTWOwqgWT3k2XnS62w== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/type" "^1.5.2" external-editor "^3.1.0" -"@inquirer/expand@^2.1.21": - version "2.1.21" - resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-2.1.21.tgz#3bbe1ec9882fb0c941d7fbeac49d858501d73776" - integrity sha512-SxoD3mM2UwS/ovRixXic9Aav84K9+zDXD54stIGxbNZ7AryJHtudQteXw73kFTlsZCH9AhHC1TmMyakpRiAhGw== +"@inquirer/expand@^2.1.22": + version "2.1.22" + resolved "https://registry.yarnpkg.com/@inquirer/expand/-/expand-2.1.22.tgz#7593e93a516a49434629c41f3738479c8234d2df" + integrity sha512-wTZOBkzH+ItPuZ3ZPa9lynBsdMp6kQ9zbjVPYEtSBG7UulGjg2kQiAnUjgyG4SlntpTce5bOmXAPvE4sguXjpA== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/type" "^1.5.2" yoctocolors-cjs "^2.1.2" @@ -1261,72 +1261,72 @@ resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.5.tgz#57f9a996d64d3e3345d2a3ca04d36912e94f8790" integrity sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA== -"@inquirer/input@^2.2.8": - version "2.2.8" - resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-2.2.8.tgz#50ae38d1215b4e7f67e5718bd6e9dc3dabe0fc7f" - integrity sha512-DoLuc+DIJVZiDIn01hUQrxpPHF7MuE1bGfhxVfPWQDVFIqCoFQEmiUqMLx7zv4/pFArykY9j+i3uLUIOWqk+xg== +"@inquirer/input@^2.2.9": + version "2.2.9" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-2.2.9.tgz#08fdf9a48e4f6fc64c2d508b9d10afac843f9bd8" + integrity sha512-7Z6N+uzkWM7+xsE+3rJdhdG/+mQgejOVqspoW+w0AbSZnL6nq5tGMEVASaYVWbkoSzecABWwmludO2evU3d31g== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/type" "^1.5.2" -"@inquirer/number@^1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-1.0.9.tgz#f90c76aba3b1927bfb3691f88a40f39d89fb6f05" - integrity sha512-F5JqBCPnJTlLlZavRL15jGAtCXZGQiT64IMe2iOtcVIHQYYWecs5FpyqfkIDqvuOCyd4XgWPVmjeW+FssGEwFw== +"@inquirer/number@^1.0.10": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@inquirer/number/-/number-1.0.10.tgz#ac2b440ca57b5de5a231e4898c12d4453683c055" + integrity sha512-kWTxRF8zHjQOn2TJs+XttLioBih6bdc5CcosXIzZsrTY383PXI35DuhIllZKu7CdXFi2rz2BWPN9l0dPsvrQOA== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/type" "^1.5.2" -"@inquirer/password@^2.1.21": - version "2.1.21" - resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-2.1.21.tgz#4401e2d0d68bfcbae76b29c9d1bf2b859e005bfc" - integrity sha512-kaz2jtA4xp3Y4J+weEs/gTppEBRjY82pIAWz1ycU23f+Blrv8enK2d58H4sv2dvzHtsOAcRE+rF2OXkdseQuTQ== +"@inquirer/password@^2.1.22": + version "2.1.22" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-2.1.22.tgz#ec7ee5709923cf285b3e0ae53eed4fdc3c05b422" + integrity sha512-5Fxt1L9vh3rAKqjYwqsjU4DZsEvY/2Gll+QkqR4yEpy6wvzLxdSgFhUcxfDAOtO4BEoTreWoznC0phagwLU5Kw== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/type" "^1.5.2" ansi-escapes "^4.3.2" -"@inquirer/prompts@^5.3.7": - version "5.3.7" - resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-5.3.7.tgz#8cb81f82afae299daf3ddb648137e56f30a23021" - integrity sha512-rGXU6k1Vcf1Jn3tcMTKfxCNTkWhwS9moOCTGerWG1fLtjv94/ug+ZLuqp5tq5MBjSuxFIaFfNFSD8mQn24OnIw== - dependencies: - "@inquirer/checkbox" "^2.4.6" - "@inquirer/confirm" "^3.1.21" - "@inquirer/editor" "^2.1.21" - "@inquirer/expand" "^2.1.21" - "@inquirer/input" "^2.2.8" - "@inquirer/number" "^1.0.9" - "@inquirer/password" "^2.1.21" - "@inquirer/rawlist" "^2.2.3" - "@inquirer/search" "^1.0.6" - "@inquirer/select" "^2.4.6" - -"@inquirer/rawlist@^2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-2.2.3.tgz#8ce1b9857dd837434b72093855ee36881ee8ae5f" - integrity sha512-qEqDLgCJ5jIJVAo1BpJBmqJunX6HDlhbQFMsufMH2/v3T4IeNCXTGgDG0xu7qwaPfw92c1VMP64BSQJYYvKoPA== +"@inquirer/prompts@^5.3.8": + version "5.3.8" + resolved "https://registry.yarnpkg.com/@inquirer/prompts/-/prompts-5.3.8.tgz#f394050d95076c2f1b046be324f06f619b257c3e" + integrity sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA== + dependencies: + "@inquirer/checkbox" "^2.4.7" + "@inquirer/confirm" "^3.1.22" + "@inquirer/editor" "^2.1.22" + "@inquirer/expand" "^2.1.22" + "@inquirer/input" "^2.2.9" + "@inquirer/number" "^1.0.10" + "@inquirer/password" "^2.1.22" + "@inquirer/rawlist" "^2.2.4" + "@inquirer/search" "^1.0.7" + "@inquirer/select" "^2.4.7" + +"@inquirer/rawlist@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@inquirer/rawlist/-/rawlist-2.2.4.tgz#73d5d4fafa2ca012e6cfb9eb1d8ddf33bab2dde0" + integrity sha512-pb6w9pWrm7EfnYDgQObOurh2d2YH07+eDo3xQBsNAM2GRhliz6wFXGi1thKQ4bN6B0xDd6C3tBsjdr3obsCl3Q== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/type" "^1.5.2" yoctocolors-cjs "^2.1.2" -"@inquirer/search@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-1.0.6.tgz#9689f2cf7e1000e79bc208ea8b7bfd93aeb0d3d6" - integrity sha512-dZ2zOsIHPo0NgUVfvYuC6aMqAq3mcGn/XPrMXjlQhoNtsN8/pR5BmavqSmlgQo9ZY25VXF3qohWX/JzBYxHypA== +"@inquirer/search@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@inquirer/search/-/search-1.0.7.tgz#72ab9ccfb57f05dd81a8b2df26214588e048be18" + integrity sha512-p1wpV+3gd1eST/o5N3yQpYEdFNCzSP0Klrl+5bfD3cTTz8BGG6nf4Z07aBW0xjlKIj1Rp0y3x/X4cZYi6TfcLw== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/figures" "^1.0.5" "@inquirer/type" "^1.5.2" yoctocolors-cjs "^2.1.2" -"@inquirer/select@^2.4.6": - version "2.4.6" - resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.4.6.tgz#b920be057ac2993a6b036d4165f7946db5049e1a" - integrity sha512-fjcZQGyIviUBQ0Msoyf92vCmmN7Xv99vzPoybhLGBCM4cCz+l/U3p2++F7/xDJwvH70YHcvWrk8aN7STmrHMsQ== +"@inquirer/select@^2.4.7": + version "2.4.7" + resolved "https://registry.yarnpkg.com/@inquirer/select/-/select-2.4.7.tgz#6a23742b4f76d228186dfd42571d973def378ffa" + integrity sha512-JH7XqPEkBpNWp3gPCqWqY8ECbyMoFcCZANlL6pV9hf59qK6dGmkOlx1ydyhY+KZ0c5X74+W6Mtp+nm2QX0/MAQ== dependencies: - "@inquirer/core" "^9.0.9" + "@inquirer/core" "^9.0.10" "@inquirer/figures" "^1.0.5" "@inquirer/type" "^1.5.2" ansi-escapes "^4.3.2" @@ -1431,9 +1431,9 @@ xdg-basedir "^5.1.0" "@lvce-editor/verror@^1.2.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@lvce-editor/verror/-/verror-1.3.0.tgz#d63bccfe257f5804958228ef2351761518aec210" - integrity sha512-7GsD0Dq/TVcllh4UGrlmbIAChK4U4B7yERoNZItUmMmQBdBgKQwyngsiLNDdloPjd+QeK6hwJiESrBETOMns6A== + version "1.4.0" + resolved "https://registry.yarnpkg.com/@lvce-editor/verror/-/verror-1.4.0.tgz#710bb82e844e94663419675d77a02a5c9405d817" + integrity sha512-pM9sUHjzcMVySm/B8qtNR0lL60XxmKR6S0Tf2TrGW+5fK3qJHyySvfbL51smBxKRtX+MpKh+RVT5nQhWf/3m5A== "@mapbox/node-pre-gyp@^1.0.0": version "1.0.11" @@ -1855,9 +1855,9 @@ integrity sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ== "@slidev/cli@^0.49.23": - version "0.49.23" - resolved "https://registry.yarnpkg.com/@slidev/cli/-/cli-0.49.23.tgz#8a25bf8c4a25346da8c5b6e41c5bb01dfe347daa" - integrity sha512-hN/XmQuoMqYK48z6pfLolTSF+I/CTvWCGHf7rnAfJbr3sH9u7mwQY3VN5VagSOIoV/qIpq/2f8I4s+/0pINltw== + version "0.49.24" + resolved "https://registry.yarnpkg.com/@slidev/cli/-/cli-0.49.24.tgz#5f7edd4830c2938d40ea311fd12f8772069f2483" + integrity sha512-S5GF+iyp1UGOtoUL0rIVvfNR+0YSzkMnBin+HZSVFCHnh1/ZRWZKycwPLb5dCjHc7S/OQ8UKk52maO4kKdELqw== dependencies: "@antfu/ni" "^0.22.0" "@antfu/utils" "^0.7.10" @@ -1868,9 +1868,9 @@ "@shikijs/markdown-it" "^1.11.1" "@shikijs/twoslash" "^1.11.0" "@shikijs/vitepress-twoslash" "^1.11.1" - "@slidev/client" "0.49.23" - "@slidev/parser" "0.49.23" - "@slidev/types" "0.49.23" + "@slidev/client" "0.49.24" + "@slidev/parser" "0.49.24" + "@slidev/types" "0.49.24" "@unocss/extractor-mdc" "^0.61.5" "@unocss/reset" "^0.61.5" "@vitejs/plugin-vue" "^5.0.5" @@ -1930,10 +1930,10 @@ vue "^3.4.33" yargs "^17.7.2" -"@slidev/client@0.49.23": - version "0.49.23" - resolved "https://registry.yarnpkg.com/@slidev/client/-/client-0.49.23.tgz#94f20d850dbf682aa6ef0985969788792840f72f" - integrity sha512-c/Z0tcmV+/NNibqFGSzXk4vDDRKmUN7XAHOFcheHp1iO16xUA01ic/dDn+crbbBhoeokiDbGfilEWbCihQ87nA== +"@slidev/client@0.49.24": + version "0.49.24" + resolved "https://registry.yarnpkg.com/@slidev/client/-/client-0.49.24.tgz#8c60755c20043ce8816b7161e5df8ba5358cb545" + integrity sha512-0mKA4A9OPelmT3M8sj5dxeaTsQjMTx7+Zx5XllowI71RZy1BT5KCdgulM84NFkFLfVTcktRyLTgKefrMDe8XPw== dependencies: "@antfu/utils" "^0.7.10" "@iconify-json/carbon" "^1.1.36" @@ -1941,9 +1941,9 @@ "@iconify-json/svg-spinners" "^1.1.2" "@shikijs/monaco" "^1.11.1" "@shikijs/vitepress-twoslash" "^1.11.1" - "@slidev/parser" "0.49.23" + "@slidev/parser" "0.49.24" "@slidev/rough-notation" "^0.1.0" - "@slidev/types" "0.49.23" + "@slidev/types" "0.49.24" "@typescript/ata" "^0.9.6" "@unhead/vue" "^1.9.16" "@unocss/reset" "^0.61.5" @@ -1968,13 +1968,13 @@ vue-router "^4.4.0" yaml "^2.4.5" -"@slidev/parser@0.49.23": - version "0.49.23" - resolved "https://registry.yarnpkg.com/@slidev/parser/-/parser-0.49.23.tgz#bbc809f7d5ea233f9f33222b3f0d3dea50e76451" - integrity sha512-YMbEXWA3i2vkK2awFCx/wXmbYGLeHu7krsnGEPkURJhdRvu+LZPmWpq3/+LdlQXRide7BwRdFjHUEObEHXtqnQ== +"@slidev/parser@0.49.24": + version "0.49.24" + resolved "https://registry.yarnpkg.com/@slidev/parser/-/parser-0.49.24.tgz#d81934e4dc81bbf56bc50ea0e947372df4900ee7" + integrity sha512-UpLU35GlCRzOLpFrA9Wrtb88xIlwCE4DffhJZ8hfTDhqHmbuaEK358f9cF0n4N+urG7XeLAGlPe1yxdB2rDF4A== dependencies: "@antfu/utils" "^0.7.10" - "@slidev/types" "0.49.23" + "@slidev/types" "0.49.24" yaml "^2.4.5" "@slidev/rough-notation@^0.1.0": @@ -2002,10 +2002,10 @@ codemirror-theme-vars "^0.1.2" prism-theme-vars "^0.2.4" -"@slidev/types@0.49.23": - version "0.49.23" - resolved "https://registry.yarnpkg.com/@slidev/types/-/types-0.49.23.tgz#9232dea7cabcf15b91b1213e91845e126143338a" - integrity sha512-IgwGKK0nA6iX+gDOvo/n1O1cuR9EXCx4bRjnHUV/C7faeg51TuYwpitoD77if1DOXlPW0eTXeaCVJIkkJoyg5A== +"@slidev/types@0.49.24": + version "0.49.24" + resolved "https://registry.yarnpkg.com/@slidev/types/-/types-0.49.24.tgz#a3b344c2abc85fe0eaf956f20802c204bd433ade" + integrity sha512-ycV66qMmS/WNX/BSPk+Rh29F7XJR9CaPXCEJxU4NwxPMSe+CPRbp7VJSDF+2eWHAp3qvjSEeig2i6XSGJaBr7Q== dependencies: "@antfu/utils" "^0.7.10" "@shikijs/markdown-it" "^1.11.1" @@ -2915,47 +2915,47 @@ "@babel/parser" "^7.23.9" "@vue/compiler-sfc" "^3.4.15" -"@vue/compiler-core@3.4.35": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.35.tgz#421922a75ecabf1aabc6b7a2ce98b5acb2fc2d65" - integrity sha512-gKp0zGoLnMYtw4uS/SJRRO7rsVggLjvot3mcctlMXunYNsX+aRJDqqw/lV5/gHK91nvaAAlWFgdVl020AW1Prg== +"@vue/compiler-core@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.36.tgz#4e28dfcbaa8a85e135f7a94c44372b6d52329e42" + integrity sha512-qBkndgpwFKdupmOPoiS10i7oFdN7a+4UNDlezD0GlQ1kuA1pNrscg9g12HnB5E8hrWSuEftRsbJhL1HI2zpJhg== dependencies: "@babel/parser" "^7.24.7" - "@vue/shared" "3.4.35" - entities "^4.5.0" + "@vue/shared" "3.4.36" + entities "^5.0.0" estree-walker "^2.0.2" source-map-js "^1.2.0" -"@vue/compiler-dom@3.4.35", "@vue/compiler-dom@^3.4.0": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.35.tgz#cd0881f1b4ed655cd96367bce4845f87023a5a2d" - integrity sha512-pWIZRL76/oE/VMhdv/ovZfmuooEni6JPG1BFe7oLk5DZRo/ImydXijoZl/4kh2406boRQ7lxTYzbZEEXEhj9NQ== +"@vue/compiler-dom@3.4.36", "@vue/compiler-dom@^3.4.0": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.36.tgz#32f5f65d1fb242211df2ddc65a336779cd8b974c" + integrity sha512-eEIjy4GwwZTFon/Y+WO8tRRNGqylaRlA79T1RLhUpkOzJ7EtZkkb8MurNfkqY6x6Qiu0R7ESspEF7GkPR/4yYg== dependencies: - "@vue/compiler-core" "3.4.35" - "@vue/shared" "3.4.35" + "@vue/compiler-core" "3.4.36" + "@vue/shared" "3.4.36" -"@vue/compiler-sfc@3.4.35", "@vue/compiler-sfc@^3.4.15": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.35.tgz#16f87dd3bdab64cef14d3a6fcf53f8673e404071" - integrity sha512-xacnRS/h/FCsjsMfxBkzjoNxyxEyKyZfBch/P4vkLRvYJwe5ChXmZZrj8Dsed/752H2Q3JE8kYu9Uyha9J6PgA== +"@vue/compiler-sfc@3.4.36", "@vue/compiler-sfc@^3.4.15": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.36.tgz#887809183a273dc0ef8337d5e84ef6a781727ccc" + integrity sha512-rhuHu7qztt/rNH90dXPTzhB7hLQT2OC4s4GrPVqmzVgPY4XBlfWmcWzn4bIPEWNImt0CjO7kfHAf/1UXOtx3vw== dependencies: "@babel/parser" "^7.24.7" - "@vue/compiler-core" "3.4.35" - "@vue/compiler-dom" "3.4.35" - "@vue/compiler-ssr" "3.4.35" - "@vue/shared" "3.4.35" + "@vue/compiler-core" "3.4.36" + "@vue/compiler-dom" "3.4.36" + "@vue/compiler-ssr" "3.4.36" + "@vue/shared" "3.4.36" estree-walker "^2.0.2" magic-string "^0.30.10" postcss "^8.4.40" source-map-js "^1.2.0" -"@vue/compiler-ssr@3.4.35": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.35.tgz#0774c9a0afed74d71615209904b38f3fa9711adb" - integrity sha512-7iynB+0KB1AAJKk/biENTV5cRGHRdbdaD7Mx3nWcm1W8bVD6QmnH3B4AHhQQ1qZHhqFwzEzMwiytXm3PX1e60A== +"@vue/compiler-ssr@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.36.tgz#5881f9303ad6a4fdf04fb4238ebb483caf040707" + integrity sha512-Wt1zyheF0zVvRJyhY74uxQbnkXV2Le/JPOrAxooR4rFYKC7cFr+cRqW6RU3cM/bsTy7sdZ83IDuy/gLPSfPGng== dependencies: - "@vue/compiler-dom" "3.4.35" - "@vue/shared" "3.4.35" + "@vue/compiler-dom" "3.4.36" + "@vue/shared" "3.4.36" "@vue/compiler-vue2@^2.7.16": version "2.7.16" @@ -2984,43 +2984,43 @@ muggle-string "^0.4.1" path-browserify "^1.0.1" -"@vue/reactivity@3.4.35": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.35.tgz#dfbb4f5371da1290ac86e3313d0e9a68bb0ab38d" - integrity sha512-Ggtz7ZZHakriKioveJtPlStYardwQH6VCs9V13/4qjHSQb/teE30LVJNrbBVs4+aoYGtTQKJbTe4CWGxVZrvEw== +"@vue/reactivity@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.36.tgz#f0797308b1639db7f303e91fdd20577ad538a817" + integrity sha512-wN1aoCwSoqrt1yt8wO0gc13QaC+Vk1o6AoSt584YHNnz6TGDhh1NCMUYgAnvp4HEIkLdGsaC1bvu/P+wpoDEXw== dependencies: - "@vue/shared" "3.4.35" + "@vue/shared" "3.4.36" -"@vue/runtime-core@3.4.35": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.35.tgz#c036013a7b1bbe0d14a6b76eb4355dae6690d2e6" - integrity sha512-D+BAjFoWwT5wtITpSxwqfWZiBClhBbR+bm0VQlWYFOadUUXFo+5wbe9ErXhLvwguPiLZdEF13QAWi2vP3ZD5tA== +"@vue/runtime-core@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.36.tgz#7d956671800b2567deebf4a5f92cb476404dfa94" + integrity sha512-9+TR14LAVEerZWLOm/N/sG2DVYhrH2bKgFrbH/FVt/Q8Jdw4OtdcGMRC6Tx8VAo0DA1eqAqrZaX0fbOaOxxZ4A== dependencies: - "@vue/reactivity" "3.4.35" - "@vue/shared" "3.4.35" + "@vue/reactivity" "3.4.36" + "@vue/shared" "3.4.36" -"@vue/runtime-dom@3.4.35": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.35.tgz#74254c7c327163d692e1d7d2b6d9e92463744e90" - integrity sha512-yGOlbos+MVhlS5NWBF2HDNgblG8e2MY3+GigHEyR/dREAluvI5tuUUgie3/9XeqhPE4LF0i2wjlduh5thnfOqw== +"@vue/runtime-dom@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.36.tgz#e4eeeba2cb2b9645de45eebd023939a35fff5e30" + integrity sha512-2Qe2fKkLxgZBVvHrG0QMNLL4bsx7Ae88pyXebY2WnQYABpOnGYvA+axMbcF9QwM4yxnsv+aELbC0eiNVns7mGw== dependencies: - "@vue/reactivity" "3.4.35" - "@vue/runtime-core" "3.4.35" - "@vue/shared" "3.4.35" + "@vue/reactivity" "3.4.36" + "@vue/runtime-core" "3.4.36" + "@vue/shared" "3.4.36" csstype "^3.1.3" -"@vue/server-renderer@3.4.35": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.35.tgz#188e94e82d8e729ba7b40dd91d10678b85f77c6b" - integrity sha512-iZ0e/u9mRE4T8tNhlo0tbA+gzVkgv8r5BX6s1kRbOZqfpq14qoIvCZ5gIgraOmYkMYrSEZgkkojFPr+Nyq/Mnw== +"@vue/server-renderer@3.4.36": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.36.tgz#352138e6a31a5eeabcbb75e66f6919f607f8c870" + integrity sha512-2XW90Rq8+Y7S1EIsAuubZVLm0gCU8HYb5mRAruFdwfC3XSOU5/YKePz29csFzsch8hXaY5UHh7ZMddmi1XTJEA== dependencies: - "@vue/compiler-ssr" "3.4.35" - "@vue/shared" "3.4.35" + "@vue/compiler-ssr" "3.4.36" + "@vue/shared" "3.4.36" -"@vue/shared@3.4.35", "@vue/shared@^3.4.0": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.35.tgz#5432f4b1c79e763fcf78cc830faf59ff01248968" - integrity sha512-hvuhBYYDe+b1G8KHxsQ0diDqDMA8D9laxWZhNAjE83VZb5UDaXl9Xnz7cGdDSyiHM90qqI/CyGMcpBpiDy6VVQ== +"@vue/shared@3.4.36", "@vue/shared@^3.4.0": + version "3.4.36" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.36.tgz#7551f41684966acb6a307152b49a8308e7f69203" + integrity sha512-fdPLStwl1sDfYuUftBaUVn2pIrVFDASYerZSrlBvVBfylObPA1gtcWJHy5Ox8jLEJ524zBibss488Q3SZtU1uA== "@vueuse/core@^10.10.0", "@vueuse/core@^10.11.0": version "10.11.0" @@ -3321,7 +3321,7 @@ astring@^1.8.0: resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== -astro-expressive-code@^0.35.3: +astro-expressive-code@^0.35.6: version "0.35.6" resolved "https://registry.yarnpkg.com/astro-expressive-code/-/astro-expressive-code-0.35.6.tgz#5029d44cba99c674e1225968de1382466b997f3d" integrity sha512-1U4KrvFuodaCV3z4I1bIR16SdhQlPkolGsYTtiANxPZUVv/KitGSCTjzksrkPonn1XuwVqvnwmUUVzTLWngnBA== @@ -3847,9 +3847,9 @@ camelcase@^7.0.1: integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== caniuse-lite@^1.0.30001646: - version "1.0.30001649" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001649.tgz#3ec700309ca0da2b0d3d5fb03c411b191761c992" - integrity sha512-fJegqZZ0ZX8HOWr6rcafGr72+xcgJKI9oWfDW5DrD7ExUtgZC7a7R7ZYmZqplh7XDocFdGeIFn7roAxhOeYrPQ== + version "1.0.30001650" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001650.tgz#dd1eba0938e39536d184c3c99b2569a13788bc16" + integrity sha512-fgEc7hP/LB7iicdXHUI9VsBsMZmUmlVJeQP2qqQW+3lkqVhbmjEU8zp+h5stWeilX+G7uXuIUIIlWlDw9jdt8g== canvas@^2.11.2: version "2.11.2" @@ -4999,9 +4999,9 @@ drauu@^0.4.0: "@drauu/core" "0.4.0" drizzle-orm@^0.32.1: - version "0.32.1" - resolved "https://registry.yarnpkg.com/drizzle-orm/-/drizzle-orm-0.32.1.tgz#4e28c22d7f2a60aef3f0837c0a06aa7b3378b082" - integrity sha512-Wq1J+lL8PzwR5K3a1FfoWsbs8powjr3pGA4+5+2ueN1VTLDNFYEolUyUWFtqy8DVRvYbL2n7sXZkgVmK9dQkng== + version "0.32.2" + resolved "https://registry.yarnpkg.com/drizzle-orm/-/drizzle-orm-0.32.2.tgz#a44d8703120d44ad8005c6130b0b96ef967534d3" + integrity sha512-3fXKzPzrgZIcnWCSLiERKN5Opf9Iagrag75snfFlKeKSYB1nlgPBshzW3Zn6dQymkyiib+xc4nIz0t8U+Xdpuw== dset@^3.1.3: version "3.1.3" @@ -5038,9 +5038,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz#cd477c830dd6fca41fbd5465c1ff6ce08ac22343" - integrity sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA== + version "1.5.5" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.5.tgz#03bfdf422bdd2c05ee2657efedde21264a1a566b" + integrity sha512-QR7/A7ZkMS8tZuoftC/jfqNkZLQO779SSW3YuZHP4eXpj3EffGLFcB/Xu9AAZQzLccTiCV+EmUo3ha4mQ9wnlA== elkjs@^0.9.0: version "0.9.3" @@ -5113,6 +5113,11 @@ entities@^4.2.0, entities@^4.4.0, entities@^4.5.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== +entities@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-5.0.0.tgz#b2ab51fe40d995817979ec79dd621154c3c0f62b" + integrity sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA== + entities@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" @@ -6843,11 +6848,11 @@ inline-style-parser@0.2.3: integrity sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g== inquirer@^10.1.6: - version "10.1.7" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-10.1.7.tgz#39ad92791df091ddcd07c7ac0f9b0cd54077cf19" - integrity sha512-GFlmyLseYNfArEihk9ufjmnVJGDrZIv+zh8Qai2LaYH7g9yqHftR0BQqo3rW1Dmjivj4VYL7+WE7GtxG6rAUnQ== + version "10.1.8" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-10.1.8.tgz#727887af8a3646d8dd3eebc098c42884dc4d7151" + integrity sha512-syxGpOzLyqVeZi1KDBjRTnCn5PiGWySGHP0BbqXbqsEK0ckkZk3egAepEWslUjZXj0rhkUapVXM/IpADWe4D6w== dependencies: - "@inquirer/prompts" "^5.3.7" + "@inquirer/prompts" "^5.3.8" "@inquirer/type" "^1.5.2" "@types/mute-stream" "^0.0.4" ansi-escapes "^4.3.2" @@ -9182,10 +9187,10 @@ openai@^3.2.1: axios "^0.26.0" form-data "^4.0.0" -openai@^4.53.2, openai@^4.54.0: - version "4.54.0" - resolved "https://registry.yarnpkg.com/openai/-/openai-4.54.0.tgz#eeb209c6892b997e524181b6ddb7e27bf4d09389" - integrity sha512-e/12BdtTtj+tXs7iHm+Dm7H7WjEWnw7O52B2wSfCQ6lD5F6cvjzo7cANXy5TJ1Q3/qc8YRPT5wBTTFtP5sBp1g== +openai@^4.54.0, openai@^4.55.0: + version "4.55.0" + resolved "https://registry.yarnpkg.com/openai/-/openai-4.55.0.tgz#d28b5a0b97214de4a2f018efd4665468e6c1fd94" + integrity sha512-BR3TUybzdqNeBMgEFvxgBrFks9FY2NoP2jyTf7LT4UxPv8chevRKSxKezsINVSeQ/QLA12CALR1oco6KVdVpVA== dependencies: "@types/node" "^18.11.18" "@types/node-fetch" "^2.6.4" @@ -9657,9 +9662,9 @@ postcss-selector-parser@^6.1.1: util-deprecate "^1.0.2" postcss@^8.4.38, postcss@^8.4.39, postcss@^8.4.40: - version "8.4.40" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.40.tgz#eb81f2a4dd7668ed869a6db25999e02e9ad909d8" - integrity sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q== + version "8.4.41" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" + integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== dependencies: nanoid "^3.3.7" picocolors "^1.0.1" @@ -9744,10 +9749,10 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -promptfoo@^0.75.0: - version "0.75.0" - resolved "https://registry.yarnpkg.com/promptfoo/-/promptfoo-0.75.0.tgz#5543bcdec02a7ed0645733fac52bd719a5bb8e90" - integrity sha512-EsO/NnXX1mk4IEQUIY441KQ0C7x51n3UZcFFPFnv90f8umrSwjjkqg9E1eNYoEYmAeYJJLDxQ9uHS/XPMXbdQw== +promptfoo@^0.75.2: + version "0.75.2" + resolved "https://registry.yarnpkg.com/promptfoo/-/promptfoo-0.75.2.tgz#2e101a137aab16a5cfa71b9c9b476758ee17dc0f" + integrity sha512-NRqGbJZZu8P4CPFjBdsCg6l6tSO+dtiOIJCUGBLW6pZy9MfEQf9iphohy4Z8IfkgF1H8fXUJP8ZwLajunu/nUw== dependencies: "@anthropic-ai/sdk" "^0.25.0" "@apidevtools/json-schema-ref-parser" "^11.7.0" @@ -9781,7 +9786,7 @@ promptfoo@^0.75.0: mathjs "^13.0.3" node-fetch "^2.6.7" nunjucks "^3.2.4" - openai "^4.53.2" + openai "^4.54.0" opener "^1.5.2" proxy-agent "^6.4.0" python-shell "^5.0.0" @@ -11726,9 +11731,9 @@ unpipe@1.0.0, unpipe@~1.0.0: integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unplugin-icons@^0.19.0: - version "0.19.1" - resolved "https://registry.yarnpkg.com/unplugin-icons/-/unplugin-icons-0.19.1.tgz#82934cc7353f5d0e5423c859cd22e7a39f854594" - integrity sha512-a5I+wSOO5lsgc4dB2nEFaSZ4eEgQvSSR8tSR2jT69nTKiVmcK+PPU633zn2FyRf9i6vLapUiQ28GQStfzGURdg== + version "0.19.2" + resolved "https://registry.yarnpkg.com/unplugin-icons/-/unplugin-icons-0.19.2.tgz#f446a5c105787217f5002eb2da39fb994fa05113" + integrity sha512-QkQJ/Iz3PFr/EoiOvFUQYvqbbJZ7Vs3hObKAFHh5eywTU1PQagSNeXKGRD+JpzXSTnUNLtG0u/xEA5Ec2OeANQ== dependencies: "@antfu/install-pkg" "^0.3.3" "@antfu/utils" "^0.7.10" @@ -11933,7 +11938,7 @@ vfile-message@^4.0.0: "@types/unist" "^3.0.0" unist-util-stringify-position "^4.0.0" -vfile@^6.0.0, vfile@^6.0.1, vfile@^6.0.2: +vfile@^6.0.0, vfile@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/vfile/-/vfile-6.0.2.tgz#ef49548ea3d270097a67011921411130ceae7deb" integrity sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg== @@ -12136,22 +12141,22 @@ vue-resize@^2.0.0-alpha.1: integrity sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg== vue-router@^4.4.0: - version "4.4.2" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.4.2.tgz#bc7bf27f108fc15e5cc2a30b314a662275e2b2bb" - integrity sha512-1qNybkn2L7QsLzaXs8nvlQmRKp8XF8DCxZys/Jr1JpQcHsKUxTKzTxCVA1G7NfBfwRIBgCJPoujOG5lHCCNUxw== + version "4.4.3" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.4.3.tgz#58a39dc804632bfb6d26f052aa8f6718bd130299" + integrity sha512-sv6wmNKx2j3aqJQDMxLFzs/u/mjA9Z5LCgy6BE0f7yFWMjrPLnS/sPNn8ARY/FXw6byV18EFutn5lTO6+UsV5A== dependencies: "@vue/devtools-api" "^6.6.3" vue@^3.4.33, vue@^3.4.35: - version "3.4.35" - resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.35.tgz#9ad23525919eece40153fdf8675d07ddd879eb33" - integrity sha512-+fl/GLmI4GPileHftVlCdB7fUL4aziPcqTudpTGXCT8s+iZWuOCeNEB5haX6Uz2IpRrbEXOgIFbe+XciCuGbNQ== - dependencies: - "@vue/compiler-dom" "3.4.35" - "@vue/compiler-sfc" "3.4.35" - "@vue/runtime-dom" "3.4.35" - "@vue/server-renderer" "3.4.35" - "@vue/shared" "3.4.35" + version "3.4.36" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.36.tgz#b2d9af110c8e9afdf08f4eec0d9196949877447c" + integrity sha512-mIFvbLgjODfx3Iy1SrxOsiPpDb8Bo3EU+87ioimOZzZTOp15IEdAels70IjBOLO3ZFlLW5AhdwY4dWbXVQKYow== + dependencies: + "@vue/compiler-dom" "3.4.36" + "@vue/compiler-sfc" "3.4.36" + "@vue/runtime-dom" "3.4.36" + "@vue/server-renderer" "3.4.36" + "@vue/shared" "3.4.36" wawoff2@^2.0.0: version "2.0.1"