diff --git a/ui/desktop/package.json b/ui/desktop/package.json index 3a761f931..f4fd660a7 100644 --- a/ui/desktop/package.json +++ b/ui/desktop/package.json @@ -102,8 +102,7 @@ "tw-animate-css": "^1.4.0", "unist-util-visit": "^5.1.0", "uuid": "^13.0.0", - "zod": "^3.25.76", - "zod-to-json-schema": "3.25.1" + "zod": "^4.4.3" }, "devDependencies": { "@electron-forge/cli": "^7.11.1", diff --git a/ui/desktop/src/components/recipes/shared/recipeFormSchema.ts b/ui/desktop/src/components/recipes/shared/recipeFormSchema.ts index bd29294f8..d1c098ab9 100644 --- a/ui/desktop/src/components/recipes/shared/recipeFormSchema.ts +++ b/ui/desktop/src/components/recipes/shared/recipeFormSchema.ts @@ -19,7 +19,7 @@ const subRecipeSchema = z.object({ name: z.string().min(1, 'Subrecipe name is required'), path: z.string().min(1, 'Subrecipe path is required'), description: z.string().optional(), - values: z.record(z.string()).nullable().optional(), + values: z.record(z.string(), z.string()).nullable().optional(), sequential_when_repeated: z.boolean().default(false), }); diff --git a/ui/desktop/src/recipe/validation.ts b/ui/desktop/src/recipe/validation.ts index 299fe63e9..61cf3b70c 100644 --- a/ui/desktop/src/recipe/validation.ts +++ b/ui/desktop/src/recipe/validation.ts @@ -1,5 +1,5 @@ import { zRecipeDto } from '@aaif/goose-sdk'; -import { zodToJsonSchema } from 'zod-to-json-schema'; +import { z } from 'zod'; type JsonSchema = Record; @@ -11,7 +11,7 @@ let recipeJsonSchema: JsonSchema | null = null; export function getRecipeJsonSchema(): JsonSchema { if (!recipeJsonSchema) { recipeJsonSchema = { - ...(zodToJsonSchema(zRecipeDto, { $refStrategy: 'none' }) as JsonSchema), + ...(z.toJSONSchema(zRecipeDto, { target: 'draft-07', reused: 'inline' }) as JsonSchema), title: 'Recipe', description: recipeDescription, }; diff --git a/ui/pnpm-lock.yaml b/ui/pnpm-lock.yaml index 8dda6aa34..ddcfc8030 100644 --- a/ui/pnpm-lock.yaml +++ b/ui/pnpm-lock.yaml @@ -23,13 +23,13 @@ importers: version: link:../sdk '@agentclientprotocol/sdk': specifier: 1.3.0 - version: 1.3.0(zod@3.25.76) + version: 1.3.0(zod@4.4.3) '@mcp-ui/client': specifier: 6.1.0 version: 6.1.0(@preact/signals-core@1.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) '@modelcontextprotocol/ext-apps': specifier: ^1.1.1 - version: 1.2.2(@modelcontextprotocol/sdk@1.27.1(zod@3.25.76))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@3.25.76) + version: 1.2.2(@modelcontextprotocol/sdk@1.27.1(zod@4.4.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) '@radix-ui/react-accordion': specifier: ^1.2.12 version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) @@ -178,11 +178,8 @@ importers: specifier: ^13.0.0 version: 13.0.0 zod: - specifier: ^3.25.76 - version: 3.25.76 - zod-to-json-schema: - specifier: 3.25.1 - version: 3.25.1(zod@3.25.76) + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@electron-forge/cli': specifier: ^7.11.1 @@ -225,7 +222,7 @@ importers: version: 3.5.3 '@modelcontextprotocol/sdk': specifier: ^1.27.0 - version: 1.27.1(zod@3.25.76) + version: 1.27.1(zod@4.4.3) '@playwright/test': specifier: ^1.58.2 version: 1.58.2 @@ -349,17 +346,17 @@ importers: dependencies: '@modelcontextprotocol/ext-apps': specifier: ^0.3.1 - version: 0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@3.25.76))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@3.25.76) + version: 0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@4.4.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3) '@modelcontextprotocol/sdk': specifier: ^1.27.0 - version: 1.27.1(zod@3.25.76) + version: 1.27.1(zod@4.4.3) zod: - specifier: ^3.25.76 - version: 3.25.76 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@agentclientprotocol/sdk': specifier: 1.3.0 - version: 1.3.0(zod@3.25.76) + version: 1.3.0(zod@4.4.3) '@hey-api/openapi-ts': specifier: ^0.92.3 version: 0.92.4(magicast@0.5.2)(typescript@5.9.3) @@ -728,7 +725,7 @@ packages: engines: {node: '>=22.12.0'} '@electron/node-gyp@https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2': - resolution: {gitHosted: true, tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} + resolution: {tarball: https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2} version: 10.2.0-electron.1 engines: {node: '>=12.13.0'} hasBin: true @@ -3176,6 +3173,9 @@ packages: brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + brace-expansion@2.1.4: resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} @@ -4377,8 +4377,8 @@ packages: resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} - ip-address@10.5.0: - resolution: {integrity: sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==} + ip-address@10.2.0: + resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -6867,8 +6867,8 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.3.6: - resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -6879,9 +6879,9 @@ snapshots: '@adobe/css-tools@4.4.4': {} - '@agentclientprotocol/sdk@1.3.0(zod@3.25.76)': + '@agentclientprotocol/sdk@1.3.0(zod@4.4.3)': dependencies: - zod: 3.25.76 + zod: 4.4.3 '@asamuzakjp/css-color@5.0.1': dependencies: @@ -8108,7 +8108,7 @@ snapshots: '@mcp-ui/client@6.1.0(@preact/signals-core@1.14.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': dependencies: - '@modelcontextprotocol/ext-apps': 0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@3.25.76))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@3.25.76) + '@modelcontextprotocol/ext-apps': 0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@4.4.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@3.25.76) '@modelcontextprotocol/sdk': 1.27.1(zod@3.25.76) '@quilted/threads': 3.3.1(@preact/signals-core@1.14.0) '@r2wc/react-to-web-component': 2.1.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8) @@ -8125,9 +8125,9 @@ snapshots: '@mixmark-io/domino@2.2.0': {} - '@modelcontextprotocol/ext-apps@0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@3.25.76))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@3.25.76)': + '@modelcontextprotocol/ext-apps@0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@4.4.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@3.25.76)': dependencies: - '@modelcontextprotocol/sdk': 1.27.1(zod@3.25.76) + '@modelcontextprotocol/sdk': 1.27.1(zod@4.4.3) zod: 3.25.76 optionalDependencies: '@oven/bun-darwin-aarch64': 1.3.10 @@ -8150,10 +8150,35 @@ snapshots: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - '@modelcontextprotocol/ext-apps@1.2.2(@modelcontextprotocol/sdk@1.27.1(zod@3.25.76))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@3.25.76)': + '@modelcontextprotocol/ext-apps@0.3.1(@modelcontextprotocol/sdk@1.27.1(zod@4.4.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3)': dependencies: - '@modelcontextprotocol/sdk': 1.27.1(zod@3.25.76) - zod: 3.25.76 + '@modelcontextprotocol/sdk': 1.27.1(zod@4.4.3) + zod: 4.4.3 + optionalDependencies: + '@oven/bun-darwin-aarch64': 1.3.10 + '@oven/bun-darwin-x64': 1.3.10 + '@oven/bun-darwin-x64-baseline': 1.3.10 + '@oven/bun-linux-aarch64': 1.3.10 + '@oven/bun-linux-aarch64-musl': 1.3.10 + '@oven/bun-linux-x64': 1.3.10 + '@oven/bun-linux-x64-baseline': 1.3.10 + '@oven/bun-linux-x64-musl': 1.3.10 + '@oven/bun-linux-x64-musl-baseline': 1.3.10 + '@oven/bun-windows-x64': 1.3.10 + '@oven/bun-windows-x64-baseline': 1.3.10 + '@rollup/rollup-darwin-arm64': 4.59.0 + '@rollup/rollup-darwin-x64': 4.59.0 + '@rollup/rollup-linux-arm64-gnu': 4.59.0 + '@rollup/rollup-linux-x64-gnu': 4.59.0 + '@rollup/rollup-win32-arm64-msvc': 4.59.0 + '@rollup/rollup-win32-x64-msvc': 4.59.0 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + + '@modelcontextprotocol/ext-apps@1.2.2(@modelcontextprotocol/sdk@1.27.1(zod@4.4.3))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.4.3)': + dependencies: + '@modelcontextprotocol/sdk': 1.27.1(zod@4.4.3) + zod: 4.4.3 optionalDependencies: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -8180,6 +8205,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@modelcontextprotocol/sdk@1.27.1(zod@4.4.3)': + dependencies: + '@hono/node-server': 1.19.11(hono@4.12.8) + ajv: 8.18.0 + ajv-formats: 3.0.1(ajv@8.18.0) + content-type: 1.0.5 + cors: 2.8.6 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.0.6 + express: 5.2.1 + express-rate-limit: 8.3.1(express@5.2.1) + hono: 4.12.8 + jose: 6.2.2 + json-schema-typed: 8.0.2 + pkce-challenge: 5.0.1 + raw-body: 3.0.2 + zod: 4.4.3 + zod-to-json-schema: 3.25.1(zod@4.4.3) + transitivePeerDependencies: + - supports-color + '@napi-rs/wasm-runtime@1.1.1': dependencies: '@emnapi/core': 1.9.1 @@ -10059,6 +10106,10 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 + brace-expansion@2.1.1: + dependencies: + balanced-match: 1.0.2 + brace-expansion@2.1.4: dependencies: balanced-match: 1.0.2 @@ -11529,7 +11580,7 @@ snapshots: ip-address@10.1.0: {} - ip-address@10.5.0: {} + ip-address@10.2.0: {} ipaddr.js@1.9.1: {} @@ -11839,7 +11890,7 @@ snapshots: typescript: 5.9.3 unbash: 2.2.0 yaml: 2.8.2 - zod: 4.3.6 + zod: 4.4.3 lazy-val@1.0.5: {} @@ -12508,7 +12559,7 @@ snapshots: minimatch@5.1.9: dependencies: - brace-expansion: 2.1.4 + brace-expansion: 2.1.1 minimatch@9.0.9: dependencies: @@ -13611,7 +13662,7 @@ snapshots: socks@2.8.9: dependencies: - ip-address: 10.5.0 + ip-address: 10.2.0 smart-buffer: 4.2.0 source-map-js@1.2.1: {} @@ -14380,8 +14431,12 @@ snapshots: dependencies: zod: 3.25.76 + zod-to-json-schema@3.25.1(zod@4.4.3): + dependencies: + zod: 4.4.3 + zod@3.25.76: {} - zod@4.3.6: {} + zod@4.4.3: {} zwitch@2.0.4: {} diff --git a/ui/sdk/package.json b/ui/sdk/package.json index 770011c1a..b7bd371c0 100644 --- a/ui/sdk/package.json +++ b/ui/sdk/package.json @@ -43,7 +43,7 @@ "dependencies": { "@modelcontextprotocol/ext-apps": "^0.3.1", "@modelcontextprotocol/sdk": "^1.27.0", - "zod": "^3.25.76" + "zod": "^4.4.3" }, "peerDependencies": { "@agentclientprotocol/sdk": "^1.3.0" diff --git a/ui/sdk/src/generated/zod.gen.ts b/ui/sdk/src/generated/zod.gen.ts index 8a8f9c1c7..8bb6f5b26 100644 --- a/ui/sdk/src/generated/zod.gen.ts +++ b/ui/sdk/src/generated/zod.gen.ts @@ -1,6 +1,6 @@ // This file is auto-generated by @hey-api/openapi-ts -import { z } from 'zod'; +import * as z from 'zod'; /** * An HTTP header to set when making requests to the MCP server. @@ -8,10 +8,10 @@ import { z } from 'zod'; export const zHttpHeader = z.object({ name: z.string(), value: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** @@ -21,10 +21,10 @@ export const zMcpServerHttp = z.object({ name: z.string(), url: z.string(), headers: z.array(zHttpHeader), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional(), + ])), type: z.literal('http') }); @@ -35,10 +35,10 @@ export const zMcpServerSse = z.object({ name: z.string(), url: z.string(), headers: z.array(zHttpHeader), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional(), + ])), type: z.literal('sse') }); @@ -48,10 +48,10 @@ export const zMcpServerSse = z.object({ export const zEnvVariable = z.object({ name: z.string(), value: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** @@ -62,10 +62,10 @@ export const zMcpServerStdio = z.object({ command: z.string(), args: z.array(z.string()), env: z.array(zEnvVariable), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** @@ -85,80 +85,80 @@ export const zMcpServer = z.union([ export const zGooseExtension = z.union([ z.object({ name: z.string(), - description: z.union([ + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), - display_name: z.union([ + ])), + display_name: z.optional(z.union([ z.string(), z.null() - ]).optional(), - timeout: z.union([ - z.number().int().gte(0), + ])), + timeout: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - bundled: z.union([ + ])), + bundled: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - available_tools: z.union([ + ])), + available_tools: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), + ])), type: z.literal('builtin') }), z.object({ name: z.string(), - description: z.union([ + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), - display_name: z.union([ + ])), + display_name: z.optional(z.union([ z.string(), z.null() - ]).optional(), - bundled: z.union([ + ])), + bundled: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - available_tools: z.union([ + ])), + available_tools: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), + ])), type: z.literal('platform') }), z.object({ server: zMcpServer, - envKeys: z.array(z.string()).optional(), - description: z.union([ + envKeys: z.optional(z.array(z.string())), + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), - timeout: z.union([ - z.number().int().gte(0), + ])), + timeout: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - socket: z.union([ + ])), + socket: z.optional(z.union([ z.string(), z.null() - ]).optional(), - clientId: z.union([ + ])), + clientId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - clientSecretKey: z.union([ + ])), + clientSecretKey: z.optional(z.union([ z.string(), z.null() - ]).optional(), - scopes: z.array(z.string()).optional(), - bundled: z.union([ + ])), + scopes: z.optional(z.array(z.string())), + bundled: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - available_tools: z.union([ + ])), + available_tools: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), + ])), type: z.literal('mcp') }) ]); @@ -174,7 +174,7 @@ export const zAddSessionExtensionRequest_unstable = z.object({ /** * Empty success response for operations that return no data. */ -export const zEmptyResponse = z.record(z.unknown()); +export const zEmptyResponse = z.record(z.string(), z.unknown()); /** * Remove an extension from an active session. @@ -189,10 +189,10 @@ export const zRemoveSessionExtensionRequest_unstable = z.object({ */ export const zGetToolsRequest_unstable = z.object({ sessionId: z.string(), - extensionName: z.union([ + extensionName: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -211,12 +211,12 @@ export const zToolListItem = z.object({ name: z.string(), description: z.string(), parameters: z.array(z.string()), - permission: z.union([ + permission: z.optional(z.union([ zToolPermissionLevel, z.null() - ]).optional(), + ])), inputSchema: z.unknown(), - outputSchema: z.unknown().optional() + outputSchema: z.optional(z.unknown()) }); /** @@ -241,7 +241,7 @@ export const zSetToolPermissionsRequest_unstable = z.object({ toolPermissions: z.array(zToolPermissionEntry) }); -export const zSetToolPermissionsResponse_unstable = z.record(z.unknown()); +export const zSetToolPermissionsResponse_unstable = z.record(z.string(), z.unknown()); /** * Call a tool from an extension. @@ -249,17 +249,17 @@ export const zSetToolPermissionsResponse_unstable = z.record(z.unknown()); export const zGooseToolCallRequest_unstable = z.object({ sessionId: z.string(), name: z.string(), - arguments: z.unknown().optional().default(null) + arguments: z.optional(z.unknown()).default(null) }); /** * Tool call response. */ export const zGooseToolCallResponse_unstable = z.object({ - content: z.array(z.unknown()).optional().default([]), - structuredContent: z.unknown().optional(), + content: z.optional(z.array(z.unknown())).default([]), + structuredContent: z.optional(z.unknown()), isError: z.boolean(), - _meta: z.unknown().optional() + _meta: z.optional(z.unknown()) }); /** @@ -275,18 +275,18 @@ export const zReadResourceRequest_unstable = z.object({ * Resource read response. */ export const zReadResourceResponse_unstable = z.object({ - result: z.unknown().optional().default(null) + result: z.optional(z.unknown()).default(null) }); export const zAppsListRequest_unstable = z.object({ - sessionId: z.union([ + sessionId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zAppsListResponse_unstable = z.object({ - apps: z.array(z.unknown()).optional().default([]) + apps: z.optional(z.array(z.unknown())).default([]) }); export const zAppsExportRequest_unstable = z.object({ @@ -340,11 +340,11 @@ export const zSessionSystemPromptMode = z.union([ */ export const zSetSessionSystemPromptRequest_unstable = z.object({ sessionId: z.string(), - mode: zSessionSystemPromptMode.optional().default('append'), - key: z.union([ + mode: z.optional(zSessionSystemPromptMode).default('append'), + key: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), text: z.string() }); @@ -360,121 +360,121 @@ export const zRole = z.union([ * Optional annotations for the client. The client can use annotations to inform how objects are used or displayed */ export const zAnnotations = z.object({ - audience: z.union([ + audience: z.optional(z.union([ z.array(zRole), z.null() - ]).optional(), - lastModified: z.union([ + ])), + lastModified: z.optional(z.union([ z.string(), z.null() - ]).optional(), - priority: z.union([ + ])), + priority: z.optional(z.union([ z.number(), z.null() - ]).optional(), - _meta: z.union([ - z.record(z.unknown()), + ])), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** * Text provided to or from an LLM. */ export const zTextContent = z.object({ - annotations: z.union([ + annotations: z.optional(z.union([ zAnnotations, z.null() - ]).optional(), + ])), text: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** * An image provided to or from an LLM. */ export const zImageContent = z.object({ - annotations: z.union([ + annotations: z.optional(z.union([ zAnnotations, z.null() - ]).optional(), + ])), data: z.string(), mimeType: z.string(), - uri: z.union([ + uri: z.optional(z.union([ z.string(), z.null() - ]).optional(), - _meta: z.union([ - z.record(z.unknown()), + ])), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** * Audio provided to or from an LLM. */ export const zAudioContent = z.object({ - annotations: z.union([ + annotations: z.optional(z.union([ zAnnotations, z.null() - ]).optional(), + ])), data: z.string(), mimeType: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** * A resource that the server is capable of reading, included in a prompt or tool call result. */ export const zResourceLink = z.object({ - annotations: z.union([ + annotations: z.optional(z.union([ zAnnotations, z.null() - ]).optional(), - description: z.union([ + ])), + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), - mimeType: z.union([ + ])), + mimeType: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), name: z.string(), - size: z.union([ - z.number().int(), + size: z.optional(z.union([ + z.int(), z.null() - ]).optional(), - title: z.union([ + ])), + title: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), uri: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** * Text-based resource contents. */ export const zTextResourceContents = z.object({ - mimeType: z.union([ + mimeType: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), text: z.string(), uri: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** @@ -482,15 +482,15 @@ export const zTextResourceContents = z.object({ */ export const zBlobResourceContents = z.object({ blob: z.string(), - mimeType: z.union([ + mimeType: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), uri: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** @@ -505,15 +505,15 @@ export const zEmbeddedResourceResource = z.union([ * The contents of a resource, embedded into a prompt or tool call result. */ export const zEmbeddedResource = z.object({ - annotations: z.union([ + annotations: z.optional(z.union([ zAnnotations, z.null() - ]).optional(), + ])), resource: zEmbeddedResourceResource, - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** @@ -555,7 +555,7 @@ export const zContentBlock = z.union([ */ export const zSteerSessionRequest_unstable = z.object({ sessionId: z.string(), - prompt: z.array(zContentBlock).optional().default([]), + prompt: z.optional(z.array(zContentBlock)).default([]), expectedRunId: z.string() }); @@ -568,7 +568,7 @@ export const zDiagnosticsReportLevel = z.enum(['summary', 'full']); export const zDiagnosticsGetRequest_unstable = z.object({ sessionId: z.string(), - level: zDiagnosticsReportLevel.optional().default('summary') + level: z.optional(zDiagnosticsReportLevel).default('summary') }); export const zDiagnosticsGetResponse_unstable = z.object({ @@ -578,7 +578,7 @@ export const zDiagnosticsGetResponse_unstable = z.object({ /** * List all available Goose prompt templates. */ -export const zListPromptsRequest_unstable = z.record(z.unknown()); +export const zListPromptsRequest_unstable = z.record(z.string(), z.unknown()); /** * Information about a prompt template, including its default content and customization status. @@ -587,10 +587,10 @@ export const zPromptTemplateEntry = z.object({ name: z.string(), description: z.string(), defaultContent: z.string(), - userContent: z.union([ + userContent: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), isCustomized: z.boolean() }); @@ -634,15 +634,15 @@ export const zResetPromptRequest_unstable = z.object({ /** * List configured extensions and any warnings. */ -export const zGetConfigExtensionsRequest_unstable = z.record(z.unknown()); +export const zGetConfigExtensionsRequest_unstable = z.record(z.string(), z.unknown()); export const zGooseExtensionEntry = z.object({ extension: zGooseExtension, enabled: z.boolean(), - configKey: z.union([ + configKey: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -650,13 +650,13 @@ export const zGooseExtensionEntry = z.object({ */ export const zGetConfigExtensionsResponse_unstable = z.object({ extensions: z.array(zGooseExtensionEntry), - warnings: z.array(z.string()).optional().default([]) + warnings: z.optional(z.array(z.string())).default([]) }); /** * List Goose-owned extension definitions available to configure or enable. */ -export const zGetAvailableExtensionsRequest_unstable = z.record(z.unknown()); +export const zGetAvailableExtensionsRequest_unstable = z.record(z.string(), z.unknown()); export const zGetAvailableExtensionsResponse_unstable = z.object({ extensions: z.array(zGooseExtension) @@ -667,7 +667,7 @@ export const zGetAvailableExtensionsResponse_unstable = z.object({ */ export const zAddConfigExtensionRequest_unstable = z.object({ extension: zGooseExtension, - enabled: z.boolean().optional().default(false) + enabled: z.optional(z.boolean()).default(false) }); /** @@ -697,7 +697,7 @@ export const zGetSessionExtensionsResponse_unstable = z.object({ * List providers with setup metadata and the current model inventory snapshot. */ export const zListProvidersRequest_unstable = z.object({ - providerIds: z.array(z.string()).optional().default([]) + providerIds: z.optional(z.array(z.string())).default([]) }); export const zProviderSetupCategoryDto = z.enum(['agent', 'model']); @@ -706,13 +706,13 @@ export const zProviderConfigKey = z.object({ name: z.string(), required: z.boolean(), secret: z.boolean(), - default: z.union([ + default: z.optional(z.union([ z.string(), z.null() - ]).optional().default(null), - oauthFlow: z.boolean().optional().default(false), - deviceCodeFlow: z.boolean().optional().default(false), - primary: z.boolean().optional().default(false) + ])).default(null), + oauthFlow: z.optional(z.boolean()).default(false), + deviceCodeFlow: z.optional(z.boolean()).default(false), + primary: z.optional(z.boolean()).default(false) }); /** @@ -721,19 +721,19 @@ export const zProviderConfigKey = z.object({ export const zProviderInventoryModelDto = z.object({ id: z.string(), name: z.string(), - family: z.union([ + family: z.optional(z.union([ z.string(), z.null() - ]).optional(), - contextLimit: z.union([ - z.number().int().gte(0), + ])), + contextLimit: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - reasoning: z.union([ + ])), + reasoning: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - recommended: z.boolean().optional().default(false) + ])), + recommended: z.optional(z.boolean()).default(false) }); /** @@ -748,35 +748,35 @@ export const zProviderInventoryEntryDto = z.object({ available: z.boolean(), providerType: z.string(), category: zProviderSetupCategoryDto, - acp: z.boolean().optional().default(false), + acp: z.optional(z.boolean()).default(false), visibleInSetup: z.boolean(), deprecated: z.boolean(), - replacement: z.union([ + replacement: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), configKeys: z.array(zProviderConfigKey), setupSteps: z.array(z.string()), supportsRefresh: z.boolean(), refreshing: z.boolean(), models: z.array(zProviderInventoryModelDto), - lastUpdatedAt: z.union([ + lastUpdatedAt: z.optional(z.union([ z.string(), z.null() - ]).optional(), - lastRefreshAttemptAt: z.union([ + ])), + lastRefreshAttemptAt: z.optional(z.union([ z.string(), z.null() - ]).optional(), - lastRefreshError: z.union([ + ])), + lastRefreshError: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), stale: z.boolean(), - modelSelectionHint: z.union([ + modelSelectionHint: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -802,10 +802,10 @@ export const zProviderSupportedModelsListResponse_unstable = z.object({ * List custom-provider catalog entries. Omit `format` to list all formats. */ export const zProviderCatalogListRequest_unstable = z.object({ - format: z.union([ + format: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zProviderTemplateCatalogEntryDto = z.object({ @@ -813,7 +813,7 @@ export const zProviderTemplateCatalogEntryDto = z.object({ name: z.string(), format: z.string(), apiUrl: z.string(), - modelCount: z.number().int().gte(0), + modelCount: z.int().gte(0), docUrl: z.string(), envVar: z.string() }); @@ -825,7 +825,7 @@ export const zProviderCatalogListResponse_unstable = z.object({ /** * List provider setup catalog entries */ -export const zProviderSetupCatalogListRequest_unstable = z.record(z.unknown()); +export const zProviderSetupCatalogListRequest_unstable = z.record(z.string(), z.unknown()); export const zProviderSetupMethodDto = z.enum([ 'none', @@ -844,14 +844,14 @@ export const zProviderSetupFieldDto = z.object({ label: z.string(), secret: z.boolean(), required: z.boolean(), - placeholder: z.union([ + placeholder: z.optional(z.union([ z.string(), z.null() - ]).optional(), - defaultValue: z.union([ + ])), + defaultValue: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zProviderSetupGroupDto = z.enum(['default', 'additional']); @@ -860,25 +860,25 @@ export const zProviderSetupCatalogEntryDto = z.object({ providerId: z.string(), name: z.string(), category: zProviderSetupCategoryDto, - acp: z.boolean().optional().default(false), + acp: z.optional(z.boolean()).default(false), description: z.string(), setupMethod: zProviderSetupMethodDto, - nativeConnectQuery: z.union([ + nativeConnectQuery: z.optional(z.union([ z.string(), z.null() - ]).optional(), - fields: z.array(zProviderSetupFieldDto).optional().default([]), - binaryName: z.union([ + ])), + fields: z.optional(z.array(zProviderSetupFieldDto)).default([]), + binaryName: z.optional(z.union([ z.string(), z.null() - ]).optional(), - docUrl: z.union([ + ])), + docUrl: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), group: zProviderSetupGroupDto, showOnlyWhenInstalled: z.boolean(), - aliases: z.array(z.string()).optional().default([]), + aliases: z.optional(z.array(z.string())).default([]), supportsInstall: z.boolean(), supportsAuth: z.boolean(), supportsAuthStatus: z.boolean() @@ -905,7 +905,7 @@ export const zProviderTemplateCapabilitiesDto = z.object({ export const zProviderTemplateModelDto = z.object({ id: z.string(), name: z.string(), - contextLimit: z.number().int().gte(0), + contextLimit: z.int().gte(0), capabilities: zProviderTemplateCapabilitiesDto, deprecated: z.boolean() }); @@ -932,29 +932,29 @@ export const zCustomProviderCreateRequest_unstable = z.object({ engine: z.string(), displayName: z.string(), apiUrl: z.string(), - apiKey: z.union([ + apiKey: z.optional(z.union([ z.string(), z.null() - ]).optional(), - models: z.array(z.string()).optional().default([]), - supportsStreaming: z.union([ + ])), + models: z.optional(z.array(z.string())).default([]), + supportsStreaming: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - headers: z.record(z.string()).optional().default({}), + ])), + headers: z.optional(z.record(z.string(), z.string())).default({}), requiresAuth: z.boolean(), - catalogProviderId: z.union([ + catalogProviderId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - basePath: z.union([ + ])), + basePath: z.optional(z.union([ z.string(), z.null() - ]).optional(), - preservesThinking: z.union([ + ])), + preservesThinking: z.optional(z.union([ z.boolean(), z.null() - ]).optional() + ])) }); export const zProviderConfigStatusDto = z.object({ @@ -979,7 +979,7 @@ export const zRefreshProviderInventorySkipDto = z.object({ */ export const zRefreshProviderInventoryResponse_unstable = z.object({ started: z.array(z.string()), - skipped: z.array(zRefreshProviderInventorySkipDto).optional().default([]) + skipped: z.optional(z.array(zRefreshProviderInventorySkipDto)).default([]) }); export const zCustomProviderCreateResponse_unstable = z.object({ @@ -1000,25 +1000,25 @@ export const zCustomProviderConfigDto = z.object({ engine: z.string(), displayName: z.string(), apiUrl: z.string(), - models: z.array(z.string()).optional().default([]), - supportsStreaming: z.union([ + models: z.optional(z.array(z.string())).default([]), + supportsStreaming: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - headers: z.record(z.string()).optional().default({}), + ])), + headers: z.optional(z.record(z.string(), z.string())).default({}), requiresAuth: z.boolean(), - catalogProviderId: z.union([ + catalogProviderId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - basePath: z.union([ + ])), + basePath: z.optional(z.union([ z.string(), z.null() - ]).optional(), - apiKeyEnv: z.union([ + ])), + apiKeyEnv: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), apiKeySet: z.boolean(), preservesThinking: z.boolean() }); @@ -1037,29 +1037,29 @@ export const zCustomProviderUpdateRequest_unstable = z.object({ engine: z.string(), displayName: z.string(), apiUrl: z.string(), - apiKey: z.union([ + apiKey: z.optional(z.union([ z.string(), z.null() - ]).optional(), - models: z.array(z.string()).optional().default([]), - supportsStreaming: z.union([ + ])), + models: z.optional(z.array(z.string())).default([]), + supportsStreaming: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - headers: z.record(z.string()).optional().default({}), + ])), + headers: z.optional(z.record(z.string(), z.string())).default({}), requiresAuth: z.boolean(), - catalogProviderId: z.union([ + catalogProviderId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - basePath: z.union([ + ])), + basePath: z.optional(z.union([ z.string(), z.null() - ]).optional(), - preservesThinking: z.union([ + ])), + preservesThinking: z.optional(z.union([ z.boolean(), z.null() - ]).optional() + ])) }); export const zCustomProviderUpdateResponse_unstable = z.object({ @@ -1084,7 +1084,7 @@ export const zCustomProviderDeleteResponse_unstable = z.object({ * Trigger a background refresh of provider inventories. */ export const zRefreshProviderInventoryRequest_unstable = z.object({ - providerIds: z.array(z.string()).optional().default([]) + providerIds: z.optional(z.array(z.string())).default([]) }); /** @@ -1097,10 +1097,10 @@ export const zProviderReadinessCheckRequest_unstable = z.object({ export const zProviderReadinessCheckResponse_unstable = z.object({ providerId: z.string(), ready: z.boolean(), - error: z.union([ + error: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -1112,10 +1112,10 @@ export const zProviderConfigReadRequest_unstable = z.object({ export const zProviderConfigFieldValueDto = z.object({ key: z.string(), - value: z.union([ + value: z.optional(z.union([ z.string(), z.null() - ]).optional().default(null), + ])).default(null), isSet: z.boolean(), isSecret: z.boolean(), required: z.boolean() @@ -1129,7 +1129,7 @@ export const zProviderConfigReadResponse_unstable = z.object({ * Return provider configured statuses. Empty provider_ids means all providers. */ export const zProviderConfigStatusRequest_unstable = z.object({ - providerIds: z.array(z.string()).optional().default([]) + providerIds: z.optional(z.array(z.string())).default([]) }); export const zProviderConfigStatusResponse_unstable = z.object({ @@ -1171,7 +1171,7 @@ export const zProviderConfigAuthenticateRequest_unstable = z.object({ /** * List provider credentials stored locally by Goose. */ -export const zProviderSecretsListRequest_unstable = z.record(z.unknown()); +export const zProviderSecretsListRequest_unstable = z.record(z.string(), z.unknown()); export const zProviderSecretStorageDto = z.enum(['secret_store', 'provider_cache']); @@ -1187,19 +1187,19 @@ export const zProviderSecretDto = z.object({ providerDisplayName: z.string(), name: z.string(), storage: zProviderSecretStorageDto, - expiresAt: z.union([ + expiresAt: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), status: zProviderSecretStatusDto, configured: z.boolean(), hasSecret: z.boolean(), canDelete: z.boolean(), canConfigure: z.boolean(), - configureProvider: z.union([ + configureProvider: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zProviderSecretsListResponse_unstable = z.object({ @@ -1224,36 +1224,36 @@ export const zCanonicalModelInfoRequest_unstable = z.object({ export const zCanonicalModelInfoDto = z.object({ provider: z.string(), model: z.string(), - contextLimit: z.number().int().gte(0), - maxOutputTokens: z.union([ - z.number().int().gte(0), + contextLimit: z.int().gte(0), + maxOutputTokens: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), + ])), reasoning: z.boolean(), - inputTokenCost: z.union([ + inputTokenCost: z.optional(z.union([ z.number(), z.null() - ]).optional(), - outputTokenCost: z.union([ + ])), + outputTokenCost: z.optional(z.union([ z.number(), z.null() - ]).optional(), - cacheReadTokenCost: z.union([ + ])), + cacheReadTokenCost: z.optional(z.union([ z.number(), z.null() - ]).optional(), - cacheWriteTokenCost: z.union([ + ])), + cacheWriteTokenCost: z.optional(z.union([ z.number(), z.null() - ]).optional(), + ])), currency: z.string() }); export const zCanonicalModelInfoResponse_unstable = z.object({ - modelInfo: z.union([ + modelInfo: z.optional(z.union([ zCanonicalModelInfoDto, z.null() - ]).optional() + ])) }); export const zPreferenceKey = z.enum([ @@ -1268,12 +1268,12 @@ export const zPreferenceKey = z.enum([ * Read allowlisted user preferences. Empty `keys` means all supported preferences. */ export const zPreferencesReadRequest_unstable = z.object({ - keys: z.array(zPreferenceKey).optional().default([]) + keys: z.optional(z.array(zPreferenceKey)).default([]) }); export const zPreferenceValue = z.object({ key: zPreferenceKey, - value: z.unknown().optional().default(null) + value: z.optional(z.unknown()).default(null) }); export const zPreferencesReadResponse_unstable = z.object({ @@ -1284,56 +1284,56 @@ export const zPreferencesReadResponse_unstable = z.object({ * Save allowlisted user preferences. */ export const zPreferencesSaveRequest_unstable = z.object({ - values: z.array(zPreferenceValue).optional().default([]) + values: z.optional(z.array(zPreferenceValue)).default([]) }); /** * Remove allowlisted user preferences. */ export const zPreferencesRemoveRequest_unstable = z.object({ - keys: z.array(zPreferenceKey).optional().default([]) + keys: z.optional(z.array(zPreferenceKey)).default([]) }); export const zConfigReadRequest_unstable = z.object({ key: z.string(), - isSecret: z.boolean().optional().default(false) + isSecret: z.optional(z.boolean()).default(false) }); export const zConfigReadResponse_unstable = z.object({ - value: z.unknown().optional().default(null) + value: z.optional(z.unknown()).default(null) }); export const zConfigUpsertRequest_unstable = z.object({ key: z.string(), value: z.unknown(), - isSecret: z.boolean().optional().default(false) + isSecret: z.optional(z.boolean()).default(false) }); export const zConfigRemoveRequest_unstable = z.object({ key: z.string(), - isSecret: z.boolean().optional().default(false) + isSecret: z.optional(z.boolean()).default(false) }); -export const zConfigReadAllRequest_unstable = z.record(z.unknown()); +export const zConfigReadAllRequest_unstable = z.record(z.string(), z.unknown()); export const zConfigReadAllResponse_unstable = z.object({ - config: z.record(z.unknown()) + config: z.record(z.string(), z.unknown()) }); /** * Read Goose default provider and model configuration. */ -export const zDefaultsReadRequest_unstable = z.record(z.unknown()); +export const zDefaultsReadRequest_unstable = z.record(z.string(), z.unknown()); export const zDefaultsReadResponse_unstable = z.object({ - providerId: z.union([ + providerId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - modelId: z.union([ + ])), + modelId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -1341,16 +1341,16 @@ export const zDefaultsReadResponse_unstable = z.object({ */ export const zDefaultsSaveRequest_unstable = z.object({ providerId: z.string(), - modelId: z.union([ + modelId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** * Clear Goose default provider and model configuration. */ -export const zDefaultsClearRequest_unstable = z.record(z.unknown()); +export const zDefaultsClearRequest_unstable = z.record(z.string(), z.unknown()); /** * Sources that onboarding knows how to discover and import. @@ -1361,16 +1361,16 @@ export const zOnboardingImportSourceKind = z.enum(['goose_config', 'claude_deskt * Scan for existing Goose and compatible app data that onboarding can import. */ export const zOnboardingImportScanRequest_unstable = z.object({ - sources: z.array(zOnboardingImportSourceKind).optional().default([]) + sources: z.optional(z.array(zOnboardingImportSourceKind)).default([]) }); export const zOnboardingImportCounts = z.object({ - providers: z.number().int().gte(0), - extensions: z.number().int().gte(0), - sessions: z.number().int().gte(0), - skills: z.number().int().gte(0), - projects: z.number().int().gte(0), - preferences: z.number().int().gte(0) + providers: z.int().gte(0), + extensions: z.int().gte(0), + sessions: z.int().gte(0), + skills: z.int().gte(0), + projects: z.int().gte(0), + preferences: z.int().gte(0) }); export const zOnboardingImportCandidate = z.object({ @@ -1379,7 +1379,7 @@ export const zOnboardingImportCandidate = z.object({ displayName: z.string(), path: z.string(), counts: zOnboardingImportCounts, - warnings: z.array(z.string()).optional().default([]) + warnings: z.optional(z.array(z.string())).default([]) }); export const zOnboardingImportScanResponse_unstable = z.object({ @@ -1390,18 +1390,18 @@ export const zOnboardingImportScanResponse_unstable = z.object({ * Import selected onboarding candidates. */ export const zOnboardingImportApplyRequest_unstable = z.object({ - candidateIds: z.array(z.string()).optional().default([]), - enableImportedExtensions: z.boolean().optional().default(false) + candidateIds: z.optional(z.array(z.string())).default([]), + enableImportedExtensions: z.optional(z.boolean()).default(false) }); export const zOnboardingImportApplyResponse_unstable = z.object({ imported: zOnboardingImportCounts, skipped: zOnboardingImportCounts, - warnings: z.array(z.string()).optional().default([]), - providerDefaults: z.union([ + warnings: z.optional(z.array(z.string())).default([]), + providerDefaults: z.optional(z.union([ zDefaultsReadResponse_unstable, z.null() - ]).optional() + ])) }); export const zSessionExportFormat = z.enum(['json', 'markdown']); @@ -1411,7 +1411,7 @@ export const zSessionExportFormat = z.enum(['json', 'markdown']); */ export const zExportSessionRequest_unstable = z.object({ sessionId: z.string(), - format: zSessionExportFormat.optional().default('json') + format: z.optional(zSessionExportFormat).default('json') }); /** @@ -1441,15 +1441,15 @@ export const zImportSessionRequest_unstable = z.object({ */ export const zImportSessionResponse_unstable = z.object({ sessionId: z.string(), - title: z.union([ + title: z.optional(z.union([ z.string(), z.null() - ]).optional(), - updatedAt: z.union([ + ])), + updatedAt: z.optional(z.union([ z.string(), z.null() - ]).optional(), - messageCount: z.number().int().gte(0) + ])), + messageCount: z.int().gte(0) }); export const zShareSessionNostrRequest_unstable = z.object({ @@ -1467,143 +1467,143 @@ export const zShareSessionNostrResponse_unstable = z.object({ export const zRecipeExtensionDto = z.union([ z.object({ name: z.string(), - description: z.union([ + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), - display_name: z.union([ + ])), + display_name: z.optional(z.union([ z.string(), z.null() - ]).optional(), - timeout: z.union([ - z.number().int().gte(0), + ])), + timeout: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - bundled: z.union([ + ])), + bundled: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - available_tools: z.union([ + ])), + available_tools: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), + ])), type: z.literal('builtin') }), z.object({ name: z.string(), - description: z.union([ + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), - display_name: z.union([ + ])), + display_name: z.optional(z.union([ z.string(), z.null() - ]).optional(), - bundled: z.union([ + ])), + bundled: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - available_tools: z.union([ + ])), + available_tools: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), + ])), type: z.literal('platform') }), z.object({ name: z.string(), - description: z.union([ + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), cmd: z.string(), - args: z.array(z.string()).optional(), - envs: z.record(z.string()).optional(), - env_keys: z.array(z.string()).optional(), - timeout: z.union([ - z.number().int().gte(0), + args: z.optional(z.array(z.string())), + envs: z.optional(z.record(z.string(), z.string())), + env_keys: z.optional(z.array(z.string())), + timeout: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - cwd: z.union([ + ])), + cwd: z.optional(z.union([ z.string(), z.null() - ]).optional(), - bundled: z.union([ + ])), + bundled: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - available_tools: z.union([ + ])), + available_tools: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), + ])), type: z.literal('stdio') }), z.object({ name: z.string(), - description: z.union([ + description: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), uri: z.string(), - envs: z.record(z.string()).optional(), - env_keys: z.array(z.string()).optional(), - headers: z.record(z.string()).optional(), - timeout: z.union([ - z.number().int().gte(0), + envs: z.optional(z.record(z.string(), z.string())), + env_keys: z.optional(z.array(z.string())), + headers: z.optional(z.record(z.string(), z.string())), + timeout: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - socket: z.union([ + ])), + socket: z.optional(z.union([ z.string(), z.null() - ]).optional(), - client_id: z.union([ + ])), + client_id: z.optional(z.union([ z.string(), z.null() - ]).optional(), - client_secret_key: z.union([ + ])), + client_secret_key: z.optional(z.union([ z.string(), z.null() - ]).optional(), - scopes: z.array(z.string()).optional(), - bundled: z.union([ + ])), + scopes: z.optional(z.array(z.string())), + bundled: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - available_tools: z.union([ + ])), + available_tools: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), + ])), type: z.literal('streamable_http') }) ]); export const zRecipeSettingsDto = z.object({ - goose_provider: z.union([ + goose_provider: z.optional(z.union([ z.string(), z.null() - ]).optional(), - goose_model: z.union([ + ])), + goose_model: z.optional(z.union([ z.string(), z.null() - ]).optional(), - temperature: z.union([ + ])), + temperature: z.optional(z.union([ z.number(), z.null() - ]).optional(), - max_turns: z.union([ - z.number().int().gte(0), + ])), + max_turns: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional() + ])) }); export const zRecipeAuthorDto = z.object({ - contact: z.union([ + contact: z.optional(z.union([ z.string(), z.null() - ]).optional(), - metadata: z.union([ + ])), + metadata: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zRecipeParameterInputTypeDto = z.enum([ @@ -1626,32 +1626,32 @@ export const zRecipeParameterDto = z.object({ input_type: zRecipeParameterInputTypeDto, requirement: zRecipeParameterRequirementDto, description: z.string(), - default: z.union([ + default: z.optional(z.union([ z.string(), z.null() - ]).optional(), - options: z.union([ + ])), + options: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional() + ])) }); export const zRecipeResponseDto = z.object({ - json_schema: z.unknown().optional() + json_schema: z.optional(z.unknown()) }); export const zSubRecipeDto = z.object({ name: z.string(), path: z.string(), - values: z.union([ - z.record(z.string()), + values: z.optional(z.union([ + z.record(z.string(), z.string()), z.null() - ]).optional(), - sequential_when_repeated: z.boolean().optional().default(false), - description: z.union([ + ])), + sequential_when_repeated: z.optional(z.boolean()).default(false), + description: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zRecipeSuccessCheckDto = z.object({ @@ -1660,66 +1660,66 @@ export const zRecipeSuccessCheckDto = z.object({ }); export const zRecipeRetryConfigDto = z.object({ - max_retries: z.number().int().gte(0), - checks: z.array(zRecipeSuccessCheckDto).optional().default([]), - on_failure: z.union([ + max_retries: z.int().gte(0), + checks: z.optional(z.array(zRecipeSuccessCheckDto)).default([]), + on_failure: z.optional(z.union([ z.string(), z.null() - ]).optional(), - timeout_seconds: z.union([ - z.number().int().gte(0), + ])), + timeout_seconds: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - on_failure_timeout_seconds: z.union([ - z.number().int().gte(0), + ])), + on_failure_timeout_seconds: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional() + ])) }); export const zRecipeDto = z.object({ - version: z.string().optional().default('1.0.0'), + version: z.optional(z.string()).default('1.0.0'), title: z.string(), description: z.string(), - instructions: z.union([ + instructions: z.optional(z.union([ z.string(), z.null() - ]).optional(), - prompt: z.union([ + ])), + prompt: z.optional(z.union([ z.string(), z.null() - ]).optional(), - extensions: z.union([ + ])), + extensions: z.optional(z.union([ z.array(zRecipeExtensionDto), z.null() - ]).optional(), - settings: z.union([ + ])), + settings: z.optional(z.union([ zRecipeSettingsDto, z.null() - ]).optional(), - activities: z.union([ + ])), + activities: z.optional(z.union([ z.array(z.string()), z.null() - ]).optional(), - author: z.union([ + ])), + author: z.optional(z.union([ zRecipeAuthorDto, z.null() - ]).optional(), - parameters: z.union([ + ])), + parameters: z.optional(z.union([ z.array(zRecipeParameterDto), z.null() - ]).optional(), - response: z.union([ + ])), + response: z.optional(z.union([ zRecipeResponseDto, z.null() - ]).optional(), - sub_recipes: z.union([ + ])), + sub_recipes: z.optional(z.union([ z.array(zSubRecipeDto), z.null() - ]).optional(), - retry: z.union([ + ])), + retry: z.optional(z.union([ zRecipeRetryConfigDto, z.null() - ]).optional() + ])) }); export const zEncodeRecipeRequest_unstable = z.object({ @@ -1746,21 +1746,21 @@ export const zScanRecipeResponse_unstable = z.object({ has_security_warnings: z.boolean() }); -export const zListRecipesRequest_unstable = z.record(z.unknown()); +export const zListRecipesRequest_unstable = z.record(z.string(), z.unknown()); export const zRecipeListEntryDto = z.object({ id: z.string(), recipe: zRecipeDto, file_path: z.string(), last_modified: z.string(), - schedule_cron: z.union([ + schedule_cron: z.optional(z.union([ z.string(), z.null() - ]).optional(), - slash_command: z.union([ + ])), + slash_command: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zListRecipesResponse_unstable = z.object({ @@ -1773,26 +1773,26 @@ export const zDeleteRecipeRequest_unstable = z.object({ export const zScheduleRecipeRequest_unstable = z.object({ id: z.string(), - cron_schedule: z.union([ + cron_schedule: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zSetRecipeSlashCommandRequest_unstable = z.object({ id: z.string(), - slash_command: z.union([ + slash_command: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zSaveRecipeRequest_unstable = z.object({ recipe: zRecipeDto, - id: z.union([ + id: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zSaveRecipeResponse_unstable = z.object({ @@ -1817,26 +1817,26 @@ export const zRecipeToYamlResponse_unstable = z.object({ yaml: z.string() }); -export const zListSchedulesRequest_unstable = z.record(z.unknown()); +export const zListSchedulesRequest_unstable = z.record(z.string(), z.unknown()); export const zScheduledJobDto = z.object({ id: z.string(), source: z.string(), cron: z.string(), - lastRun: z.union([ + lastRun: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), currentlyRunning: z.boolean(), paused: z.boolean(), - currentSessionId: z.union([ + currentSessionId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - jobStartTime: z.union([ + ])), + jobStartTime: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zListSchedulesResponse_unstable = z.object({ @@ -1845,7 +1845,7 @@ export const zListSchedulesResponse_unstable = z.object({ export const zListScheduleSessionsRequest_unstable = z.object({ scheduleId: z.string(), - limit: z.number().int().gte(0) + limit: z.int().gte(0) }); /** @@ -1864,19 +1864,19 @@ export const zSessionId = z.string(); export const zSessionInfo = z.object({ sessionId: zSessionId, cwd: z.string(), - additionalDirectories: z.array(z.string()).optional(), - title: z.union([ + additionalDirectories: z.optional(z.array(z.string())), + title: z.optional(z.union([ z.string(), z.null() - ]).optional(), - updatedAt: z.union([ + ])), + updatedAt: z.optional(z.union([ z.string(), z.null() - ]).optional(), - _meta: z.union([ - z.record(z.unknown()), + ])), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); export const zListScheduleSessionsResponse_unstable = z.object({ @@ -1922,10 +1922,10 @@ export const zRunScheduleNowStatus = z.enum(['completed', 'cancelled']); export const zRunScheduleNowResponse_unstable = z.object({ status: zRunScheduleNowStatus, - sessionId: z.union([ + sessionId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zKillRunningJobRequest_unstable = z.object({ @@ -1942,18 +1942,18 @@ export const zInspectRunningJobRequest_unstable = z.object({ export const zInspectRunningJobResponse_unstable = z.object({ running: z.boolean(), - sessionId: z.union([ + sessionId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - jobStartTime: z.union([ + ])), + jobStartTime: z.optional(z.union([ z.string(), z.null() - ]).optional(), - runningDurationSeconds: z.union([ - z.number().int(), + ])), + runningDurationSeconds: z.optional(z.union([ + z.int(), z.null() - ]).optional() + ])) }); /** @@ -1972,7 +1972,7 @@ export const zGetSessionInfoResponse_unstable = z.object({ */ export const zTruncateSessionConversationRequest_unstable = z.object({ sessionId: z.string(), - truncateFrom: z.number().int() + truncateFrom: z.int() }); /** @@ -1980,10 +1980,10 @@ export const zTruncateSessionConversationRequest_unstable = z.object({ */ export const zUpdateSessionProjectRequest_unstable = z.object({ sessionId: z.string(), - projectId: z.union([ + projectId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -2046,7 +2046,7 @@ export const zCreateSourceRequest_unstable = z.object({ description: z.string(), content: z.string(), target: zSourceScope, - properties: z.record(z.unknown()).optional() + properties: z.optional(z.record(z.string(), z.unknown())) }); /** @@ -2061,9 +2061,9 @@ export const zSourceEntry = z.object({ content: z.string(), path: z.string(), global: z.boolean(), - writable: z.boolean().optional().default(false), - supportingFiles: z.array(z.string()).optional(), - properties: z.record(z.unknown()).optional() + writable: z.optional(z.boolean()).default(false), + supportingFiles: z.optional(z.array(z.string())), + properties: z.optional(z.record(z.string(), z.unknown())) }); export const zCreateSourceResponse_unstable = z.object({ @@ -2079,15 +2079,15 @@ export const zCreateSourceResponse_unstable = z.object({ * skills. */ export const zListSourcesRequest_unstable = z.object({ - type: z.union([ + type: z.optional(z.union([ zSourceType, z.null() - ]).optional(), - projectDir: z.union([ + ])), + projectDir: z.optional(z.union([ z.string(), z.null() - ]).optional(), - includeProjectSources: z.boolean().optional().default(false) + ])), + includeProjectSources: z.optional(z.boolean()).default(false) }); export const zListSourcesResponse_unstable = z.object({ @@ -2098,14 +2098,14 @@ export const zListSourcesResponse_unstable = z.object({ * List user-facing agent mention targets for `@` autocomplete. */ export const zListAgentMentionsRequest_unstable = z.object({ - cwd: z.union([ + cwd: z.optional(z.union([ z.string(), z.null() - ]).optional(), - sessionId: z.union([ + ])), + sessionId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -2115,10 +2115,10 @@ export const zAgentMention = z.object({ name: z.string(), description: z.string(), sourceType: zSourceType, - sourcePath: z.union([ + sourcePath: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), mention: z.string() }); @@ -2130,14 +2130,14 @@ export const zListAgentMentionsResponse_unstable = z.object({ * List slash commands available for `/` autocomplete. */ export const zListSlashCommandsRequest_unstable = z.object({ - cwd: z.union([ + cwd: z.optional(z.union([ z.string(), z.null() - ]).optional(), - sessionId: z.union([ + ])), + sessionId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); /** @@ -2145,10 +2145,10 @@ export const zListSlashCommandsRequest_unstable = z.object({ */ export const zUnstructuredCommandInput = z.object({ hint: z.string(), - _meta: z.union([ - z.record(z.unknown()), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); /** @@ -2162,14 +2162,14 @@ export const zAvailableCommandInput = zUnstructuredCommandInput; export const zAvailableCommand = z.object({ name: z.string(), description: z.string(), - input: z.union([ + input: z.optional(z.union([ zAvailableCommandInput, z.null() - ]).optional(), - _meta: z.union([ - z.record(z.unknown()), + ])), + _meta: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); export const zListSlashCommandsResponse_unstable = z.object({ @@ -2185,10 +2185,10 @@ export const zUpdateSourceRequest_unstable = z.object({ name: z.string(), description: z.string(), content: z.string(), - properties: z.union([ - z.record(z.unknown()), + properties: z.optional(z.union([ + z.record(z.string(), z.unknown()), z.null() - ]).optional() + ])) }); export const zUpdateSourceResponse_unstable = z.object({ @@ -2249,7 +2249,7 @@ export const zDictationTranscribeResponse_unstable = z.object({ /** * Get the configuration status of all dictation providers. */ -export const zDictationConfigRequest_unstable = z.record(z.unknown()); +export const zDictationConfigRequest_unstable = z.record(z.string(), z.unknown()); export const zDictationModelOption = z.object({ id: z.string(), @@ -2262,40 +2262,40 @@ export const zDictationModelOption = z.object({ */ export const zDictationProviderStatusEntry = z.object({ configured: z.boolean(), - host: z.union([ + host: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), description: z.string(), usesProviderConfig: z.boolean(), - settingsPath: z.union([ + settingsPath: z.optional(z.union([ z.string(), z.null() - ]).optional(), - configKey: z.union([ + ])), + configKey: z.optional(z.union([ z.string(), z.null() - ]).optional(), - modelConfigKey: z.union([ + ])), + modelConfigKey: z.optional(z.union([ z.string(), z.null() - ]).optional(), - defaultModel: z.union([ + ])), + defaultModel: z.optional(z.union([ z.string(), z.null() - ]).optional(), - selectedModel: z.union([ + ])), + selectedModel: z.optional(z.union([ z.string(), z.null() - ]).optional(), - availableModels: z.array(zDictationModelOption).optional().default([]) + ])), + availableModels: z.optional(z.array(zDictationModelOption)).default([]) }); /** * Dictation config response — map of provider name to status. */ export const zDictationConfigResponse_unstable = z.object({ - providers: z.record(zDictationProviderStatusEntry) + providers: z.record(z.string(), zDictationProviderStatusEntry) }); /** @@ -2316,13 +2316,13 @@ export const zDictationSecretDeleteRequest_unstable = z.object({ /** * List available local Whisper models with their download status. */ -export const zDictationModelsListRequest_unstable = z.record(z.unknown()); +export const zDictationModelsListRequest_unstable = z.record(z.string(), z.unknown()); export const zDictationLocalModelStatus = z.object({ id: z.string(), label: z.string(), description: z.string(), - sizeMb: z.number().int().gte(0), + sizeMb: z.int().gte(0), downloaded: z.boolean(), downloadInProgress: z.boolean(), recommended: z.boolean() @@ -2347,21 +2347,21 @@ export const zDictationModelDownloadProgressRequest_unstable = z.object({ }); export const zDictationDownloadProgress = z.object({ - bytesDownloaded: z.number().int().gte(0), - totalBytes: z.number().int().gte(0), + bytesDownloaded: z.int().gte(0), + totalBytes: z.int().gte(0), progressPercent: z.number(), status: z.string(), - error: z.union([ + error: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zDictationModelDownloadProgressResponse_unstable = z.object({ - progress: z.union([ + progress: z.optional(z.union([ zDictationDownloadProgress, z.null() - ]).optional() + ])) }); /** @@ -2386,7 +2386,7 @@ export const zDictationModelSelectRequest_unstable = z.object({ modelId: z.string() }); -export const zLocalInferenceModelsListRequest_unstable = z.record(z.unknown()); +export const zLocalInferenceModelsListRequest_unstable = z.record(z.string(), z.unknown()); export const zLocalInferenceDownloadState = z.enum([ 'NotDownloaded', @@ -2396,22 +2396,22 @@ export const zLocalInferenceDownloadState = z.enum([ export const zLocalInferenceModelDownloadStatusDto = z.object({ state: zLocalInferenceDownloadState, - progressPercent: z.union([ + progressPercent: z.optional(z.union([ z.number(), z.null() - ]).optional(), - bytesDownloaded: z.union([ - z.number().int().gte(0), + ])), + bytesDownloaded: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - totalBytes: z.union([ - z.number().int().gte(0), + ])), + totalBytes: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - speedBps: z.union([ - z.number().int().gte(0), + ])), + speedBps: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional() + ])) }); export const zLocalInferenceSamplingConfig = z.union([ @@ -2420,22 +2420,22 @@ export const zLocalInferenceSamplingConfig = z.union([ }), z.object({ temperature: z.number(), - topK: z.number().int(), + topK: z.int(), topP: z.number(), minP: z.number(), - seed: z.union([ - z.number().int().gte(0), + seed: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), + ])), type: z.literal('Temperature') }), z.object({ tau: z.number(), eta: z.number(), - seed: z.union([ - z.number().int().gte(0), + seed: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), + ])), type: z.literal('MirostatV2') }) ]); @@ -2461,23 +2461,23 @@ export const zLocalInferenceChatTemplate = z.union([ ]); export const zLocalInferenceModelSettingsDto = z.object({ - backendId: z.union([ + backendId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - contextSize: z.union([ - z.number().int().gte(0), + ])), + contextSize: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - maxOutputTokens: z.union([ - z.number().int().gte(0), + ])), + maxOutputTokens: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - draftModel: z.union([ + ])), + draftModel: z.optional(z.union([ z.string(), z.null() - ]).optional(), - sampling: zLocalInferenceSamplingConfig.optional().default({ + ])), + sampling: z.optional(zLocalInferenceSamplingConfig).default({ type: 'Temperature', temperature: 0.800000011920929, topK: 40, @@ -2485,32 +2485,32 @@ export const zLocalInferenceModelSettingsDto = z.object({ minP: 0.05000000074505806 }), repeatPenalty: z.number(), - repeatLastN: z.number().int(), + repeatLastN: z.int(), frequencyPenalty: z.number(), presencePenalty: z.number(), - nBatch: z.union([ - z.number().int().gte(0), + nBatch: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - nGpuLayers: z.union([ - z.number().int().gte(0), + ])), + nGpuLayers: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), + ])), useMlock: z.boolean(), - flashAttention: z.union([ + flashAttention: z.optional(z.union([ z.boolean(), z.null() - ]).optional(), - nThreads: z.union([ - z.number().int(), + ])), + nThreads: z.optional(z.union([ + z.int(), z.null() - ]).optional(), - toolCalling: zLocalInferenceToolCallingMode.optional().default('auto'), - chatTemplate: zLocalInferenceChatTemplate.optional().default({ type: 'embedded' }), + ])), + toolCalling: z.optional(zLocalInferenceToolCallingMode).default('auto'), + chatTemplate: z.optional(zLocalInferenceChatTemplate).default({ type: 'embedded' }), enableThinking: z.boolean(), visionCapable: z.boolean(), - imageTokenEstimate: z.number().int().gte(0), - mmprojSizeBytes: z.number().int().gte(0) + imageTokenEstimate: z.int().gte(0), + mmprojSizeBytes: z.int().gte(0) }); export const zLocalInferenceModelDto = z.object({ @@ -2518,16 +2518,16 @@ export const zLocalInferenceModelDto = z.object({ repoId: z.string(), filename: z.string(), quantization: z.string(), - sizeBytes: z.number().int().gte(0), + sizeBytes: z.int().gte(0), status: zLocalInferenceModelDownloadStatusDto, recommended: z.boolean(), isLoaded: z.boolean(), settings: zLocalInferenceModelSettingsDto, visionCapable: z.boolean(), - mmprojStatus: z.union([ + mmprojStatus: z.optional(z.union([ zLocalInferenceModelDownloadStatusDto, z.null() - ]).optional() + ])) }); export const zLocalInferenceModelsListResponse_unstable = z.object({ @@ -2536,14 +2536,14 @@ export const zLocalInferenceModelsListResponse_unstable = z.object({ export const zLocalInferenceModelDownloadRequest_unstable = z.object({ spec: z.string(), - backendId: z.union([ + backendId: z.optional(z.union([ z.string(), z.null() - ]).optional(), - variantId: z.union([ + ])), + variantId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zLocalInferenceModelDownloadResponse_unstable = z.object({ @@ -2557,29 +2557,29 @@ export const zLocalInferenceModelDownloadProgressRequest_unstable = z.object({ export const zLocalInferenceDownloadProgressDto = z.object({ modelId: z.string(), status: z.string(), - bytesDownloaded: z.number().int().gte(0), - totalBytes: z.number().int().gte(0), + bytesDownloaded: z.int().gte(0), + totalBytes: z.int().gte(0), progressPercent: z.number(), - speedBps: z.union([ - z.number().int().gte(0), + speedBps: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - etaSeconds: z.union([ - z.number().int().gte(0), + ])), + etaSeconds: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - error: z.union([ + ])), + error: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), taskExited: z.boolean() }); export const zLocalInferenceModelDownloadProgressResponse_unstable = z.object({ - progress: z.union([ + progress: z.optional(z.union([ zLocalInferenceDownloadProgressDto, z.null() - ]).optional() + ])) }); export const zLocalInferenceModelDownloadCancelRequest_unstable = z.object({ @@ -2613,15 +2613,15 @@ export const zLocalInferenceModelSettingsUpdateResponse_unstable = z.object({ export const zLocalInferenceHuggingFaceSearchRequest_unstable = z.object({ query: z.string(), - limit: z.union([ - z.number().int().gte(0), + limit: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional() + ])) }); export const zLocalInferenceHfGgufFileDto = z.object({ filename: z.string(), - sizeBytes: z.number().int().gte(0), + sizeBytes: z.int().gte(0), quantization: z.string(), downloadUrl: z.string() }); @@ -2633,32 +2633,32 @@ export const zLocalInferenceHfModelVariantDto = z.object({ format: z.string(), modelId: z.string(), downloadId: z.string(), - sizeBytes: z.number().int().gte(0), - filename: z.union([ + sizeBytes: z.int().gte(0), + filename: z.optional(z.union([ z.string(), z.null() - ]).optional(), - downloadUrl: z.union([ + ])), + downloadUrl: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), description: z.string(), - qualityRank: z.number().int().gte(0).lte(255), + qualityRank: z.int().gte(0).lte(255), sharded: z.boolean(), supported: z.boolean(), - unsupportedReason: z.union([ + unsupportedReason: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zLocalInferenceHfModelInfoDto = z.object({ repoId: z.string(), author: z.string(), modelName: z.string(), - downloads: z.number().int().gte(0), - ggufFiles: z.array(zLocalInferenceHfGgufFileDto).optional().default([]), - variants: z.array(zLocalInferenceHfModelVariantDto).optional().default([]) + downloads: z.int().gte(0), + ggufFiles: z.optional(z.array(zLocalInferenceHfGgufFileDto)).default([]), + variants: z.optional(z.array(zLocalInferenceHfModelVariantDto)).default([]) }); export const zLocalInferenceHuggingFaceSearchResponse_unstable = z.object({ @@ -2671,16 +2671,16 @@ export const zLocalInferenceHuggingFaceRepoVariantsRequest_unstable = z.object({ export const zLocalInferenceHuggingFaceRepoVariantsResponse_unstable = z.object({ variants: z.array(zLocalInferenceHfModelVariantDto), - recommendedIndex: z.union([ - z.number().int().gte(0), + recommendedIndex: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - availableMemoryBytes: z.number().int().gte(0), + ])), + availableMemoryBytes: z.int().gte(0), downloadedQuants: z.array(z.string()), downloadedVariants: z.array(z.string()) }); -export const zLocalInferenceBuiltinChatTemplatesListRequest_unstable = z.record(z.unknown()); +export const zLocalInferenceBuiltinChatTemplatesListRequest_unstable = z.record(z.string(), z.unknown()); export const zLocalInferenceBuiltinChatTemplatesListResponse_unstable = z.object({ templates: z.array(z.string()) @@ -2690,14 +2690,14 @@ export const zLocalInferenceBuiltinChatTemplatesListResponse_unstable = z.object * Streaming context-window usage update for a session. */ export const zSessionUsageUpdate = z.object({ - used: z.number().int().gte(0), - contextLimit: z.number().int().gte(0), - accumulatedInputTokens: z.number().int().gte(0), - accumulatedOutputTokens: z.number().int().gte(0), - accumulatedCost: z.union([ + used: z.int().gte(0), + contextLimit: z.int().gte(0), + accumulatedInputTokens: z.int().gte(0), + accumulatedOutputTokens: z.int().gte(0), + accumulatedCost: z.optional(z.union([ z.number(), z.null() - ]).optional() + ])) }); export const zStatusMessage = z.union([ @@ -2732,43 +2732,43 @@ export const zCostSourceData = z.union([ * goose-provider-types); field names and serde casing MUST stay in parity. */ export const zMessageUsageData = z.object({ - inputTokens: z.union([ - z.number().int(), + inputTokens: z.optional(z.union([ + z.int(), z.null() - ]).optional(), - outputTokens: z.union([ - z.number().int(), + ])), + outputTokens: z.optional(z.union([ + z.int(), z.null() - ]).optional(), - totalTokens: z.union([ - z.number().int(), + ])), + totalTokens: z.optional(z.union([ + z.int(), z.null() - ]).optional(), - cacheReadTokens: z.union([ - z.number().int(), + ])), + cacheReadTokens: z.optional(z.union([ + z.int(), z.null() - ]).optional(), - cacheWriteTokens: z.union([ - z.number().int(), + ])), + cacheWriteTokens: z.optional(z.union([ + z.int(), z.null() - ]).optional(), - cost: z.union([ + ])), + cost: z.optional(z.union([ z.number(), z.null() - ]).optional(), - costSource: z.union([ + ])), + costSource: z.optional(z.union([ zCostSourceData, z.null() - ]).optional(), - elapsedMs: z.union([ - z.number().int().gte(0), + ])), + elapsedMs: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - timeToFirstTokenMs: z.union([ - z.number().int().gte(0), + ])), + timeToFirstTokenMs: z.optional(z.union([ + z.int().gte(0), z.null() - ]).optional(), - isCompaction: z.boolean().optional().default(false) + ])), + isCompaction: z.optional(z.boolean()).default(false) }); /** @@ -2776,10 +2776,10 @@ export const zMessageUsageData = z.object({ * chunk matching. Sent live after a turn's messages and on replay. */ export const zMessageUsageUpdate = z.object({ - messageId: z.union([ + messageId: z.optional(z.union([ z.string(), z.null() - ]).optional(), + ])), usage: zMessageUsageData }); @@ -2815,23 +2815,23 @@ export const zGooseSessionNotification_unstable = z.object({ export const zRequestRecipeParams_unstable = z.object({ sessionId: z.string(), parameters: z.array(zRecipeParameterDto), - parameterScopeId: z.union([ + parameterScopeId: z.optional(z.union([ z.string(), z.null() - ]).optional() + ])) }); export const zRecipeParamsAction = z.enum(['submit', 'cancel']); export const zRecipeParamsResponse_unstable = z.object({ - action: zRecipeParamsAction.optional().default('submit'), - values: z.record(z.string()).optional().default({}) + action: z.optional(zRecipeParamsAction).default('submit'), + values: z.optional(z.record(z.string(), z.string())).default({}) }); export const zExtRequest = z.object({ id: z.string(), method: z.string(), - params: z.union([ + params: z.optional(z.union([ z.union([ zAddSessionExtensionRequest_unstable, zRemoveSessionExtensionRequest_unstable, @@ -2948,16 +2948,16 @@ export const zExtRequest = z.object({ zLocalInferenceBuiltinChatTemplatesListRequest_unstable ]), z.union([ - z.record(z.unknown()), + z.record(z.string(), z.unknown()), z.null() ]) - ]).optional() + ])) }); export const zExtResponse = z.union([ z.object({ id: z.string(), - result: z.union([ + result: z.optional(z.union([ z.union([ zEmptyResponse, zGetToolsResponse_unstable, @@ -3037,13 +3037,13 @@ export const zExtResponse = z.union([ zLocalInferenceBuiltinChatTemplatesListResponse_unstable ]), z.unknown() - ]).optional() + ])) }), z.object({ error: z.object({ - code: z.number().int(), + code: z.int(), message: z.string(), - data: z.unknown().optional() + data: z.optional(z.unknown()) }), id: z.string() }) @@ -3051,40 +3051,40 @@ export const zExtResponse = z.union([ export const zExtNotification = z.object({ method: z.string(), - params: z.union([ + params: z.optional(z.union([ zGooseSessionNotification_unstable, z.union([ - z.record(z.unknown()), + z.record(z.string(), z.unknown()), z.null() ]) - ]).optional() + ])) }); export const zExtAgentRequest = z.object({ id: z.string(), method: z.string(), - params: z.union([ + params: z.optional(z.union([ zRequestRecipeParams_unstable, z.union([ - z.record(z.unknown()), + z.record(z.string(), z.unknown()), z.null() ]) - ]).optional() + ])) }); export const zExtAgentResponse = z.union([ z.object({ id: z.string(), - result: z.union([ + result: z.optional(z.union([ zRecipeParamsResponse_unstable, z.unknown() - ]).optional() + ])) }), z.object({ error: z.object({ - code: z.number().int(), + code: z.int(), message: z.string(), - data: z.unknown().optional() + data: z.optional(z.unknown()) }), id: z.string() })