From 88b03c8d8fba409540de5a6a71652b69791da160 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Bula=CC=81nek?= Date: Fri, 27 Mar 2026 14:25:44 +0100 Subject: [PATCH 1/4] chore: remove deprecated UI settings extension from adk-ts and adk-ui MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Petr Bulánek --- .../adk-ts/src/client/a2a/extensions/index.ts | 1 - .../src/client/a2a/extensions/schemas.ts | 1 - .../adk-ts/src/client/a2a/extensions/types.ts | 1 - .../a2a/extensions/ui/settings/index.ts | 23 -- .../a2a/extensions/ui/settings/schemas.ts | 65 ---- .../a2a/extensions/ui/settings/types.ts | 38 --- .../src/client/core/extensions/types.ts | 5 - .../src/client/core/handle-agent-card.ts | 9 - .../agent-demands/AgentDemandsProvider.tsx | 25 +- .../agent-demands/build-fulfillments.ts | 16 - .../adk-ui/src/modules/runs/settings/utils.ts | 79 ----- pnpm-lock.yaml | 288 ++++++++++++++---- 12 files changed, 228 insertions(+), 323 deletions(-) delete mode 100644 apps/adk-ts/src/client/a2a/extensions/ui/settings/index.ts delete mode 100644 apps/adk-ts/src/client/a2a/extensions/ui/settings/schemas.ts delete mode 100644 apps/adk-ts/src/client/a2a/extensions/ui/settings/types.ts diff --git a/apps/adk-ts/src/client/a2a/extensions/index.ts b/apps/adk-ts/src/client/a2a/extensions/index.ts index dc565d55..078b3135 100644 --- a/apps/adk-ts/src/client/a2a/extensions/index.ts +++ b/apps/adk-ts/src/client/a2a/extensions/index.ts @@ -18,5 +18,4 @@ export * from './ui/canvas'; export * from './ui/citation'; export * from './ui/error'; export * from './ui/form-request'; -export * from './ui/settings'; export * from './ui/trajectory'; diff --git a/apps/adk-ts/src/client/a2a/extensions/schemas.ts b/apps/adk-ts/src/client/a2a/extensions/schemas.ts index feaa27ec..1f63ef87 100644 --- a/apps/adk-ts/src/client/a2a/extensions/schemas.ts +++ b/apps/adk-ts/src/client/a2a/extensions/schemas.ts @@ -16,5 +16,4 @@ export * from './ui/agent-detail/schemas'; export * from './ui/canvas/schemas'; export * from './ui/citation/schemas'; export * from './ui/error/schemas'; -export * from './ui/settings/schemas'; export * from './ui/trajectory/schemas'; diff --git a/apps/adk-ts/src/client/a2a/extensions/types.ts b/apps/adk-ts/src/client/a2a/extensions/types.ts index 730bd2e8..44d7f0a1 100644 --- a/apps/adk-ts/src/client/a2a/extensions/types.ts +++ b/apps/adk-ts/src/client/a2a/extensions/types.ts @@ -16,5 +16,4 @@ export * from './ui/agent-detail/types'; export * from './ui/canvas/types'; export * from './ui/citation/types'; export * from './ui/error/types'; -export * from './ui/settings/types'; export * from './ui/trajectory/types'; diff --git a/apps/adk-ts/src/client/a2a/extensions/ui/settings/index.ts b/apps/adk-ts/src/client/a2a/extensions/ui/settings/index.ts deleted file mode 100644 index c4bb8262..00000000 --- a/apps/adk-ts/src/client/a2a/extensions/ui/settings/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2026 © IBM Corp. - * SPDX-License-Identifier: Apache-2.0 - */ - -import type { A2AServiceExtension } from '../../../../core/extensions/types'; -import { settingsDemandsSchema, settingsFulfillmentsSchema } from './schemas'; -import type { SettingsDemands, SettingsFulfillments } from './types'; - -export const SETTINGS_EXTENSION_URI = 'https://a2a-extensions.adk.kagenti.dev/ui/settings/v1'; - -/** - * @deprecated Use the form extension with `form_demands.settings_form`. - */ -export const settingsExtension: A2AServiceExtension< - typeof SETTINGS_EXTENSION_URI, - SettingsDemands, - SettingsFulfillments -> = { - getUri: () => SETTINGS_EXTENSION_URI, - getDemandsSchema: () => settingsDemandsSchema, - getFulfillmentsSchema: () => settingsFulfillmentsSchema, -}; diff --git a/apps/adk-ts/src/client/a2a/extensions/ui/settings/schemas.ts b/apps/adk-ts/src/client/a2a/extensions/ui/settings/schemas.ts deleted file mode 100644 index 6c967397..00000000 --- a/apps/adk-ts/src/client/a2a/extensions/ui/settings/schemas.ts +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright 2026 © IBM Corp. - * SPDX-License-Identifier: Apache-2.0 - */ - -import z from 'zod'; - -export const settingsCheckboxFieldSchema = z.object({ - id: z.string().nonempty(), - label: z.string().nonempty(), - default_value: z.boolean(), -}); - -export const settingsCheckboxGroupFieldSchema = z.object({ - id: z.string().nonempty(), - type: z.literal('checkbox_group'), - fields: z.array(settingsCheckboxFieldSchema), -}); - -export const settingsOptionItemSchema = z.object({ - label: z.string().nonempty(), - value: z.string().nonempty(), -}); - -export const settingsSingleSelectFieldSchema = z.object({ - type: z.literal('single_select'), - id: z.string().nonempty(), - label: z.string().nonempty(), - options: z.array(settingsOptionItemSchema).nonempty(), - default_value: z.string().nonempty(), -}); - -export const settingsFieldSchema = z.discriminatedUnion('type', [ - settingsCheckboxGroupFieldSchema, - settingsSingleSelectFieldSchema, -]); - -export const settingsCheckboxFieldValueSchema = z.object({ - value: z.boolean(), -}); - -export const settingsCheckboxGroupFieldValueSchema = z.object({ - type: z.literal('checkbox_group'), - values: z.record(z.string(), settingsCheckboxFieldValueSchema), -}); - -export const settingsSingleSelectFieldValueSchema = z.object({ - type: z.literal('single_select'), - value: z.string(), -}); - -export const settingsFieldValueSchema = z.discriminatedUnion('type', [ - settingsCheckboxGroupFieldValueSchema, - settingsSingleSelectFieldValueSchema, -]); - -export const settingsDemandsSchema = z.object({ - fields: z.array(settingsFieldSchema), -}); - -export const settingsValuesSchema = z.record(z.string(), settingsFieldValueSchema); - -export const settingsFulfillmentsSchema = z.object({ - values: settingsValuesSchema, -}); diff --git a/apps/adk-ts/src/client/a2a/extensions/ui/settings/types.ts b/apps/adk-ts/src/client/a2a/extensions/ui/settings/types.ts deleted file mode 100644 index f46b00a1..00000000 --- a/apps/adk-ts/src/client/a2a/extensions/ui/settings/types.ts +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2026 © IBM Corp. - * SPDX-License-Identifier: Apache-2.0 - */ - -import type z from 'zod'; - -import type { - settingsCheckboxFieldSchema, - settingsCheckboxFieldValueSchema, - settingsCheckboxGroupFieldSchema, - settingsCheckboxGroupFieldValueSchema, - settingsDemandsSchema, - settingsFieldSchema, - settingsFieldValueSchema, - settingsFulfillmentsSchema, - settingsOptionItemSchema, - settingsSingleSelectFieldSchema, - settingsSingleSelectFieldValueSchema, - settingsValuesSchema, -} from './schemas'; - -export type SettingsCheckboxField = z.infer; -export type SettingsCheckboxGroupField = z.infer; -export type SettingsOptionItem = z.infer; -export type SettingsSingleSelectField = z.infer; - -export type SettingsField = z.infer; - -export type SettingsCheckboxFieldValue = z.infer; -export type SettingsCheckboxGroupFieldValue = z.infer; -export type SettingsSingleSelectFieldValue = z.infer; - -export type SettingsFieldValue = z.infer; - -export type SettingsDemands = z.infer; -export type SettingsValues = z.infer; -export type SettingsFulfillments = z.infer; diff --git a/apps/adk-ts/src/client/core/extensions/types.ts b/apps/adk-ts/src/client/core/extensions/types.ts index 89b1be88..7a153256 100644 --- a/apps/adk-ts/src/client/core/extensions/types.ts +++ b/apps/adk-ts/src/client/core/extensions/types.ts @@ -14,7 +14,6 @@ import type { FormDemands, FormFulfillments } from '../../a2a/extensions/service import type { LLMDemands, LLMFulfillments } from '../../a2a/extensions/services/llm/types'; import type { MCPDemands, MCPFulfillments } from '../../a2a/extensions/services/mcp/types'; import type { CanvasEditRequest } from '../../a2a/extensions/ui/canvas/types'; -import type { SettingsDemands, SettingsFulfillments } from '../../a2a/extensions/ui/settings/types'; import type { ContextToken } from '../../api/contexts/types'; export interface A2AExtension { @@ -35,10 +34,6 @@ export type Fulfillments = Partial<{ embedding: (demand: EmbeddingDemands) => Promise; mcp: (demand: MCPDemands) => Promise; oauth: (demand: OAuthDemands) => Promise; - /** - * @deprecated - keeping this for backwards compatibility, use form extension with "settings_form" demand instead - */ - settings: (demand: SettingsDemands) => Promise; secrets: (demand: SecretDemands) => Promise; form: (demand: FormDemands) => Promise; oauthRedirectUri: () => string | null; diff --git a/apps/adk-ts/src/client/core/handle-agent-card.ts b/apps/adk-ts/src/client/core/handle-agent-card.ts index 596b94c4..d93c7c60 100644 --- a/apps/adk-ts/src/client/core/handle-agent-card.ts +++ b/apps/adk-ts/src/client/core/handle-agent-card.ts @@ -10,7 +10,6 @@ import { formExtension } from '../a2a/extensions/services/form'; import { llmExtension } from '../a2a/extensions/services/llm'; import { mcpExtension } from '../a2a/extensions/services/mcp'; import { platformApiExtension } from '../a2a/extensions/services/platform-api'; -import { settingsExtension } from '../a2a/extensions/ui/settings'; import type { AgentCapabilities } from '../a2a/protocol/types'; import { extractServiceExtensionDemands } from './extensions/extract'; import { fulfillServiceExtensionDemand } from './extensions/fulfill'; @@ -20,7 +19,6 @@ const mcpExtensionExtractor = extractServiceExtensionDemands(mcpExtension); const llmExtensionExtractor = extractServiceExtensionDemands(llmExtension); const embeddingExtensionExtractor = extractServiceExtensionDemands(embeddingExtension); const oauthExtensionExtractor = extractServiceExtensionDemands(oauthExtension); -const settingsExtensionExtractor = extractServiceExtensionDemands(settingsExtension); const secretExtensionExtractor = extractServiceExtensionDemands(secretsExtension); const formExtensionExtractor = extractServiceExtensionDemands(formExtension); @@ -28,7 +26,6 @@ const fulfillMcpDemand = fulfillServiceExtensionDemand(mcpExtension); const fulfillLlmDemand = fulfillServiceExtensionDemand(llmExtension); const fulfillEmbeddingDemand = fulfillServiceExtensionDemand(embeddingExtension); const fulfillOAuthDemand = fulfillServiceExtensionDemand(oauthExtension); -const fulfillSettingsDemand = fulfillServiceExtensionDemand(settingsExtension); const fulfillSecretDemand = fulfillServiceExtensionDemand(secretsExtension); const fulfillFormDemand = fulfillServiceExtensionDemand(formExtension); @@ -39,7 +36,6 @@ export const handleAgentCard = (agentCard: { capabilities: AgentCapabilities }) const embeddingDemands = embeddingExtensionExtractor(extensions); const mcpDemands = mcpExtensionExtractor(extensions); const oauthDemands = oauthExtensionExtractor(extensions); - const settingsDemands = settingsExtensionExtractor(extensions); const secretDemands = secretExtensionExtractor(extensions); const formDemands = formExtensionExtractor(extensions); @@ -66,10 +62,6 @@ export const handleAgentCard = (agentCard: { capabilities: AgentCapabilities }) fulfilledMetadata = fulfillOAuthDemand(fulfilledMetadata, await fulfillments.oauth(oauthDemands)); } - if (settingsDemands && fulfillments.settings) { - fulfilledMetadata = fulfillSettingsDemand(fulfilledMetadata, await fulfillments.settings(settingsDemands)); - } - if (secretDemands && fulfillments.secrets) { fulfilledMetadata = fulfillSecretDemand(fulfilledMetadata, await fulfillments.secrets(secretDemands)); } @@ -99,7 +91,6 @@ export const handleAgentCard = (agentCard: { capabilities: AgentCapabilities }) embeddingDemands, mcpDemands, oauthDemands, - settingsDemands, secretDemands, formDemands, }, diff --git a/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx b/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx index ba14905e..e4257944 100644 --- a/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx +++ b/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx @@ -3,17 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -import type { FormFulfillments, SettingsFormRender, SettingsFormValues } from '@kagenti/adk'; +import type { FormFulfillments, SettingsFormValues } from '@kagenti/adk'; import { ModelCapability } from '@kagenti/adk'; import mapValues from 'lodash/mapValues'; import { type PropsWithChildren, useCallback, useMemo, useRef, useState } from 'react'; import { useListConnectors } from '#modules/connectors/api/queries/useListConnectors.ts'; import { useMatchModelProviders } from '#modules/platform-context/api/mutations/useMatchModelProviders.ts'; -import { - getInitialSettingsFormValues, - transformLegacySettingsDemandsToSettingsForm, -} from '#modules/runs/settings/utils.ts'; +import { getInitialSettingsFormValues } from '#modules/runs/settings/utils.ts'; import { useA2AClient } from '../a2a-client'; import { useAgentSecrets } from '../agent-secrets'; @@ -28,13 +25,11 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { const [selectedEmbeddingProviders, setSelectedEmbeddingProviders] = useState>({}); const [selectedLLMProviders, setSelectedLLMProviders] = useState>({}); - const legacySettingsDemands = agentClient.demands.settingsDemands; const formDemands = agentClient.demands.formDemands; const settingsFormDemand = formDemands?.form_demands.settings_form; const settingsFormDemanded = Boolean(settingsFormDemand); - const settingsForm: SettingsFormRender | null = - formDemands?.form_demands.settings_form ?? transformLegacySettingsDemandsToSettingsForm(legacySettingsDemands); + const settingsForm = formDemands?.form_demands.settings_form ?? null; const initialSettingsFormValues = getInitialSettingsFormValues(settingsForm); const formFulfillmentsRef = useRef({ @@ -159,24 +154,12 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { selectedLLMProviders, selectedEmbeddingProviders, providedSecrets, - selectedSettings, - legacySettingsDemands, - settingsFormDemanded, formFulfillments: formFulfillmentsRef.current, oauthRedirectUri: oauthRedirectUri ?? null, connectors: connectorsData?.items ?? [], }); }, - [ - contextToken, - selectedLLMProviders, - selectedEmbeddingProviders, - selectedSettings, - legacySettingsDemands, - settingsFormDemanded, - demandedSecrets, - connectorsData, - ], + [contextToken, selectedLLMProviders, selectedEmbeddingProviders, demandedSecrets, connectorsData], ); const value = useMemo( diff --git a/apps/adk-ui/src/modules/runs/contexts/agent-demands/build-fulfillments.ts b/apps/adk-ui/src/modules/runs/contexts/agent-demands/build-fulfillments.ts index ed13f771..36486474 100644 --- a/apps/adk-ui/src/modules/runs/contexts/agent-demands/build-fulfillments.ts +++ b/apps/adk-ui/src/modules/runs/contexts/agent-demands/build-fulfillments.ts @@ -10,12 +10,9 @@ import type { FormFulfillments, Fulfillments, MCPFulfillments, - SettingsDemands, - SettingsFormValues, } from '@kagenti/adk'; import { ConnectorState, MCPTransportType } from '@kagenti/adk'; -import { transformSettingsFormValuesToLegacySettingsValues } from '#modules/runs/settings/utils.ts'; import { BASE_URL } from '#utils/constants.ts'; interface BuildFulfillmentsParams { @@ -23,9 +20,6 @@ interface BuildFulfillmentsParams { selectedLLMProviders: Record; selectedEmbeddingProviders: Record; providedSecrets: Record; - legacySettingsDemands: SettingsDemands | null; - settingsFormDemanded: boolean; - selectedSettings: SettingsFormValues; formFulfillments: FormFulfillments; oauthRedirectUri: string | null; connectors: Connector[]; @@ -35,9 +29,6 @@ export const buildFulfillments = ({ contextToken, selectedLLMProviders, selectedEmbeddingProviders, - selectedSettings, - legacySettingsDemands, - settingsFormDemanded, providedSecrets, formFulfillments, oauthRedirectUri, @@ -164,12 +155,5 @@ export const buildFulfillments = ({ }, }; - if (legacySettingsDemands && !settingsFormDemanded) { - // @deprecated - use form extension with "settings_form" demand instead - fulfillments.settings = async () => ({ - values: transformSettingsFormValuesToLegacySettingsValues(selectedSettings), - }); - } - return fulfillments; }; diff --git a/apps/adk-ui/src/modules/runs/settings/utils.ts b/apps/adk-ui/src/modules/runs/settings/utils.ts index e944ccd0..29597292 100644 --- a/apps/adk-ui/src/modules/runs/settings/utils.ts +++ b/apps/adk-ui/src/modules/runs/settings/utils.ts @@ -4,18 +4,11 @@ */ import type { - CheckboxGroupField, CheckboxGroupFieldValue, - SettingsCheckboxGroupFieldValue, - SettingsDemands, SettingsFormRender, SettingsFormValues, - SettingsSingleSelectFieldValue, - SettingsValues, - SingleSelectField, SingleSelectFieldValue, } from '@kagenti/adk'; -import mapValues from 'lodash/mapValues'; import { match } from 'ts-pattern'; export function getInitialSettingsFormValues(settingsForm: SettingsFormRender | null) { @@ -48,75 +41,3 @@ export function getInitialSettingsFormValues(settingsForm: SettingsFormRender | return defaults; } - -export function transformLegacySettingsDemandsToSettingsForm( - settingsDemands: SettingsDemands | null, -): SettingsFormRender | null { - if (!settingsDemands) { - return null; - } - - const settingsForm = { - fields: settingsDemands.fields.map((field) => - match(field) - .with( - { type: 'checkbox_group' }, - ({ id, fields }) => - ({ - id, - label: '', - type: 'checkbox_group', - fields: fields.map(({ id, label, default_value }) => ({ - id, - label, - type: 'checkbox', - content: label, - default_value, - })), - }) satisfies CheckboxGroupField, - ) - .with( - { type: 'single_select' }, - ({ id, label, options, default_value }) => - ({ - id, - label, - type: 'singleselect', - options: options.map(({ value, label }) => ({ - id: value, - label, - })), - default_value, - }) satisfies SingleSelectField, - ) - .exhaustive(), - ), - }; - - return settingsForm; -} - -export function transformSettingsFormValuesToLegacySettingsValues(settingsValues: SettingsFormValues): SettingsValues { - const legacySettingsValues = mapValues(settingsValues, (value) => - match(value) - .with( - { type: 'checkbox_group' }, - ({ value: groupValue }) => - ({ - type: 'checkbox_group', - values: mapValues(groupValue ?? {}, (value) => ({ value: value ?? false })), - }) satisfies SettingsCheckboxGroupFieldValue, - ) - .with( - { type: 'singleselect' }, - ({ value }) => - ({ - type: 'single_select', - value: value ?? '', - }) satisfies SettingsSingleSelectFieldValue, - ) - .exhaustive(), - ); - - return legacySettingsValues; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6c0f339b..858f0e9b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,25 +70,6 @@ catalogs: specifier: ^3.1.1 version: 3.1.1 -overrides: - lodash@<4.17.23: 4.17.23 - dompurify@<3.3.2: 3.3.2 - express@>=4.0.0 <4.20.0: 4.21.2 - zod@<3.22.3: 3.22.3 - js-yaml@>=4.0.0 <4.1.1: 4.1.1 - qs@<6.14.2: 6.14.2 - send@>=0.0.0 <0.19.0: 0.19.0 - serve-static@>=1.0.0 <1.16.0: 1.16.0 - cookie@<0.7.0: 0.7.0 - path-to-regexp@<0.1.12: 0.1.12 - immutable@>=5.0.0 <5.1.5: 5.1.5 - minimatch@<3.1.5: 3.1.5 - axios@<1.13.5: 1.13.5 - svgo@>=3.0.0 <3.3.3: 3.3.3 - body-parser@<1.20.3: 1.20.3 - tar@<7.5.10: 7.5.10 - '@mintlify/previewing>tar': 6.2.1 - importers: apps/adk-ts: @@ -97,7 +78,7 @@ importers: specifier: ^0.3.10 version: 0.3.10(@bufbuild/protobuf@2.11.0)(express@4.21.2) express: - specifier: 4.21.2 + specifier: ^4.18.0 || ^5.0.0 version: 4.21.2 zod: specifier: ^4.3.6 @@ -3929,8 +3910,11 @@ packages: resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} engines: {node: '>=4'} - axios@1.13.5: - resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} + axios@1.10.0: + resolution: {integrity: sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==} + + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -4034,6 +4018,10 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@1.20.3: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -4324,8 +4312,12 @@ packages: cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - cookie@0.7.0: - resolution: {integrity: sha512-qCf+V4dtlNhSRXGAZatc1TasyFO6GjohcOul807YOb5ik3+kQSnb4d7iajeCL8QHaJ4uZEjCgiCJerKXwdRVlQ==} + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} cookie@0.7.1: @@ -5081,6 +5073,10 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} + express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + express@4.21.2: resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} @@ -5163,6 +5159,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + finalhandler@1.3.1: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} @@ -5856,6 +5856,10 @@ packages: resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==} hasBin: true + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true @@ -6001,6 +6005,9 @@ packages: lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} @@ -6133,6 +6140,9 @@ packages: resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} engines: {node: '>=20'} + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -6291,6 +6301,9 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} @@ -6646,6 +6659,9 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -6858,8 +6874,12 @@ packages: resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} engines: {node: '>=20'} - qs@6.14.2: - resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} queue-microtask@1.2.3: @@ -6873,6 +6893,10 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} + raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} @@ -7364,6 +7388,10 @@ packages: engines: {node: '>=10'} hasBin: true + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -7372,6 +7400,10 @@ packages: resolution: {integrity: sha512-bBZaRwLH9PN5HbLCjPId4dP5bNGEtumcErgOX952IsvOhVPrm3/AeK1y0UHA/QaPG701eg0yEnOKsCOC6X/kaA==} engines: {node: '>=20'} + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -7719,9 +7751,10 @@ packages: tar-stream@3.1.8: resolution: {integrity: sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==} - tar@6.2.1: - resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + tar@6.1.15: + resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} @@ -8366,10 +8399,10 @@ packages: zod-to-json-schema@3.20.4: resolution: {integrity: sha512-Un9+kInJ2Zt63n6Z7mLqBifzzPcOyX+b+Exuzf7L1+xqck9Q2EPByyTRduV3kmSPaXaRer1JCsucubpgL1fipg==} peerDependencies: - zod: 3.22.3 + zod: ^3.20.0 - zod@3.22.3: - resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} + zod@3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} @@ -10053,7 +10086,7 @@ snapshots: fs-extra: 11.2.0 ink: 6.3.0(@types/react@19.2.14)(react@19.2.3) inquirer: 12.3.0(@types/node@25.4.0) - js-yaml: 4.1.1 + js-yaml: 4.1.0 mdast-util-mdx-jsx: 3.2.0 react: 19.2.3 semver: 7.7.2 @@ -10096,8 +10129,8 @@ snapshots: hast-util-to-text: 4.0.2 hex-rgb: 5.0.0 ignore: 7.0.5 - js-yaml: 4.1.1 - lodash: 4.17.23 + js-yaml: 4.1.0 + lodash: 4.17.21 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.0.0 mdast-util-mdx: 3.0.0 @@ -10157,8 +10190,8 @@ snapshots: hast-util-to-text: 4.0.2 hex-rgb: 5.0.0 ignore: 7.0.5 - js-yaml: 4.1.1 - lodash: 4.17.23 + js-yaml: 4.1.0 + lodash: 4.17.21 mdast-util-from-markdown: 2.0.2 mdast-util-gfm: 3.0.0 mdast-util-mdx: 3.0.0 @@ -10253,14 +10286,14 @@ snapshots: '@mintlify/models@0.0.255': dependencies: - axios: 1.13.5 + axios: 1.10.0 openapi-types: 12.1.3 transitivePeerDependencies: - debug '@mintlify/models@0.0.283': dependencies: - axios: 1.13.5 + axios: 1.13.2 openapi-types: 12.1.3 transitivePeerDependencies: - debug @@ -10284,7 +10317,7 @@ snapshots: favicons: 7.2.0 front-matter: 4.0.2 fs-extra: 11.1.0 - js-yaml: 4.1.1 + js-yaml: 4.1.0 openapi-types: 12.1.3 sharp: 0.33.5 sharp-ico: 0.1.5 @@ -10314,18 +10347,18 @@ snapshots: better-opn: 3.0.2 chalk: 5.2.0 chokidar: 3.5.3 - express: 4.21.2 + express: 4.18.2 front-matter: 4.0.2 fs-extra: 11.1.0 got: 13.0.0 ink: 6.3.0(@types/react@19.2.14)(react@19.2.3) ink-spinner: 5.0.0(ink@6.3.0(@types/react@19.2.14)(react@19.2.3))(react@19.2.3) is-online: 10.0.0 - js-yaml: 4.1.1 + js-yaml: 4.1.0 openapi-types: 12.1.3 react: 19.2.3 socket.io: 4.7.2 - tar: 6.2.1 + tar: 6.1.15 unist-util-visit: 4.1.2 yargs: 17.7.1 transitivePeerDependencies: @@ -10350,7 +10383,7 @@ snapshots: '@mintlify/openapi-parser': 0.0.8 fs-extra: 11.1.1 hast-util-to-mdast: 10.1.0 - js-yaml: 4.1.1 + js-yaml: 4.1.0 mdast-util-mdx-jsx: 3.1.3 neotraverse: 0.6.18 puppeteer: 22.14.0(typescript@5.9.3) @@ -10362,7 +10395,7 @@ snapshots: unified: 11.0.5 unist-util-visit: 5.0.0 yargs: 17.7.1 - zod: 3.22.3 + zod: 3.21.4 transitivePeerDependencies: - '@radix-ui/react-popover' - '@types/react' @@ -10385,7 +10418,7 @@ snapshots: '@mintlify/openapi-parser': 0.0.8 fs-extra: 11.1.1 hast-util-to-mdast: 10.1.0 - js-yaml: 4.1.1 + js-yaml: 4.1.0 mdast-util-mdx-jsx: 3.1.3 neotraverse: 0.6.18 puppeteer: 22.14.0(typescript@5.9.3) @@ -10419,14 +10452,14 @@ snapshots: '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@mintlify/models': 0.0.255 arktype: 2.1.27 - js-yaml: 4.1.1 + js-yaml: 4.1.0 lcm: 0.0.3 - lodash: 4.17.23 + lodash: 4.17.21 object-hash: 3.0.0 openapi-types: 12.1.3 uuid: 11.1.0 - zod: 3.22.3 - zod-to-json-schema: 3.20.4(zod@3.22.3) + zod: 3.21.4 + zod-to-json-schema: 3.20.4(zod@3.21.4) transitivePeerDependencies: - '@radix-ui/react-popover' - '@types/react' @@ -10441,9 +10474,9 @@ snapshots: '@mintlify/mdx': 3.0.4(@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.3))(react@19.2.3))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.3))(react@19.2.3)(typescript@5.9.3) '@mintlify/models': 0.0.283 arktype: 2.1.27 - js-yaml: 4.1.1 + js-yaml: 4.1.0 lcm: 0.0.3 - lodash: 4.17.23 + lodash: 4.17.21 object-hash: 3.0.0 openapi-types: 12.1.3 uuid: 11.1.0 @@ -11987,7 +12020,7 @@ snapshots: jsonpath-plus: 10.4.0 lodash: 4.17.23 lodash.topath: 4.5.2 - minimatch: 3.1.5 + minimatch: 3.1.2 nimma: 0.2.3 pony-cause: 1.1.1 simple-eval: 1.0.1 @@ -12875,7 +12908,15 @@ snapshots: axe-core@4.11.1: {} - axios@1.13.5: + axios@1.10.0: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.13.2: dependencies: follow-redirects: 1.15.11 form-data: 4.0.5 @@ -12968,6 +13009,23 @@ snapshots: binary-extensions@2.3.0: {} + body-parser@1.20.1: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + body-parser@1.20.3: dependencies: bytes: 3.1.2 @@ -12978,7 +13036,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.14.2 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -13256,7 +13314,9 @@ snapshots: cookie-signature@1.0.6: {} - cookie@0.7.0: {} + cookie@0.4.2: {} + + cookie@0.5.0: {} cookie@0.7.1: {} @@ -13749,7 +13809,7 @@ snapshots: '@types/node': 25.4.0 accepts: 1.3.8 base64id: 2.0.0 - cookie: 0.7.0 + cookie: 0.4.2 cors: 2.8.6 debug: 4.3.7 engine.io-parser: 5.2.3 @@ -13995,7 +14055,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.1(eslint@9.39.3(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.3(jiti@1.21.7)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.1(eslint@9.39.3(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.3(jiti@1.21.7)))(eslint@9.39.3(jiti@1.21.7)): dependencies: debug: 3.2.7 optionalDependencies: @@ -14023,7 +14083,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.3(jiti@1.21.7) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.1(eslint@9.39.3(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.3(jiti@1.21.7)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.1(eslint@9.39.3(jiti@1.21.7))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.3(jiti@1.21.7)))(eslint@9.39.3(jiti@1.21.7)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -14209,6 +14269,42 @@ snapshots: expect-type@1.3.0: {} + express@4.18.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + express@4.21.2: dependencies: accepts: 1.3.8 @@ -14232,7 +14328,7 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.14.2 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.0 @@ -14329,6 +14425,18 @@ snapshots: dependencies: to-regex-range: 5.0.1 + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + finalhandler@1.3.1: dependencies: debug: 2.6.9 @@ -15159,6 +15267,10 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -15279,6 +15391,8 @@ snapshots: lodash.truncate@4.4.2: {} + lodash@4.17.21: {} + lodash@4.17.23: {} longest-streak@3.1.0: {} @@ -15562,6 +15676,8 @@ snapshots: meow@14.1.0: {} + merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge2@1.4.1: {} @@ -15896,6 +16012,10 @@ snapshots: dependencies: brace-expansion: 5.0.4 + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.12 + minimatch@3.1.5: dependencies: brace-expansion: 1.1.12 @@ -16283,6 +16403,8 @@ snapshots: path-to-regexp@0.1.12: {} + path-to-regexp@0.1.7: {} + path-type@4.0.0: {} pathe@2.0.3: {} @@ -16486,7 +16608,11 @@ snapshots: dependencies: hookified: 1.15.1 - qs@6.14.2: + qs@6.11.0: + dependencies: + side-channel: 1.1.0 + + qs@6.13.0: dependencies: side-channel: 1.1.0 @@ -16496,6 +16622,13 @@ snapshots: range-parser@1.2.1: {} + raw-body@2.5.1: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + raw-body@2.5.2: dependencies: bytes: 3.1.2 @@ -17167,6 +17300,24 @@ snapshots: semver@7.7.4: {} + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + send@0.19.0: dependencies: debug: 2.6.9 @@ -17190,6 +17341,15 @@ snapshots: non-error: 0.1.0 type-fest: 5.4.4 + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -17752,7 +17912,7 @@ snapshots: - bare-buffer - react-native-b4a - tar@6.2.1: + tar@6.1.15: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -18432,15 +18592,15 @@ snapshots: yoga-layout@3.2.1: {} - zod-to-json-schema@3.20.4(zod@3.22.3): + zod-to-json-schema@3.20.4(zod@3.21.4): dependencies: - zod: 3.22.3 + zod: 3.21.4 zod-to-json-schema@3.20.4(zod@3.24.0): dependencies: zod: 3.24.0 - zod@3.22.3: {} + zod@3.21.4: {} zod@3.23.8: {} From 622db1213f880a1c20ce1edf62df4d4fd673b08c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Bula=CC=81nek?= Date: Fri, 27 Mar 2026 14:39:10 +0100 Subject: [PATCH 2/4] refactor(adk-ui): remove redundant selectedSettings state MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Petr Bulánek --- .../agent-demands/AgentDemandsProvider.tsx | 20 +++++++------------ .../agent-demands/agent-demands-context.ts | 2 +- .../modules/runs/settings/RunSettingsForm.tsx | 4 ++-- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx b/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx index e4257944..7ad68d67 100644 --- a/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx +++ b/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx @@ -42,8 +42,6 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { : {}, }); - const [selectedSettings, setSelectedSettings] = useState(initialSettingsFormValues); - const setDefaultSelectedLLMProviders = useCallback( (data: Record) => { setSelectedLLMProviders( @@ -120,16 +118,12 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { const onUpdateSettings = useCallback( (values: SettingsFormValues) => { - setSelectedSettings(values); - - if (settingsFormDemanded) { - provideFormValues({ - formId: 'settings_form', - values, - }); - } + provideFormValues({ + formId: 'settings_form', + values, + }); }, - [provideFormValues, settingsFormDemanded], + [provideFormValues], ); const { data: connectorsData } = useListConnectors(); @@ -180,7 +174,7 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { }, formDemands, settingsForm, - selectedSettings, + initialSettingsFormValues, getFulfillments, provideFormValues, onUpdateSettings, @@ -197,11 +191,11 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { provideFormValues, formDemands, settingsForm, + initialSettingsFormValues, selectEmbeddingProvider, selectLLMProvider, selectedEmbeddingProviders, selectedLLMProviders, - selectedSettings, ], ); diff --git a/apps/adk-ui/src/modules/runs/contexts/agent-demands/agent-demands-context.ts b/apps/adk-ui/src/modules/runs/contexts/agent-demands/agent-demands-context.ts index 14e663ab..49a75a74 100644 --- a/apps/adk-ui/src/modules/runs/contexts/agent-demands/agent-demands-context.ts +++ b/apps/adk-ui/src/modules/runs/contexts/agent-demands/agent-demands-context.ts @@ -36,7 +36,7 @@ interface AgentDemandsContextValue { embeddingProviders: ModelProvidersContextValue; formDemands: FormDemands | null; settingsForm: SettingsFormRender | null; - selectedSettings: SettingsFormValues | undefined; + initialSettingsFormValues: SettingsFormValues; getFulfillments: (context: FulfillmentsContext) => Promise; provideFormValues: ({ formId, values }: ProvideFormValuesParams) => void; onUpdateSettings: (settings: SettingsFormValues) => void; diff --git a/apps/adk-ui/src/modules/runs/settings/RunSettingsForm.tsx b/apps/adk-ui/src/modules/runs/settings/RunSettingsForm.tsx index 6955c0b2..33637d14 100644 --- a/apps/adk-ui/src/modules/runs/settings/RunSettingsForm.tsx +++ b/apps/adk-ui/src/modules/runs/settings/RunSettingsForm.tsx @@ -18,10 +18,10 @@ interface Props { } export function RunSettingsForm({ settingsForm }: Props) { - const { selectedSettings, onUpdateSettings } = useAgentDemands(); + const { initialSettingsFormValues, onUpdateSettings } = useAgentDemands(); const form = useForm({ - defaultValues: selectedSettings, + defaultValues: initialSettingsFormValues, }); useEffect(() => { From 6c30d773b1a5058208b70083e48e6ad2af5b0f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Bula=CC=81nek?= Date: Fri, 27 Mar 2026 14:51:47 +0100 Subject: [PATCH 3/4] refactor(adk-ui): simplify settings form demand derivation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Petr Bulánek --- .../runs/contexts/agent-demands/AgentDemandsProvider.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx b/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx index 7ad68d67..e2269338 100644 --- a/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx +++ b/apps/adk-ui/src/modules/runs/contexts/agent-demands/AgentDemandsProvider.tsx @@ -26,14 +26,11 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { const [selectedLLMProviders, setSelectedLLMProviders] = useState>({}); const formDemands = agentClient.demands.formDemands; - const settingsFormDemand = formDemands?.form_demands.settings_form; - const settingsFormDemanded = Boolean(settingsFormDemand); - const settingsForm = formDemands?.form_demands.settings_form ?? null; const initialSettingsFormValues = getInitialSettingsFormValues(settingsForm); const formFulfillmentsRef = useRef({ - form_fulfillments: settingsFormDemanded + form_fulfillments: settingsForm ? { settings_form: { values: initialSettingsFormValues, From 6def599dc59473cb7dc1c7ba88122b4bcac72fa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Bula=CC=81nek?= Date: Fri, 27 Mar 2026 15:16:02 +0100 Subject: [PATCH 4/4] docs: remove deprecated UI settings extension references MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Petr Bulánek --- apps/adk-py/README.md | 1 - .../custom-ui/agent-requirements.mdx | 45 ------------------- 2 files changed, 46 deletions(-) diff --git a/apps/adk-py/README.md b/apps/adk-py/README.md index 3de37043..d1fbe800 100644 --- a/apps/adk-py/README.md +++ b/apps/adk-py/README.md @@ -67,7 +67,6 @@ The SDK includes extension support for: - **Citations** - Source attribution (`CitationExtensionServer`, `CitationExtensionSpec`) - **Trajectory** - Agent decision logging (`TrajectoryExtensionServer`, `TrajectoryExtensionSpec`) -- **Settings** - User-configurable agent parameters (`SettingsExtensionServer`, `SettingsExtensionSpec`) - **LLM Services** - Platform-managed language models (`LLMServiceExtensionServer`, `LLMServiceExtensionSpec`) - **Agent Details** - Metadata and UI enhancements (`AgentDetail`) - **And more** - See [Documentation](https://github.com/kagenti/adk/blob/main/docs/stable/agent-development/overview) diff --git a/docs/development/custom-ui/agent-requirements.mdx b/docs/development/custom-ui/agent-requirements.mdx index 6d24ac2b..4c83c399 100644 --- a/docs/development/custom-ui/agent-requirements.mdx +++ b/docs/development/custom-ui/agent-requirements.mdx @@ -145,49 +145,6 @@ const metadata = await resolveMetadata({ }); ``` -### Settings (deprecated) - -Deprecated. Planned for removal in the next release. Use [Settings Form](#settings-form) instead. - -This extension lives under `ui/settings` in the SDK, but it is treated as a service extension because it carries demands -and fulfillments. - -```typescript -import { handleAgentCard } from '@kagenti/adk'; - -const { resolveMetadata } = handleAgentCard(agentCard); - -const metadata = await resolveMetadata({ - settings: async (demands) => ({ - values: Object.fromEntries( - demands.fields.map((field) => { - if (field.type === 'single_select') { - return [field.id, { type: 'single_select', value: field.default_value }]; - } - return [ - field.id, - { - type: 'checkbox_group', - values: Object.fromEntries( - field.fields.map((checkbox) => [checkbox.id, { value: checkbox.default_value }]), - ), - }, - ]; - }), - ), - }), -}); -``` - -#### Migration guide - -- Agent cards: replace the `ui/settings` extension with the `services/form` extension and move settings fields to `form_demands.settings_form`. -- Single select: change type `single_select` to `singleselect`, and change `options` items from `{ value }` to `{ id }`. -- Checkbox group: `checkbox_group` now requires a non empty `label`. -- Checkbox items: `checkbox` now requires `content` for the visible text. Keep `label` populated too and map the legacy checkbox label to `content` when migrating. -- Fulfillments: change checkbox group values from `{ values: { [id]: { value } } }` to `{ value: { [id]: boolean | null } }`. - - ### Form Provides form responses when the agent requests structured input. @@ -262,8 +219,6 @@ const metadata = await resolveMetadata({ }); ``` -Prefer `settings_form` when both `settings_form` and legacy settings demands are present. - ### Platform API Adds context token metadata so the agent can call platform services. This is typically used only when you cannot pass