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/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..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 @@ -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,17 +25,12 @@ 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({ - form_fulfillments: settingsFormDemanded + form_fulfillments: settingsForm ? { settings_form: { values: initialSettingsFormValues, @@ -47,8 +39,6 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { : {}, }); - const [selectedSettings, setSelectedSettings] = useState(initialSettingsFormValues); - const setDefaultSelectedLLMProviders = useCallback( (data: Record) => { setSelectedLLMProviders( @@ -125,16 +115,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(); @@ -159,24 +145,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( @@ -197,7 +171,7 @@ export function AgentDemandsProvider({ children }: PropsWithChildren) { }, formDemands, settingsForm, - selectedSettings, + initialSettingsFormValues, getFulfillments, provideFormValues, onUpdateSettings, @@ -214,11 +188,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/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/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(() => { 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/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 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: {}