From 7376bc5adba77f279a2517bc36f33e7a4d1bf402 Mon Sep 17 00:00:00 2001 From: Acbox Date: Tue, 21 Apr 2026 23:33:36 +0800 Subject: [PATCH] fix: separate audio domain and restore transcription templates Move speech and transcription internals into the audio domain, restore template-driven transcription providers, and regenerate Swagger/SDK so the frontend can stop hand-calling /transcription-* APIs. --- apps/web/src/i18n/locales/en.json | 29 +- apps/web/src/i18n/locales/zh.json | 29 +- .../pages/bots/components/bot-settings.vue | 17 +- .../speech/components/model-config-editor.vue | 14 +- apps/web/src/pages/transcription/index.vue | 12 +- .../pages/transcription/provider-setting.vue | 149 ++- cmd/agent/app.go | 42 +- cmd/agent/module.go | 16 +- conf/providers/deepgram-transcription.yaml | 9 + conf/providers/elevenlabs-transcription.yaml | 9 + conf/providers/google-transcription.yaml | 9 + conf/providers/openai-transcription.yaml | 9 + conf/providers/openrouter-transcription.yaml | 9 + db/queries/models.sql | 3 + internal/agent/background/manager_test.go | 6 +- internal/agent/tools/transcribe.go | 12 +- internal/agent/tools/tts.go | 12 +- internal/{tts => audio}/adapter.go | 2 +- internal/{tts => audio}/adapter/edge/edge.go | 28 +- .../{tts => audio}/adapter/edge/edge_test.go | 8 +- internal/{tts => audio}/adapter/edge/type.go | 0 .../{tts => audio}/adapter/edge/voices.json | 0 internal/{tts => audio}/adapter/edge/ws.go | 10 +- .../adapter/edge/ws_integration_test.go | 24 +- .../{tts => audio}/adapter/edge/ws_test.go | 8 +- internal/{tts => audio}/bootstrap.go | 36 +- internal/{tts => audio}/config.go | 2 +- internal/{tts => audio}/registry.go | 2 +- internal/{tts => audio}/service.go | 4 +- internal/{tts => audio}/tempstore.go | 6 +- internal/{tts => audio}/types.go | 2 +- internal/channel/inbound/channel.go | 72 +- internal/db/sqlc/models.sql.go | 21 + internal/handlers/bot_tts.go | 26 +- internal/handlers/local_channel.go | 48 +- internal/handlers/tts_providers.go | 182 ++- packages/sdk/src/@pinia/colada.gen.ts | 193 ++- packages/sdk/src/index.ts | 4 +- packages/sdk/src/sdk.gen.ts | 93 +- packages/sdk/src/types.gen.ts | 607 ++++++++-- spec/docs.go | 1074 +++++++++++++---- spec/swagger.json | 1074 +++++++++++++---- spec/swagger.yaml | 715 ++++++++--- 43 files changed, 3511 insertions(+), 1116 deletions(-) create mode 100644 conf/providers/deepgram-transcription.yaml create mode 100644 conf/providers/elevenlabs-transcription.yaml create mode 100644 conf/providers/google-transcription.yaml create mode 100644 conf/providers/openai-transcription.yaml create mode 100644 conf/providers/openrouter-transcription.yaml rename internal/{tts => audio}/adapter.go (97%) rename internal/{tts => audio}/adapter/edge/edge.go (78%) rename internal/{tts => audio}/adapter/edge/edge_test.go (90%) rename internal/{tts => audio}/adapter/edge/type.go (100%) rename internal/{tts => audio}/adapter/edge/voices.json (100%) rename internal/{tts => audio}/adapter/edge/ws.go (97%) rename internal/{tts => audio}/adapter/edge/ws_integration_test.go (74%) rename internal/{tts => audio}/adapter/edge/ws_test.go (94%) rename internal/{tts => audio}/bootstrap.go (79%) rename internal/{tts => audio}/config.go (99%) rename internal/{tts => audio}/registry.go (99%) rename internal/{tts => audio}/service.go (99%) rename internal/{tts => audio}/tempstore.go (96%) rename internal/{tts => audio}/types.go (99%) diff --git a/apps/web/src/i18n/locales/en.json b/apps/web/src/i18n/locales/en.json index 0fd14a94..bdaaefc9 100644 --- a/apps/web/src/i18n/locales/en.json +++ b/apps/web/src/i18n/locales/en.json @@ -429,17 +429,6 @@ "synthesis": { "models": "Synthesis Models" }, - "transcription": { - "models": "Transcription Models", - "noModels": "No transcription models found. Import available models or keep the default template model.", - "importModels": "Import Transcription Models", - "importSuccess": "Transcription models imported successfully", - "importFailed": "Failed to import transcription models", - "test": { - "title": "Test Transcription", - "run": "Transcribe" - } - }, "advanced": { "title": "Advanced Settings", "description": "These fields usually map to underlying vendor implementation details. Most users can keep the defaults." @@ -466,7 +455,23 @@ "transcription": { "title": "Transcription", "emptyTitle": "No Transcription Providers", - "emptyDescription": "Add a transcription provider to enable speech-to-text for your bots" + "emptyDescription": "Add a transcription provider to enable speech-to-text for your bots", + "models": "Transcription Models", + "noModels": "No transcription models found. Import available models or keep the default template model.", + "noCapabilities": "No capabilities available for this model.", + "importModels": "Import Models", + "importSuccess": "Transcription models imported successfully", + "importFailed": "Failed to import transcription models", + "saveSuccess": "Transcription configuration saved", + "advanced": { + "title": "Advanced Settings", + "description": "These fields usually map to underlying vendor implementation details. Most users can keep the defaults." + }, + "test": { + "title": "Test Transcription", + "run": "Transcribe", + "failed": "Transcription failed" + } }, "email": { "title": "Email", diff --git a/apps/web/src/i18n/locales/zh.json b/apps/web/src/i18n/locales/zh.json index 930b6028..382a3ee9 100644 --- a/apps/web/src/i18n/locales/zh.json +++ b/apps/web/src/i18n/locales/zh.json @@ -425,17 +425,6 @@ "synthesis": { "models": "语音合成模型" }, - "transcription": { - "models": "语音识别模型", - "noModels": "暂无语音识别模型,可导入可用模型,或保留默认模板模型。", - "importModels": "导入识别模型", - "importSuccess": "识别模型导入成功", - "importFailed": "识别模型导入失败", - "test": { - "title": "测试识别", - "run": "开始识别" - } - }, "advanced": { "title": "高级设置", "description": "这些字段通常对应底层服务商实现细节。大多数情况下保留默认值即可。" @@ -462,7 +451,23 @@ "transcription": { "title": "语音转写", "emptyTitle": "暂无转写提供方", - "emptyDescription": "添加转写提供方以为 Bot 启用语音转文字功能" + "emptyDescription": "添加转写提供方以为 Bot 启用语音转文字功能", + "models": "语音识别模型", + "noModels": "暂无语音识别模型,可导入可用模型,或保留默认模板模型。", + "importModels": "导入模型", + "importSuccess": "识别模型导入成功", + "importFailed": "识别模型导入失败", + "saveSuccess": "转写配置已保存", + "noCapabilities": "该模型暂无可用能力信息。", + "advanced": { + "title": "高级设置", + "description": "这些字段通常对应底层服务商实现细节。大多数情况下保留默认值即可。" + }, + "test": { + "title": "测试识别", + "run": "开始识别", + "failed": "识别失败" + } }, "email": { "title": "邮件提供方", diff --git a/apps/web/src/pages/bots/components/bot-settings.vue b/apps/web/src/pages/bots/components/bot-settings.vue index 718cc089..7f1e3e84 100644 --- a/apps/web/src/pages/bots/components/bot-settings.vue +++ b/apps/web/src/pages/bots/components/bot-settings.vue @@ -367,8 +367,7 @@ import MemoryProviderSelect from './memory-provider-select.vue' import TtsModelSelect from './tts-model-select.vue' import BrowserContextSelect from './browser-context-select.vue' import { useQuery, useMutation, useQueryCache } from '@pinia/colada' -import { getBotsById, putBotsById, getBotsByBotIdSettings, putBotsByBotIdSettings, deleteBotsById, getModels, getProviders, getSearchProviders, getMemoryProviders, getSpeechProviders, getSpeechModels, getBrowserContexts, getBotsByBotIdMemoryStatus, postBotsByBotIdMemoryRebuild } from '@memohai/sdk' -import { client } from '@memohai/sdk/client' +import { getBotsById, putBotsById, getBotsByBotIdSettings, putBotsByBotIdSettings, deleteBotsById, getModels, getProviders, getSearchProviders, getMemoryProviders, getSpeechProviders, getSpeechModels, getTranscriptionProviders, getTranscriptionModels, getBrowserContexts, getBotsByBotIdMemoryStatus, postBotsByBotIdMemoryRebuild } from '@memohai/sdk' import type { SettingsSettings } from '@memohai/sdk' import type { Ref } from 'vue' import { resolveApiErrorMessage } from '@/utils/api-error' @@ -455,22 +454,16 @@ const { data: ttsModelData } = useQuery({ const { data: transcriptionModelData } = useQuery({ key: ['transcription-models'], query: async () => { - const resp = await client.get({ - url: '/transcription-models', - throwOnError: true, - }) - return resp.data + const { data } = await getTranscriptionModels({ throwOnError: true }) + return data }, }) const { data: transcriptionProviderData } = useQuery({ key: ['transcription-providers'], query: async () => { - const resp = await client.get({ - url: '/transcription-providers', - throwOnError: true, - }) - return resp.data + const { data } = await getTranscriptionProviders({ throwOnError: true }) + return data }, }) diff --git a/apps/web/src/pages/speech/components/model-config-editor.vue b/apps/web/src/pages/speech/components/model-config-editor.vue index 62e24821..d0b9c4cc 100644 --- a/apps/web/src/pages/speech/components/model-config-editor.vue +++ b/apps/web/src/pages/speech/components/model-config-editor.vue @@ -85,7 +85,7 @@ v-else-if="advancedFields.length === 0" class="text-xs text-muted-foreground" > - {{ $t('speech.noCapabilities') }} + {{ mode === 'transcription' ? $t('transcription.noCapabilities') : $t('speech.noCapabilities') }}
- {{ $t('speech.advanced.title') }} + {{ mode === 'transcription' ? $t('transcription.advanced.title') : $t('speech.advanced.title') }}

- {{ $t('speech.advanced.description') }} + {{ mode === 'transcription' ? $t('transcription.advanced.description') : $t('speech.advanced.description') }}

- {{ mode === 'transcription' ? $t('speech.transcription.test.title') : $t('speech.test.title') }} + {{ mode === 'transcription' ? $t('transcription.test.title') : $t('speech.test.title') }}

- {{ mode === 'transcription' ? $t('speech.transcription.test.run') : $t('speech.test.generate') }} + {{ mode === 'transcription' ? $t('transcription.test.run') : $t('speech.test.generate') }} -

+

{{ transcriptionText }}

['transcription-providers'], query: async () => { - const { data } = await client.get({ url: '/transcription-providers' }) - return (data ?? []) as TtsSpeechProviderResponse[] + const { data } = await getTranscriptionProviders({ throwOnError: true }) + return (data ?? []) as AudioSpeechProviderResponse[] }, }) -const curProvider = ref() -provide('curTtsProvider', curProvider) +const curProvider = ref() +provide('curTranscriptionProvider', curProvider) const selectProvider = (name: string) => computed(() => curProvider.value?.name === name) diff --git a/apps/web/src/pages/transcription/provider-setting.vue b/apps/web/src/pages/transcription/provider-setting.vue index 5b127143..c4744cb5 100644 --- a/apps/web/src/pages/transcription/provider-setting.vue +++ b/apps/web/src/pages/transcription/provider-setting.vue @@ -135,7 +135,7 @@

- {{ $t('speech.transcription.models') }} + {{ $t('transcription.models') }}

- {{ $t('speech.transcription.importModels') }} + {{ $t('transcription.importModels') }} - {{ $t('speech.transcription.noModels') }} + {{ $t('transcription.noModels') }}
[number]): ModelMeta | null { + if (!model?.id) return null + return { + id: model.id, + name: model.name ?? model.id, + config_schema: normalizeConfigSchema(model.config_schema), + capabilities: model.capabilities + ? { config_schema: normalizeConfigSchema(model.capabilities.config_schema) } + : undefined, + } +} + +function normalizeProviderMeta(meta: AudioProviderMetaResponse): ProviderMeta { + return { + provider: meta.provider ?? '', + display_name: meta.display_name, + config_schema: normalizeConfigSchema(meta.config_schema), + default_transcription_model: meta.default_transcription_model, + transcription_models: (meta.transcription_models ?? []) + .map(normalizeModelMeta) + .filter((model): model is ModelMeta => model !== null), + models: (meta.models ?? []) + .map(normalizeModelMeta) + .filter((model): model is ModelMeta => model !== null), + } +} + const { t } = useI18n() -const curProvider = inject('curTtsProvider', ref()) +const curProvider = inject('curTranscriptionProvider', ref()) const curProviderId = computed(() => curProvider.value?.id) const providerName = ref('') const providerConfig = reactive>({}) @@ -258,19 +314,22 @@ const transcriptionTypeOptions = [ ] const { data: providerDetail } = useQuery({ - key: () => ['transcription-provider-detail', curProviderId.value], + key: () => ['transcription-provider-detail', curProviderId.value ?? ''], query: async () => { if (!curProviderId.value) return null - const { data } = await client.get({ url: `/transcription-providers/${curProviderId.value}` }) - return (data ?? null) as TtsSpeechProviderResponse | null + const { data } = await getTranscriptionProvidersById({ + path: { id: curProviderId.value }, + throwOnError: true, + }) + return (data ?? null) as AudioSpeechProviderResponse | null }, }) const { data: metaList } = useQuery({ key: () => ['transcription-providers-meta'], query: async () => { - const { data } = await client.get({ url: '/transcription-providers/meta' }) - return (data ?? []) as ProviderMeta[] + const { data } = await getTranscriptionProvidersMeta({ throwOnError: true }) + return (data ?? []).map(normalizeProviderMeta) }, }) @@ -278,11 +337,14 @@ const currentMeta = computed(() => (metaList.value ?? []).find(m => m.provider = const orderedProviderFields = computed(() => [...(currentMeta.value?.config_schema?.fields ?? [])].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))) const { data: providerModelData } = useQuery({ - key: () => ['transcription-provider-models', curProviderId.value], + key: () => ['transcription-provider-models', curProviderId.value ?? ''], query: async () => { if (!curProviderId.value) return [] - const { data } = await client.get({ url: `/transcription-providers/${curProviderId.value}/models` }) - return (data ?? []) as TtsSpeechModelResponse[] + const { data } = await getTranscriptionProvidersByIdModels({ + path: { id: curProviderId.value }, + throwOnError: true, + }) + return (data ?? []) as AudioTranscriptionModelResponse[] }, }) @@ -306,7 +368,7 @@ function toggleModel(id: string) { } async function handleToggleEnable(value: boolean) { - if (!curProviderId.value || !curProvider.value) return + if (!curProviderId.value || !curProvider.value?.client_type) return const prev = curProvider.value.enable ?? false curProvider.value = { ...curProvider.value, enable: value } enableLoading.value = true @@ -314,7 +376,7 @@ async function handleToggleEnable(value: boolean) { await putProvidersById({ path: { id: curProviderId.value }, body: { - name: providerName.value.trim() || curProvider.value.name, + name: providerName.value.trim() || curProvider.value.name || '', client_type: curProvider.value.client_type, enable: value, config: sanitizeConfig(providerConfig), @@ -322,7 +384,7 @@ async function handleToggleEnable(value: boolean) { throwOnError: true, }) queryCache.invalidateQueries({ key: ['transcription-providers'] }) - queryCache.invalidateQueries({ key: ['transcription-provider-detail', curProviderId.value] }) + queryCache.invalidateQueries({ key: ['transcription-provider-detail', curProviderId.value ?? ''] }) } catch { curProvider.value = { ...curProvider.value, enable: prev } toast.error(t('common.saveFailed')) @@ -332,22 +394,22 @@ async function handleToggleEnable(value: boolean) { } async function handleSaveProvider() { - if (!curProviderId.value || !curProvider.value) return + if (!curProviderId.value || !curProvider.value?.client_type) return saveLoading.value = true try { await putProvidersById({ path: { id: curProviderId.value }, body: { - name: providerName.value.trim() || curProvider.value.name, + name: providerName.value.trim() || curProvider.value.name || '', client_type: curProvider.value.client_type, enable: curProvider.value.enable, config: sanitizeConfig(providerConfig), }, throwOnError: true, }) - toast.success(t('speech.saveSuccess')) + toast.success(t('transcription.saveSuccess')) queryCache.invalidateQueries({ key: ['transcription-providers'] }) - queryCache.invalidateQueries({ key: ['transcription-provider-detail', curProviderId.value] }) + queryCache.invalidateQueries({ key: ['transcription-provider-detail', curProviderId.value ?? ''] }) } catch { toast.error(t('common.saveFailed')) } finally { @@ -359,12 +421,13 @@ async function handleSaveModel(modelId: string, config: Record) const model = providerModels.value.find(item => item.id === modelId) if (!model) return try { - await client.put({ - url: `/transcription-models/${modelId}`, - body: { name: model.name ?? model.model_id, config }, + await putTranscriptionModelsById({ + path: { id: modelId }, + body: { name: model.name ?? model.model_id ?? modelId, config }, + throwOnError: true, }) - toast.success(t('speech.saveSuccess')) - queryCache.invalidateQueries({ key: ['transcription-provider-models', curProviderId.value] }) + toast.success(t('transcription.saveSuccess')) + queryCache.invalidateQueries({ key: ['transcription-provider-models', curProviderId.value ?? ''] }) queryCache.invalidateQueries({ key: ['transcription-models'] }) } catch { toast.error(t('common.saveFailed')) @@ -375,35 +438,35 @@ async function handleImportModels() { if (!curProviderId.value) return importLoading.value = true try { - const { data } = await client.post({ url: `/transcription-providers/${curProviderId.value}/import-models` }) + const { data } = await postTranscriptionProvidersByIdImportModels({ + path: { id: curProviderId.value }, + throwOnError: true, + }) const payload = (data ?? {}) as { created?: number, skipped?: number } - toast.success(t('speech.transcription.importSuccess', { + toast.success(t('transcription.importSuccess', { created: payload.created ?? 0, skipped: payload.skipped ?? 0, })) - queryCache.invalidateQueries({ key: ['transcription-provider-models', curProviderId.value] }) + queryCache.invalidateQueries({ key: ['transcription-provider-models', curProviderId.value ?? ''] }) queryCache.invalidateQueries({ key: ['transcription-models'] }) queryCache.invalidateQueries({ key: ['transcription-providers-meta'] }) } catch { - toast.error(t('speech.transcription.importFailed')) + toast.error(t('transcription.importFailed')) } finally { importLoading.value = false } } async function handleTestModel(modelId: string, file: File, config: Record) { - const form = new FormData() - form.append('file', file) - form.append('config', JSON.stringify(config)) - const apiBase = import.meta.env.VITE_API_URL?.trim() || '/api' - const token = localStorage.getItem('token') - const resp = await fetch(`${apiBase}/transcription-models/${modelId}/test`, { - method: 'POST', - headers: token ? { Authorization: `Bearer ${token}` } : undefined, - body: form, + const { data } = await postTranscriptionModelsByIdTest({ + path: { id: modelId }, + body: { + file, + config: JSON.stringify(config), + }, + throwOnError: true, }) - if (!resp.ok) throw new Error(await resp.text()) - return await resp.json() + return (data ?? {}) as AudioTestTranscriptionResponse } function sanitizeConfig(input: Record) { diff --git a/cmd/agent/app.go b/cmd/agent/app.go index b4e548c9..5ca3c08d 100644 --- a/cmd/agent/app.go +++ b/cmd/agent/app.go @@ -23,6 +23,7 @@ import ( agentpkg "github.com/memohai/memoh/internal/agent" "github.com/memohai/memoh/internal/agent/background" agenttools "github.com/memohai/memoh/internal/agent/tools" + audiopkg "github.com/memohai/memoh/internal/audio" "github.com/memohai/memoh/internal/bind" "github.com/memohai/memoh/internal/boot" "github.com/memohai/memoh/internal/bots" @@ -87,7 +88,6 @@ import ( "github.com/memohai/memoh/internal/storage/providers/containerfs" "github.com/memohai/memoh/internal/storage/providers/fallback" "github.com/memohai/memoh/internal/storage/providers/localfs" - ttspkg "github.com/memohai/memoh/internal/tts" "github.com/memohai/memoh/internal/version" "github.com/memohai/memoh/internal/workspace" ) @@ -331,7 +331,7 @@ func provideChannelRouter( policyService *policy.Service, bindService *bind.Service, mediaService *media.Service, - ttsService *ttspkg.Service, + audioService *audiopkg.Service, settingsService *settings.Service, scheduleService *schedule.Service, mcpConnService *mcp.ConnectionService, @@ -372,8 +372,8 @@ func provideChannelRouter( processor.SetMediaService(mediaService) processor.SetStreamObserver(local.NewRouteHubBroadcaster(hub)) processor.SetDispatcher(inbound.NewRouteDispatcher(log)) - processor.SetTtsService(ttsService, &settingsTtsModelResolver{settings: settingsService}) - processor.SetTranscriptionService(&settingsTranscriptionAdapter{tts: ttsService}, &settingsTranscriptionModelResolver{settings: settingsService}) + processor.SetSpeechService(audioService, &settingsSpeechModelResolver{settings: settingsService}) + processor.SetTranscriptionService(&settingsTranscriptionAdapter{audio: audioService}, &settingsTranscriptionModelResolver{settings: settingsService}) cmdHandler := command.NewHandler( log, &command.BotMemberRoleAdapter{BotService: botService}, @@ -450,7 +450,7 @@ func provideBackgroundManager(log *slog.Logger) *background.Manager { return background.New(log) } -func provideToolProviders(log *slog.Logger, cfg config.Config, channelManager *channel.Manager, registry *channel.Registry, routeService *route.DBService, scheduleService *schedule.Service, settingsService *settings.Service, searchProviderService *searchproviders.Service, manager *workspace.Manager, mediaService *media.Service, memoryRegistry *memprovider.Registry, emailService *emailpkg.Service, emailManager *emailpkg.Manager, fedGateway *handlers.MCPFederationGateway, mcpConnService *mcp.ConnectionService, modelsService *models.Service, browserContextService *browsercontexts.Service, queries *dbsqlc.Queries, ttsService *ttspkg.Service, sessionService *sessionpkg.Service, bgManager *background.Manager) []agenttools.ToolProvider { +func provideToolProviders(log *slog.Logger, cfg config.Config, channelManager *channel.Manager, registry *channel.Registry, routeService *route.DBService, scheduleService *schedule.Service, settingsService *settings.Service, searchProviderService *searchproviders.Service, manager *workspace.Manager, mediaService *media.Service, memoryRegistry *memprovider.Registry, emailService *emailpkg.Service, emailManager *emailpkg.Manager, fedGateway *handlers.MCPFederationGateway, mcpConnService *mcp.ConnectionService, modelsService *models.Service, browserContextService *browsercontexts.Service, queries *dbsqlc.Queries, audioService *audiopkg.Service, sessionService *sessionpkg.Service, bgManager *background.Manager) []agenttools.ToolProvider { var assetResolver messaging.AssetResolver if mediaService != nil { assetResolver = &mediaAssetResolverAdapter{media: mediaService} @@ -468,8 +468,8 @@ func provideToolProviders(log *slog.Logger, cfg config.Config, channelManager *c agenttools.NewSpawnProvider(log, settingsService, modelsService, queries, sessionService), agenttools.NewSkillProvider(log), agenttools.NewBrowserProvider(log, settingsService, browserContextService, manager, cfg.BrowserGateway), - agenttools.NewTTSProvider(log, settingsService, ttsService, channelManager, registry), - agenttools.NewTranscriptionProvider(log, settingsService, ttsService, mediaService), + agenttools.NewTTSProvider(log, settingsService, audioService, channelManager, registry), + agenttools.NewTranscriptionProvider(log, settingsService, audioService, mediaService), agenttools.NewImageGenProvider(log, settingsService, modelsService, queries, manager, config.DefaultDataMount), agenttools.NewFederationProvider(log, fedSource), agenttools.NewHistoryProvider(log, sessionService, queries), @@ -513,23 +513,23 @@ func provideUsersHandler(log *slog.Logger, accountService *accounts.Service, ide return handlers.NewUsersHandler(log, accountService, identityService, botService, routeService, channelStore, channelLifecycle, channelManager, registry) } -func provideWebHandler(channelManager *channel.Manager, channelStore *channel.Store, chatService *conversation.Service, hub *local.RouteHub, botService *bots.Service, accountService *accounts.Service, resolver *flow.Resolver, mediaService *media.Service, ttsService *ttspkg.Service, settingsService *settings.Service) *handlers.LocalChannelHandler { +func provideWebHandler(channelManager *channel.Manager, channelStore *channel.Store, chatService *conversation.Service, hub *local.RouteHub, botService *bots.Service, accountService *accounts.Service, resolver *flow.Resolver, mediaService *media.Service, audioService *audiopkg.Service, settingsService *settings.Service) *handlers.LocalChannelHandler { h := handlers.NewLocalChannelHandler(local.WebType, channelManager, channelStore, chatService, hub, botService, accountService) h.SetResolver(resolver) h.SetMediaService(mediaService) - h.SetTtsService(ttsService, &settingsTtsModelResolver{settings: settingsService}) + h.SetSpeechService(audioService, &settingsSpeechModelResolver{settings: settingsService}) return h } -func provideTtsRegistry() *ttspkg.Registry { - return ttspkg.NewRegistry() +func provideAudioRegistry() *audiopkg.Registry { + return audiopkg.NewRegistry() } -func provideTtsTempStore() (*ttspkg.TempStore, error) { - return ttspkg.NewTempStore(os.TempDir()) +func provideAudioTempStore() (*audiopkg.TempStore, error) { + return audiopkg.NewTempStore(os.TempDir()) } -func startTtsTempStoreCleanup(lc fx.Lifecycle, store *ttspkg.TempStore) { +func startAudioTempStoreCleanup(lc fx.Lifecycle, store *audiopkg.TempStore) { done := make(chan struct{}) lc.Append(fx.Hook{ OnStart: func(_ context.Context) error { @@ -585,11 +585,11 @@ func (a *sessionEnsurerAdapter) CreateNewSession(ctx context.Context, botID, rou return inbound.SessionResult{ID: sess.ID, Type: sess.Type}, nil } -type settingsTtsModelResolver struct { +type settingsSpeechModelResolver struct { settings *settings.Service } -func (r *settingsTtsModelResolver) ResolveTtsModelID(ctx context.Context, botID string) (string, error) { +func (r *settingsSpeechModelResolver) ResolveSpeechModelID(ctx context.Context, botID string) (string, error) { s, err := r.settings.GetBot(ctx, botID) if err != nil { return "", err @@ -610,7 +610,7 @@ func (r *settingsTranscriptionModelResolver) ResolveTranscriptionModelID(ctx con } type settingsTranscriptionAdapter struct { - tts *ttspkg.Service + audio *audiopkg.Service } type inboundTranscriptionResult struct { @@ -620,7 +620,7 @@ type inboundTranscriptionResult struct { func (r inboundTranscriptionResult) GetText() string { return r.text } func (a *settingsTranscriptionAdapter) Transcribe(ctx context.Context, modelID string, audio []byte, filename string, contentType string, overrideCfg map[string]any) (inbound.TranscriptionResult, error) { - result, err := a.tts.Transcribe(ctx, modelID, audio, filename, contentType, overrideCfg) + result, err := a.audio.Transcribe(ctx, modelID, audio, filename, contentType, overrideCfg) if err != nil { return nil, err } @@ -716,11 +716,11 @@ func startRegistrySync(lc fx.Lifecycle, log *slog.Logger, cfg config.Config, que }) } -func startSpeechProviderBootstrap(lc fx.Lifecycle, log *slog.Logger, queries *dbsqlc.Queries, registry *ttspkg.Registry) { +func startAudioProviderBootstrap(lc fx.Lifecycle, log *slog.Logger, queries *dbsqlc.Queries, registry *audiopkg.Registry) { lc.Append(fx.Hook{ OnStart: func(ctx context.Context) error { - if err := ttspkg.SyncRegistry(ctx, log, queries, registry); err != nil { - log.Warn("speech registry bootstrap failed", slog.Any("error", err)) + if err := audiopkg.SyncRegistry(ctx, log, queries, registry); err != nil { + log.Warn("audio registry bootstrap failed", slog.Any("error", err)) } return nil }, diff --git a/cmd/agent/module.go b/cmd/agent/module.go index c408fa44..898ab6c3 100644 --- a/cmd/agent/module.go +++ b/cmd/agent/module.go @@ -8,6 +8,7 @@ import ( "github.com/memohai/memoh/internal/accounts" "github.com/memohai/memoh/internal/acl" + audiopkg "github.com/memohai/memoh/internal/audio" "github.com/memohai/memoh/internal/bind" "github.com/memohai/memoh/internal/boot" "github.com/memohai/memoh/internal/bots" @@ -29,7 +30,6 @@ import ( "github.com/memohai/memoh/internal/schedule" "github.com/memohai/memoh/internal/searchproviders" "github.com/memohai/memoh/internal/settings" - ttspkg "github.com/memohai/memoh/internal/tts" ) func runServe() { @@ -63,9 +63,9 @@ func options() fx.Option { identities.NewService, bind.NewService, event.NewHub, - provideTtsRegistry, - ttspkg.NewService, - provideTtsTempStore, + provideAudioRegistry, + audiopkg.NewService, + provideAudioTempStore, emailpkg.NewDBOAuthTokenStore, provideEmailRegistry, emailpkg.NewService, @@ -121,8 +121,8 @@ func options() fx.Option { provideServerHandler(weixin.NewQRServerHandler), provideServerHandler(provideUsersHandler), provideServerHandler(handlers.NewMemoryProvidersHandler), - provideServerHandler(handlers.NewSpeechHandler), - provideServerHandler(handlers.NewBotTtsHandler), + provideServerHandler(handlers.NewAudioHandler), + provideServerHandler(handlers.NewBotAudioHandler), provideServerHandler(handlers.NewEmailProvidersHandler), provideServerHandler(handlers.NewEmailBindingsHandler), provideServerHandler(handlers.NewEmailOutboxHandler), @@ -141,7 +141,7 @@ func options() fx.Option { fx.Invoke( injectToolProviders, startRegistrySync, - startSpeechProviderBootstrap, + startAudioProviderBootstrap, startMemoryProviderBootstrap, startSearchProviderBootstrap, startScheduleService, @@ -151,7 +151,7 @@ func options() fx.Option { startEmailManager, startContainerReconciliation, startBackgroundTaskCleanup, - startTtsTempStoreCleanup, + startAudioTempStoreCleanup, startServer, ), fx.WithLogger(func(logger *slog.Logger) fxevent.Logger { diff --git a/conf/providers/deepgram-transcription.yaml b/conf/providers/deepgram-transcription.yaml new file mode 100644 index 00000000..62936f32 --- /dev/null +++ b/conf/providers/deepgram-transcription.yaml @@ -0,0 +1,9 @@ +name: Deepgram Transcription +client_type: deepgram-transcription +icon: deepgram +base_url: https://api.deepgram.com + +models: + - model_id: nova-3 + name: Nova-3 + type: transcription diff --git a/conf/providers/elevenlabs-transcription.yaml b/conf/providers/elevenlabs-transcription.yaml new file mode 100644 index 00000000..97cbabbf --- /dev/null +++ b/conf/providers/elevenlabs-transcription.yaml @@ -0,0 +1,9 @@ +name: ElevenLabs Transcription +client_type: elevenlabs-transcription +icon: elevenlabs +base_url: https://api.elevenlabs.io + +models: + - model_id: scribe_v2 + name: Scribe v2 + type: transcription diff --git a/conf/providers/google-transcription.yaml b/conf/providers/google-transcription.yaml new file mode 100644 index 00000000..3a2d3fe8 --- /dev/null +++ b/conf/providers/google-transcription.yaml @@ -0,0 +1,9 @@ +name: Google Transcription +client_type: google-transcription +icon: google-color +base_url: https://generativelanguage.googleapis.com/v1beta + +models: + - model_id: gemini-2.5-flash + name: Gemini 2.5 Flash + type: transcription diff --git a/conf/providers/openai-transcription.yaml b/conf/providers/openai-transcription.yaml new file mode 100644 index 00000000..f85edfee --- /dev/null +++ b/conf/providers/openai-transcription.yaml @@ -0,0 +1,9 @@ +name: OpenAI Transcription +client_type: openai-transcription +icon: openai +base_url: https://api.openai.com/v1 + +models: + - model_id: gpt-4o-mini-transcribe + name: GPT-4o Mini Transcribe + type: transcription diff --git a/conf/providers/openrouter-transcription.yaml b/conf/providers/openrouter-transcription.yaml new file mode 100644 index 00000000..78ff9cee --- /dev/null +++ b/conf/providers/openrouter-transcription.yaml @@ -0,0 +1,9 @@ +name: OpenRouter Transcription +client_type: openrouter-transcription +icon: openrouter +base_url: https://openrouter.ai/api/v1 + +models: + - model_id: openai/gpt-4o-mini-transcribe + name: OpenRouter Transcription + type: transcription diff --git a/db/queries/models.sql b/db/queries/models.sql index d87de737..f3a921de 100644 --- a/db/queries/models.sql +++ b/db/queries/models.sql @@ -16,6 +16,9 @@ SELECT * FROM providers WHERE id = sqlc.arg(id); -- name: GetProviderByName :one SELECT * FROM providers WHERE name = sqlc.arg(name); +-- name: GetProviderByClientType :one +SELECT * FROM providers WHERE client_type = sqlc.arg(client_type); + -- name: ListProviders :many SELECT * FROM providers WHERE client_type NOT IN ( diff --git a/internal/agent/background/manager_test.go b/internal/agent/background/manager_test.go index e53907d7..5b272545 100644 --- a/internal/agent/background/manager_test.go +++ b/internal/agent/background/manager_test.go @@ -72,8 +72,7 @@ func TestSpawnAndNotify(t *testing.T) { task := mgr.Get(taskID) if task == nil { t.Fatal("task not found after completion") - } - if task.Status != TaskCompleted { + } else if task.Status != TaskCompleted { t.Errorf("expected task status completed, got %s", task.Status) } } @@ -130,8 +129,7 @@ func TestKillTask(t *testing.T) { task := mgr.Get(taskID) if task == nil { t.Fatal("task not found") - } - if task.Status != TaskKilled { + } else if task.Status != TaskKilled { t.Errorf("expected status killed, got %s", task.Status) } diff --git a/internal/agent/tools/transcribe.go b/internal/agent/tools/transcribe.go index ee5f0999..93602242 100644 --- a/internal/agent/tools/transcribe.go +++ b/internal/agent/tools/transcribe.go @@ -16,9 +16,9 @@ import ( sdk "github.com/memohai/twilight-ai/sdk" + audiopkg "github.com/memohai/memoh/internal/audio" "github.com/memohai/memoh/internal/media" "github.com/memohai/memoh/internal/settings" - ttspkg "github.com/memohai/memoh/internal/tts" ) const mediaDataPrefix = "/data/media/" @@ -26,19 +26,19 @@ const mediaDataPrefix = "/data/media/" type TranscriptionProvider struct { logger *slog.Logger settings *settings.Service - tts *ttspkg.Service + audio *audiopkg.Service media *media.Service http *http.Client } -func NewTranscriptionProvider(log *slog.Logger, settingsSvc *settings.Service, ttsSvc *ttspkg.Service, mediaSvc *media.Service) *TranscriptionProvider { +func NewTranscriptionProvider(log *slog.Logger, settingsSvc *settings.Service, audioSvc *audiopkg.Service, mediaSvc *media.Service) *TranscriptionProvider { if log == nil { log = slog.Default() } return &TranscriptionProvider{ logger: log.With(slog.String("tool", "transcribe_audio")), settings: settingsSvc, - tts: ttsSvc, + audio: audioSvc, media: mediaSvc, http: &http.Client{ Timeout: 30 * time.Second, @@ -56,7 +56,7 @@ func NewTranscriptionProvider(log *slog.Logger, settingsSvc *settings.Service, t } func (p *TranscriptionProvider) Tools(ctx context.Context, session SessionContext) ([]sdk.Tool, error) { - if session.IsSubagent || p.settings == nil || p.tts == nil || p.media == nil { + if session.IsSubagent || p.settings == nil || p.audio == nil || p.media == nil { return nil, nil } botID := strings.TrimSpace(session.BotID) @@ -120,7 +120,7 @@ func (p *TranscriptionProvider) execTranscribe(ctx context.Context, session Sess if prompt := FirstStringArg(args, "prompt"); prompt != "" { override["prompt"] = prompt } - result, err := p.tts.Transcribe(ctx, modelID, audio, filename, contentType, override) + result, err := p.audio.Transcribe(ctx, modelID, audio, filename, contentType, override) if err != nil { return nil, err } diff --git a/internal/agent/tools/tts.go b/internal/agent/tools/tts.go index a099dbd4..ac22a379 100644 --- a/internal/agent/tools/tts.go +++ b/internal/agent/tools/tts.go @@ -10,9 +10,9 @@ import ( sdk "github.com/memohai/twilight-ai/sdk" + audiopkg "github.com/memohai/memoh/internal/audio" "github.com/memohai/memoh/internal/channel" "github.com/memohai/memoh/internal/settings" - ttspkg "github.com/memohai/memoh/internal/tts" ) const ttsMaxTextLen = 500 @@ -30,26 +30,26 @@ type TTSChannelResolver interface { type TTSProvider struct { logger *slog.Logger settings *settings.Service - tts *ttspkg.Service + audio *audiopkg.Service sender TTSSender resolver TTSChannelResolver } -func NewTTSProvider(log *slog.Logger, settingsSvc *settings.Service, ttsSvc *ttspkg.Service, sender TTSSender, resolver TTSChannelResolver) *TTSProvider { +func NewTTSProvider(log *slog.Logger, settingsSvc *settings.Service, audioSvc *audiopkg.Service, sender TTSSender, resolver TTSChannelResolver) *TTSProvider { if log == nil { log = slog.Default() } return &TTSProvider{ logger: log.With(slog.String("tool", "tts")), settings: settingsSvc, - tts: ttsSvc, + audio: audioSvc, sender: sender, resolver: resolver, } } func (p *TTSProvider) Tools(ctx context.Context, session SessionContext) ([]sdk.Tool, error) { - if session.IsSubagent || p.settings == nil || p.tts == nil || p.sender == nil || p.resolver == nil { + if session.IsSubagent || p.settings == nil || p.audio == nil || p.sender == nil || p.resolver == nil { return nil, nil } botID := strings.TrimSpace(session.BotID) @@ -115,7 +115,7 @@ func (p *TTSProvider) execSpeak(ctx context.Context, session SessionContext, arg if botSettings.TtsModelID == "" { return nil, errors.New("bot has no TTS model configured") } - audioData, contentType, synthErr := p.tts.Synthesize(ctx, botSettings.TtsModelID, text, nil) + audioData, contentType, synthErr := p.audio.Synthesize(ctx, botSettings.TtsModelID, text, nil) if synthErr != nil { return nil, fmt.Errorf("speech synthesis failed: %s", synthErr.Error()) } diff --git a/internal/tts/adapter.go b/internal/audio/adapter.go similarity index 97% rename from internal/tts/adapter.go rename to internal/audio/adapter.go index f9c358cb..b20e2f38 100644 --- a/internal/tts/adapter.go +++ b/internal/audio/adapter.go @@ -1,4 +1,4 @@ -package tts +package audio import "context" diff --git a/internal/tts/adapter/edge/edge.go b/internal/audio/adapter/edge/edge.go similarity index 78% rename from internal/tts/adapter/edge/edge.go rename to internal/audio/adapter/edge/edge.go index ebbc0fca..ee7e848a 100644 --- a/internal/tts/adapter/edge/edge.go +++ b/internal/audio/adapter/edge/edge.go @@ -6,10 +6,10 @@ import ( "log/slog" "strings" - "github.com/memohai/memoh/internal/tts" + "github.com/memohai/memoh/internal/audio" ) -const TtsTypeEdge tts.TtsType = "edge" +const TtsTypeEdge audio.TtsType = "edge" const edgeModelReadAloud = "edge-read-aloud" @@ -33,12 +33,12 @@ func NewEdgeAdapterWithClient(log *slog.Logger, client *EdgeWsClient) *EdgeAdapt } } -func (*EdgeAdapter) Type() tts.TtsType { +func (*EdgeAdapter) Type() audio.TtsType { return TtsTypeEdge } -func (*EdgeAdapter) Meta() tts.TtsMeta { - return tts.TtsMeta{ +func (*EdgeAdapter) Meta() audio.TtsMeta { + return audio.TtsMeta{ Provider: "Microsoft Edge", Description: "Microsoft Edge TTS", } @@ -54,32 +54,32 @@ var edgeFormats = []string{ "webm-24khz-16bit-mono-opus", } -var edgeSpeedConstraint = &tts.ParamConstraint{ +var edgeSpeedConstraint = &audio.ParamConstraint{ Options: []float64{0.5, 1.0, 2.0, 3.0}, Default: 1.0, } -var edgePitchConstraint = &tts.ParamConstraint{ +var edgePitchConstraint = &audio.ParamConstraint{ Min: -100, Max: 100, Default: 0, } -func (*EdgeAdapter) Models() []tts.ModelInfo { - var voices []tts.VoiceInfo +func (*EdgeAdapter) Models() []audio.ModelInfo { + var voices []audio.VoiceInfo for lang, ids := range EdgeTTSVoices { for _, id := range ids { name := strings.TrimPrefix(id, lang+"-") name = strings.TrimSuffix(name, "Neural") - voices = append(voices, tts.VoiceInfo{ID: id, Lang: lang, Name: name}) + voices = append(voices, audio.VoiceInfo{ID: id, Lang: lang, Name: name}) } } - return []tts.ModelInfo{ + return []audio.ModelInfo{ { ID: edgeModelReadAloud, Name: "Edge Read Aloud", Description: "Built-in Edge Read Aloud speech model", - Capabilities: tts.ModelCapabilities{ + Capabilities: audio.ModelCapabilities{ Voices: voices, Formats: edgeFormats, Speed: edgeSpeedConstraint, @@ -100,14 +100,14 @@ func (*EdgeAdapter) ResolveModel(model string) (string, error) { return edgeModelReadAloud, nil } -func (a *EdgeAdapter) Synthesize(ctx context.Context, text string, _ string, config tts.AudioConfig) ([]byte, error) { +func (a *EdgeAdapter) Synthesize(ctx context.Context, text string, _ string, config audio.AudioConfig) ([]byte, error) { if err := config.Validate(); err != nil { return nil, fmt.Errorf("edge tts: invalid config: %w", err) } return a.client.Synthesize(ctx, text, config) } -func (a *EdgeAdapter) Stream(ctx context.Context, text string, _ string, config tts.AudioConfig) (chan []byte, chan error) { +func (a *EdgeAdapter) Stream(ctx context.Context, text string, _ string, config audio.AudioConfig) (chan []byte, chan error) { if err := config.Validate(); err != nil { errCh := make(chan error, 1) errCh <- fmt.Errorf("edge tts: invalid config: %w", err) diff --git a/internal/tts/adapter/edge/edge_test.go b/internal/audio/adapter/edge/edge_test.go similarity index 90% rename from internal/tts/adapter/edge/edge_test.go rename to internal/audio/adapter/edge/edge_test.go index a3fc8e8a..0271b68e 100644 --- a/internal/tts/adapter/edge/edge_test.go +++ b/internal/audio/adapter/edge/edge_test.go @@ -8,7 +8,7 @@ import ( "strings" "testing" - "github.com/memohai/memoh/internal/tts" + "github.com/memohai/memoh/internal/audio" ) func TestEdgeAdapter_TypeAndMeta(t *testing.T) { @@ -37,7 +37,7 @@ func TestEdgeAdapter_Synthesize_WithMockServer(t *testing.T) { adapter := NewEdgeAdapterWithClient(slog.Default(), client) ctx := context.Background() - config := tts.AudioConfig{Voice: tts.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}} + config := audio.AudioConfig{Voice: audio.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}} audio, err := adapter.Synthesize(ctx, "Hello", edgeModelReadAloud, config) if err != nil { t.Fatalf("Synthesize: %v", err) @@ -61,7 +61,7 @@ func TestEdgeAdapter_Stream_WithMockServer(t *testing.T) { adapter := NewEdgeAdapterWithClient(slog.Default(), client) ctx := context.Background() - config := tts.AudioConfig{Voice: tts.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}} + config := audio.AudioConfig{Voice: audio.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}} ch, errCh := adapter.Stream(ctx, "Hi", edgeModelReadAloud, config) var chunks [][]byte for b := range ch { @@ -86,7 +86,7 @@ func TestEdgeAdapter_Synthesize_NotConnected(t *testing.T) { adapter := NewEdgeAdapterWithClient(slog.Default(), client) ctx := context.Background() - _, err := adapter.Synthesize(ctx, "x", edgeModelReadAloud, tts.AudioConfig{}) + _, err := adapter.Synthesize(ctx, "x", edgeModelReadAloud, audio.AudioConfig{}) if err == nil { t.Fatal("expected error when connection fails") } diff --git a/internal/tts/adapter/edge/type.go b/internal/audio/adapter/edge/type.go similarity index 100% rename from internal/tts/adapter/edge/type.go rename to internal/audio/adapter/edge/type.go diff --git a/internal/tts/adapter/edge/voices.json b/internal/audio/adapter/edge/voices.json similarity index 100% rename from internal/tts/adapter/edge/voices.json rename to internal/audio/adapter/edge/voices.json diff --git a/internal/tts/adapter/edge/ws.go b/internal/audio/adapter/edge/ws.go similarity index 97% rename from internal/tts/adapter/edge/ws.go rename to internal/audio/adapter/edge/ws.go index 29f287d3..7d224271 100644 --- a/internal/tts/adapter/edge/ws.go +++ b/internal/audio/adapter/edge/ws.go @@ -20,7 +20,7 @@ import ( "github.com/google/uuid" "github.com/gorilla/websocket" - "github.com/memohai/memoh/internal/tts" + "github.com/memohai/memoh/internal/audio" ) // Edge TTS WebSocket client. @@ -184,7 +184,7 @@ func (c *EdgeWsClient) sendFrame(path, contentType, body string, extraHeaders ma } // Configure sends the speech.config message (output format, etc.). -func (c *EdgeWsClient) Configure(ctx context.Context, config tts.AudioConfig) error { +func (c *EdgeWsClient) Configure(ctx context.Context, config audio.AudioConfig) error { c.mu.Lock() defer c.mu.Unlock() if c.conn == nil { @@ -207,7 +207,7 @@ func (c *EdgeWsClient) Configure(ctx context.Context, config tts.AudioConfig) er } // buildSSML builds SSML with rate and pitch for Edge TTS prosody. -func buildSSML(text string, voice tts.VoiceConfig, speed, pitch float64) string { +func buildSSML(text string, voice audio.VoiceConfig, speed, pitch float64) string { voiceID := voice.ID if voiceID == "" { voiceID = DEFAULT_VOICE @@ -241,7 +241,7 @@ func escapeSSML(s string) string { // Synthesize sends SSML and synchronously collects all audio data. // It handles the full lifecycle: connect → configure → send → receive → close. -func (c *EdgeWsClient) Synthesize(ctx context.Context, text string, config tts.AudioConfig) ([]byte, error) { +func (c *EdgeWsClient) Synthesize(ctx context.Context, text string, config audio.AudioConfig) ([]byte, error) { if err := c.Connect(ctx); err != nil { return nil, err } @@ -338,7 +338,7 @@ func parseAudioChunk(data []byte) ([]byte, error) { // Stream sends SSML and returns audio chunks via channel. // It handles the full lifecycle: connect → configure → send → stream → close. -func (c *EdgeWsClient) Stream(ctx context.Context, text string, config tts.AudioConfig) (ch chan []byte, errCh chan error) { +func (c *EdgeWsClient) Stream(ctx context.Context, text string, config audio.AudioConfig) (ch chan []byte, errCh chan error) { ch = make(chan []byte, 8) errCh = make(chan error, 1) go func() { diff --git a/internal/tts/adapter/edge/ws_integration_test.go b/internal/audio/adapter/edge/ws_integration_test.go similarity index 74% rename from internal/tts/adapter/edge/ws_integration_test.go rename to internal/audio/adapter/edge/ws_integration_test.go index 19b6fcbf..2ea180f3 100644 --- a/internal/tts/adapter/edge/ws_integration_test.go +++ b/internal/audio/adapter/edge/ws_integration_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/memohai/memoh/internal/tts" + "github.com/memohai/memoh/internal/audio" ) // Real Edge TTS integration tests. Not compiled by default (requires -tags=integration). @@ -17,14 +17,14 @@ import ( // // Run: // -// go test -tags=integration ./internal/tts/adapter/edge/... -run TestRealEdgeTTS -v +// go test -tags=integration ./internal/audio/adapter/edge/... -run TestRealEdgeTTS -v func TestRealEdgeTTS_Synthesize(t *testing.T) { client := NewEdgeWsClient() ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - config := tts.AudioConfig{Voice: tts.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, Speed: 1.0} + config := audio.AudioConfig{Voice: audio.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, Speed: 1.0} audio, err := client.Synthesize(ctx, "Hello, this is a real Edge TTS test.", config) if err != nil { t.Fatalf("Synthesize: %v", err) @@ -40,7 +40,7 @@ func TestRealEdgeTTS_Stream(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - config := tts.AudioConfig{Voice: tts.VoiceConfig{ID: "zh-CN-XiaoxiaoNeural", Lang: "zh-CN"}} + config := audio.AudioConfig{Voice: audio.VoiceConfig{ID: "zh-CN-XiaoxiaoNeural", Lang: "zh-CN"}} ch, errCh := client.Stream(ctx, "你好,这是流式测试。", config) var total int for b := range ch { @@ -57,7 +57,7 @@ func TestRealEdgeTTS_Stream(t *testing.T) { // TestRealEdgeTTS_Formats tries every candidate format and reports which ones are supported. // -// go test -tags=integration ./internal/tts/adapter/edge/... -run TestRealEdgeTTS_Formats -v +// go test -tags=integration ./internal/audio/adapter/edge/... -run TestRealEdgeTTS_Formats -v func TestRealEdgeTTS_Formats(t *testing.T) { formats := []string{ "audio-24khz-48kbitrate-mono-mp3", @@ -71,8 +71,8 @@ func TestRealEdgeTTS_Formats(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - config := tts.AudioConfig{ - Voice: tts.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, + config := audio.AudioConfig{ + Voice: audio.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, Format: fmt, Speed: 1.0, } @@ -88,7 +88,7 @@ func TestRealEdgeTTS_Formats(t *testing.T) { // TestRealEdgeTTS_SaveAudio synthesizes speech and writes the result to a file for manual inspection. // -// go test -tags=integration ./internal/tts/adapter/edge/... -run TestRealEdgeTTS_SaveAudio -v +// go test -tags=integration ./internal/audio/adapter/edge/... -run TestRealEdgeTTS_SaveAudio -v func TestRealEdgeTTS_SaveAudio(t *testing.T) { client := NewEdgeWsClient() ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) @@ -97,11 +97,11 @@ func TestRealEdgeTTS_SaveAudio(t *testing.T) { cases := []struct { name string text string - voice tts.VoiceConfig + voice audio.VoiceConfig file string }{ - {"en", "Hello, this is an Edge TTS audio save test.", tts.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, "test_en.mp3"}, - {"zh", "你好,这是一段中文语音合成测试。", tts.VoiceConfig{ID: "zh-CN-XiaoxiaoNeural", Lang: "zh-CN"}, "test_zh.mp3"}, + {"en", "Hello, this is an Edge TTS audio save test.", audio.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, "test_en.mp3"}, + {"zh", "你好,这是一段中文语音合成测试。", audio.VoiceConfig{ID: "zh-CN-XiaoxiaoNeural", Lang: "zh-CN"}, "test_zh.mp3"}, } outDir := filepath.Join(os.TempDir(), "edge_tts_test") @@ -111,7 +111,7 @@ func TestRealEdgeTTS_SaveAudio(t *testing.T) { for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { - config := tts.AudioConfig{Voice: tc.voice, Speed: 1.0, Pitch: -10.0} + config := audio.AudioConfig{Voice: tc.voice, Speed: 1.0, Pitch: -10.0} audio, err := client.Synthesize(ctx, tc.text, config) if err != nil { t.Fatalf("Synthesize: %v", err) diff --git a/internal/tts/adapter/edge/ws_test.go b/internal/audio/adapter/edge/ws_test.go similarity index 94% rename from internal/tts/adapter/edge/ws_test.go rename to internal/audio/adapter/edge/ws_test.go index dfc33d55..8840a3c1 100644 --- a/internal/tts/adapter/edge/ws_test.go +++ b/internal/audio/adapter/edge/ws_test.go @@ -11,7 +11,7 @@ import ( "github.com/gorilla/websocket" - "github.com/memohai/memoh/internal/tts" + "github.com/memohai/memoh/internal/audio" ) var upgrader = websocket.Upgrader{ @@ -95,7 +95,7 @@ func TestEdgeWsClient_ConnectAndSynthesize(t *testing.T) { client := NewEdgeWsClient() client.BaseURL = wsURL - config := tts.AudioConfig{Voice: tts.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, Speed: 1.0} + config := audio.AudioConfig{Voice: audio.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}, Speed: 1.0} audio, err := client.Synthesize(t.Context(), "Hello world", config) if err != nil { t.Fatalf("Synthesize: %v", err) @@ -114,7 +114,7 @@ func TestEdgeWsClient_Stream(t *testing.T) { client := NewEdgeWsClient() client.BaseURL = wsURL - config := tts.AudioConfig{Voice: tts.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}} + config := audio.AudioConfig{Voice: audio.VoiceConfig{ID: "en-US-JennyNeural", Lang: "en-US"}} ch, errCh := client.Stream(t.Context(), "Hi", config) var chunks [][]byte for b := range ch { @@ -197,7 +197,7 @@ func TestParseAudioChunk_EmptyOrShort(t *testing.T) { func TestBuildSSML(t *testing.T) { t.Parallel() - ssml := buildSSML("Hello", tts.VoiceConfig{ID: "zh-CN-XiaoxiaoNeural", Lang: "zh-CN"}, 1.0, 0) + ssml := buildSSML("Hello", audio.VoiceConfig{ID: "zh-CN-XiaoxiaoNeural", Lang: "zh-CN"}, 1.0, 0) if !strings.Contains(ssml, "zh-CN-XiaoxiaoNeural") { t.Errorf("ssml should contain voice: %s", ssml) } diff --git a/internal/tts/bootstrap.go b/internal/audio/bootstrap.go similarity index 79% rename from internal/tts/bootstrap.go rename to internal/audio/bootstrap.go index 5f4cbe96..2990d7cd 100644 --- a/internal/tts/bootstrap.go +++ b/internal/audio/bootstrap.go @@ -1,11 +1,13 @@ -package tts +package audio import ( "context" "encoding/json" + "errors" "fmt" "log/slog" + "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgtype" "github.com/memohai/memoh/internal/db/sqlc" @@ -14,23 +16,23 @@ import ( func SyncRegistry(ctx context.Context, logger *slog.Logger, queries *sqlc.Queries, registry *Registry) error { for _, def := range registry.List() { - configJSON, err := json.Marshal(map[string]any{}) + provider, err := queries.GetProviderByClientType(ctx, string(def.ClientType)) if err != nil { - return fmt.Errorf("marshal speech provider config: %w", err) - } - var icon pgtype.Text - if def.Icon != "" { - icon = pgtype.Text{String: def.Icon, Valid: true} - } - - provider, err := queries.UpsertRegistryProvider(ctx, sqlc.UpsertRegistryProviderParams{ - Name: def.DisplayName, - ClientType: string(def.ClientType), - Icon: icon, - Config: configJSON, - }) - if err != nil { - return fmt.Errorf("upsert speech provider %s: %w", def.ClientType, err) + if errors.Is(err, pgx.ErrNoRows) { + if logger != nil { + logger.Warn("audio registry skipped provider without template", + slog.String("provider", string(def.ClientType)), + slog.String("display_name", def.DisplayName)) + } + continue + } + if logger != nil { + logger.Warn("audio registry failed to load provider template", + slog.String("provider", string(def.ClientType)), + slog.String("display_name", def.DisplayName), + slog.Any("error", err)) + } + return fmt.Errorf("get provider by client type %s: %w", def.ClientType, err) } synced := 0 diff --git a/internal/tts/config.go b/internal/audio/config.go similarity index 99% rename from internal/tts/config.go rename to internal/audio/config.go index c64018b8..c93c11fe 100644 --- a/internal/tts/config.go +++ b/internal/audio/config.go @@ -1,4 +1,4 @@ -package tts +package audio // VoiceConfig is kept for backward compatibility with the legacy Edge adapter tests. type VoiceConfig struct { diff --git a/internal/tts/registry.go b/internal/audio/registry.go similarity index 99% rename from internal/tts/registry.go rename to internal/audio/registry.go index ff4800a8..4bc74020 100644 --- a/internal/tts/registry.go +++ b/internal/audio/registry.go @@ -1,4 +1,4 @@ -package tts +package audio import ( "fmt" diff --git a/internal/tts/service.go b/internal/audio/service.go similarity index 99% rename from internal/tts/service.go rename to internal/audio/service.go index 17c3fe51..18532932 100644 --- a/internal/tts/service.go +++ b/internal/audio/service.go @@ -1,4 +1,4 @@ -package tts +package audio import ( "context" @@ -24,7 +24,7 @@ type Service struct { func NewService(log *slog.Logger, queries *sqlc.Queries, registry *Registry) *Service { return &Service{ queries: queries, - logger: log.With(slog.String("service", "tts")), + logger: log.With(slog.String("service", "audio")), registry: registry, } } diff --git a/internal/tts/tempstore.go b/internal/audio/tempstore.go similarity index 96% rename from internal/tts/tempstore.go rename to internal/audio/tempstore.go index b6f363ba..9663f1ad 100644 --- a/internal/tts/tempstore.go +++ b/internal/audio/tempstore.go @@ -1,4 +1,4 @@ -package tts +package audio import ( "fmt" @@ -13,7 +13,7 @@ import ( const ( defaultTTL = 10 * time.Minute cleanupInterval = 1 * time.Minute - tempDirName = "tts_temp" + tempDirName = "audio_temp" ) // TempStore manages temporary audio files on disk with automatic TTL-based cleanup. @@ -30,7 +30,7 @@ type TempStore struct { func NewTempStore(baseDir string) (*TempStore, error) { dir := filepath.Join(baseDir, tempDirName) if err := os.MkdirAll(dir, 0o750); err != nil { - return nil, fmt.Errorf("create tts temp dir: %w", err) + return nil, fmt.Errorf("create audio temp dir: %w", err) } return &TempStore{ dir: dir, diff --git a/internal/tts/types.go b/internal/audio/types.go similarity index 99% rename from internal/tts/types.go rename to internal/audio/types.go index c2129905..1dda7faf 100644 --- a/internal/tts/types.go +++ b/internal/audio/types.go @@ -1,4 +1,4 @@ -package tts +package audio import "time" diff --git a/internal/channel/inbound/channel.go b/internal/channel/inbound/channel.go index 0fe47100..6413816e 100644 --- a/internal/channel/inbound/channel.go +++ b/internal/channel/inbound/channel.go @@ -58,14 +58,14 @@ type mediaIngestor interface { channel.ContainerAttachmentIngester } -// ttsSynthesizer synthesizes text to speech audio. -type ttsSynthesizer interface { +// speechSynthesizer synthesizes text to speech audio. +type speechSynthesizer interface { Synthesize(ctx context.Context, modelID string, text string, overrideCfg map[string]any) ([]byte, string, error) } -// ttsModelResolver looks up the TTS model ID configured for a bot. -type ttsModelResolver interface { - ResolveTtsModelID(ctx context.Context, botID string) (string, error) +// speechModelResolver looks up the speech model ID configured for a bot. +type speechModelResolver interface { + ResolveSpeechModelID(ctx context.Context, botID string) (string, error) } // TranscriptionResult is the minimal speech-to-text response shape needed by inbound routing. @@ -101,29 +101,29 @@ type SessionResult struct { // ChannelInboundProcessor routes channel inbound messages to the chat gateway. type ChannelInboundProcessor struct { - runner flow.Runner - routeResolver RouteResolver - message messagepkg.Writer - mediaService mediaIngestor - reactor channelReactor - commandHandler *command.Handler - registry *channel.Registry - logger *slog.Logger - jwtSecret string - tokenTTL time.Duration - identity *IdentityResolver - policy PolicyService - dispatcher *RouteDispatcher - acl chatACL - observer channel.StreamObserver - ttsService ttsSynthesizer - ttsModelResolver ttsModelResolver - transcriber transcriptionRecognizer - sttModelResolver transcriptionModelResolver - sessionEnsurer SessionEnsurer - pipeline *pipelinepkg.Pipeline - eventStore *pipelinepkg.EventStore - discussDriver *pipelinepkg.DiscussDriver + runner flow.Runner + routeResolver RouteResolver + message messagepkg.Writer + mediaService mediaIngestor + reactor channelReactor + commandHandler *command.Handler + registry *channel.Registry + logger *slog.Logger + jwtSecret string + tokenTTL time.Duration + identity *IdentityResolver + policy PolicyService + dispatcher *RouteDispatcher + acl chatACL + observer channel.StreamObserver + speechService speechSynthesizer + speechModelResolver speechModelResolver + transcriber transcriptionRecognizer + sttModelResolver transcriptionModelResolver + sessionEnsurer SessionEnsurer + pipeline *pipelinepkg.Pipeline + eventStore *pipelinepkg.EventStore + discussDriver *pipelinepkg.DiscussDriver // activeStreams maps "botID:routeID" to a context.CancelFunc for the // currently running agent stream. Used by /stop to abort generation @@ -205,14 +205,14 @@ func (p *ChannelInboundProcessor) SetStreamObserver(observer channel.StreamObser p.observer = observer } -// SetTtsService configures the TTS synthesizer and settings reader for handling -// tag events (speech_delta) that require server-side audio synthesis. -func (p *ChannelInboundProcessor) SetTtsService(synth ttsSynthesizer, modelResolver ttsModelResolver) { +// SetSpeechService configures the speech synthesizer and settings reader for +// handling tag events (speech_delta) that require server-side audio synthesis. +func (p *ChannelInboundProcessor) SetSpeechService(synth speechSynthesizer, modelResolver speechModelResolver) { if p == nil { return } - p.ttsService = synth - p.ttsModelResolver = modelResolver + p.speechService = synth + p.speechModelResolver = modelResolver } // SetTranscriptionService configures speech-to-text processing for inbound audio attachments. @@ -2304,13 +2304,13 @@ func (p *ChannelInboundProcessor) synthesizeAndPushVoice( outboundAssetRefs *[]conversation.OutboundAssetRef, assetMu *sync.Mutex, ) { - if p.ttsService == nil || p.ttsModelResolver == nil { + if p.speechService == nil || p.speechModelResolver == nil { if p.logger != nil { p.logger.Warn("speech_delta received but TTS service not configured") } return } - modelID, err := p.ttsModelResolver.ResolveTtsModelID(ctx, botID) + modelID, err := p.speechModelResolver.ResolveSpeechModelID(ctx, botID) if err != nil || strings.TrimSpace(modelID) == "" { if p.logger != nil { p.logger.Warn("speech_delta: bot has no TTS model configured", slog.String("bot_id", botID)) @@ -2322,7 +2322,7 @@ func (p *ChannelInboundProcessor) synthesizeAndPushVoice( if text == "" { continue } - audioData, contentType, synthErr := p.ttsService.Synthesize(ctx, modelID, text, nil) + audioData, contentType, synthErr := p.speechService.Synthesize(ctx, modelID, text, nil) if synthErr != nil { if p.logger != nil { p.logger.Warn("speech synthesis failed", slog.String("bot_id", botID), slog.Any("error", synthErr)) diff --git a/internal/db/sqlc/models.sql.go b/internal/db/sqlc/models.sql.go index 400100c9..8b0bbde9 100644 --- a/internal/db/sqlc/models.sql.go +++ b/internal/db/sqlc/models.sql.go @@ -318,6 +318,27 @@ func (q *Queries) GetModelByProviderAndModelID(ctx context.Context, arg GetModel return i, err } +const getProviderByClientType = `-- name: GetProviderByClientType :one +SELECT id, name, client_type, icon, enable, config, metadata, created_at, updated_at FROM providers WHERE client_type = $1 +` + +func (q *Queries) GetProviderByClientType(ctx context.Context, clientType string) (Provider, error) { + row := q.db.QueryRow(ctx, getProviderByClientType, clientType) + var i Provider + err := row.Scan( + &i.ID, + &i.Name, + &i.ClientType, + &i.Icon, + &i.Enable, + &i.Config, + &i.Metadata, + &i.CreatedAt, + &i.UpdatedAt, + ) + return i, err +} + const getProviderByID = `-- name: GetProviderByID :one SELECT id, name, client_type, icon, enable, config, metadata, created_at, updated_at FROM providers WHERE id = $1 ` diff --git a/internal/handlers/bot_tts.go b/internal/handlers/bot_tts.go index cfc98488..b63067ed 100644 --- a/internal/handlers/bot_tts.go +++ b/internal/handlers/bot_tts.go @@ -7,28 +7,28 @@ import ( "github.com/labstack/echo/v4" + audiopkg "github.com/memohai/memoh/internal/audio" "github.com/memohai/memoh/internal/settings" - "github.com/memohai/memoh/internal/tts" ) -// BotTtsHandler handles per-bot TTS synthesis requests from the agent tool. -type BotTtsHandler struct { - ttsService *tts.Service +// BotAudioHandler handles per-bot speech synthesis requests from the agent tool. +type BotAudioHandler struct { + audioService *audiopkg.Service settingsService *settings.Service - tempStore *tts.TempStore + tempStore *audiopkg.TempStore logger *slog.Logger } -func NewBotTtsHandler(log *slog.Logger, ttsService *tts.Service, settingsService *settings.Service, tempStore *tts.TempStore) *BotTtsHandler { - return &BotTtsHandler{ - ttsService: ttsService, +func NewBotAudioHandler(log *slog.Logger, audioService *audiopkg.Service, settingsService *settings.Service, tempStore *audiopkg.TempStore) *BotAudioHandler { + return &BotAudioHandler{ + audioService: audioService, settingsService: settingsService, tempStore: tempStore, - logger: log.With(slog.String("handler", "bot_tts")), + logger: log.With(slog.String("handler", "bot_audio")), } } -func (h *BotTtsHandler) Register(e *echo.Echo) { +func (h *BotAudioHandler) Register(e *echo.Echo) { e.POST("/bots/:bot_id/tts/synthesize", h.Synthesize) } @@ -54,7 +54,7 @@ type synthesizeResponse struct { // @Failure 400 {object} ErrorResponse // @Failure 500 {object} ErrorResponse // @Router /bots/{bot_id}/tts/synthesize [post]. -func (h *BotTtsHandler) Synthesize(c echo.Context) error { +func (h *BotAudioHandler) Synthesize(c echo.Context) error { botID := strings.TrimSpace(c.Param("bot_id")) if botID == "" { return echo.NewHTTPError(http.StatusBadRequest, "bot_id is required") @@ -88,10 +88,10 @@ func (h *BotTtsHandler) Synthesize(c echo.Context) error { return echo.NewHTTPError(http.StatusInternalServerError, "failed to create temp file") } - contentType, streamErr := h.ttsService.StreamToFile(c.Request().Context(), botSettings.TtsModelID, text, f) + contentType, streamErr := h.audioService.StreamToFile(c.Request().Context(), botSettings.TtsModelID, text, f) closeErr := f.Close() if streamErr != nil { - h.logger.Error("tts synthesis failed", slog.String("bot_id", botID), slog.String("model_id", botSettings.TtsModelID), slog.Any("error", streamErr)) + h.logger.Error("speech synthesis failed", slog.String("bot_id", botID), slog.String("model_id", botSettings.TtsModelID), slog.Any("error", streamErr)) h.tempStore.Delete(tempID) return echo.NewHTTPError(http.StatusInternalServerError, streamErr.Error()) } diff --git a/internal/handlers/local_channel.go b/internal/handlers/local_channel.go index 64b96b32..0f84425b 100644 --- a/internal/handlers/local_channel.go +++ b/internal/handlers/local_channel.go @@ -30,30 +30,30 @@ import ( messagepkg "github.com/memohai/memoh/internal/message" ) -// localTtsSynthesizer synthesizes text to speech audio. -type localTtsSynthesizer interface { +// localSpeechSynthesizer synthesizes text to speech audio. +type localSpeechSynthesizer interface { Synthesize(ctx context.Context, modelID string, text string, overrideCfg map[string]any) ([]byte, string, error) } -// localTtsModelResolver resolves TTS model IDs for bots. -type localTtsModelResolver interface { - ResolveTtsModelID(ctx context.Context, botID string) (string, error) +// localSpeechModelResolver resolves speech model IDs for bots. +type localSpeechModelResolver interface { + ResolveSpeechModelID(ctx context.Context, botID string) (string, error) } // LocalChannelHandler handles local channel routes (WebUI / API) backed by bot history. type LocalChannelHandler struct { - channelType channel.ChannelType - channelManager *channel.Manager - channelStore *channel.Store - chatService *conversation.Service - routeHub *local.RouteHub - botService *bots.Service - accountService *accounts.Service - resolver *flow.Resolver - mediaService *media.Service - ttsService localTtsSynthesizer - ttsModelResolver localTtsModelResolver - logger *slog.Logger + channelType channel.ChannelType + channelManager *channel.Manager + channelStore *channel.Store + chatService *conversation.Service + routeHub *local.RouteHub + botService *bots.Service + accountService *accounts.Service + resolver *flow.Resolver + mediaService *media.Service + speechService localSpeechSynthesizer + speechModelResolver localSpeechModelResolver + logger *slog.Logger } // NewLocalChannelHandler creates a local channel handler. @@ -80,10 +80,10 @@ func (h *LocalChannelHandler) SetMediaService(svc *media.Service) { h.mediaService = svc } -// SetTtsService configures TTS synthesis for handling speech_delta events. -func (h *LocalChannelHandler) SetTtsService(synth localTtsSynthesizer, resolver localTtsModelResolver) { - h.ttsService = synth - h.ttsModelResolver = resolver +// SetSpeechService configures speech synthesis for handling speech_delta events. +func (h *LocalChannelHandler) SetSpeechService(synth localSpeechSynthesizer, resolver localSpeechModelResolver) { + h.speechService = synth + h.speechModelResolver = resolver } // Register registers the local channel routes. @@ -719,12 +719,12 @@ func (h *LocalChannelHandler) ingestSingleAttachment(ctx context.Context, botID, // wsSynthesizeSpeech handles speech_delta events by synthesizing audio and // injecting attachment_delta events with the resulting voice attachments. func (h *LocalChannelHandler) wsSynthesizeSpeech(ctx context.Context, botID string, original json.RawMessage) []json.RawMessage { - if h.ttsService == nil || h.ttsModelResolver == nil { + if h.speechService == nil || h.speechModelResolver == nil { h.logger.Warn("speech_delta received but TTS service not configured") return nil } - modelID, err := h.ttsModelResolver.ResolveTtsModelID(ctx, botID) + modelID, err := h.speechModelResolver.ResolveSpeechModelID(ctx, botID) if err != nil || strings.TrimSpace(modelID) == "" { h.logger.Warn("speech_delta: bot has no TTS model configured", slog.String("bot_id", botID)) return nil @@ -746,7 +746,7 @@ func (h *LocalChannelHandler) wsSynthesizeSpeech(ctx context.Context, botID stri continue } - audioData, contentType, synthErr := h.ttsService.Synthesize(ctx, modelID, text, nil) + audioData, contentType, synthErr := h.speechService.Synthesize(ctx, modelID, text, nil) if synthErr != nil { h.logger.Warn("speech synthesis failed", slog.String("bot_id", botID), slog.Any("error", synthErr)) continue diff --git a/internal/handlers/tts_providers.go b/internal/handlers/tts_providers.go index e802fae3..feb29eab 100644 --- a/internal/handlers/tts_providers.go +++ b/internal/handlers/tts_providers.go @@ -12,25 +12,25 @@ import ( "github.com/labstack/echo/v4" + audiopkg "github.com/memohai/memoh/internal/audio" "github.com/memohai/memoh/internal/models" - "github.com/memohai/memoh/internal/tts" ) -type SpeechHandler struct { - service *tts.Service +type AudioHandler struct { + service *audiopkg.Service modelsService *models.Service logger *slog.Logger } -func NewSpeechHandler(log *slog.Logger, service *tts.Service, modelsService *models.Service) *SpeechHandler { - return &SpeechHandler{ +func NewAudioHandler(log *slog.Logger, service *audiopkg.Service, modelsService *models.Service) *AudioHandler { + return &AudioHandler{ service: service, modelsService: modelsService, - logger: log.With(slog.String("handler", "speech")), + logger: log.With(slog.String("handler", "audio")), } } -func (h *SpeechHandler) Register(e *echo.Echo) { +func (h *AudioHandler) Register(e *echo.Echo) { pg := e.Group("/speech-providers") pg.GET("", h.ListProviders) pg.GET("/:id", h.GetProvider) @@ -64,13 +64,19 @@ func (h *SpeechHandler) Register(e *echo.Echo) { // @Summary List speech provider metadata // @Description List available speech provider types with their models and capabilities // @Tags speech-providers -// @Success 200 {array} tts.ProviderMetaResponse +// @Success 200 {array} audiopkg.ProviderMetaResponse // @Router /speech-providers/meta [get]. -func (h *SpeechHandler) ListSpeechMeta(c echo.Context) error { +func (h *AudioHandler) ListSpeechMeta(c echo.Context) error { return c.JSON(http.StatusOK, h.service.ListSpeechMeta(c.Request().Context())) } -func (h *SpeechHandler) ListTranscriptionMeta(c echo.Context) error { +// ListTranscriptionMeta godoc +// @Summary List transcription provider metadata +// @Description List available transcription provider types with their models and capabilities +// @Tags transcription-providers +// @Success 200 {array} audiopkg.ProviderMetaResponse +// @Router /transcription-providers/meta [get]. +func (h *AudioHandler) ListTranscriptionMeta(c echo.Context) error { return c.JSON(http.StatusOK, h.service.ListTranscriptionMeta(c.Request().Context())) } @@ -79,10 +85,10 @@ func (h *SpeechHandler) ListTranscriptionMeta(c echo.Context) error { // @Description List providers that support speech (filtered view of unified providers table) // @Tags speech-providers // @Produce json -// @Success 200 {array} tts.SpeechProviderResponse +// @Success 200 {array} audiopkg.SpeechProviderResponse // @Failure 500 {object} ErrorResponse // @Router /speech-providers [get]. -func (h *SpeechHandler) ListProviders(c echo.Context) error { +func (h *AudioHandler) ListProviders(c echo.Context) error { items, err := h.service.ListSpeechProviders(c.Request().Context()) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -90,7 +96,15 @@ func (h *SpeechHandler) ListProviders(c echo.Context) error { return c.JSON(http.StatusOK, items) } -func (h *SpeechHandler) ListTranscriptionProviders(c echo.Context) error { +// ListTranscriptionProviders godoc +// @Summary List transcription providers +// @Description List providers that support transcription (filtered view of unified providers table) +// @Tags transcription-providers +// @Produce json +// @Success 200 {array} audiopkg.SpeechProviderResponse +// @Failure 500 {object} ErrorResponse +// @Router /transcription-providers [get]. +func (h *AudioHandler) ListTranscriptionProviders(c echo.Context) error { items, err := h.service.ListTranscriptionProviders(c.Request().Context()) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -104,11 +118,12 @@ func (h *SpeechHandler) ListTranscriptionProviders(c echo.Context) error { // @Tags speech-providers // @Produce json // @Param id path string true "Provider ID (UUID)" -// @Success 200 {object} tts.SpeechProviderResponse +// @Success 200 {object} audiopkg.SpeechProviderResponse // @Failure 400 {object} ErrorResponse // @Failure 404 {object} ErrorResponse // @Router /speech-providers/{id} [get]. -func (h *SpeechHandler) GetProvider(c echo.Context) error { +// @Router /transcription-providers/{id} [get]. +func (h *AudioHandler) GetProvider(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -126,11 +141,11 @@ func (h *SpeechHandler) GetProvider(c echo.Context) error { // @Tags speech-providers // @Produce json // @Param id path string true "Provider ID (UUID)" -// @Success 200 {array} tts.SpeechModelResponse +// @Success 200 {array} audiopkg.SpeechModelResponse // @Failure 400 {object} ErrorResponse // @Failure 500 {object} ErrorResponse // @Router /speech-providers/{id}/models [get]. -func (h *SpeechHandler) ListModelsByProvider(c echo.Context) error { +func (h *AudioHandler) ListModelsByProvider(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -149,12 +164,12 @@ func (h *SpeechHandler) ListModelsByProvider(c echo.Context) error { // @Accept json // @Produce json // @Param id path string true "Provider ID (UUID)" -// @Success 200 {object} tts.ImportModelsResponse +// @Success 200 {object} audiopkg.ImportModelsResponse // @Failure 400 {object} ErrorResponse // @Failure 404 {object} ErrorResponse // @Failure 500 {object} ErrorResponse // @Router /speech-providers/{id}/import-models [post]. -func (h *SpeechHandler) ImportModels(c echo.Context) error { +func (h *AudioHandler) ImportModels(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -165,7 +180,7 @@ func (h *SpeechHandler) ImportModels(c echo.Context) error { return echo.NewHTTPError(http.StatusInternalServerError, fmt.Sprintf("fetch remote speech models: %v", err)) } - resp := tts.ImportModelsResponse{ + resp := audiopkg.ImportModelsResponse{ Models: make([]string, 0, len(remoteModels)), } @@ -197,7 +212,17 @@ func (h *SpeechHandler) ImportModels(c echo.Context) error { return c.JSON(http.StatusOK, resp) } -func (h *SpeechHandler) ListTranscriptionModelsByProvider(c echo.Context) error { +// ListTranscriptionModelsByProvider godoc +// @Summary List transcription models by provider +// @Description List models of type 'transcription' for a specific transcription provider +// @Tags transcription-providers +// @Produce json +// @Param id path string true "Provider ID (UUID)" +// @Success 200 {array} audiopkg.TranscriptionModelResponse +// @Failure 400 {object} ErrorResponse +// @Failure 500 {object} ErrorResponse +// @Router /transcription-providers/{id}/models [get]. +func (h *AudioHandler) ListTranscriptionModelsByProvider(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -209,7 +234,19 @@ func (h *SpeechHandler) ListTranscriptionModelsByProvider(c echo.Context) error return c.JSON(http.StatusOK, items) } -func (h *SpeechHandler) ImportTranscriptionModels(c echo.Context) error { +// ImportTranscriptionModels godoc +// @Summary Import transcription models from provider +// @Description Fetch models using the configured transcription provider and import them into the unified models table +// @Tags transcription-providers +// @Accept json +// @Produce json +// @Param id path string true "Provider ID (UUID)" +// @Success 200 {object} audiopkg.ImportModelsResponse +// @Failure 400 {object} ErrorResponse +// @Failure 404 {object} ErrorResponse +// @Failure 500 {object} ErrorResponse +// @Router /transcription-providers/{id}/import-models [post]. +func (h *AudioHandler) ImportTranscriptionModels(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -220,7 +257,7 @@ func (h *SpeechHandler) ImportTranscriptionModels(c echo.Context) error { return echo.NewHTTPError(http.StatusInternalServerError, fmt.Sprintf("fetch remote transcription models: %v", err)) } - resp := tts.ImportModelsResponse{ + resp := audiopkg.ImportModelsResponse{ Models: make([]string, 0, len(remoteModels)), } @@ -257,10 +294,10 @@ func (h *SpeechHandler) ImportTranscriptionModels(c echo.Context) error { // @Description List all models of type 'speech' (filtered view of unified models table) // @Tags speech-models // @Produce json -// @Success 200 {array} tts.SpeechModelResponse +// @Success 200 {array} audiopkg.SpeechModelResponse // @Failure 500 {object} ErrorResponse // @Router /speech-models [get]. -func (h *SpeechHandler) ListModels(c echo.Context) error { +func (h *AudioHandler) ListModels(c echo.Context) error { items, err := h.service.ListSpeechModels(c.Request().Context()) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -268,7 +305,15 @@ func (h *SpeechHandler) ListModels(c echo.Context) error { return c.JSON(http.StatusOK, items) } -func (h *SpeechHandler) ListTranscriptionModels(c echo.Context) error { +// ListTranscriptionModels godoc +// @Summary List all transcription models +// @Description List all models of type 'transcription' (filtered view of unified models table) +// @Tags transcription-models +// @Produce json +// @Success 200 {array} audiopkg.TranscriptionModelResponse +// @Failure 500 {object} ErrorResponse +// @Router /transcription-models [get]. +func (h *AudioHandler) ListTranscriptionModels(c echo.Context) error { items, err := h.service.ListTranscriptionModels(c.Request().Context()) if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) @@ -281,10 +326,10 @@ func (h *SpeechHandler) ListTranscriptionModels(c echo.Context) error { // @Tags speech-models // @Produce json // @Param id path string true "Model ID" -// @Success 200 {object} tts.SpeechModelResponse +// @Success 200 {object} audiopkg.SpeechModelResponse // @Failure 404 {object} ErrorResponse // @Router /speech-models/{id} [get]. -func (h *SpeechHandler) GetModel(c echo.Context) error { +func (h *AudioHandler) GetModel(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -296,12 +341,23 @@ func (h *SpeechHandler) GetModel(c echo.Context) error { return c.JSON(http.StatusOK, resp) } -func (h *SpeechHandler) UpdateModel(c echo.Context) error { +// UpdateModel godoc +// @Summary Update a speech model +// @Tags speech-models +// @Accept json +// @Produce json +// @Param id path string true "Model ID" +// @Param request body audiopkg.UpdateSpeechModelRequest true "Model update payload" +// @Success 200 {object} audiopkg.SpeechModelResponse +// @Failure 400 {object} ErrorResponse +// @Failure 500 {object} ErrorResponse +// @Router /speech-models/{id} [put]. +func (h *AudioHandler) UpdateModel(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") } - var req tts.UpdateSpeechModelRequest + var req audiopkg.UpdateSpeechModelRequest if err := c.Bind(&req); err != nil { return echo.NewHTTPError(http.StatusBadRequest, err.Error()) } @@ -312,7 +368,15 @@ func (h *SpeechHandler) UpdateModel(c echo.Context) error { return c.JSON(http.StatusOK, resp) } -func (h *SpeechHandler) GetTranscriptionModel(c echo.Context) error { +// GetTranscriptionModel godoc +// @Summary Get a transcription model +// @Tags transcription-models +// @Produce json +// @Param id path string true "Model ID" +// @Success 200 {object} audiopkg.TranscriptionModelResponse +// @Failure 404 {object} ErrorResponse +// @Router /transcription-models/{id} [get]. +func (h *AudioHandler) GetTranscriptionModel(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -324,12 +388,23 @@ func (h *SpeechHandler) GetTranscriptionModel(c echo.Context) error { return c.JSON(http.StatusOK, resp) } -func (h *SpeechHandler) UpdateTranscriptionModel(c echo.Context) error { +// UpdateTranscriptionModel godoc +// @Summary Update a transcription model +// @Tags transcription-models +// @Accept json +// @Produce json +// @Param id path string true "Model ID" +// @Param request body audiopkg.UpdateSpeechModelRequest true "Model update payload" +// @Success 200 {object} audiopkg.TranscriptionModelResponse +// @Failure 400 {object} ErrorResponse +// @Failure 500 {object} ErrorResponse +// @Router /transcription-models/{id} [put]. +func (h *AudioHandler) UpdateTranscriptionModel(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") } - var req tts.UpdateSpeechModelRequest + var req audiopkg.UpdateSpeechModelRequest if err := c.Bind(&req); err != nil { return echo.NewHTTPError(http.StatusBadRequest, err.Error()) } @@ -345,10 +420,10 @@ func (h *SpeechHandler) UpdateTranscriptionModel(c echo.Context) error { // @Tags speech-models // @Produce json // @Param id path string true "Model ID" -// @Success 200 {object} tts.ModelCapabilities +// @Success 200 {object} audiopkg.ModelCapabilities // @Failure 404 {object} ErrorResponse // @Router /speech-models/{id}/capabilities [get]. -func (h *SpeechHandler) GetModelCapabilities(c echo.Context) error { +func (h *AudioHandler) GetModelCapabilities(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -360,7 +435,15 @@ func (h *SpeechHandler) GetModelCapabilities(c echo.Context) error { return c.JSON(http.StatusOK, caps) } -func (h *SpeechHandler) GetTranscriptionModelCapabilities(c echo.Context) error { +// GetTranscriptionModelCapabilities godoc +// @Summary Get transcription model capabilities +// @Tags transcription-models +// @Produce json +// @Param id path string true "Model ID" +// @Success 200 {object} audiopkg.ModelCapabilities +// @Failure 404 {object} ErrorResponse +// @Router /transcription-models/{id}/capabilities [get]. +func (h *AudioHandler) GetTranscriptionModelCapabilities(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -379,17 +462,17 @@ func (h *SpeechHandler) GetTranscriptionModelCapabilities(c echo.Context) error // @Accept json // @Produce application/octet-stream // @Param id path string true "Model ID" -// @Param request body tts.TestSynthesizeRequest true "Text to synthesize" +// @Param request body audiopkg.TestSynthesizeRequest true "Text to synthesize" // @Success 200 {file} binary "Audio data" // @Failure 400 {object} ErrorResponse // @Failure 500 {object} ErrorResponse // @Router /speech-models/{id}/test [post]. -func (h *SpeechHandler) TestModel(c echo.Context) error { +func (h *AudioHandler) TestModel(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") } - var req tts.TestSynthesizeRequest + var req audiopkg.TestSynthesizeRequest if err := c.Bind(&req); err != nil { return echo.NewHTTPError(http.StatusBadRequest, err.Error()) } @@ -408,7 +491,20 @@ func (h *SpeechHandler) TestModel(c echo.Context) error { return c.Blob(http.StatusOK, contentType, audio) } -func (h *SpeechHandler) TestTranscriptionModel(c echo.Context) error { +// TestTranscriptionModel godoc +// @Summary Test transcription model recognition +// @Description Transcribe uploaded audio using a specific model's config and return structured text output +// @Tags transcription-models +// @Accept mpfd +// @Produce json +// @Param id path string true "Model ID" +// @Param file formData file true "Audio file" +// @Param config formData string false "Optional JSON config" +// @Success 200 {object} audiopkg.TestTranscriptionResponse +// @Failure 400 {object} ErrorResponse +// @Failure 500 {object} ErrorResponse +// @Router /transcription-models/{id}/test [post]. +func (h *AudioHandler) TestTranscriptionModel(c echo.Context) error { id := strings.TrimSpace(c.Param("id")) if id == "" { return echo.NewHTTPError(http.StatusBadRequest, "id is required") @@ -441,16 +537,16 @@ func (h *SpeechHandler) TestTranscriptionModel(c echo.Context) error { if err != nil { return echo.NewHTTPError(http.StatusInternalServerError, err.Error()) } - resp := tts.TestTranscriptionResponse{ + resp := audiopkg.TestTranscriptionResponse{ Text: result.Text, Language: result.Language, DurationSeconds: result.DurationSeconds, Metadata: result.ProviderMetadata, } if len(result.Words) > 0 { - resp.Words = make([]tts.TranscriptionWord, 0, len(result.Words)) + resp.Words = make([]audiopkg.TranscriptionWord, 0, len(result.Words)) for _, word := range result.Words { - resp.Words = append(resp.Words, tts.TranscriptionWord{ + resp.Words = append(resp.Words, audiopkg.TranscriptionWord{ Text: word.Text, Start: word.Start, End: word.End, diff --git a/packages/sdk/src/@pinia/colada.gen.ts b/packages/sdk/src/@pinia/colada.gen.ts index 7c26b897..477164cf 100644 --- a/packages/sdk/src/@pinia/colada.gen.ts +++ b/packages/sdk/src/@pinia/colada.gen.ts @@ -4,8 +4,8 @@ import { type _JSONValue, defineQueryOptions, type UseMutationOptions } from '@p import { serializeQueryKeyValue } from '../client'; import { client } from '../client.gen'; -import { deleteBotsByBotIdAclRulesByRuleId, deleteBotsByBotIdCompactionLogs, deleteBotsByBotIdContainer, deleteBotsByBotIdContainerSkills, deleteBotsByBotIdEmailBindingsById, deleteBotsByBotIdHeartbeatLogs, deleteBotsByBotIdMcpById, deleteBotsByBotIdMcpByIdOauthToken, deleteBotsByBotIdMemory, deleteBotsByBotIdMemoryById, deleteBotsByBotIdMessages, deleteBotsByBotIdScheduleById, deleteBotsByBotIdScheduleLogs, deleteBotsByBotIdSessionsBySessionId, deleteBotsByBotIdSettings, deleteBotsById, deleteBotsByIdChannelByPlatform, deleteBrowserContextsById, deleteEmailProvidersById, deleteEmailProvidersByIdOauthToken, deleteMemoryProvidersById, deleteModelsById, deleteModelsModelByModelId, deleteProvidersById, deleteProvidersByIdOauthToken, deleteSearchProvidersById, getBots, getBotsByBotIdAclChannelIdentities, getBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversations, getBotsByBotIdAclChannelTypesByChannelTypeConversations, getBotsByBotIdAclDefaultEffect, getBotsByBotIdAclRules, getBotsByBotIdCompactionLogs, getBotsByBotIdContainer, getBotsByBotIdContainerFs, getBotsByBotIdContainerFsDownload, getBotsByBotIdContainerFsList, getBotsByBotIdContainerFsRead, getBotsByBotIdContainerSkills, getBotsByBotIdContainerSnapshots, getBotsByBotIdContainerTerminal, getBotsByBotIdContainerTerminalWs, getBotsByBotIdEmailBindings, getBotsByBotIdEmailOutbox, getBotsByBotIdEmailOutboxById, getBotsByBotIdHeartbeatLogs, getBotsByBotIdLocalWs, getBotsByBotIdMcp, getBotsByBotIdMcpById, getBotsByBotIdMcpByIdOauthStatus, getBotsByBotIdMcpExport, getBotsByBotIdMemory, getBotsByBotIdMemoryStatus, getBotsByBotIdMemoryUsage, getBotsByBotIdMessages, getBotsByBotIdSchedule, getBotsByBotIdScheduleById, getBotsByBotIdScheduleByIdLogs, getBotsByBotIdScheduleLogs, getBotsByBotIdSessions, getBotsByBotIdSessionsBySessionId, getBotsByBotIdSessionsBySessionIdStatus, getBotsByBotIdSettings, getBotsByBotIdTokenUsage, getBotsById, getBotsByIdChannelByPlatform, getBotsByIdChecks, getBrowserContexts, getBrowserContextsById, getBrowserContextsCores, getChannels, getChannelsByPlatform, getEmailOauthCallback, getEmailProviders, getEmailProvidersById, getEmailProvidersByIdOauthAuthorize, getEmailProvidersByIdOauthStatus, getEmailProvidersMeta, getMemoryProviders, getMemoryProvidersById, getMemoryProvidersByIdStatus, getMemoryProvidersMeta, getModels, getModelsById, getModelsCount, getModelsModelByModelId, getPing, getProviders, getProvidersById, getProvidersByIdModels, getProvidersByIdOauthAuthorize, getProvidersByIdOauthStatus, getProvidersCount, getProvidersNameByName, getProvidersOauthCallback, getSearchProviders, getSearchProvidersById, getSearchProvidersMeta, getSpeechModels, getSpeechModelsById, getSpeechModelsByIdCapabilities, getSpeechProviders, getSpeechProvidersById, getSpeechProvidersByIdModels, getSpeechProvidersMeta, getSupermarketMcps, getSupermarketMcpsById, getSupermarketSkills, getSupermarketSkillsById, getSupermarketTags, getUsers, getUsersById, getUsersMe, getUsersMeChannelsByPlatform, getUsersMeIdentities, type Options, patchBotsByBotIdSessionsBySessionId, patchBotsByIdChannelByPlatformStatus, postAuthLogin, postAuthRefresh, postBots, postBotsByBotIdAclRules, postBotsByBotIdContainer, postBotsByBotIdContainerDataExport, postBotsByBotIdContainerDataImport, postBotsByBotIdContainerDataRestore, postBotsByBotIdContainerFsDelete, postBotsByBotIdContainerFsMkdir, postBotsByBotIdContainerFsRename, postBotsByBotIdContainerFsUpload, postBotsByBotIdContainerFsWrite, postBotsByBotIdContainerSkills, postBotsByBotIdContainerSkillsActions, postBotsByBotIdContainerSnapshots, postBotsByBotIdContainerSnapshotsRollback, postBotsByBotIdContainerStart, postBotsByBotIdContainerStop, postBotsByBotIdEmailBindings, postBotsByBotIdLocalMessages, postBotsByBotIdMcp, postBotsByBotIdMcpByIdOauthAuthorize, postBotsByBotIdMcpByIdOauthDiscover, postBotsByBotIdMcpByIdOauthExchange, postBotsByBotIdMcpByIdProbe, postBotsByBotIdMcpOpsBatchDelete, postBotsByBotIdMcpStdio, postBotsByBotIdMcpStdioByConnectionId, postBotsByBotIdMemory, postBotsByBotIdMemoryCompact, postBotsByBotIdMemoryRebuild, postBotsByBotIdMemorySearch, postBotsByBotIdSchedule, postBotsByBotIdSessions, postBotsByBotIdSessionsBySessionIdCompact, postBotsByBotIdSettings, postBotsByBotIdSupermarketInstallMcp, postBotsByBotIdSupermarketInstallSkill, postBotsByBotIdTools, postBotsByBotIdTtsSynthesize, postBotsByIdChannelByPlatformSend, postBotsByIdChannelByPlatformSendChat, postBrowserContexts, postEmailMailgunWebhookByConfigId, postEmailProviders, postMemoryProviders, postModels, postModelsByIdTest, postProviders, postProvidersByIdImportModels, postProvidersByIdOauthPoll, postProvidersByIdTest, postSearchProviders, postSpeechModelsByIdTest, postSpeechProvidersByIdImportModels, postUsers, putBotsByBotIdAclDefaultEffect, putBotsByBotIdAclRulesByRuleId, putBotsByBotIdAclRulesReorder, putBotsByBotIdEmailBindingsById, putBotsByBotIdMcpById, putBotsByBotIdMcpImport, putBotsByBotIdScheduleById, putBotsByBotIdSettings, putBotsById, putBotsByIdChannelByPlatform, putBotsByIdOwner, putBrowserContextsById, putEmailProvidersById, putMemoryProvidersById, putModelsById, putModelsModelByModelId, putProvidersById, putSearchProvidersById, putUsersById, putUsersByIdPassword, putUsersMe, putUsersMeChannelsByPlatform, putUsersMePassword } from '../sdk.gen'; -import type { DeleteBotsByBotIdAclRulesByRuleIdData, DeleteBotsByBotIdAclRulesByRuleIdError, DeleteBotsByBotIdCompactionLogsData, DeleteBotsByBotIdCompactionLogsError, DeleteBotsByBotIdContainerData, DeleteBotsByBotIdContainerError, DeleteBotsByBotIdContainerSkillsData, DeleteBotsByBotIdContainerSkillsError, DeleteBotsByBotIdContainerSkillsResponse, DeleteBotsByBotIdEmailBindingsByIdData, DeleteBotsByBotIdEmailBindingsByIdError, DeleteBotsByBotIdHeartbeatLogsData, DeleteBotsByBotIdHeartbeatLogsError, DeleteBotsByBotIdMcpByIdData, DeleteBotsByBotIdMcpByIdError, DeleteBotsByBotIdMcpByIdOauthTokenData, DeleteBotsByBotIdMcpByIdOauthTokenError, DeleteBotsByBotIdMemoryByIdData, DeleteBotsByBotIdMemoryByIdError, DeleteBotsByBotIdMemoryByIdResponse, DeleteBotsByBotIdMemoryData, DeleteBotsByBotIdMemoryError, DeleteBotsByBotIdMemoryResponse, DeleteBotsByBotIdMessagesData, DeleteBotsByBotIdMessagesError, DeleteBotsByBotIdScheduleByIdData, DeleteBotsByBotIdScheduleByIdError, DeleteBotsByBotIdScheduleLogsData, DeleteBotsByBotIdScheduleLogsError, DeleteBotsByBotIdSessionsBySessionIdData, DeleteBotsByBotIdSessionsBySessionIdError, DeleteBotsByBotIdSettingsData, DeleteBotsByBotIdSettingsError, DeleteBotsByIdChannelByPlatformData, DeleteBotsByIdChannelByPlatformError, DeleteBotsByIdData, DeleteBotsByIdError, DeleteBotsByIdResponse, DeleteBrowserContextsByIdData, DeleteBrowserContextsByIdError, DeleteEmailProvidersByIdData, DeleteEmailProvidersByIdError, DeleteEmailProvidersByIdOauthTokenData, DeleteEmailProvidersByIdOauthTokenError, DeleteMemoryProvidersByIdData, DeleteMemoryProvidersByIdError, DeleteModelsByIdData, DeleteModelsByIdError, DeleteModelsModelByModelIdData, DeleteModelsModelByModelIdError, DeleteProvidersByIdData, DeleteProvidersByIdError, DeleteProvidersByIdOauthTokenData, DeleteProvidersByIdOauthTokenError, DeleteSearchProvidersByIdData, DeleteSearchProvidersByIdError, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsData, GetBotsByBotIdAclChannelIdentitiesData, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsData, GetBotsByBotIdAclDefaultEffectData, GetBotsByBotIdAclRulesData, GetBotsByBotIdCompactionLogsData, GetBotsByBotIdContainerData, GetBotsByBotIdContainerFsData, GetBotsByBotIdContainerFsDownloadData, GetBotsByBotIdContainerFsListData, GetBotsByBotIdContainerFsReadData, GetBotsByBotIdContainerSkillsData, GetBotsByBotIdContainerSnapshotsData, GetBotsByBotIdContainerTerminalData, GetBotsByBotIdContainerTerminalWsData, GetBotsByBotIdEmailBindingsData, GetBotsByBotIdEmailOutboxByIdData, GetBotsByBotIdEmailOutboxData, GetBotsByBotIdHeartbeatLogsData, GetBotsByBotIdLocalWsData, GetBotsByBotIdMcpByIdData, GetBotsByBotIdMcpByIdOauthStatusData, GetBotsByBotIdMcpData, GetBotsByBotIdMcpExportData, GetBotsByBotIdMemoryData, GetBotsByBotIdMemoryStatusData, GetBotsByBotIdMemoryUsageData, GetBotsByBotIdMessagesData, GetBotsByBotIdScheduleByIdData, GetBotsByBotIdScheduleByIdLogsData, GetBotsByBotIdScheduleData, GetBotsByBotIdScheduleLogsData, GetBotsByBotIdSessionsBySessionIdData, GetBotsByBotIdSessionsBySessionIdStatusData, GetBotsByBotIdSessionsData, GetBotsByBotIdSettingsData, GetBotsByBotIdTokenUsageData, GetBotsByIdChannelByPlatformData, GetBotsByIdChecksData, GetBotsByIdData, GetBotsData, GetBrowserContextsByIdData, GetBrowserContextsCoresData, GetBrowserContextsData, GetChannelsByPlatformData, GetChannelsData, GetEmailOauthCallbackData, GetEmailProvidersByIdData, GetEmailProvidersByIdOauthAuthorizeData, GetEmailProvidersByIdOauthStatusData, GetEmailProvidersData, GetEmailProvidersMetaData, GetMemoryProvidersByIdData, GetMemoryProvidersByIdStatusData, GetMemoryProvidersData, GetMemoryProvidersMetaData, GetModelsByIdData, GetModelsCountData, GetModelsData, GetModelsModelByModelIdData, GetPingData, GetProvidersByIdData, GetProvidersByIdModelsData, GetProvidersByIdOauthAuthorizeData, GetProvidersByIdOauthStatusData, GetProvidersCountData, GetProvidersData, GetProvidersNameByNameData, GetProvidersOauthCallbackData, GetSearchProvidersByIdData, GetSearchProvidersData, GetSearchProvidersMetaData, GetSpeechModelsByIdCapabilitiesData, GetSpeechModelsByIdData, GetSpeechModelsData, GetSpeechProvidersByIdData, GetSpeechProvidersByIdModelsData, GetSpeechProvidersData, GetSpeechProvidersMetaData, GetSupermarketMcpsByIdData, GetSupermarketMcpsData, GetSupermarketSkillsByIdData, GetSupermarketSkillsData, GetSupermarketTagsData, GetUsersByIdData, GetUsersData, GetUsersMeChannelsByPlatformData, GetUsersMeData, GetUsersMeIdentitiesData, PatchBotsByBotIdSessionsBySessionIdData, PatchBotsByBotIdSessionsBySessionIdError, PatchBotsByBotIdSessionsBySessionIdResponse, PatchBotsByIdChannelByPlatformStatusData, PatchBotsByIdChannelByPlatformStatusError, PatchBotsByIdChannelByPlatformStatusResponse, PostAuthLoginData, PostAuthLoginError, PostAuthLoginResponse, PostAuthRefreshData, PostAuthRefreshError, PostAuthRefreshResponse, PostBotsByBotIdAclRulesData, PostBotsByBotIdAclRulesError, PostBotsByBotIdAclRulesResponse, PostBotsByBotIdContainerData, PostBotsByBotIdContainerDataExportData, PostBotsByBotIdContainerDataExportError, PostBotsByBotIdContainerDataImportData, PostBotsByBotIdContainerDataImportError, PostBotsByBotIdContainerDataImportResponse, PostBotsByBotIdContainerDataRestoreData, PostBotsByBotIdContainerDataRestoreError, PostBotsByBotIdContainerDataRestoreResponse, PostBotsByBotIdContainerError, PostBotsByBotIdContainerFsDeleteData, PostBotsByBotIdContainerFsDeleteError, PostBotsByBotIdContainerFsDeleteResponse, PostBotsByBotIdContainerFsMkdirData, PostBotsByBotIdContainerFsMkdirError, PostBotsByBotIdContainerFsMkdirResponse, PostBotsByBotIdContainerFsRenameData, PostBotsByBotIdContainerFsRenameError, PostBotsByBotIdContainerFsRenameResponse, PostBotsByBotIdContainerFsUploadData, PostBotsByBotIdContainerFsUploadError, PostBotsByBotIdContainerFsUploadResponse, PostBotsByBotIdContainerFsWriteData, PostBotsByBotIdContainerFsWriteError, PostBotsByBotIdContainerFsWriteResponse, PostBotsByBotIdContainerResponse, PostBotsByBotIdContainerSkillsActionsData, PostBotsByBotIdContainerSkillsActionsError, PostBotsByBotIdContainerSkillsActionsResponse, PostBotsByBotIdContainerSkillsData, PostBotsByBotIdContainerSkillsError, PostBotsByBotIdContainerSkillsResponse, PostBotsByBotIdContainerSnapshotsData, PostBotsByBotIdContainerSnapshotsError, PostBotsByBotIdContainerSnapshotsResponse, PostBotsByBotIdContainerSnapshotsRollbackData, PostBotsByBotIdContainerSnapshotsRollbackError, PostBotsByBotIdContainerSnapshotsRollbackResponse, PostBotsByBotIdContainerStartData, PostBotsByBotIdContainerStartError, PostBotsByBotIdContainerStartResponse, PostBotsByBotIdContainerStopData, PostBotsByBotIdContainerStopError, PostBotsByBotIdContainerStopResponse, PostBotsByBotIdEmailBindingsData, PostBotsByBotIdEmailBindingsError, PostBotsByBotIdEmailBindingsResponse, PostBotsByBotIdLocalMessagesData, PostBotsByBotIdLocalMessagesError, PostBotsByBotIdLocalMessagesResponse, PostBotsByBotIdMcpByIdOauthAuthorizeData, PostBotsByBotIdMcpByIdOauthAuthorizeError, PostBotsByBotIdMcpByIdOauthAuthorizeResponse, PostBotsByBotIdMcpByIdOauthDiscoverData, PostBotsByBotIdMcpByIdOauthDiscoverError, PostBotsByBotIdMcpByIdOauthDiscoverResponse, PostBotsByBotIdMcpByIdOauthExchangeData, PostBotsByBotIdMcpByIdOauthExchangeError, PostBotsByBotIdMcpByIdOauthExchangeResponse, PostBotsByBotIdMcpByIdProbeData, PostBotsByBotIdMcpByIdProbeError, PostBotsByBotIdMcpByIdProbeResponse, PostBotsByBotIdMcpData, PostBotsByBotIdMcpError, PostBotsByBotIdMcpOpsBatchDeleteData, PostBotsByBotIdMcpOpsBatchDeleteError, PostBotsByBotIdMcpResponse, PostBotsByBotIdMcpStdioByConnectionIdData, PostBotsByBotIdMcpStdioByConnectionIdError, PostBotsByBotIdMcpStdioByConnectionIdResponse, PostBotsByBotIdMcpStdioData, PostBotsByBotIdMcpStdioError, PostBotsByBotIdMcpStdioResponse, PostBotsByBotIdMemoryCompactData, PostBotsByBotIdMemoryCompactError, PostBotsByBotIdMemoryCompactResponse, PostBotsByBotIdMemoryData, PostBotsByBotIdMemoryError, PostBotsByBotIdMemoryRebuildData, PostBotsByBotIdMemoryRebuildError, PostBotsByBotIdMemoryRebuildResponse, PostBotsByBotIdMemoryResponse, PostBotsByBotIdMemorySearchData, PostBotsByBotIdMemorySearchError, PostBotsByBotIdMemorySearchResponse, PostBotsByBotIdScheduleData, PostBotsByBotIdScheduleError, PostBotsByBotIdScheduleResponse, PostBotsByBotIdSessionsBySessionIdCompactData, PostBotsByBotIdSessionsBySessionIdCompactError, PostBotsByBotIdSessionsBySessionIdCompactResponse, PostBotsByBotIdSessionsData, PostBotsByBotIdSessionsError, PostBotsByBotIdSessionsResponse, PostBotsByBotIdSettingsData, PostBotsByBotIdSettingsError, PostBotsByBotIdSettingsResponse, PostBotsByBotIdSupermarketInstallMcpData, PostBotsByBotIdSupermarketInstallMcpError, PostBotsByBotIdSupermarketInstallMcpResponse, PostBotsByBotIdSupermarketInstallSkillData, PostBotsByBotIdSupermarketInstallSkillError, PostBotsByBotIdSupermarketInstallSkillResponse, PostBotsByBotIdToolsData, PostBotsByBotIdToolsError, PostBotsByBotIdToolsResponse, PostBotsByBotIdTtsSynthesizeData, PostBotsByBotIdTtsSynthesizeError, PostBotsByBotIdTtsSynthesizeResponse, PostBotsByIdChannelByPlatformSendChatData, PostBotsByIdChannelByPlatformSendChatError, PostBotsByIdChannelByPlatformSendChatResponse, PostBotsByIdChannelByPlatformSendData, PostBotsByIdChannelByPlatformSendError, PostBotsByIdChannelByPlatformSendResponse, PostBotsData, PostBotsError, PostBotsResponse, PostBrowserContextsData, PostBrowserContextsError, PostBrowserContextsResponse, PostEmailMailgunWebhookByConfigIdData, PostEmailMailgunWebhookByConfigIdError, PostEmailMailgunWebhookByConfigIdResponse, PostEmailProvidersData, PostEmailProvidersError, PostEmailProvidersResponse, PostMemoryProvidersData, PostMemoryProvidersError, PostMemoryProvidersResponse, PostModelsByIdTestData, PostModelsByIdTestError, PostModelsByIdTestResponse, PostModelsData, PostModelsError, PostModelsResponse, PostProvidersByIdImportModelsData, PostProvidersByIdImportModelsError, PostProvidersByIdImportModelsResponse, PostProvidersByIdOauthPollData, PostProvidersByIdOauthPollError, PostProvidersByIdOauthPollResponse, PostProvidersByIdTestData, PostProvidersByIdTestError, PostProvidersByIdTestResponse, PostProvidersData, PostProvidersError, PostProvidersResponse, PostSearchProvidersData, PostSearchProvidersError, PostSearchProvidersResponse, PostSpeechModelsByIdTestData, PostSpeechModelsByIdTestError, PostSpeechProvidersByIdImportModelsData, PostSpeechProvidersByIdImportModelsError, PostSpeechProvidersByIdImportModelsResponse, PostUsersData, PostUsersError, PostUsersResponse, PutBotsByBotIdAclDefaultEffectData, PutBotsByBotIdAclDefaultEffectError, PutBotsByBotIdAclRulesByRuleIdData, PutBotsByBotIdAclRulesByRuleIdError, PutBotsByBotIdAclRulesByRuleIdResponse, PutBotsByBotIdAclRulesReorderData, PutBotsByBotIdAclRulesReorderError, PutBotsByBotIdEmailBindingsByIdData, PutBotsByBotIdEmailBindingsByIdError, PutBotsByBotIdEmailBindingsByIdResponse, PutBotsByBotIdMcpByIdData, PutBotsByBotIdMcpByIdError, PutBotsByBotIdMcpByIdResponse, PutBotsByBotIdMcpImportData, PutBotsByBotIdMcpImportError, PutBotsByBotIdMcpImportResponse, PutBotsByBotIdScheduleByIdData, PutBotsByBotIdScheduleByIdError, PutBotsByBotIdScheduleByIdResponse, PutBotsByBotIdSettingsData, PutBotsByBotIdSettingsError, PutBotsByBotIdSettingsResponse, PutBotsByIdChannelByPlatformData, PutBotsByIdChannelByPlatformError, PutBotsByIdChannelByPlatformResponse, PutBotsByIdData, PutBotsByIdError, PutBotsByIdOwnerData, PutBotsByIdOwnerError, PutBotsByIdOwnerResponse, PutBotsByIdResponse, PutBrowserContextsByIdData, PutBrowserContextsByIdError, PutBrowserContextsByIdResponse, PutEmailProvidersByIdData, PutEmailProvidersByIdError, PutEmailProvidersByIdResponse, PutMemoryProvidersByIdData, PutMemoryProvidersByIdError, PutMemoryProvidersByIdResponse, PutModelsByIdData, PutModelsByIdError, PutModelsByIdResponse, PutModelsModelByModelIdData, PutModelsModelByModelIdError, PutModelsModelByModelIdResponse, PutProvidersByIdData, PutProvidersByIdError, PutProvidersByIdResponse, PutSearchProvidersByIdData, PutSearchProvidersByIdError, PutSearchProvidersByIdResponse, PutUsersByIdData, PutUsersByIdError, PutUsersByIdPasswordData, PutUsersByIdPasswordError, PutUsersByIdResponse, PutUsersMeChannelsByPlatformData, PutUsersMeChannelsByPlatformError, PutUsersMeChannelsByPlatformResponse, PutUsersMeData, PutUsersMeError, PutUsersMePasswordData, PutUsersMePasswordError, PutUsersMeResponse } from '../types.gen'; +import { deleteBotsByBotIdAclRulesByRuleId, deleteBotsByBotIdCompactionLogs, deleteBotsByBotIdContainer, deleteBotsByBotIdContainerSkills, deleteBotsByBotIdEmailBindingsById, deleteBotsByBotIdHeartbeatLogs, deleteBotsByBotIdMcpById, deleteBotsByBotIdMcpByIdOauthToken, deleteBotsByBotIdMemory, deleteBotsByBotIdMemoryById, deleteBotsByBotIdMessages, deleteBotsByBotIdScheduleById, deleteBotsByBotIdScheduleLogs, deleteBotsByBotIdSessionsBySessionId, deleteBotsByBotIdSettings, deleteBotsById, deleteBotsByIdChannelByPlatform, deleteBrowserContextsById, deleteEmailProvidersById, deleteEmailProvidersByIdOauthToken, deleteMemoryProvidersById, deleteModelsById, deleteModelsModelByModelId, deleteProvidersById, deleteProvidersByIdOauthToken, deleteSearchProvidersById, getBots, getBotsByBotIdAclChannelIdentities, getBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversations, getBotsByBotIdAclChannelTypesByChannelTypeConversations, getBotsByBotIdAclDefaultEffect, getBotsByBotIdAclRules, getBotsByBotIdCompactionLogs, getBotsByBotIdContainer, getBotsByBotIdContainerFs, getBotsByBotIdContainerFsDownload, getBotsByBotIdContainerFsList, getBotsByBotIdContainerFsRead, getBotsByBotIdContainerSkills, getBotsByBotIdContainerSnapshots, getBotsByBotIdContainerTerminal, getBotsByBotIdContainerTerminalWs, getBotsByBotIdEmailBindings, getBotsByBotIdEmailOutbox, getBotsByBotIdEmailOutboxById, getBotsByBotIdHeartbeatLogs, getBotsByBotIdLocalWs, getBotsByBotIdMcp, getBotsByBotIdMcpById, getBotsByBotIdMcpByIdOauthStatus, getBotsByBotIdMcpExport, getBotsByBotIdMemory, getBotsByBotIdMemoryStatus, getBotsByBotIdMemoryUsage, getBotsByBotIdMessages, getBotsByBotIdSchedule, getBotsByBotIdScheduleById, getBotsByBotIdScheduleByIdLogs, getBotsByBotIdScheduleLogs, getBotsByBotIdSessions, getBotsByBotIdSessionsBySessionId, getBotsByBotIdSessionsBySessionIdStatus, getBotsByBotIdSettings, getBotsByBotIdTokenUsage, getBotsById, getBotsByIdChannelByPlatform, getBotsByIdChecks, getBrowserContexts, getBrowserContextsById, getBrowserContextsCores, getChannels, getChannelsByPlatform, getEmailOauthCallback, getEmailProviders, getEmailProvidersById, getEmailProvidersByIdOauthAuthorize, getEmailProvidersByIdOauthStatus, getEmailProvidersMeta, getMemoryProviders, getMemoryProvidersById, getMemoryProvidersByIdStatus, getMemoryProvidersMeta, getModels, getModelsById, getModelsCount, getModelsModelByModelId, getPing, getProviders, getProvidersById, getProvidersByIdModels, getProvidersByIdOauthAuthorize, getProvidersByIdOauthStatus, getProvidersCount, getProvidersNameByName, getProvidersOauthCallback, getSearchProviders, getSearchProvidersById, getSearchProvidersMeta, getSpeechModels, getSpeechModelsById, getSpeechModelsByIdCapabilities, getSpeechProviders, getSpeechProvidersById, getSpeechProvidersByIdModels, getSpeechProvidersMeta, getSupermarketMcps, getSupermarketMcpsById, getSupermarketSkills, getSupermarketSkillsById, getSupermarketTags, getTranscriptionModels, getTranscriptionModelsById, getTranscriptionModelsByIdCapabilities, getTranscriptionProviders, getTranscriptionProvidersById, getTranscriptionProvidersByIdModels, getTranscriptionProvidersMeta, getUsers, getUsersById, getUsersMe, getUsersMeChannelsByPlatform, getUsersMeIdentities, type Options, patchBotsByBotIdSessionsBySessionId, patchBotsByIdChannelByPlatformStatus, postAuthLogin, postAuthRefresh, postBots, postBotsByBotIdAclRules, postBotsByBotIdContainer, postBotsByBotIdContainerDataExport, postBotsByBotIdContainerDataImport, postBotsByBotIdContainerDataRestore, postBotsByBotIdContainerFsDelete, postBotsByBotIdContainerFsMkdir, postBotsByBotIdContainerFsRename, postBotsByBotIdContainerFsUpload, postBotsByBotIdContainerFsWrite, postBotsByBotIdContainerSkills, postBotsByBotIdContainerSkillsActions, postBotsByBotIdContainerSnapshots, postBotsByBotIdContainerSnapshotsRollback, postBotsByBotIdContainerStart, postBotsByBotIdContainerStop, postBotsByBotIdEmailBindings, postBotsByBotIdLocalMessages, postBotsByBotIdMcp, postBotsByBotIdMcpByIdOauthAuthorize, postBotsByBotIdMcpByIdOauthDiscover, postBotsByBotIdMcpByIdOauthExchange, postBotsByBotIdMcpByIdProbe, postBotsByBotIdMcpOpsBatchDelete, postBotsByBotIdMcpStdio, postBotsByBotIdMcpStdioByConnectionId, postBotsByBotIdMemory, postBotsByBotIdMemoryCompact, postBotsByBotIdMemoryRebuild, postBotsByBotIdMemorySearch, postBotsByBotIdSchedule, postBotsByBotIdSessions, postBotsByBotIdSessionsBySessionIdCompact, postBotsByBotIdSettings, postBotsByBotIdSupermarketInstallMcp, postBotsByBotIdSupermarketInstallSkill, postBotsByBotIdTools, postBotsByBotIdTtsSynthesize, postBotsByIdChannelByPlatformSend, postBotsByIdChannelByPlatformSendChat, postBrowserContexts, postEmailMailgunWebhookByConfigId, postEmailProviders, postMemoryProviders, postModels, postModelsByIdTest, postProviders, postProvidersByIdImportModels, postProvidersByIdOauthPoll, postProvidersByIdTest, postSearchProviders, postSpeechModelsByIdTest, postSpeechProvidersByIdImportModels, postTranscriptionModelsByIdTest, postTranscriptionProvidersByIdImportModels, postUsers, putBotsByBotIdAclDefaultEffect, putBotsByBotIdAclRulesByRuleId, putBotsByBotIdAclRulesReorder, putBotsByBotIdEmailBindingsById, putBotsByBotIdMcpById, putBotsByBotIdMcpImport, putBotsByBotIdScheduleById, putBotsByBotIdSettings, putBotsById, putBotsByIdChannelByPlatform, putBotsByIdOwner, putBrowserContextsById, putEmailProvidersById, putMemoryProvidersById, putModelsById, putModelsModelByModelId, putProvidersById, putSearchProvidersById, putSpeechModelsById, putTranscriptionModelsById, putUsersById, putUsersByIdPassword, putUsersMe, putUsersMeChannelsByPlatform, putUsersMePassword } from '../sdk.gen'; +import type { DeleteBotsByBotIdAclRulesByRuleIdData, DeleteBotsByBotIdAclRulesByRuleIdError, DeleteBotsByBotIdCompactionLogsData, DeleteBotsByBotIdCompactionLogsError, DeleteBotsByBotIdContainerData, DeleteBotsByBotIdContainerError, DeleteBotsByBotIdContainerSkillsData, DeleteBotsByBotIdContainerSkillsError, DeleteBotsByBotIdContainerSkillsResponse, DeleteBotsByBotIdEmailBindingsByIdData, DeleteBotsByBotIdEmailBindingsByIdError, DeleteBotsByBotIdHeartbeatLogsData, DeleteBotsByBotIdHeartbeatLogsError, DeleteBotsByBotIdMcpByIdData, DeleteBotsByBotIdMcpByIdError, DeleteBotsByBotIdMcpByIdOauthTokenData, DeleteBotsByBotIdMcpByIdOauthTokenError, DeleteBotsByBotIdMemoryByIdData, DeleteBotsByBotIdMemoryByIdError, DeleteBotsByBotIdMemoryByIdResponse, DeleteBotsByBotIdMemoryData, DeleteBotsByBotIdMemoryError, DeleteBotsByBotIdMemoryResponse, DeleteBotsByBotIdMessagesData, DeleteBotsByBotIdMessagesError, DeleteBotsByBotIdScheduleByIdData, DeleteBotsByBotIdScheduleByIdError, DeleteBotsByBotIdScheduleLogsData, DeleteBotsByBotIdScheduleLogsError, DeleteBotsByBotIdSessionsBySessionIdData, DeleteBotsByBotIdSessionsBySessionIdError, DeleteBotsByBotIdSettingsData, DeleteBotsByBotIdSettingsError, DeleteBotsByIdChannelByPlatformData, DeleteBotsByIdChannelByPlatformError, DeleteBotsByIdData, DeleteBotsByIdError, DeleteBotsByIdResponse, DeleteBrowserContextsByIdData, DeleteBrowserContextsByIdError, DeleteEmailProvidersByIdData, DeleteEmailProvidersByIdError, DeleteEmailProvidersByIdOauthTokenData, DeleteEmailProvidersByIdOauthTokenError, DeleteMemoryProvidersByIdData, DeleteMemoryProvidersByIdError, DeleteModelsByIdData, DeleteModelsByIdError, DeleteModelsModelByModelIdData, DeleteModelsModelByModelIdError, DeleteProvidersByIdData, DeleteProvidersByIdError, DeleteProvidersByIdOauthTokenData, DeleteProvidersByIdOauthTokenError, DeleteSearchProvidersByIdData, DeleteSearchProvidersByIdError, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsData, GetBotsByBotIdAclChannelIdentitiesData, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsData, GetBotsByBotIdAclDefaultEffectData, GetBotsByBotIdAclRulesData, GetBotsByBotIdCompactionLogsData, GetBotsByBotIdContainerData, GetBotsByBotIdContainerFsData, GetBotsByBotIdContainerFsDownloadData, GetBotsByBotIdContainerFsListData, GetBotsByBotIdContainerFsReadData, GetBotsByBotIdContainerSkillsData, GetBotsByBotIdContainerSnapshotsData, GetBotsByBotIdContainerTerminalData, GetBotsByBotIdContainerTerminalWsData, GetBotsByBotIdEmailBindingsData, GetBotsByBotIdEmailOutboxByIdData, GetBotsByBotIdEmailOutboxData, GetBotsByBotIdHeartbeatLogsData, GetBotsByBotIdLocalWsData, GetBotsByBotIdMcpByIdData, GetBotsByBotIdMcpByIdOauthStatusData, GetBotsByBotIdMcpData, GetBotsByBotIdMcpExportData, GetBotsByBotIdMemoryData, GetBotsByBotIdMemoryStatusData, GetBotsByBotIdMemoryUsageData, GetBotsByBotIdMessagesData, GetBotsByBotIdScheduleByIdData, GetBotsByBotIdScheduleByIdLogsData, GetBotsByBotIdScheduleData, GetBotsByBotIdScheduleLogsData, GetBotsByBotIdSessionsBySessionIdData, GetBotsByBotIdSessionsBySessionIdStatusData, GetBotsByBotIdSessionsData, GetBotsByBotIdSettingsData, GetBotsByBotIdTokenUsageData, GetBotsByIdChannelByPlatformData, GetBotsByIdChecksData, GetBotsByIdData, GetBotsData, GetBrowserContextsByIdData, GetBrowserContextsCoresData, GetBrowserContextsData, GetChannelsByPlatformData, GetChannelsData, GetEmailOauthCallbackData, GetEmailProvidersByIdData, GetEmailProvidersByIdOauthAuthorizeData, GetEmailProvidersByIdOauthStatusData, GetEmailProvidersData, GetEmailProvidersMetaData, GetMemoryProvidersByIdData, GetMemoryProvidersByIdStatusData, GetMemoryProvidersData, GetMemoryProvidersMetaData, GetModelsByIdData, GetModelsCountData, GetModelsData, GetModelsModelByModelIdData, GetPingData, GetProvidersByIdData, GetProvidersByIdModelsData, GetProvidersByIdOauthAuthorizeData, GetProvidersByIdOauthStatusData, GetProvidersCountData, GetProvidersData, GetProvidersNameByNameData, GetProvidersOauthCallbackData, GetSearchProvidersByIdData, GetSearchProvidersData, GetSearchProvidersMetaData, GetSpeechModelsByIdCapabilitiesData, GetSpeechModelsByIdData, GetSpeechModelsData, GetSpeechProvidersByIdData, GetSpeechProvidersByIdModelsData, GetSpeechProvidersData, GetSpeechProvidersMetaData, GetSupermarketMcpsByIdData, GetSupermarketMcpsData, GetSupermarketSkillsByIdData, GetSupermarketSkillsData, GetSupermarketTagsData, GetTranscriptionModelsByIdCapabilitiesData, GetTranscriptionModelsByIdData, GetTranscriptionModelsData, GetTranscriptionProvidersByIdData, GetTranscriptionProvidersByIdModelsData, GetTranscriptionProvidersData, GetTranscriptionProvidersMetaData, GetUsersByIdData, GetUsersData, GetUsersMeChannelsByPlatformData, GetUsersMeData, GetUsersMeIdentitiesData, PatchBotsByBotIdSessionsBySessionIdData, PatchBotsByBotIdSessionsBySessionIdError, PatchBotsByBotIdSessionsBySessionIdResponse, PatchBotsByIdChannelByPlatformStatusData, PatchBotsByIdChannelByPlatformStatusError, PatchBotsByIdChannelByPlatformStatusResponse, PostAuthLoginData, PostAuthLoginError, PostAuthLoginResponse, PostAuthRefreshData, PostAuthRefreshError, PostAuthRefreshResponse, PostBotsByBotIdAclRulesData, PostBotsByBotIdAclRulesError, PostBotsByBotIdAclRulesResponse, PostBotsByBotIdContainerData, PostBotsByBotIdContainerDataExportData, PostBotsByBotIdContainerDataExportError, PostBotsByBotIdContainerDataImportData, PostBotsByBotIdContainerDataImportError, PostBotsByBotIdContainerDataImportResponse, PostBotsByBotIdContainerDataRestoreData, PostBotsByBotIdContainerDataRestoreError, PostBotsByBotIdContainerDataRestoreResponse, PostBotsByBotIdContainerError, PostBotsByBotIdContainerFsDeleteData, PostBotsByBotIdContainerFsDeleteError, PostBotsByBotIdContainerFsDeleteResponse, PostBotsByBotIdContainerFsMkdirData, PostBotsByBotIdContainerFsMkdirError, PostBotsByBotIdContainerFsMkdirResponse, PostBotsByBotIdContainerFsRenameData, PostBotsByBotIdContainerFsRenameError, PostBotsByBotIdContainerFsRenameResponse, PostBotsByBotIdContainerFsUploadData, PostBotsByBotIdContainerFsUploadError, PostBotsByBotIdContainerFsUploadResponse, PostBotsByBotIdContainerFsWriteData, PostBotsByBotIdContainerFsWriteError, PostBotsByBotIdContainerFsWriteResponse, PostBotsByBotIdContainerResponse, PostBotsByBotIdContainerSkillsActionsData, PostBotsByBotIdContainerSkillsActionsError, PostBotsByBotIdContainerSkillsActionsResponse, PostBotsByBotIdContainerSkillsData, PostBotsByBotIdContainerSkillsError, PostBotsByBotIdContainerSkillsResponse, PostBotsByBotIdContainerSnapshotsData, PostBotsByBotIdContainerSnapshotsError, PostBotsByBotIdContainerSnapshotsResponse, PostBotsByBotIdContainerSnapshotsRollbackData, PostBotsByBotIdContainerSnapshotsRollbackError, PostBotsByBotIdContainerSnapshotsRollbackResponse, PostBotsByBotIdContainerStartData, PostBotsByBotIdContainerStartError, PostBotsByBotIdContainerStartResponse, PostBotsByBotIdContainerStopData, PostBotsByBotIdContainerStopError, PostBotsByBotIdContainerStopResponse, PostBotsByBotIdEmailBindingsData, PostBotsByBotIdEmailBindingsError, PostBotsByBotIdEmailBindingsResponse, PostBotsByBotIdLocalMessagesData, PostBotsByBotIdLocalMessagesError, PostBotsByBotIdLocalMessagesResponse, PostBotsByBotIdMcpByIdOauthAuthorizeData, PostBotsByBotIdMcpByIdOauthAuthorizeError, PostBotsByBotIdMcpByIdOauthAuthorizeResponse, PostBotsByBotIdMcpByIdOauthDiscoverData, PostBotsByBotIdMcpByIdOauthDiscoverError, PostBotsByBotIdMcpByIdOauthDiscoverResponse, PostBotsByBotIdMcpByIdOauthExchangeData, PostBotsByBotIdMcpByIdOauthExchangeError, PostBotsByBotIdMcpByIdOauthExchangeResponse, PostBotsByBotIdMcpByIdProbeData, PostBotsByBotIdMcpByIdProbeError, PostBotsByBotIdMcpByIdProbeResponse, PostBotsByBotIdMcpData, PostBotsByBotIdMcpError, PostBotsByBotIdMcpOpsBatchDeleteData, PostBotsByBotIdMcpOpsBatchDeleteError, PostBotsByBotIdMcpResponse, PostBotsByBotIdMcpStdioByConnectionIdData, PostBotsByBotIdMcpStdioByConnectionIdError, PostBotsByBotIdMcpStdioByConnectionIdResponse, PostBotsByBotIdMcpStdioData, PostBotsByBotIdMcpStdioError, PostBotsByBotIdMcpStdioResponse, PostBotsByBotIdMemoryCompactData, PostBotsByBotIdMemoryCompactError, PostBotsByBotIdMemoryCompactResponse, PostBotsByBotIdMemoryData, PostBotsByBotIdMemoryError, PostBotsByBotIdMemoryRebuildData, PostBotsByBotIdMemoryRebuildError, PostBotsByBotIdMemoryRebuildResponse, PostBotsByBotIdMemoryResponse, PostBotsByBotIdMemorySearchData, PostBotsByBotIdMemorySearchError, PostBotsByBotIdMemorySearchResponse, PostBotsByBotIdScheduleData, PostBotsByBotIdScheduleError, PostBotsByBotIdScheduleResponse, PostBotsByBotIdSessionsBySessionIdCompactData, PostBotsByBotIdSessionsBySessionIdCompactError, PostBotsByBotIdSessionsBySessionIdCompactResponse, PostBotsByBotIdSessionsData, PostBotsByBotIdSessionsError, PostBotsByBotIdSessionsResponse, PostBotsByBotIdSettingsData, PostBotsByBotIdSettingsError, PostBotsByBotIdSettingsResponse, PostBotsByBotIdSupermarketInstallMcpData, PostBotsByBotIdSupermarketInstallMcpError, PostBotsByBotIdSupermarketInstallMcpResponse, PostBotsByBotIdSupermarketInstallSkillData, PostBotsByBotIdSupermarketInstallSkillError, PostBotsByBotIdSupermarketInstallSkillResponse, PostBotsByBotIdToolsData, PostBotsByBotIdToolsError, PostBotsByBotIdToolsResponse, PostBotsByBotIdTtsSynthesizeData, PostBotsByBotIdTtsSynthesizeError, PostBotsByBotIdTtsSynthesizeResponse, PostBotsByIdChannelByPlatformSendChatData, PostBotsByIdChannelByPlatformSendChatError, PostBotsByIdChannelByPlatformSendChatResponse, PostBotsByIdChannelByPlatformSendData, PostBotsByIdChannelByPlatformSendError, PostBotsByIdChannelByPlatformSendResponse, PostBotsData, PostBotsError, PostBotsResponse, PostBrowserContextsData, PostBrowserContextsError, PostBrowserContextsResponse, PostEmailMailgunWebhookByConfigIdData, PostEmailMailgunWebhookByConfigIdError, PostEmailMailgunWebhookByConfigIdResponse, PostEmailProvidersData, PostEmailProvidersError, PostEmailProvidersResponse, PostMemoryProvidersData, PostMemoryProvidersError, PostMemoryProvidersResponse, PostModelsByIdTestData, PostModelsByIdTestError, PostModelsByIdTestResponse, PostModelsData, PostModelsError, PostModelsResponse, PostProvidersByIdImportModelsData, PostProvidersByIdImportModelsError, PostProvidersByIdImportModelsResponse, PostProvidersByIdOauthPollData, PostProvidersByIdOauthPollError, PostProvidersByIdOauthPollResponse, PostProvidersByIdTestData, PostProvidersByIdTestError, PostProvidersByIdTestResponse, PostProvidersData, PostProvidersError, PostProvidersResponse, PostSearchProvidersData, PostSearchProvidersError, PostSearchProvidersResponse, PostSpeechModelsByIdTestData, PostSpeechModelsByIdTestError, PostSpeechProvidersByIdImportModelsData, PostSpeechProvidersByIdImportModelsError, PostSpeechProvidersByIdImportModelsResponse, PostTranscriptionModelsByIdTestData, PostTranscriptionModelsByIdTestError, PostTranscriptionModelsByIdTestResponse, PostTranscriptionProvidersByIdImportModelsData, PostTranscriptionProvidersByIdImportModelsError, PostTranscriptionProvidersByIdImportModelsResponse, PostUsersData, PostUsersError, PostUsersResponse, PutBotsByBotIdAclDefaultEffectData, PutBotsByBotIdAclDefaultEffectError, PutBotsByBotIdAclRulesByRuleIdData, PutBotsByBotIdAclRulesByRuleIdError, PutBotsByBotIdAclRulesByRuleIdResponse, PutBotsByBotIdAclRulesReorderData, PutBotsByBotIdAclRulesReorderError, PutBotsByBotIdEmailBindingsByIdData, PutBotsByBotIdEmailBindingsByIdError, PutBotsByBotIdEmailBindingsByIdResponse, PutBotsByBotIdMcpByIdData, PutBotsByBotIdMcpByIdError, PutBotsByBotIdMcpByIdResponse, PutBotsByBotIdMcpImportData, PutBotsByBotIdMcpImportError, PutBotsByBotIdMcpImportResponse, PutBotsByBotIdScheduleByIdData, PutBotsByBotIdScheduleByIdError, PutBotsByBotIdScheduleByIdResponse, PutBotsByBotIdSettingsData, PutBotsByBotIdSettingsError, PutBotsByBotIdSettingsResponse, PutBotsByIdChannelByPlatformData, PutBotsByIdChannelByPlatformError, PutBotsByIdChannelByPlatformResponse, PutBotsByIdData, PutBotsByIdError, PutBotsByIdOwnerData, PutBotsByIdOwnerError, PutBotsByIdOwnerResponse, PutBotsByIdResponse, PutBrowserContextsByIdData, PutBrowserContextsByIdError, PutBrowserContextsByIdResponse, PutEmailProvidersByIdData, PutEmailProvidersByIdError, PutEmailProvidersByIdResponse, PutMemoryProvidersByIdData, PutMemoryProvidersByIdError, PutMemoryProvidersByIdResponse, PutModelsByIdData, PutModelsByIdError, PutModelsByIdResponse, PutModelsModelByModelIdData, PutModelsModelByModelIdError, PutModelsModelByModelIdResponse, PutProvidersByIdData, PutProvidersByIdError, PutProvidersByIdResponse, PutSearchProvidersByIdData, PutSearchProvidersByIdError, PutSearchProvidersByIdResponse, PutSpeechModelsByIdData, PutSpeechModelsByIdError, PutSpeechModelsByIdResponse, PutTranscriptionModelsByIdData, PutTranscriptionModelsByIdError, PutTranscriptionModelsByIdResponse, PutUsersByIdData, PutUsersByIdError, PutUsersByIdPasswordData, PutUsersByIdPasswordError, PutUsersByIdResponse, PutUsersMeChannelsByPlatformData, PutUsersMeChannelsByPlatformError, PutUsersMeChannelsByPlatformResponse, PutUsersMeData, PutUsersMeError, PutUsersMePasswordData, PutUsersMePasswordError, PutUsersMeResponse } from '../types.gen'; /** * Login @@ -2967,6 +2967,20 @@ export const getSpeechModelsByIdQuery = defineQueryOptions((options: Options>): UseMutationOptions, PutSpeechModelsByIdError> => ({ + mutation: async (vars) => { + const { data } = await putSpeechModelsById({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } +}); + export const getSpeechModelsByIdCapabilitiesQueryKey = (options: Options) => createQueryKey('getSpeechModelsByIdCapabilities', options); /** @@ -3177,6 +3191,181 @@ export const getSupermarketTagsQuery = defineQueryOptions((options?: Options) => createQueryKey('getTranscriptionModels', options); + +/** + * List all transcription models + * + * List all models of type 'transcription' (filtered view of unified models table) + */ +export const getTranscriptionModelsQuery = defineQueryOptions((options?: Options) => ({ + key: getTranscriptionModelsQueryKey(options), + query: async (context) => { + const { data } = await getTranscriptionModels({ + ...options, + ...context, + throwOnError: true + }); + return data; + } +})); + +export const getTranscriptionModelsByIdQueryKey = (options: Options) => createQueryKey('getTranscriptionModelsById', options); + +/** + * Get a transcription model + */ +export const getTranscriptionModelsByIdQuery = defineQueryOptions((options: Options) => ({ + key: getTranscriptionModelsByIdQueryKey(options), + query: async (context) => { + const { data } = await getTranscriptionModelsById({ + ...options, + ...context, + throwOnError: true + }); + return data; + } +})); + +/** + * Update a transcription model + */ +export const putTranscriptionModelsByIdMutation = (options?: Partial>): UseMutationOptions, PutTranscriptionModelsByIdError> => ({ + mutation: async (vars) => { + const { data } = await putTranscriptionModelsById({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } +}); + +export const getTranscriptionModelsByIdCapabilitiesQueryKey = (options: Options) => createQueryKey('getTranscriptionModelsByIdCapabilities', options); + +/** + * Get transcription model capabilities + */ +export const getTranscriptionModelsByIdCapabilitiesQuery = defineQueryOptions((options: Options) => ({ + key: getTranscriptionModelsByIdCapabilitiesQueryKey(options), + query: async (context) => { + const { data } = await getTranscriptionModelsByIdCapabilities({ + ...options, + ...context, + throwOnError: true + }); + return data; + } +})); + +/** + * Test transcription model recognition + * + * Transcribe uploaded audio using a specific model's config and return structured text output + */ +export const postTranscriptionModelsByIdTestMutation = (options?: Partial>): UseMutationOptions, PostTranscriptionModelsByIdTestError> => ({ + mutation: async (vars) => { + const { data } = await postTranscriptionModelsByIdTest({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } +}); + +export const getTranscriptionProvidersQueryKey = (options?: Options) => createQueryKey('getTranscriptionProviders', options); + +/** + * List transcription providers + * + * List providers that support transcription (filtered view of unified providers table) + */ +export const getTranscriptionProvidersQuery = defineQueryOptions((options?: Options) => ({ + key: getTranscriptionProvidersQueryKey(options), + query: async (context) => { + const { data } = await getTranscriptionProviders({ + ...options, + ...context, + throwOnError: true + }); + return data; + } +})); + +export const getTranscriptionProvidersMetaQueryKey = (options?: Options) => createQueryKey('getTranscriptionProvidersMeta', options); + +/** + * List transcription provider metadata + * + * List available transcription provider types with their models and capabilities + */ +export const getTranscriptionProvidersMetaQuery = defineQueryOptions((options?: Options) => ({ + key: getTranscriptionProvidersMetaQueryKey(options), + query: async (context) => { + const { data } = await getTranscriptionProvidersMeta({ + ...options, + ...context, + throwOnError: true + }); + return data; + } +})); + +export const getTranscriptionProvidersByIdQueryKey = (options: Options) => createQueryKey('getTranscriptionProvidersById', options); + +/** + * Get speech provider + * + * Get a speech provider with masked config values + */ +export const getTranscriptionProvidersByIdQuery = defineQueryOptions((options: Options) => ({ + key: getTranscriptionProvidersByIdQueryKey(options), + query: async (context) => { + const { data } = await getTranscriptionProvidersById({ + ...options, + ...context, + throwOnError: true + }); + return data; + } +})); + +/** + * Import transcription models from provider + * + * Fetch models using the configured transcription provider and import them into the unified models table + */ +export const postTranscriptionProvidersByIdImportModelsMutation = (options?: Partial>): UseMutationOptions, PostTranscriptionProvidersByIdImportModelsError> => ({ + mutation: async (vars) => { + const { data } = await postTranscriptionProvidersByIdImportModels({ + ...options, + ...vars, + throwOnError: true + }); + return data; + } +}); + +export const getTranscriptionProvidersByIdModelsQueryKey = (options: Options) => createQueryKey('getTranscriptionProvidersByIdModels', options); + +/** + * List transcription models by provider + * + * List models of type 'transcription' for a specific transcription provider + */ +export const getTranscriptionProvidersByIdModelsQuery = defineQueryOptions((options: Options) => ({ + key: getTranscriptionProvidersByIdModelsQueryKey(options), + query: async (context) => { + const { data } = await getTranscriptionProvidersByIdModels({ + ...options, + ...context, + throwOnError: true + }); + return data; + } +})); + export const getUsersQueryKey = (options?: Options) => createQueryKey('getUsers', options); /** diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index e1df71d4..bab15d3d 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -1,4 +1,4 @@ // This file is auto-generated by @hey-api/openapi-ts -export { deleteBotsByBotIdAclRulesByRuleId, deleteBotsByBotIdCompactionLogs, deleteBotsByBotIdContainer, deleteBotsByBotIdContainerSkills, deleteBotsByBotIdEmailBindingsById, deleteBotsByBotIdHeartbeatLogs, deleteBotsByBotIdMcpById, deleteBotsByBotIdMcpByIdOauthToken, deleteBotsByBotIdMemory, deleteBotsByBotIdMemoryById, deleteBotsByBotIdMessages, deleteBotsByBotIdScheduleById, deleteBotsByBotIdScheduleLogs, deleteBotsByBotIdSessionsBySessionId, deleteBotsByBotIdSettings, deleteBotsById, deleteBotsByIdChannelByPlatform, deleteBrowserContextsById, deleteEmailProvidersById, deleteEmailProvidersByIdOauthToken, deleteMemoryProvidersById, deleteModelsById, deleteModelsModelByModelId, deleteProvidersById, deleteProvidersByIdOauthToken, deleteSearchProvidersById, getBots, getBotsByBotIdAclChannelIdentities, getBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversations, getBotsByBotIdAclChannelTypesByChannelTypeConversations, getBotsByBotIdAclDefaultEffect, getBotsByBotIdAclRules, getBotsByBotIdCompactionLogs, getBotsByBotIdContainer, getBotsByBotIdContainerFs, getBotsByBotIdContainerFsDownload, getBotsByBotIdContainerFsList, getBotsByBotIdContainerFsRead, getBotsByBotIdContainerSkills, getBotsByBotIdContainerSnapshots, getBotsByBotIdContainerTerminal, getBotsByBotIdContainerTerminalWs, getBotsByBotIdEmailBindings, getBotsByBotIdEmailOutbox, getBotsByBotIdEmailOutboxById, getBotsByBotIdHeartbeatLogs, getBotsByBotIdLocalStream, getBotsByBotIdLocalWs, getBotsByBotIdMcp, getBotsByBotIdMcpById, getBotsByBotIdMcpByIdOauthStatus, getBotsByBotIdMcpExport, getBotsByBotIdMemory, getBotsByBotIdMemoryStatus, getBotsByBotIdMemoryUsage, getBotsByBotIdMessages, getBotsByBotIdSchedule, getBotsByBotIdScheduleById, getBotsByBotIdScheduleByIdLogs, getBotsByBotIdScheduleLogs, getBotsByBotIdSessions, getBotsByBotIdSessionsBySessionId, getBotsByBotIdSessionsBySessionIdStatus, getBotsByBotIdSettings, getBotsByBotIdTokenUsage, getBotsById, getBotsByIdChannelByPlatform, getBotsByIdChecks, getBrowserContexts, getBrowserContextsById, getBrowserContextsCores, getChannels, getChannelsByPlatform, getEmailOauthCallback, getEmailProviders, getEmailProvidersById, getEmailProvidersByIdOauthAuthorize, getEmailProvidersByIdOauthStatus, getEmailProvidersMeta, getMemoryProviders, getMemoryProvidersById, getMemoryProvidersByIdStatus, getMemoryProvidersMeta, getModels, getModelsById, getModelsCount, getModelsModelByModelId, getPing, getProviders, getProvidersById, getProvidersByIdModels, getProvidersByIdOauthAuthorize, getProvidersByIdOauthStatus, getProvidersCount, getProvidersNameByName, getProvidersOauthCallback, getSearchProviders, getSearchProvidersById, getSearchProvidersMeta, getSpeechModels, getSpeechModelsById, getSpeechModelsByIdCapabilities, getSpeechProviders, getSpeechProvidersById, getSpeechProvidersByIdModels, getSpeechProvidersMeta, getSupermarketMcps, getSupermarketMcpsById, getSupermarketSkills, getSupermarketSkillsById, getSupermarketTags, getUsers, getUsersById, getUsersMe, getUsersMeChannelsByPlatform, getUsersMeIdentities, type Options, patchBotsByBotIdSessionsBySessionId, patchBotsByIdChannelByPlatformStatus, postAuthLogin, postAuthRefresh, postBots, postBotsByBotIdAclRules, postBotsByBotIdContainer, postBotsByBotIdContainerDataExport, postBotsByBotIdContainerDataImport, postBotsByBotIdContainerDataRestore, postBotsByBotIdContainerFsDelete, postBotsByBotIdContainerFsMkdir, postBotsByBotIdContainerFsRename, postBotsByBotIdContainerFsUpload, postBotsByBotIdContainerFsWrite, postBotsByBotIdContainerSkills, postBotsByBotIdContainerSkillsActions, postBotsByBotIdContainerSnapshots, postBotsByBotIdContainerSnapshotsRollback, postBotsByBotIdContainerStart, postBotsByBotIdContainerStop, postBotsByBotIdEmailBindings, postBotsByBotIdLocalMessages, postBotsByBotIdMcp, postBotsByBotIdMcpByIdOauthAuthorize, postBotsByBotIdMcpByIdOauthDiscover, postBotsByBotIdMcpByIdOauthExchange, postBotsByBotIdMcpByIdProbe, postBotsByBotIdMcpOpsBatchDelete, postBotsByBotIdMcpStdio, postBotsByBotIdMcpStdioByConnectionId, postBotsByBotIdMemory, postBotsByBotIdMemoryCompact, postBotsByBotIdMemoryRebuild, postBotsByBotIdMemorySearch, postBotsByBotIdSchedule, postBotsByBotIdSessions, postBotsByBotIdSessionsBySessionIdCompact, postBotsByBotIdSettings, postBotsByBotIdSupermarketInstallMcp, postBotsByBotIdSupermarketInstallSkill, postBotsByBotIdTools, postBotsByBotIdTtsSynthesize, postBotsByIdChannelByPlatformSend, postBotsByIdChannelByPlatformSendChat, postBrowserContexts, postEmailMailgunWebhookByConfigId, postEmailProviders, postMemoryProviders, postModels, postModelsByIdTest, postProviders, postProvidersByIdImportModels, postProvidersByIdOauthPoll, postProvidersByIdTest, postSearchProviders, postSpeechModelsByIdTest, postSpeechProvidersByIdImportModels, postUsers, putBotsByBotIdAclDefaultEffect, putBotsByBotIdAclRulesByRuleId, putBotsByBotIdAclRulesReorder, putBotsByBotIdEmailBindingsById, putBotsByBotIdMcpById, putBotsByBotIdMcpImport, putBotsByBotIdScheduleById, putBotsByBotIdSettings, putBotsById, putBotsByIdChannelByPlatform, putBotsByIdOwner, putBrowserContextsById, putEmailProvidersById, putMemoryProvidersById, putModelsById, putModelsModelByModelId, putProvidersById, putSearchProvidersById, putUsersById, putUsersByIdPassword, putUsersMe, putUsersMeChannelsByPlatform, putUsersMePassword } from './sdk.gen'; -export type { AccountsAccount, AccountsCreateAccountRequest, AccountsListAccountsResponse, AccountsResetPasswordRequest, AccountsUpdateAccountRequest, AccountsUpdatePasswordRequest, AccountsUpdateProfileRequest, AclChannelIdentityCandidate, AclChannelIdentityCandidateListResponse, AclCreateRuleRequest, AclDefaultEffectResponse, AclListRulesResponse, AclObservedConversationCandidate, AclObservedConversationCandidateListResponse, AclReorderItem, AclReorderRequest, AclRule, AclSourceScope, AclUpdateRuleRequest, AdaptersCdfPoint, AdaptersCompactResult, AdaptersDeleteResponse, AdaptersHealthStatus, AdaptersMemoryItem, AdaptersMemoryStatusResponse, AdaptersMessage, AdaptersProviderCollectionStatus, AdaptersProviderConfigSchema, AdaptersProviderCreateRequest, AdaptersProviderFieldSchema, AdaptersProviderGetResponse, AdaptersProviderMeta, AdaptersProviderStatusResponse, AdaptersProviderType, AdaptersProviderUpdateRequest, AdaptersRebuildResult, AdaptersSearchResponse, AdaptersTopKBucket, AdaptersUsageResponse, BotsBot, BotsBotCheck, BotsCreateBotRequest, BotsListBotsResponse, BotsListChecksResponse, BotsTransferBotRequest, BotsUpdateBotRequest, BrowsercontextsBrowserContext, BrowsercontextsCreateRequest, BrowsercontextsUpdateRequest, ChannelAction, ChannelAttachment, ChannelAttachmentType, ChannelChannelCapabilities, ChannelChannelConfig, ChannelChannelIdentityBinding, ChannelChannelType, ChannelConfigSchema, ChannelFieldSchema, ChannelFieldType, ChannelMessage, ChannelMessageFormat, ChannelMessagePart, ChannelMessagePartType, ChannelMessageTextStyle, ChannelReplyRef, ChannelSendRequest, ChannelTargetHint, ChannelTargetSpec, ChannelThreadRef, ChannelUpdateChannelStatusRequest, ChannelUpsertChannelIdentityConfigRequest, ChannelUpsertConfigRequest, ClientOptions, CompactionListLogsResponse, CompactionLog, DeleteBotsByBotIdAclRulesByRuleIdData, DeleteBotsByBotIdAclRulesByRuleIdError, DeleteBotsByBotIdAclRulesByRuleIdErrors, DeleteBotsByBotIdAclRulesByRuleIdResponses, DeleteBotsByBotIdCompactionLogsData, DeleteBotsByBotIdCompactionLogsError, DeleteBotsByBotIdCompactionLogsErrors, DeleteBotsByBotIdCompactionLogsResponses, DeleteBotsByBotIdContainerData, DeleteBotsByBotIdContainerError, DeleteBotsByBotIdContainerErrors, DeleteBotsByBotIdContainerResponses, DeleteBotsByBotIdContainerSkillsData, DeleteBotsByBotIdContainerSkillsError, DeleteBotsByBotIdContainerSkillsErrors, DeleteBotsByBotIdContainerSkillsResponse, DeleteBotsByBotIdContainerSkillsResponses, DeleteBotsByBotIdEmailBindingsByIdData, DeleteBotsByBotIdEmailBindingsByIdError, DeleteBotsByBotIdEmailBindingsByIdErrors, DeleteBotsByBotIdEmailBindingsByIdResponses, DeleteBotsByBotIdHeartbeatLogsData, DeleteBotsByBotIdHeartbeatLogsError, DeleteBotsByBotIdHeartbeatLogsErrors, DeleteBotsByBotIdHeartbeatLogsResponses, DeleteBotsByBotIdMcpByIdData, DeleteBotsByBotIdMcpByIdError, DeleteBotsByBotIdMcpByIdErrors, DeleteBotsByBotIdMcpByIdOauthTokenData, DeleteBotsByBotIdMcpByIdOauthTokenError, DeleteBotsByBotIdMcpByIdOauthTokenErrors, DeleteBotsByBotIdMcpByIdOauthTokenResponses, DeleteBotsByBotIdMcpByIdResponses, DeleteBotsByBotIdMemoryByIdData, DeleteBotsByBotIdMemoryByIdError, DeleteBotsByBotIdMemoryByIdErrors, DeleteBotsByBotIdMemoryByIdResponse, DeleteBotsByBotIdMemoryByIdResponses, DeleteBotsByBotIdMemoryData, DeleteBotsByBotIdMemoryError, DeleteBotsByBotIdMemoryErrors, DeleteBotsByBotIdMemoryResponse, DeleteBotsByBotIdMemoryResponses, DeleteBotsByBotIdMessagesData, DeleteBotsByBotIdMessagesError, DeleteBotsByBotIdMessagesErrors, DeleteBotsByBotIdMessagesResponses, DeleteBotsByBotIdScheduleByIdData, DeleteBotsByBotIdScheduleByIdError, DeleteBotsByBotIdScheduleByIdErrors, DeleteBotsByBotIdScheduleByIdResponses, DeleteBotsByBotIdScheduleLogsData, DeleteBotsByBotIdScheduleLogsError, DeleteBotsByBotIdScheduleLogsErrors, DeleteBotsByBotIdScheduleLogsResponses, DeleteBotsByBotIdSessionsBySessionIdData, DeleteBotsByBotIdSessionsBySessionIdError, DeleteBotsByBotIdSessionsBySessionIdErrors, DeleteBotsByBotIdSessionsBySessionIdResponses, DeleteBotsByBotIdSettingsData, DeleteBotsByBotIdSettingsError, DeleteBotsByBotIdSettingsErrors, DeleteBotsByBotIdSettingsResponses, DeleteBotsByIdChannelByPlatformData, DeleteBotsByIdChannelByPlatformError, DeleteBotsByIdChannelByPlatformErrors, DeleteBotsByIdChannelByPlatformResponses, DeleteBotsByIdData, DeleteBotsByIdError, DeleteBotsByIdErrors, DeleteBotsByIdResponse, DeleteBotsByIdResponses, DeleteBrowserContextsByIdData, DeleteBrowserContextsByIdError, DeleteBrowserContextsByIdErrors, DeleteBrowserContextsByIdResponses, DeleteEmailProvidersByIdData, DeleteEmailProvidersByIdError, DeleteEmailProvidersByIdErrors, DeleteEmailProvidersByIdOauthTokenData, DeleteEmailProvidersByIdOauthTokenError, DeleteEmailProvidersByIdOauthTokenErrors, DeleteEmailProvidersByIdOauthTokenResponses, DeleteEmailProvidersByIdResponses, DeleteMemoryProvidersByIdData, DeleteMemoryProvidersByIdError, DeleteMemoryProvidersByIdErrors, DeleteMemoryProvidersByIdResponses, DeleteModelsByIdData, DeleteModelsByIdError, DeleteModelsByIdErrors, DeleteModelsByIdResponses, DeleteModelsModelByModelIdData, DeleteModelsModelByModelIdError, DeleteModelsModelByModelIdErrors, DeleteModelsModelByModelIdResponses, DeleteProvidersByIdData, DeleteProvidersByIdError, DeleteProvidersByIdErrors, DeleteProvidersByIdOauthTokenData, DeleteProvidersByIdOauthTokenError, DeleteProvidersByIdOauthTokenErrors, DeleteProvidersByIdOauthTokenResponses, DeleteProvidersByIdResponses, DeleteSearchProvidersByIdData, DeleteSearchProvidersByIdError, DeleteSearchProvidersByIdErrors, DeleteSearchProvidersByIdResponses, EmailBindingResponse, EmailConfigSchema, EmailCreateBindingRequest, EmailCreateProviderRequest, EmailFieldSchema, EmailOutboxItemResponse, EmailProviderMeta, EmailProviderResponse, EmailUpdateBindingRequest, EmailUpdateProviderRequest, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsData, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsError, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsErrors, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsResponse, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsResponses, GetBotsByBotIdAclChannelIdentitiesData, GetBotsByBotIdAclChannelIdentitiesError, GetBotsByBotIdAclChannelIdentitiesErrors, GetBotsByBotIdAclChannelIdentitiesResponse, GetBotsByBotIdAclChannelIdentitiesResponses, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsData, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsError, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsErrors, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsResponse, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsResponses, GetBotsByBotIdAclDefaultEffectData, GetBotsByBotIdAclDefaultEffectError, GetBotsByBotIdAclDefaultEffectErrors, GetBotsByBotIdAclDefaultEffectResponse, GetBotsByBotIdAclDefaultEffectResponses, GetBotsByBotIdAclRulesData, GetBotsByBotIdAclRulesError, GetBotsByBotIdAclRulesErrors, GetBotsByBotIdAclRulesResponse, GetBotsByBotIdAclRulesResponses, GetBotsByBotIdCompactionLogsData, GetBotsByBotIdCompactionLogsError, GetBotsByBotIdCompactionLogsErrors, GetBotsByBotIdCompactionLogsResponse, GetBotsByBotIdCompactionLogsResponses, GetBotsByBotIdContainerData, GetBotsByBotIdContainerError, GetBotsByBotIdContainerErrors, GetBotsByBotIdContainerFsData, GetBotsByBotIdContainerFsDownloadData, GetBotsByBotIdContainerFsDownloadError, GetBotsByBotIdContainerFsDownloadErrors, GetBotsByBotIdContainerFsDownloadResponses, GetBotsByBotIdContainerFsError, GetBotsByBotIdContainerFsErrors, GetBotsByBotIdContainerFsListData, GetBotsByBotIdContainerFsListError, GetBotsByBotIdContainerFsListErrors, GetBotsByBotIdContainerFsListResponse, GetBotsByBotIdContainerFsListResponses, GetBotsByBotIdContainerFsReadData, GetBotsByBotIdContainerFsReadError, GetBotsByBotIdContainerFsReadErrors, GetBotsByBotIdContainerFsReadResponse, GetBotsByBotIdContainerFsReadResponses, GetBotsByBotIdContainerFsResponse, GetBotsByBotIdContainerFsResponses, GetBotsByBotIdContainerResponse, GetBotsByBotIdContainerResponses, GetBotsByBotIdContainerSkillsData, GetBotsByBotIdContainerSkillsError, GetBotsByBotIdContainerSkillsErrors, GetBotsByBotIdContainerSkillsResponse, GetBotsByBotIdContainerSkillsResponses, GetBotsByBotIdContainerSnapshotsData, GetBotsByBotIdContainerSnapshotsError, GetBotsByBotIdContainerSnapshotsErrors, GetBotsByBotIdContainerSnapshotsResponse, GetBotsByBotIdContainerSnapshotsResponses, GetBotsByBotIdContainerTerminalData, GetBotsByBotIdContainerTerminalError, GetBotsByBotIdContainerTerminalErrors, GetBotsByBotIdContainerTerminalResponse, GetBotsByBotIdContainerTerminalResponses, GetBotsByBotIdContainerTerminalWsData, GetBotsByBotIdContainerTerminalWsError, GetBotsByBotIdContainerTerminalWsErrors, GetBotsByBotIdEmailBindingsData, GetBotsByBotIdEmailBindingsError, GetBotsByBotIdEmailBindingsErrors, GetBotsByBotIdEmailBindingsResponse, GetBotsByBotIdEmailBindingsResponses, GetBotsByBotIdEmailOutboxByIdData, GetBotsByBotIdEmailOutboxByIdError, GetBotsByBotIdEmailOutboxByIdErrors, GetBotsByBotIdEmailOutboxByIdResponse, GetBotsByBotIdEmailOutboxByIdResponses, GetBotsByBotIdEmailOutboxData, GetBotsByBotIdEmailOutboxError, GetBotsByBotIdEmailOutboxErrors, GetBotsByBotIdEmailOutboxResponse, GetBotsByBotIdEmailOutboxResponses, GetBotsByBotIdHeartbeatLogsData, GetBotsByBotIdHeartbeatLogsError, GetBotsByBotIdHeartbeatLogsErrors, GetBotsByBotIdHeartbeatLogsResponse, GetBotsByBotIdHeartbeatLogsResponses, GetBotsByBotIdLocalStreamData, GetBotsByBotIdLocalStreamError, GetBotsByBotIdLocalStreamErrors, GetBotsByBotIdLocalStreamResponse, GetBotsByBotIdLocalStreamResponses, GetBotsByBotIdLocalWsData, GetBotsByBotIdLocalWsError, GetBotsByBotIdLocalWsErrors, GetBotsByBotIdMcpByIdData, GetBotsByBotIdMcpByIdError, GetBotsByBotIdMcpByIdErrors, GetBotsByBotIdMcpByIdOauthStatusData, GetBotsByBotIdMcpByIdOauthStatusError, GetBotsByBotIdMcpByIdOauthStatusErrors, GetBotsByBotIdMcpByIdOauthStatusResponse, GetBotsByBotIdMcpByIdOauthStatusResponses, GetBotsByBotIdMcpByIdResponse, GetBotsByBotIdMcpByIdResponses, GetBotsByBotIdMcpData, GetBotsByBotIdMcpError, GetBotsByBotIdMcpErrors, GetBotsByBotIdMcpExportData, GetBotsByBotIdMcpExportError, GetBotsByBotIdMcpExportErrors, GetBotsByBotIdMcpExportResponse, GetBotsByBotIdMcpExportResponses, GetBotsByBotIdMcpResponse, GetBotsByBotIdMcpResponses, GetBotsByBotIdMemoryData, GetBotsByBotIdMemoryError, GetBotsByBotIdMemoryErrors, GetBotsByBotIdMemoryResponse, GetBotsByBotIdMemoryResponses, GetBotsByBotIdMemoryStatusData, GetBotsByBotIdMemoryStatusError, GetBotsByBotIdMemoryStatusErrors, GetBotsByBotIdMemoryStatusResponse, GetBotsByBotIdMemoryStatusResponses, GetBotsByBotIdMemoryUsageData, GetBotsByBotIdMemoryUsageError, GetBotsByBotIdMemoryUsageErrors, GetBotsByBotIdMemoryUsageResponse, GetBotsByBotIdMemoryUsageResponses, GetBotsByBotIdMessagesData, GetBotsByBotIdMessagesError, GetBotsByBotIdMessagesErrors, GetBotsByBotIdMessagesResponse, GetBotsByBotIdMessagesResponses, GetBotsByBotIdScheduleByIdData, GetBotsByBotIdScheduleByIdError, GetBotsByBotIdScheduleByIdErrors, GetBotsByBotIdScheduleByIdLogsData, GetBotsByBotIdScheduleByIdLogsError, GetBotsByBotIdScheduleByIdLogsErrors, GetBotsByBotIdScheduleByIdLogsResponse, GetBotsByBotIdScheduleByIdLogsResponses, GetBotsByBotIdScheduleByIdResponse, GetBotsByBotIdScheduleByIdResponses, GetBotsByBotIdScheduleData, GetBotsByBotIdScheduleError, GetBotsByBotIdScheduleErrors, GetBotsByBotIdScheduleLogsData, GetBotsByBotIdScheduleLogsError, GetBotsByBotIdScheduleLogsErrors, GetBotsByBotIdScheduleLogsResponse, GetBotsByBotIdScheduleLogsResponses, GetBotsByBotIdScheduleResponse, GetBotsByBotIdScheduleResponses, GetBotsByBotIdSessionsBySessionIdData, GetBotsByBotIdSessionsBySessionIdError, GetBotsByBotIdSessionsBySessionIdErrors, GetBotsByBotIdSessionsBySessionIdResponse, GetBotsByBotIdSessionsBySessionIdResponses, GetBotsByBotIdSessionsBySessionIdStatusData, GetBotsByBotIdSessionsBySessionIdStatusError, GetBotsByBotIdSessionsBySessionIdStatusErrors, GetBotsByBotIdSessionsBySessionIdStatusResponse, GetBotsByBotIdSessionsBySessionIdStatusResponses, GetBotsByBotIdSessionsData, GetBotsByBotIdSessionsError, GetBotsByBotIdSessionsErrors, GetBotsByBotIdSessionsResponse, GetBotsByBotIdSessionsResponses, GetBotsByBotIdSettingsData, GetBotsByBotIdSettingsError, GetBotsByBotIdSettingsErrors, GetBotsByBotIdSettingsResponse, GetBotsByBotIdSettingsResponses, GetBotsByBotIdTokenUsageData, GetBotsByBotIdTokenUsageError, GetBotsByBotIdTokenUsageErrors, GetBotsByBotIdTokenUsageResponse, GetBotsByBotIdTokenUsageResponses, GetBotsByIdChannelByPlatformData, GetBotsByIdChannelByPlatformError, GetBotsByIdChannelByPlatformErrors, GetBotsByIdChannelByPlatformResponse, GetBotsByIdChannelByPlatformResponses, GetBotsByIdChecksData, GetBotsByIdChecksError, GetBotsByIdChecksErrors, GetBotsByIdChecksResponse, GetBotsByIdChecksResponses, GetBotsByIdData, GetBotsByIdError, GetBotsByIdErrors, GetBotsByIdResponse, GetBotsByIdResponses, GetBotsData, GetBotsError, GetBotsErrors, GetBotsResponse, GetBotsResponses, GetBrowserContextsByIdData, GetBrowserContextsByIdError, GetBrowserContextsByIdErrors, GetBrowserContextsByIdResponse, GetBrowserContextsByIdResponses, GetBrowserContextsCoresData, GetBrowserContextsCoresError, GetBrowserContextsCoresErrors, GetBrowserContextsCoresResponse, GetBrowserContextsCoresResponses, GetBrowserContextsData, GetBrowserContextsError, GetBrowserContextsErrors, GetBrowserContextsResponse, GetBrowserContextsResponses, GetChannelsByPlatformData, GetChannelsByPlatformError, GetChannelsByPlatformErrors, GetChannelsByPlatformResponse, GetChannelsByPlatformResponses, GetChannelsData, GetChannelsError, GetChannelsErrors, GetChannelsResponse, GetChannelsResponses, GetEmailOauthCallbackData, GetEmailOauthCallbackError, GetEmailOauthCallbackErrors, GetEmailOauthCallbackResponse, GetEmailOauthCallbackResponses, GetEmailProvidersByIdData, GetEmailProvidersByIdError, GetEmailProvidersByIdErrors, GetEmailProvidersByIdOauthAuthorizeData, GetEmailProvidersByIdOauthAuthorizeError, GetEmailProvidersByIdOauthAuthorizeErrors, GetEmailProvidersByIdOauthAuthorizeResponse, GetEmailProvidersByIdOauthAuthorizeResponses, GetEmailProvidersByIdOauthStatusData, GetEmailProvidersByIdOauthStatusError, GetEmailProvidersByIdOauthStatusErrors, GetEmailProvidersByIdOauthStatusResponse, GetEmailProvidersByIdOauthStatusResponses, GetEmailProvidersByIdResponse, GetEmailProvidersByIdResponses, GetEmailProvidersData, GetEmailProvidersError, GetEmailProvidersErrors, GetEmailProvidersMetaData, GetEmailProvidersMetaResponse, GetEmailProvidersMetaResponses, GetEmailProvidersResponse, GetEmailProvidersResponses, GetMemoryProvidersByIdData, GetMemoryProvidersByIdError, GetMemoryProvidersByIdErrors, GetMemoryProvidersByIdResponse, GetMemoryProvidersByIdResponses, GetMemoryProvidersByIdStatusData, GetMemoryProvidersByIdStatusError, GetMemoryProvidersByIdStatusErrors, GetMemoryProvidersByIdStatusResponse, GetMemoryProvidersByIdStatusResponses, GetMemoryProvidersData, GetMemoryProvidersError, GetMemoryProvidersErrors, GetMemoryProvidersMetaData, GetMemoryProvidersMetaResponse, GetMemoryProvidersMetaResponses, GetMemoryProvidersResponse, GetMemoryProvidersResponses, GetModelsByIdData, GetModelsByIdError, GetModelsByIdErrors, GetModelsByIdResponse, GetModelsByIdResponses, GetModelsCountData, GetModelsCountError, GetModelsCountErrors, GetModelsCountResponse, GetModelsCountResponses, GetModelsData, GetModelsError, GetModelsErrors, GetModelsModelByModelIdData, GetModelsModelByModelIdError, GetModelsModelByModelIdErrors, GetModelsModelByModelIdResponse, GetModelsModelByModelIdResponses, GetModelsResponse, GetModelsResponses, GetPingData, GetPingResponse, GetPingResponses, GetProvidersByIdData, GetProvidersByIdError, GetProvidersByIdErrors, GetProvidersByIdModelsData, GetProvidersByIdModelsError, GetProvidersByIdModelsErrors, GetProvidersByIdModelsResponse, GetProvidersByIdModelsResponses, GetProvidersByIdOauthAuthorizeData, GetProvidersByIdOauthAuthorizeError, GetProvidersByIdOauthAuthorizeErrors, GetProvidersByIdOauthAuthorizeResponse, GetProvidersByIdOauthAuthorizeResponses, GetProvidersByIdOauthStatusData, GetProvidersByIdOauthStatusError, GetProvidersByIdOauthStatusErrors, GetProvidersByIdOauthStatusResponse, GetProvidersByIdOauthStatusResponses, GetProvidersByIdResponse, GetProvidersByIdResponses, GetProvidersCountData, GetProvidersCountError, GetProvidersCountErrors, GetProvidersCountResponse, GetProvidersCountResponses, GetProvidersData, GetProvidersError, GetProvidersErrors, GetProvidersNameByNameData, GetProvidersNameByNameError, GetProvidersNameByNameErrors, GetProvidersNameByNameResponse, GetProvidersNameByNameResponses, GetProvidersOauthCallbackData, GetProvidersOauthCallbackError, GetProvidersOauthCallbackErrors, GetProvidersOauthCallbackResponse, GetProvidersOauthCallbackResponses, GetProvidersResponse, GetProvidersResponses, GetSearchProvidersByIdData, GetSearchProvidersByIdError, GetSearchProvidersByIdErrors, GetSearchProvidersByIdResponse, GetSearchProvidersByIdResponses, GetSearchProvidersData, GetSearchProvidersError, GetSearchProvidersErrors, GetSearchProvidersMetaData, GetSearchProvidersMetaResponse, GetSearchProvidersMetaResponses, GetSearchProvidersResponse, GetSearchProvidersResponses, GetSpeechModelsByIdCapabilitiesData, GetSpeechModelsByIdCapabilitiesError, GetSpeechModelsByIdCapabilitiesErrors, GetSpeechModelsByIdCapabilitiesResponse, GetSpeechModelsByIdCapabilitiesResponses, GetSpeechModelsByIdData, GetSpeechModelsByIdError, GetSpeechModelsByIdErrors, GetSpeechModelsByIdResponse, GetSpeechModelsByIdResponses, GetSpeechModelsData, GetSpeechModelsError, GetSpeechModelsErrors, GetSpeechModelsResponse, GetSpeechModelsResponses, GetSpeechProvidersByIdData, GetSpeechProvidersByIdError, GetSpeechProvidersByIdErrors, GetSpeechProvidersByIdModelsData, GetSpeechProvidersByIdModelsError, GetSpeechProvidersByIdModelsErrors, GetSpeechProvidersByIdModelsResponse, GetSpeechProvidersByIdModelsResponses, GetSpeechProvidersByIdResponse, GetSpeechProvidersByIdResponses, GetSpeechProvidersData, GetSpeechProvidersError, GetSpeechProvidersErrors, GetSpeechProvidersMetaData, GetSpeechProvidersMetaResponse, GetSpeechProvidersMetaResponses, GetSpeechProvidersResponse, GetSpeechProvidersResponses, GetSupermarketMcpsByIdData, GetSupermarketMcpsByIdError, GetSupermarketMcpsByIdErrors, GetSupermarketMcpsByIdResponse, GetSupermarketMcpsByIdResponses, GetSupermarketMcpsData, GetSupermarketMcpsError, GetSupermarketMcpsErrors, GetSupermarketMcpsResponse, GetSupermarketMcpsResponses, GetSupermarketSkillsByIdData, GetSupermarketSkillsByIdError, GetSupermarketSkillsByIdErrors, GetSupermarketSkillsByIdResponse, GetSupermarketSkillsByIdResponses, GetSupermarketSkillsData, GetSupermarketSkillsError, GetSupermarketSkillsErrors, GetSupermarketSkillsResponse, GetSupermarketSkillsResponses, GetSupermarketTagsData, GetSupermarketTagsError, GetSupermarketTagsErrors, GetSupermarketTagsResponse, GetSupermarketTagsResponses, GetUsersByIdData, GetUsersByIdError, GetUsersByIdErrors, GetUsersByIdResponse, GetUsersByIdResponses, GetUsersData, GetUsersError, GetUsersErrors, GetUsersMeChannelsByPlatformData, GetUsersMeChannelsByPlatformError, GetUsersMeChannelsByPlatformErrors, GetUsersMeChannelsByPlatformResponse, GetUsersMeChannelsByPlatformResponses, GetUsersMeData, GetUsersMeError, GetUsersMeErrors, GetUsersMeIdentitiesData, GetUsersMeIdentitiesError, GetUsersMeIdentitiesErrors, GetUsersMeIdentitiesResponse, GetUsersMeIdentitiesResponses, GetUsersMeResponse, GetUsersMeResponses, GetUsersResponse, GetUsersResponses, GithubComMemohaiMemohInternalMcpConnection, HandlersBatchDeleteRequest, HandlersBrowserCoresResponse, HandlersCacheStats, HandlersChannelMeta, HandlersContainerGpuRequest, HandlersContextUsage, HandlersCreateContainerRequest, HandlersCreateContainerResponse, HandlersCreateSessionRequest, HandlersCreateSnapshotRequest, HandlersCreateSnapshotResponse, HandlersDailyTokenUsage, HandlersEmailOAuthStatusResponse, HandlersErrorResponse, HandlersFsDeleteRequest, HandlersFsFileInfo, HandlersFsListResponse, HandlersFsMkdirRequest, HandlersFsOpResponse, HandlersFsReadResponse, HandlersFsRenameRequest, HandlersFsUploadResponse, HandlersFsWriteRequest, HandlersGetContainerResponse, HandlersInstallMcpRequest, HandlersInstallSkillRequest, HandlersListMyIdentitiesResponse, HandlersListSnapshotsResponse, HandlersLocalChannelMessageRequest, HandlersLoginRequest, HandlersLoginResponse, HandlersMcpStdioRequest, HandlersMcpStdioResponse, HandlersMemoryAddPayload, HandlersMemoryCompactPayload, HandlersMemoryDeletePayload, HandlersMemorySearchPayload, HandlersModelTokenUsage, HandlersOauthAuthorizeRequest, HandlersOauthDiscoverRequest, HandlersOauthExchangeRequest, HandlersPingResponse, HandlersProbeResponse, HandlersRefreshResponse, HandlersRollbackRequest, HandlersSessionInfoResponse, HandlersSkillItem, HandlersSkillsActionRequest, HandlersSkillsDeleteRequest, HandlersSkillsOpResponse, HandlersSkillsResponse, HandlersSkillsUpsertRequest, HandlersSnapshotInfo, HandlersSupermarketAuthor, HandlersSupermarketConfigVar, HandlersSupermarketMcpEntry, HandlersSupermarketMcpListResponse, HandlersSupermarketSkillEntry, HandlersSupermarketSkillListResponse, HandlersSupermarketSkillMetadata, HandlersSupermarketTagsResponse, HandlersSynthesizeRequest, HandlersSynthesizeResponse, HandlersTerminalInfoResponse, HandlersTokenUsageResponse, HandlersTriggerCompactResponse, HandlersUpdateSessionRequest, HeartbeatListLogsResponse, HeartbeatLog, IdentitiesChannelIdentity, McpAuthorizeResult, McpDiscoveryResult, McpExportResponse, McpImportRequest, McpListResponse, McpMcpServerEntry, McpOAuthStatus, McpToolDescriptor, McpUpsertRequest, MessageMessage, MessageMessageAsset, ModelsAddRequest, ModelsAddResponse, ModelsCountResponse, ModelsGetResponse, ModelsModelConfig, ModelsModelType, ModelsTestResponse, ModelsTestStatus, ModelsUpdateRequest, PatchBotsByBotIdSessionsBySessionIdData, PatchBotsByBotIdSessionsBySessionIdError, PatchBotsByBotIdSessionsBySessionIdErrors, PatchBotsByBotIdSessionsBySessionIdResponse, PatchBotsByBotIdSessionsBySessionIdResponses, PatchBotsByIdChannelByPlatformStatusData, PatchBotsByIdChannelByPlatformStatusError, PatchBotsByIdChannelByPlatformStatusErrors, PatchBotsByIdChannelByPlatformStatusResponse, PatchBotsByIdChannelByPlatformStatusResponses, PostAuthLoginData, PostAuthLoginError, PostAuthLoginErrors, PostAuthLoginResponse, PostAuthLoginResponses, PostAuthRefreshData, PostAuthRefreshError, PostAuthRefreshErrors, PostAuthRefreshResponse, PostAuthRefreshResponses, PostBotsByBotIdAclRulesData, PostBotsByBotIdAclRulesError, PostBotsByBotIdAclRulesErrors, PostBotsByBotIdAclRulesResponse, PostBotsByBotIdAclRulesResponses, PostBotsByBotIdContainerData, PostBotsByBotIdContainerDataExportData, PostBotsByBotIdContainerDataExportError, PostBotsByBotIdContainerDataExportErrors, PostBotsByBotIdContainerDataExportResponses, PostBotsByBotIdContainerDataImportData, PostBotsByBotIdContainerDataImportError, PostBotsByBotIdContainerDataImportErrors, PostBotsByBotIdContainerDataImportResponse, PostBotsByBotIdContainerDataImportResponses, PostBotsByBotIdContainerDataRestoreData, PostBotsByBotIdContainerDataRestoreError, PostBotsByBotIdContainerDataRestoreErrors, PostBotsByBotIdContainerDataRestoreResponse, PostBotsByBotIdContainerDataRestoreResponses, PostBotsByBotIdContainerError, PostBotsByBotIdContainerErrors, PostBotsByBotIdContainerFsDeleteData, PostBotsByBotIdContainerFsDeleteError, PostBotsByBotIdContainerFsDeleteErrors, PostBotsByBotIdContainerFsDeleteResponse, PostBotsByBotIdContainerFsDeleteResponses, PostBotsByBotIdContainerFsMkdirData, PostBotsByBotIdContainerFsMkdirError, PostBotsByBotIdContainerFsMkdirErrors, PostBotsByBotIdContainerFsMkdirResponse, PostBotsByBotIdContainerFsMkdirResponses, PostBotsByBotIdContainerFsRenameData, PostBotsByBotIdContainerFsRenameError, PostBotsByBotIdContainerFsRenameErrors, PostBotsByBotIdContainerFsRenameResponse, PostBotsByBotIdContainerFsRenameResponses, PostBotsByBotIdContainerFsUploadData, PostBotsByBotIdContainerFsUploadError, PostBotsByBotIdContainerFsUploadErrors, PostBotsByBotIdContainerFsUploadResponse, PostBotsByBotIdContainerFsUploadResponses, PostBotsByBotIdContainerFsWriteData, PostBotsByBotIdContainerFsWriteError, PostBotsByBotIdContainerFsWriteErrors, PostBotsByBotIdContainerFsWriteResponse, PostBotsByBotIdContainerFsWriteResponses, PostBotsByBotIdContainerResponse, PostBotsByBotIdContainerResponses, PostBotsByBotIdContainerSkillsActionsData, PostBotsByBotIdContainerSkillsActionsError, PostBotsByBotIdContainerSkillsActionsErrors, PostBotsByBotIdContainerSkillsActionsResponse, PostBotsByBotIdContainerSkillsActionsResponses, PostBotsByBotIdContainerSkillsData, PostBotsByBotIdContainerSkillsError, PostBotsByBotIdContainerSkillsErrors, PostBotsByBotIdContainerSkillsResponse, PostBotsByBotIdContainerSkillsResponses, PostBotsByBotIdContainerSnapshotsData, PostBotsByBotIdContainerSnapshotsError, PostBotsByBotIdContainerSnapshotsErrors, PostBotsByBotIdContainerSnapshotsResponse, PostBotsByBotIdContainerSnapshotsResponses, PostBotsByBotIdContainerSnapshotsRollbackData, PostBotsByBotIdContainerSnapshotsRollbackError, PostBotsByBotIdContainerSnapshotsRollbackErrors, PostBotsByBotIdContainerSnapshotsRollbackResponse, PostBotsByBotIdContainerSnapshotsRollbackResponses, PostBotsByBotIdContainerStartData, PostBotsByBotIdContainerStartError, PostBotsByBotIdContainerStartErrors, PostBotsByBotIdContainerStartResponse, PostBotsByBotIdContainerStartResponses, PostBotsByBotIdContainerStopData, PostBotsByBotIdContainerStopError, PostBotsByBotIdContainerStopErrors, PostBotsByBotIdContainerStopResponse, PostBotsByBotIdContainerStopResponses, PostBotsByBotIdEmailBindingsData, PostBotsByBotIdEmailBindingsError, PostBotsByBotIdEmailBindingsErrors, PostBotsByBotIdEmailBindingsResponse, PostBotsByBotIdEmailBindingsResponses, PostBotsByBotIdLocalMessagesData, PostBotsByBotIdLocalMessagesError, PostBotsByBotIdLocalMessagesErrors, PostBotsByBotIdLocalMessagesResponse, PostBotsByBotIdLocalMessagesResponses, PostBotsByBotIdMcpByIdOauthAuthorizeData, PostBotsByBotIdMcpByIdOauthAuthorizeError, PostBotsByBotIdMcpByIdOauthAuthorizeErrors, PostBotsByBotIdMcpByIdOauthAuthorizeResponse, PostBotsByBotIdMcpByIdOauthAuthorizeResponses, PostBotsByBotIdMcpByIdOauthDiscoverData, PostBotsByBotIdMcpByIdOauthDiscoverError, PostBotsByBotIdMcpByIdOauthDiscoverErrors, PostBotsByBotIdMcpByIdOauthDiscoverResponse, PostBotsByBotIdMcpByIdOauthDiscoverResponses, PostBotsByBotIdMcpByIdOauthExchangeData, PostBotsByBotIdMcpByIdOauthExchangeError, PostBotsByBotIdMcpByIdOauthExchangeErrors, PostBotsByBotIdMcpByIdOauthExchangeResponse, PostBotsByBotIdMcpByIdOauthExchangeResponses, PostBotsByBotIdMcpByIdProbeData, PostBotsByBotIdMcpByIdProbeError, PostBotsByBotIdMcpByIdProbeErrors, PostBotsByBotIdMcpByIdProbeResponse, PostBotsByBotIdMcpByIdProbeResponses, PostBotsByBotIdMcpData, PostBotsByBotIdMcpError, PostBotsByBotIdMcpErrors, PostBotsByBotIdMcpOpsBatchDeleteData, PostBotsByBotIdMcpOpsBatchDeleteError, PostBotsByBotIdMcpOpsBatchDeleteErrors, PostBotsByBotIdMcpOpsBatchDeleteResponses, PostBotsByBotIdMcpResponse, PostBotsByBotIdMcpResponses, PostBotsByBotIdMcpStdioByConnectionIdData, PostBotsByBotIdMcpStdioByConnectionIdError, PostBotsByBotIdMcpStdioByConnectionIdErrors, PostBotsByBotIdMcpStdioByConnectionIdResponse, PostBotsByBotIdMcpStdioByConnectionIdResponses, PostBotsByBotIdMcpStdioData, PostBotsByBotIdMcpStdioError, PostBotsByBotIdMcpStdioErrors, PostBotsByBotIdMcpStdioResponse, PostBotsByBotIdMcpStdioResponses, PostBotsByBotIdMemoryCompactData, PostBotsByBotIdMemoryCompactError, PostBotsByBotIdMemoryCompactErrors, PostBotsByBotIdMemoryCompactResponse, PostBotsByBotIdMemoryCompactResponses, PostBotsByBotIdMemoryData, PostBotsByBotIdMemoryError, PostBotsByBotIdMemoryErrors, PostBotsByBotIdMemoryRebuildData, PostBotsByBotIdMemoryRebuildError, PostBotsByBotIdMemoryRebuildErrors, PostBotsByBotIdMemoryRebuildResponse, PostBotsByBotIdMemoryRebuildResponses, PostBotsByBotIdMemoryResponse, PostBotsByBotIdMemoryResponses, PostBotsByBotIdMemorySearchData, PostBotsByBotIdMemorySearchError, PostBotsByBotIdMemorySearchErrors, PostBotsByBotIdMemorySearchResponse, PostBotsByBotIdMemorySearchResponses, PostBotsByBotIdScheduleData, PostBotsByBotIdScheduleError, PostBotsByBotIdScheduleErrors, PostBotsByBotIdScheduleResponse, PostBotsByBotIdScheduleResponses, PostBotsByBotIdSessionsBySessionIdCompactData, PostBotsByBotIdSessionsBySessionIdCompactError, PostBotsByBotIdSessionsBySessionIdCompactErrors, PostBotsByBotIdSessionsBySessionIdCompactResponse, PostBotsByBotIdSessionsBySessionIdCompactResponses, PostBotsByBotIdSessionsData, PostBotsByBotIdSessionsError, PostBotsByBotIdSessionsErrors, PostBotsByBotIdSessionsResponse, PostBotsByBotIdSessionsResponses, PostBotsByBotIdSettingsData, PostBotsByBotIdSettingsError, PostBotsByBotIdSettingsErrors, PostBotsByBotIdSettingsResponse, PostBotsByBotIdSettingsResponses, PostBotsByBotIdSupermarketInstallMcpData, PostBotsByBotIdSupermarketInstallMcpError, PostBotsByBotIdSupermarketInstallMcpErrors, PostBotsByBotIdSupermarketInstallMcpResponse, PostBotsByBotIdSupermarketInstallMcpResponses, PostBotsByBotIdSupermarketInstallSkillData, PostBotsByBotIdSupermarketInstallSkillError, PostBotsByBotIdSupermarketInstallSkillErrors, PostBotsByBotIdSupermarketInstallSkillResponse, PostBotsByBotIdSupermarketInstallSkillResponses, PostBotsByBotIdToolsData, PostBotsByBotIdToolsError, PostBotsByBotIdToolsErrors, PostBotsByBotIdToolsResponse, PostBotsByBotIdToolsResponses, PostBotsByBotIdTtsSynthesizeData, PostBotsByBotIdTtsSynthesizeError, PostBotsByBotIdTtsSynthesizeErrors, PostBotsByBotIdTtsSynthesizeResponse, PostBotsByBotIdTtsSynthesizeResponses, PostBotsByIdChannelByPlatformSendChatData, PostBotsByIdChannelByPlatformSendChatError, PostBotsByIdChannelByPlatformSendChatErrors, PostBotsByIdChannelByPlatformSendChatResponse, PostBotsByIdChannelByPlatformSendChatResponses, PostBotsByIdChannelByPlatformSendData, PostBotsByIdChannelByPlatformSendError, PostBotsByIdChannelByPlatformSendErrors, PostBotsByIdChannelByPlatformSendResponse, PostBotsByIdChannelByPlatformSendResponses, PostBotsData, PostBotsError, PostBotsErrors, PostBotsResponse, PostBotsResponses, PostBrowserContextsData, PostBrowserContextsError, PostBrowserContextsErrors, PostBrowserContextsResponse, PostBrowserContextsResponses, PostEmailMailgunWebhookByConfigIdData, PostEmailMailgunWebhookByConfigIdError, PostEmailMailgunWebhookByConfigIdErrors, PostEmailMailgunWebhookByConfigIdResponse, PostEmailMailgunWebhookByConfigIdResponses, PostEmailProvidersData, PostEmailProvidersError, PostEmailProvidersErrors, PostEmailProvidersResponse, PostEmailProvidersResponses, PostMemoryProvidersData, PostMemoryProvidersError, PostMemoryProvidersErrors, PostMemoryProvidersResponse, PostMemoryProvidersResponses, PostModelsByIdTestData, PostModelsByIdTestError, PostModelsByIdTestErrors, PostModelsByIdTestResponse, PostModelsByIdTestResponses, PostModelsData, PostModelsError, PostModelsErrors, PostModelsResponse, PostModelsResponses, PostProvidersByIdImportModelsData, PostProvidersByIdImportModelsError, PostProvidersByIdImportModelsErrors, PostProvidersByIdImportModelsResponse, PostProvidersByIdImportModelsResponses, PostProvidersByIdOauthPollData, PostProvidersByIdOauthPollError, PostProvidersByIdOauthPollErrors, PostProvidersByIdOauthPollResponse, PostProvidersByIdOauthPollResponses, PostProvidersByIdTestData, PostProvidersByIdTestError, PostProvidersByIdTestErrors, PostProvidersByIdTestResponse, PostProvidersByIdTestResponses, PostProvidersData, PostProvidersError, PostProvidersErrors, PostProvidersResponse, PostProvidersResponses, PostSearchProvidersData, PostSearchProvidersError, PostSearchProvidersErrors, PostSearchProvidersResponse, PostSearchProvidersResponses, PostSpeechModelsByIdTestData, PostSpeechModelsByIdTestError, PostSpeechModelsByIdTestErrors, PostSpeechModelsByIdTestResponses, PostSpeechProvidersByIdImportModelsData, PostSpeechProvidersByIdImportModelsError, PostSpeechProvidersByIdImportModelsErrors, PostSpeechProvidersByIdImportModelsResponse, PostSpeechProvidersByIdImportModelsResponses, PostUsersData, PostUsersError, PostUsersErrors, PostUsersResponse, PostUsersResponses, ProvidersCountResponse, ProvidersCreateRequest, ProvidersGetResponse, ProvidersImportModelsResponse, ProvidersOAuthAccount, ProvidersOAuthAuthorizeResponse, ProvidersOAuthDeviceStatus, ProvidersOAuthStatus, ProvidersTestResponse, ProvidersUpdateRequest, PutBotsByBotIdAclDefaultEffectData, PutBotsByBotIdAclDefaultEffectError, PutBotsByBotIdAclDefaultEffectErrors, PutBotsByBotIdAclDefaultEffectResponses, PutBotsByBotIdAclRulesByRuleIdData, PutBotsByBotIdAclRulesByRuleIdError, PutBotsByBotIdAclRulesByRuleIdErrors, PutBotsByBotIdAclRulesByRuleIdResponse, PutBotsByBotIdAclRulesByRuleIdResponses, PutBotsByBotIdAclRulesReorderData, PutBotsByBotIdAclRulesReorderError, PutBotsByBotIdAclRulesReorderErrors, PutBotsByBotIdAclRulesReorderResponses, PutBotsByBotIdEmailBindingsByIdData, PutBotsByBotIdEmailBindingsByIdError, PutBotsByBotIdEmailBindingsByIdErrors, PutBotsByBotIdEmailBindingsByIdResponse, PutBotsByBotIdEmailBindingsByIdResponses, PutBotsByBotIdMcpByIdData, PutBotsByBotIdMcpByIdError, PutBotsByBotIdMcpByIdErrors, PutBotsByBotIdMcpByIdResponse, PutBotsByBotIdMcpByIdResponses, PutBotsByBotIdMcpImportData, PutBotsByBotIdMcpImportError, PutBotsByBotIdMcpImportErrors, PutBotsByBotIdMcpImportResponse, PutBotsByBotIdMcpImportResponses, PutBotsByBotIdScheduleByIdData, PutBotsByBotIdScheduleByIdError, PutBotsByBotIdScheduleByIdErrors, PutBotsByBotIdScheduleByIdResponse, PutBotsByBotIdScheduleByIdResponses, PutBotsByBotIdSettingsData, PutBotsByBotIdSettingsError, PutBotsByBotIdSettingsErrors, PutBotsByBotIdSettingsResponse, PutBotsByBotIdSettingsResponses, PutBotsByIdChannelByPlatformData, PutBotsByIdChannelByPlatformError, PutBotsByIdChannelByPlatformErrors, PutBotsByIdChannelByPlatformResponse, PutBotsByIdChannelByPlatformResponses, PutBotsByIdData, PutBotsByIdError, PutBotsByIdErrors, PutBotsByIdOwnerData, PutBotsByIdOwnerError, PutBotsByIdOwnerErrors, PutBotsByIdOwnerResponse, PutBotsByIdOwnerResponses, PutBotsByIdResponse, PutBotsByIdResponses, PutBrowserContextsByIdData, PutBrowserContextsByIdError, PutBrowserContextsByIdErrors, PutBrowserContextsByIdResponse, PutBrowserContextsByIdResponses, PutEmailProvidersByIdData, PutEmailProvidersByIdError, PutEmailProvidersByIdErrors, PutEmailProvidersByIdResponse, PutEmailProvidersByIdResponses, PutMemoryProvidersByIdData, PutMemoryProvidersByIdError, PutMemoryProvidersByIdErrors, PutMemoryProvidersByIdResponse, PutMemoryProvidersByIdResponses, PutModelsByIdData, PutModelsByIdError, PutModelsByIdErrors, PutModelsByIdResponse, PutModelsByIdResponses, PutModelsModelByModelIdData, PutModelsModelByModelIdError, PutModelsModelByModelIdErrors, PutModelsModelByModelIdResponse, PutModelsModelByModelIdResponses, PutProvidersByIdData, PutProvidersByIdError, PutProvidersByIdErrors, PutProvidersByIdResponse, PutProvidersByIdResponses, PutSearchProvidersByIdData, PutSearchProvidersByIdError, PutSearchProvidersByIdErrors, PutSearchProvidersByIdResponse, PutSearchProvidersByIdResponses, PutUsersByIdData, PutUsersByIdError, PutUsersByIdErrors, PutUsersByIdPasswordData, PutUsersByIdPasswordError, PutUsersByIdPasswordErrors, PutUsersByIdPasswordResponses, PutUsersByIdResponse, PutUsersByIdResponses, PutUsersMeChannelsByPlatformData, PutUsersMeChannelsByPlatformError, PutUsersMeChannelsByPlatformErrors, PutUsersMeChannelsByPlatformResponse, PutUsersMeChannelsByPlatformResponses, PutUsersMeData, PutUsersMeError, PutUsersMeErrors, PutUsersMePasswordData, PutUsersMePasswordError, PutUsersMePasswordErrors, PutUsersMePasswordResponses, PutUsersMeResponse, PutUsersMeResponses, ScheduleCreateRequest, ScheduleListLogsResponse, ScheduleListResponse, ScheduleLog, ScheduleNullableInt, ScheduleSchedule, ScheduleUpdateRequest, SearchprovidersCreateRequest, SearchprovidersGetResponse, SearchprovidersProviderConfigSchema, SearchprovidersProviderFieldSchema, SearchprovidersProviderMeta, SearchprovidersProviderName, SearchprovidersUpdateRequest, SessionSession, SettingsSettings, SettingsUpsertRequest, TtsConfigSchema, TtsFieldSchema, TtsImportModelsResponse, TtsModelCapabilities, TtsModelInfo, TtsParamConstraint, TtsProviderMetaResponse, TtsSpeechModelResponse, TtsSpeechProviderResponse, TtsTestSynthesizeRequest, TtsVoiceInfo } from './types.gen'; +export { deleteBotsByBotIdAclRulesByRuleId, deleteBotsByBotIdCompactionLogs, deleteBotsByBotIdContainer, deleteBotsByBotIdContainerSkills, deleteBotsByBotIdEmailBindingsById, deleteBotsByBotIdHeartbeatLogs, deleteBotsByBotIdMcpById, deleteBotsByBotIdMcpByIdOauthToken, deleteBotsByBotIdMemory, deleteBotsByBotIdMemoryById, deleteBotsByBotIdMessages, deleteBotsByBotIdScheduleById, deleteBotsByBotIdScheduleLogs, deleteBotsByBotIdSessionsBySessionId, deleteBotsByBotIdSettings, deleteBotsById, deleteBotsByIdChannelByPlatform, deleteBrowserContextsById, deleteEmailProvidersById, deleteEmailProvidersByIdOauthToken, deleteMemoryProvidersById, deleteModelsById, deleteModelsModelByModelId, deleteProvidersById, deleteProvidersByIdOauthToken, deleteSearchProvidersById, getBots, getBotsByBotIdAclChannelIdentities, getBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversations, getBotsByBotIdAclChannelTypesByChannelTypeConversations, getBotsByBotIdAclDefaultEffect, getBotsByBotIdAclRules, getBotsByBotIdCompactionLogs, getBotsByBotIdContainer, getBotsByBotIdContainerFs, getBotsByBotIdContainerFsDownload, getBotsByBotIdContainerFsList, getBotsByBotIdContainerFsRead, getBotsByBotIdContainerSkills, getBotsByBotIdContainerSnapshots, getBotsByBotIdContainerTerminal, getBotsByBotIdContainerTerminalWs, getBotsByBotIdEmailBindings, getBotsByBotIdEmailOutbox, getBotsByBotIdEmailOutboxById, getBotsByBotIdHeartbeatLogs, getBotsByBotIdLocalStream, getBotsByBotIdLocalWs, getBotsByBotIdMcp, getBotsByBotIdMcpById, getBotsByBotIdMcpByIdOauthStatus, getBotsByBotIdMcpExport, getBotsByBotIdMemory, getBotsByBotIdMemoryStatus, getBotsByBotIdMemoryUsage, getBotsByBotIdMessages, getBotsByBotIdSchedule, getBotsByBotIdScheduleById, getBotsByBotIdScheduleByIdLogs, getBotsByBotIdScheduleLogs, getBotsByBotIdSessions, getBotsByBotIdSessionsBySessionId, getBotsByBotIdSessionsBySessionIdStatus, getBotsByBotIdSettings, getBotsByBotIdTokenUsage, getBotsById, getBotsByIdChannelByPlatform, getBotsByIdChecks, getBrowserContexts, getBrowserContextsById, getBrowserContextsCores, getChannels, getChannelsByPlatform, getEmailOauthCallback, getEmailProviders, getEmailProvidersById, getEmailProvidersByIdOauthAuthorize, getEmailProvidersByIdOauthStatus, getEmailProvidersMeta, getMemoryProviders, getMemoryProvidersById, getMemoryProvidersByIdStatus, getMemoryProvidersMeta, getModels, getModelsById, getModelsCount, getModelsModelByModelId, getPing, getProviders, getProvidersById, getProvidersByIdModels, getProvidersByIdOauthAuthorize, getProvidersByIdOauthStatus, getProvidersCount, getProvidersNameByName, getProvidersOauthCallback, getSearchProviders, getSearchProvidersById, getSearchProvidersMeta, getSpeechModels, getSpeechModelsById, getSpeechModelsByIdCapabilities, getSpeechProviders, getSpeechProvidersById, getSpeechProvidersByIdModels, getSpeechProvidersMeta, getSupermarketMcps, getSupermarketMcpsById, getSupermarketSkills, getSupermarketSkillsById, getSupermarketTags, getTranscriptionModels, getTranscriptionModelsById, getTranscriptionModelsByIdCapabilities, getTranscriptionProviders, getTranscriptionProvidersById, getTranscriptionProvidersByIdModels, getTranscriptionProvidersMeta, getUsers, getUsersById, getUsersMe, getUsersMeChannelsByPlatform, getUsersMeIdentities, type Options, patchBotsByBotIdSessionsBySessionId, patchBotsByIdChannelByPlatformStatus, postAuthLogin, postAuthRefresh, postBots, postBotsByBotIdAclRules, postBotsByBotIdContainer, postBotsByBotIdContainerDataExport, postBotsByBotIdContainerDataImport, postBotsByBotIdContainerDataRestore, postBotsByBotIdContainerFsDelete, postBotsByBotIdContainerFsMkdir, postBotsByBotIdContainerFsRename, postBotsByBotIdContainerFsUpload, postBotsByBotIdContainerFsWrite, postBotsByBotIdContainerSkills, postBotsByBotIdContainerSkillsActions, postBotsByBotIdContainerSnapshots, postBotsByBotIdContainerSnapshotsRollback, postBotsByBotIdContainerStart, postBotsByBotIdContainerStop, postBotsByBotIdEmailBindings, postBotsByBotIdLocalMessages, postBotsByBotIdMcp, postBotsByBotIdMcpByIdOauthAuthorize, postBotsByBotIdMcpByIdOauthDiscover, postBotsByBotIdMcpByIdOauthExchange, postBotsByBotIdMcpByIdProbe, postBotsByBotIdMcpOpsBatchDelete, postBotsByBotIdMcpStdio, postBotsByBotIdMcpStdioByConnectionId, postBotsByBotIdMemory, postBotsByBotIdMemoryCompact, postBotsByBotIdMemoryRebuild, postBotsByBotIdMemorySearch, postBotsByBotIdSchedule, postBotsByBotIdSessions, postBotsByBotIdSessionsBySessionIdCompact, postBotsByBotIdSettings, postBotsByBotIdSupermarketInstallMcp, postBotsByBotIdSupermarketInstallSkill, postBotsByBotIdTools, postBotsByBotIdTtsSynthesize, postBotsByIdChannelByPlatformSend, postBotsByIdChannelByPlatformSendChat, postBrowserContexts, postEmailMailgunWebhookByConfigId, postEmailProviders, postMemoryProviders, postModels, postModelsByIdTest, postProviders, postProvidersByIdImportModels, postProvidersByIdOauthPoll, postProvidersByIdTest, postSearchProviders, postSpeechModelsByIdTest, postSpeechProvidersByIdImportModels, postTranscriptionModelsByIdTest, postTranscriptionProvidersByIdImportModels, postUsers, putBotsByBotIdAclDefaultEffect, putBotsByBotIdAclRulesByRuleId, putBotsByBotIdAclRulesReorder, putBotsByBotIdEmailBindingsById, putBotsByBotIdMcpById, putBotsByBotIdMcpImport, putBotsByBotIdScheduleById, putBotsByBotIdSettings, putBotsById, putBotsByIdChannelByPlatform, putBotsByIdOwner, putBrowserContextsById, putEmailProvidersById, putMemoryProvidersById, putModelsById, putModelsModelByModelId, putProvidersById, putSearchProvidersById, putSpeechModelsById, putTranscriptionModelsById, putUsersById, putUsersByIdPassword, putUsersMe, putUsersMeChannelsByPlatform, putUsersMePassword } from './sdk.gen'; +export type { AccountsAccount, AccountsCreateAccountRequest, AccountsListAccountsResponse, AccountsResetPasswordRequest, AccountsUpdateAccountRequest, AccountsUpdatePasswordRequest, AccountsUpdateProfileRequest, AclChannelIdentityCandidate, AclChannelIdentityCandidateListResponse, AclCreateRuleRequest, AclDefaultEffectResponse, AclListRulesResponse, AclObservedConversationCandidate, AclObservedConversationCandidateListResponse, AclReorderItem, AclReorderRequest, AclRule, AclSourceScope, AclUpdateRuleRequest, AdaptersCdfPoint, AdaptersCompactResult, AdaptersDeleteResponse, AdaptersHealthStatus, AdaptersMemoryItem, AdaptersMemoryStatusResponse, AdaptersMessage, AdaptersProviderCollectionStatus, AdaptersProviderConfigSchema, AdaptersProviderCreateRequest, AdaptersProviderFieldSchema, AdaptersProviderGetResponse, AdaptersProviderMeta, AdaptersProviderStatusResponse, AdaptersProviderType, AdaptersProviderUpdateRequest, AdaptersRebuildResult, AdaptersSearchResponse, AdaptersTopKBucket, AdaptersUsageResponse, AudioConfigSchema, AudioFieldSchema, AudioImportModelsResponse, AudioModelCapabilities, AudioModelInfo, AudioParamConstraint, AudioProviderMetaResponse, AudioSpeechModelResponse, AudioSpeechProviderResponse, AudioTestSynthesizeRequest, AudioTestTranscriptionResponse, AudioTranscriptionModelResponse, AudioTranscriptionWord, AudioUpdateSpeechModelRequest, AudioVoiceInfo, BotsBot, BotsBotCheck, BotsCreateBotRequest, BotsListBotsResponse, BotsListChecksResponse, BotsTransferBotRequest, BotsUpdateBotRequest, BrowsercontextsBrowserContext, BrowsercontextsCreateRequest, BrowsercontextsUpdateRequest, ChannelAction, ChannelAttachment, ChannelAttachmentType, ChannelChannelCapabilities, ChannelChannelConfig, ChannelChannelIdentityBinding, ChannelChannelType, ChannelConfigSchema, ChannelFieldSchema, ChannelFieldType, ChannelMessage, ChannelMessageFormat, ChannelMessagePart, ChannelMessagePartType, ChannelMessageTextStyle, ChannelReplyRef, ChannelSendRequest, ChannelTargetHint, ChannelTargetSpec, ChannelThreadRef, ChannelUpdateChannelStatusRequest, ChannelUpsertChannelIdentityConfigRequest, ChannelUpsertConfigRequest, ClientOptions, CompactionListLogsResponse, CompactionLog, DeleteBotsByBotIdAclRulesByRuleIdData, DeleteBotsByBotIdAclRulesByRuleIdError, DeleteBotsByBotIdAclRulesByRuleIdErrors, DeleteBotsByBotIdAclRulesByRuleIdResponses, DeleteBotsByBotIdCompactionLogsData, DeleteBotsByBotIdCompactionLogsError, DeleteBotsByBotIdCompactionLogsErrors, DeleteBotsByBotIdCompactionLogsResponses, DeleteBotsByBotIdContainerData, DeleteBotsByBotIdContainerError, DeleteBotsByBotIdContainerErrors, DeleteBotsByBotIdContainerResponses, DeleteBotsByBotIdContainerSkillsData, DeleteBotsByBotIdContainerSkillsError, DeleteBotsByBotIdContainerSkillsErrors, DeleteBotsByBotIdContainerSkillsResponse, DeleteBotsByBotIdContainerSkillsResponses, DeleteBotsByBotIdEmailBindingsByIdData, DeleteBotsByBotIdEmailBindingsByIdError, DeleteBotsByBotIdEmailBindingsByIdErrors, DeleteBotsByBotIdEmailBindingsByIdResponses, DeleteBotsByBotIdHeartbeatLogsData, DeleteBotsByBotIdHeartbeatLogsError, DeleteBotsByBotIdHeartbeatLogsErrors, DeleteBotsByBotIdHeartbeatLogsResponses, DeleteBotsByBotIdMcpByIdData, DeleteBotsByBotIdMcpByIdError, DeleteBotsByBotIdMcpByIdErrors, DeleteBotsByBotIdMcpByIdOauthTokenData, DeleteBotsByBotIdMcpByIdOauthTokenError, DeleteBotsByBotIdMcpByIdOauthTokenErrors, DeleteBotsByBotIdMcpByIdOauthTokenResponses, DeleteBotsByBotIdMcpByIdResponses, DeleteBotsByBotIdMemoryByIdData, DeleteBotsByBotIdMemoryByIdError, DeleteBotsByBotIdMemoryByIdErrors, DeleteBotsByBotIdMemoryByIdResponse, DeleteBotsByBotIdMemoryByIdResponses, DeleteBotsByBotIdMemoryData, DeleteBotsByBotIdMemoryError, DeleteBotsByBotIdMemoryErrors, DeleteBotsByBotIdMemoryResponse, DeleteBotsByBotIdMemoryResponses, DeleteBotsByBotIdMessagesData, DeleteBotsByBotIdMessagesError, DeleteBotsByBotIdMessagesErrors, DeleteBotsByBotIdMessagesResponses, DeleteBotsByBotIdScheduleByIdData, DeleteBotsByBotIdScheduleByIdError, DeleteBotsByBotIdScheduleByIdErrors, DeleteBotsByBotIdScheduleByIdResponses, DeleteBotsByBotIdScheduleLogsData, DeleteBotsByBotIdScheduleLogsError, DeleteBotsByBotIdScheduleLogsErrors, DeleteBotsByBotIdScheduleLogsResponses, DeleteBotsByBotIdSessionsBySessionIdData, DeleteBotsByBotIdSessionsBySessionIdError, DeleteBotsByBotIdSessionsBySessionIdErrors, DeleteBotsByBotIdSessionsBySessionIdResponses, DeleteBotsByBotIdSettingsData, DeleteBotsByBotIdSettingsError, DeleteBotsByBotIdSettingsErrors, DeleteBotsByBotIdSettingsResponses, DeleteBotsByIdChannelByPlatformData, DeleteBotsByIdChannelByPlatformError, DeleteBotsByIdChannelByPlatformErrors, DeleteBotsByIdChannelByPlatformResponses, DeleteBotsByIdData, DeleteBotsByIdError, DeleteBotsByIdErrors, DeleteBotsByIdResponse, DeleteBotsByIdResponses, DeleteBrowserContextsByIdData, DeleteBrowserContextsByIdError, DeleteBrowserContextsByIdErrors, DeleteBrowserContextsByIdResponses, DeleteEmailProvidersByIdData, DeleteEmailProvidersByIdError, DeleteEmailProvidersByIdErrors, DeleteEmailProvidersByIdOauthTokenData, DeleteEmailProvidersByIdOauthTokenError, DeleteEmailProvidersByIdOauthTokenErrors, DeleteEmailProvidersByIdOauthTokenResponses, DeleteEmailProvidersByIdResponses, DeleteMemoryProvidersByIdData, DeleteMemoryProvidersByIdError, DeleteMemoryProvidersByIdErrors, DeleteMemoryProvidersByIdResponses, DeleteModelsByIdData, DeleteModelsByIdError, DeleteModelsByIdErrors, DeleteModelsByIdResponses, DeleteModelsModelByModelIdData, DeleteModelsModelByModelIdError, DeleteModelsModelByModelIdErrors, DeleteModelsModelByModelIdResponses, DeleteProvidersByIdData, DeleteProvidersByIdError, DeleteProvidersByIdErrors, DeleteProvidersByIdOauthTokenData, DeleteProvidersByIdOauthTokenError, DeleteProvidersByIdOauthTokenErrors, DeleteProvidersByIdOauthTokenResponses, DeleteProvidersByIdResponses, DeleteSearchProvidersByIdData, DeleteSearchProvidersByIdError, DeleteSearchProvidersByIdErrors, DeleteSearchProvidersByIdResponses, EmailBindingResponse, EmailConfigSchema, EmailCreateBindingRequest, EmailCreateProviderRequest, EmailFieldSchema, EmailOutboxItemResponse, EmailProviderMeta, EmailProviderResponse, EmailUpdateBindingRequest, EmailUpdateProviderRequest, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsData, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsError, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsErrors, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsResponse, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsResponses, GetBotsByBotIdAclChannelIdentitiesData, GetBotsByBotIdAclChannelIdentitiesError, GetBotsByBotIdAclChannelIdentitiesErrors, GetBotsByBotIdAclChannelIdentitiesResponse, GetBotsByBotIdAclChannelIdentitiesResponses, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsData, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsError, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsErrors, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsResponse, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsResponses, GetBotsByBotIdAclDefaultEffectData, GetBotsByBotIdAclDefaultEffectError, GetBotsByBotIdAclDefaultEffectErrors, GetBotsByBotIdAclDefaultEffectResponse, GetBotsByBotIdAclDefaultEffectResponses, GetBotsByBotIdAclRulesData, GetBotsByBotIdAclRulesError, GetBotsByBotIdAclRulesErrors, GetBotsByBotIdAclRulesResponse, GetBotsByBotIdAclRulesResponses, GetBotsByBotIdCompactionLogsData, GetBotsByBotIdCompactionLogsError, GetBotsByBotIdCompactionLogsErrors, GetBotsByBotIdCompactionLogsResponse, GetBotsByBotIdCompactionLogsResponses, GetBotsByBotIdContainerData, GetBotsByBotIdContainerError, GetBotsByBotIdContainerErrors, GetBotsByBotIdContainerFsData, GetBotsByBotIdContainerFsDownloadData, GetBotsByBotIdContainerFsDownloadError, GetBotsByBotIdContainerFsDownloadErrors, GetBotsByBotIdContainerFsDownloadResponses, GetBotsByBotIdContainerFsError, GetBotsByBotIdContainerFsErrors, GetBotsByBotIdContainerFsListData, GetBotsByBotIdContainerFsListError, GetBotsByBotIdContainerFsListErrors, GetBotsByBotIdContainerFsListResponse, GetBotsByBotIdContainerFsListResponses, GetBotsByBotIdContainerFsReadData, GetBotsByBotIdContainerFsReadError, GetBotsByBotIdContainerFsReadErrors, GetBotsByBotIdContainerFsReadResponse, GetBotsByBotIdContainerFsReadResponses, GetBotsByBotIdContainerFsResponse, GetBotsByBotIdContainerFsResponses, GetBotsByBotIdContainerResponse, GetBotsByBotIdContainerResponses, GetBotsByBotIdContainerSkillsData, GetBotsByBotIdContainerSkillsError, GetBotsByBotIdContainerSkillsErrors, GetBotsByBotIdContainerSkillsResponse, GetBotsByBotIdContainerSkillsResponses, GetBotsByBotIdContainerSnapshotsData, GetBotsByBotIdContainerSnapshotsError, GetBotsByBotIdContainerSnapshotsErrors, GetBotsByBotIdContainerSnapshotsResponse, GetBotsByBotIdContainerSnapshotsResponses, GetBotsByBotIdContainerTerminalData, GetBotsByBotIdContainerTerminalError, GetBotsByBotIdContainerTerminalErrors, GetBotsByBotIdContainerTerminalResponse, GetBotsByBotIdContainerTerminalResponses, GetBotsByBotIdContainerTerminalWsData, GetBotsByBotIdContainerTerminalWsError, GetBotsByBotIdContainerTerminalWsErrors, GetBotsByBotIdEmailBindingsData, GetBotsByBotIdEmailBindingsError, GetBotsByBotIdEmailBindingsErrors, GetBotsByBotIdEmailBindingsResponse, GetBotsByBotIdEmailBindingsResponses, GetBotsByBotIdEmailOutboxByIdData, GetBotsByBotIdEmailOutboxByIdError, GetBotsByBotIdEmailOutboxByIdErrors, GetBotsByBotIdEmailOutboxByIdResponse, GetBotsByBotIdEmailOutboxByIdResponses, GetBotsByBotIdEmailOutboxData, GetBotsByBotIdEmailOutboxError, GetBotsByBotIdEmailOutboxErrors, GetBotsByBotIdEmailOutboxResponse, GetBotsByBotIdEmailOutboxResponses, GetBotsByBotIdHeartbeatLogsData, GetBotsByBotIdHeartbeatLogsError, GetBotsByBotIdHeartbeatLogsErrors, GetBotsByBotIdHeartbeatLogsResponse, GetBotsByBotIdHeartbeatLogsResponses, GetBotsByBotIdLocalStreamData, GetBotsByBotIdLocalStreamError, GetBotsByBotIdLocalStreamErrors, GetBotsByBotIdLocalStreamResponse, GetBotsByBotIdLocalStreamResponses, GetBotsByBotIdLocalWsData, GetBotsByBotIdLocalWsError, GetBotsByBotIdLocalWsErrors, GetBotsByBotIdMcpByIdData, GetBotsByBotIdMcpByIdError, GetBotsByBotIdMcpByIdErrors, GetBotsByBotIdMcpByIdOauthStatusData, GetBotsByBotIdMcpByIdOauthStatusError, GetBotsByBotIdMcpByIdOauthStatusErrors, GetBotsByBotIdMcpByIdOauthStatusResponse, GetBotsByBotIdMcpByIdOauthStatusResponses, GetBotsByBotIdMcpByIdResponse, GetBotsByBotIdMcpByIdResponses, GetBotsByBotIdMcpData, GetBotsByBotIdMcpError, GetBotsByBotIdMcpErrors, GetBotsByBotIdMcpExportData, GetBotsByBotIdMcpExportError, GetBotsByBotIdMcpExportErrors, GetBotsByBotIdMcpExportResponse, GetBotsByBotIdMcpExportResponses, GetBotsByBotIdMcpResponse, GetBotsByBotIdMcpResponses, GetBotsByBotIdMemoryData, GetBotsByBotIdMemoryError, GetBotsByBotIdMemoryErrors, GetBotsByBotIdMemoryResponse, GetBotsByBotIdMemoryResponses, GetBotsByBotIdMemoryStatusData, GetBotsByBotIdMemoryStatusError, GetBotsByBotIdMemoryStatusErrors, GetBotsByBotIdMemoryStatusResponse, GetBotsByBotIdMemoryStatusResponses, GetBotsByBotIdMemoryUsageData, GetBotsByBotIdMemoryUsageError, GetBotsByBotIdMemoryUsageErrors, GetBotsByBotIdMemoryUsageResponse, GetBotsByBotIdMemoryUsageResponses, GetBotsByBotIdMessagesData, GetBotsByBotIdMessagesError, GetBotsByBotIdMessagesErrors, GetBotsByBotIdMessagesResponse, GetBotsByBotIdMessagesResponses, GetBotsByBotIdScheduleByIdData, GetBotsByBotIdScheduleByIdError, GetBotsByBotIdScheduleByIdErrors, GetBotsByBotIdScheduleByIdLogsData, GetBotsByBotIdScheduleByIdLogsError, GetBotsByBotIdScheduleByIdLogsErrors, GetBotsByBotIdScheduleByIdLogsResponse, GetBotsByBotIdScheduleByIdLogsResponses, GetBotsByBotIdScheduleByIdResponse, GetBotsByBotIdScheduleByIdResponses, GetBotsByBotIdScheduleData, GetBotsByBotIdScheduleError, GetBotsByBotIdScheduleErrors, GetBotsByBotIdScheduleLogsData, GetBotsByBotIdScheduleLogsError, GetBotsByBotIdScheduleLogsErrors, GetBotsByBotIdScheduleLogsResponse, GetBotsByBotIdScheduleLogsResponses, GetBotsByBotIdScheduleResponse, GetBotsByBotIdScheduleResponses, GetBotsByBotIdSessionsBySessionIdData, GetBotsByBotIdSessionsBySessionIdError, GetBotsByBotIdSessionsBySessionIdErrors, GetBotsByBotIdSessionsBySessionIdResponse, GetBotsByBotIdSessionsBySessionIdResponses, GetBotsByBotIdSessionsBySessionIdStatusData, GetBotsByBotIdSessionsBySessionIdStatusError, GetBotsByBotIdSessionsBySessionIdStatusErrors, GetBotsByBotIdSessionsBySessionIdStatusResponse, GetBotsByBotIdSessionsBySessionIdStatusResponses, GetBotsByBotIdSessionsData, GetBotsByBotIdSessionsError, GetBotsByBotIdSessionsErrors, GetBotsByBotIdSessionsResponse, GetBotsByBotIdSessionsResponses, GetBotsByBotIdSettingsData, GetBotsByBotIdSettingsError, GetBotsByBotIdSettingsErrors, GetBotsByBotIdSettingsResponse, GetBotsByBotIdSettingsResponses, GetBotsByBotIdTokenUsageData, GetBotsByBotIdTokenUsageError, GetBotsByBotIdTokenUsageErrors, GetBotsByBotIdTokenUsageResponse, GetBotsByBotIdTokenUsageResponses, GetBotsByIdChannelByPlatformData, GetBotsByIdChannelByPlatformError, GetBotsByIdChannelByPlatformErrors, GetBotsByIdChannelByPlatformResponse, GetBotsByIdChannelByPlatformResponses, GetBotsByIdChecksData, GetBotsByIdChecksError, GetBotsByIdChecksErrors, GetBotsByIdChecksResponse, GetBotsByIdChecksResponses, GetBotsByIdData, GetBotsByIdError, GetBotsByIdErrors, GetBotsByIdResponse, GetBotsByIdResponses, GetBotsData, GetBotsError, GetBotsErrors, GetBotsResponse, GetBotsResponses, GetBrowserContextsByIdData, GetBrowserContextsByIdError, GetBrowserContextsByIdErrors, GetBrowserContextsByIdResponse, GetBrowserContextsByIdResponses, GetBrowserContextsCoresData, GetBrowserContextsCoresError, GetBrowserContextsCoresErrors, GetBrowserContextsCoresResponse, GetBrowserContextsCoresResponses, GetBrowserContextsData, GetBrowserContextsError, GetBrowserContextsErrors, GetBrowserContextsResponse, GetBrowserContextsResponses, GetChannelsByPlatformData, GetChannelsByPlatformError, GetChannelsByPlatformErrors, GetChannelsByPlatformResponse, GetChannelsByPlatformResponses, GetChannelsData, GetChannelsError, GetChannelsErrors, GetChannelsResponse, GetChannelsResponses, GetEmailOauthCallbackData, GetEmailOauthCallbackError, GetEmailOauthCallbackErrors, GetEmailOauthCallbackResponse, GetEmailOauthCallbackResponses, GetEmailProvidersByIdData, GetEmailProvidersByIdError, GetEmailProvidersByIdErrors, GetEmailProvidersByIdOauthAuthorizeData, GetEmailProvidersByIdOauthAuthorizeError, GetEmailProvidersByIdOauthAuthorizeErrors, GetEmailProvidersByIdOauthAuthorizeResponse, GetEmailProvidersByIdOauthAuthorizeResponses, GetEmailProvidersByIdOauthStatusData, GetEmailProvidersByIdOauthStatusError, GetEmailProvidersByIdOauthStatusErrors, GetEmailProvidersByIdOauthStatusResponse, GetEmailProvidersByIdOauthStatusResponses, GetEmailProvidersByIdResponse, GetEmailProvidersByIdResponses, GetEmailProvidersData, GetEmailProvidersError, GetEmailProvidersErrors, GetEmailProvidersMetaData, GetEmailProvidersMetaResponse, GetEmailProvidersMetaResponses, GetEmailProvidersResponse, GetEmailProvidersResponses, GetMemoryProvidersByIdData, GetMemoryProvidersByIdError, GetMemoryProvidersByIdErrors, GetMemoryProvidersByIdResponse, GetMemoryProvidersByIdResponses, GetMemoryProvidersByIdStatusData, GetMemoryProvidersByIdStatusError, GetMemoryProvidersByIdStatusErrors, GetMemoryProvidersByIdStatusResponse, GetMemoryProvidersByIdStatusResponses, GetMemoryProvidersData, GetMemoryProvidersError, GetMemoryProvidersErrors, GetMemoryProvidersMetaData, GetMemoryProvidersMetaResponse, GetMemoryProvidersMetaResponses, GetMemoryProvidersResponse, GetMemoryProvidersResponses, GetModelsByIdData, GetModelsByIdError, GetModelsByIdErrors, GetModelsByIdResponse, GetModelsByIdResponses, GetModelsCountData, GetModelsCountError, GetModelsCountErrors, GetModelsCountResponse, GetModelsCountResponses, GetModelsData, GetModelsError, GetModelsErrors, GetModelsModelByModelIdData, GetModelsModelByModelIdError, GetModelsModelByModelIdErrors, GetModelsModelByModelIdResponse, GetModelsModelByModelIdResponses, GetModelsResponse, GetModelsResponses, GetPingData, GetPingResponse, GetPingResponses, GetProvidersByIdData, GetProvidersByIdError, GetProvidersByIdErrors, GetProvidersByIdModelsData, GetProvidersByIdModelsError, GetProvidersByIdModelsErrors, GetProvidersByIdModelsResponse, GetProvidersByIdModelsResponses, GetProvidersByIdOauthAuthorizeData, GetProvidersByIdOauthAuthorizeError, GetProvidersByIdOauthAuthorizeErrors, GetProvidersByIdOauthAuthorizeResponse, GetProvidersByIdOauthAuthorizeResponses, GetProvidersByIdOauthStatusData, GetProvidersByIdOauthStatusError, GetProvidersByIdOauthStatusErrors, GetProvidersByIdOauthStatusResponse, GetProvidersByIdOauthStatusResponses, GetProvidersByIdResponse, GetProvidersByIdResponses, GetProvidersCountData, GetProvidersCountError, GetProvidersCountErrors, GetProvidersCountResponse, GetProvidersCountResponses, GetProvidersData, GetProvidersError, GetProvidersErrors, GetProvidersNameByNameData, GetProvidersNameByNameError, GetProvidersNameByNameErrors, GetProvidersNameByNameResponse, GetProvidersNameByNameResponses, GetProvidersOauthCallbackData, GetProvidersOauthCallbackError, GetProvidersOauthCallbackErrors, GetProvidersOauthCallbackResponse, GetProvidersOauthCallbackResponses, GetProvidersResponse, GetProvidersResponses, GetSearchProvidersByIdData, GetSearchProvidersByIdError, GetSearchProvidersByIdErrors, GetSearchProvidersByIdResponse, GetSearchProvidersByIdResponses, GetSearchProvidersData, GetSearchProvidersError, GetSearchProvidersErrors, GetSearchProvidersMetaData, GetSearchProvidersMetaResponse, GetSearchProvidersMetaResponses, GetSearchProvidersResponse, GetSearchProvidersResponses, GetSpeechModelsByIdCapabilitiesData, GetSpeechModelsByIdCapabilitiesError, GetSpeechModelsByIdCapabilitiesErrors, GetSpeechModelsByIdCapabilitiesResponse, GetSpeechModelsByIdCapabilitiesResponses, GetSpeechModelsByIdData, GetSpeechModelsByIdError, GetSpeechModelsByIdErrors, GetSpeechModelsByIdResponse, GetSpeechModelsByIdResponses, GetSpeechModelsData, GetSpeechModelsError, GetSpeechModelsErrors, GetSpeechModelsResponse, GetSpeechModelsResponses, GetSpeechProvidersByIdData, GetSpeechProvidersByIdError, GetSpeechProvidersByIdErrors, GetSpeechProvidersByIdModelsData, GetSpeechProvidersByIdModelsError, GetSpeechProvidersByIdModelsErrors, GetSpeechProvidersByIdModelsResponse, GetSpeechProvidersByIdModelsResponses, GetSpeechProvidersByIdResponse, GetSpeechProvidersByIdResponses, GetSpeechProvidersData, GetSpeechProvidersError, GetSpeechProvidersErrors, GetSpeechProvidersMetaData, GetSpeechProvidersMetaResponse, GetSpeechProvidersMetaResponses, GetSpeechProvidersResponse, GetSpeechProvidersResponses, GetSupermarketMcpsByIdData, GetSupermarketMcpsByIdError, GetSupermarketMcpsByIdErrors, GetSupermarketMcpsByIdResponse, GetSupermarketMcpsByIdResponses, GetSupermarketMcpsData, GetSupermarketMcpsError, GetSupermarketMcpsErrors, GetSupermarketMcpsResponse, GetSupermarketMcpsResponses, GetSupermarketSkillsByIdData, GetSupermarketSkillsByIdError, GetSupermarketSkillsByIdErrors, GetSupermarketSkillsByIdResponse, GetSupermarketSkillsByIdResponses, GetSupermarketSkillsData, GetSupermarketSkillsError, GetSupermarketSkillsErrors, GetSupermarketSkillsResponse, GetSupermarketSkillsResponses, GetSupermarketTagsData, GetSupermarketTagsError, GetSupermarketTagsErrors, GetSupermarketTagsResponse, GetSupermarketTagsResponses, GetTranscriptionModelsByIdCapabilitiesData, GetTranscriptionModelsByIdCapabilitiesError, GetTranscriptionModelsByIdCapabilitiesErrors, GetTranscriptionModelsByIdCapabilitiesResponse, GetTranscriptionModelsByIdCapabilitiesResponses, GetTranscriptionModelsByIdData, GetTranscriptionModelsByIdError, GetTranscriptionModelsByIdErrors, GetTranscriptionModelsByIdResponse, GetTranscriptionModelsByIdResponses, GetTranscriptionModelsData, GetTranscriptionModelsError, GetTranscriptionModelsErrors, GetTranscriptionModelsResponse, GetTranscriptionModelsResponses, GetTranscriptionProvidersByIdData, GetTranscriptionProvidersByIdError, GetTranscriptionProvidersByIdErrors, GetTranscriptionProvidersByIdModelsData, GetTranscriptionProvidersByIdModelsError, GetTranscriptionProvidersByIdModelsErrors, GetTranscriptionProvidersByIdModelsResponse, GetTranscriptionProvidersByIdModelsResponses, GetTranscriptionProvidersByIdResponse, GetTranscriptionProvidersByIdResponses, GetTranscriptionProvidersData, GetTranscriptionProvidersError, GetTranscriptionProvidersErrors, GetTranscriptionProvidersMetaData, GetTranscriptionProvidersMetaResponse, GetTranscriptionProvidersMetaResponses, GetTranscriptionProvidersResponse, GetTranscriptionProvidersResponses, GetUsersByIdData, GetUsersByIdError, GetUsersByIdErrors, GetUsersByIdResponse, GetUsersByIdResponses, GetUsersData, GetUsersError, GetUsersErrors, GetUsersMeChannelsByPlatformData, GetUsersMeChannelsByPlatformError, GetUsersMeChannelsByPlatformErrors, GetUsersMeChannelsByPlatformResponse, GetUsersMeChannelsByPlatformResponses, GetUsersMeData, GetUsersMeError, GetUsersMeErrors, GetUsersMeIdentitiesData, GetUsersMeIdentitiesError, GetUsersMeIdentitiesErrors, GetUsersMeIdentitiesResponse, GetUsersMeIdentitiesResponses, GetUsersMeResponse, GetUsersMeResponses, GetUsersResponse, GetUsersResponses, GithubComMemohaiMemohInternalMcpConnection, HandlersBatchDeleteRequest, HandlersBrowserCoresResponse, HandlersCacheStats, HandlersChannelMeta, HandlersContainerGpuRequest, HandlersContextUsage, HandlersCreateContainerRequest, HandlersCreateContainerResponse, HandlersCreateSessionRequest, HandlersCreateSnapshotRequest, HandlersCreateSnapshotResponse, HandlersDailyTokenUsage, HandlersEmailOAuthStatusResponse, HandlersErrorResponse, HandlersFsDeleteRequest, HandlersFsFileInfo, HandlersFsListResponse, HandlersFsMkdirRequest, HandlersFsOpResponse, HandlersFsReadResponse, HandlersFsRenameRequest, HandlersFsUploadResponse, HandlersFsWriteRequest, HandlersGetContainerResponse, HandlersInstallMcpRequest, HandlersInstallSkillRequest, HandlersListMyIdentitiesResponse, HandlersListSnapshotsResponse, HandlersLocalChannelMessageRequest, HandlersLoginRequest, HandlersLoginResponse, HandlersMcpStdioRequest, HandlersMcpStdioResponse, HandlersMemoryAddPayload, HandlersMemoryCompactPayload, HandlersMemoryDeletePayload, HandlersMemorySearchPayload, HandlersModelTokenUsage, HandlersOauthAuthorizeRequest, HandlersOauthDiscoverRequest, HandlersOauthExchangeRequest, HandlersPingResponse, HandlersProbeResponse, HandlersRefreshResponse, HandlersRollbackRequest, HandlersSessionInfoResponse, HandlersSkillItem, HandlersSkillsActionRequest, HandlersSkillsDeleteRequest, HandlersSkillsOpResponse, HandlersSkillsResponse, HandlersSkillsUpsertRequest, HandlersSnapshotInfo, HandlersSupermarketAuthor, HandlersSupermarketConfigVar, HandlersSupermarketMcpEntry, HandlersSupermarketMcpListResponse, HandlersSupermarketSkillEntry, HandlersSupermarketSkillListResponse, HandlersSupermarketSkillMetadata, HandlersSupermarketTagsResponse, HandlersSynthesizeRequest, HandlersSynthesizeResponse, HandlersTerminalInfoResponse, HandlersTokenUsageResponse, HandlersTriggerCompactResponse, HandlersUpdateSessionRequest, HeartbeatListLogsResponse, HeartbeatLog, IdentitiesChannelIdentity, McpAuthorizeResult, McpDiscoveryResult, McpExportResponse, McpImportRequest, McpListResponse, McpMcpServerEntry, McpOAuthStatus, McpToolDescriptor, McpUpsertRequest, MessageMessage, MessageMessageAsset, ModelsAddRequest, ModelsAddResponse, ModelsCountResponse, ModelsGetResponse, ModelsModelConfig, ModelsModelType, ModelsTestResponse, ModelsTestStatus, ModelsUpdateRequest, PatchBotsByBotIdSessionsBySessionIdData, PatchBotsByBotIdSessionsBySessionIdError, PatchBotsByBotIdSessionsBySessionIdErrors, PatchBotsByBotIdSessionsBySessionIdResponse, PatchBotsByBotIdSessionsBySessionIdResponses, PatchBotsByIdChannelByPlatformStatusData, PatchBotsByIdChannelByPlatformStatusError, PatchBotsByIdChannelByPlatformStatusErrors, PatchBotsByIdChannelByPlatformStatusResponse, PatchBotsByIdChannelByPlatformStatusResponses, PostAuthLoginData, PostAuthLoginError, PostAuthLoginErrors, PostAuthLoginResponse, PostAuthLoginResponses, PostAuthRefreshData, PostAuthRefreshError, PostAuthRefreshErrors, PostAuthRefreshResponse, PostAuthRefreshResponses, PostBotsByBotIdAclRulesData, PostBotsByBotIdAclRulesError, PostBotsByBotIdAclRulesErrors, PostBotsByBotIdAclRulesResponse, PostBotsByBotIdAclRulesResponses, PostBotsByBotIdContainerData, PostBotsByBotIdContainerDataExportData, PostBotsByBotIdContainerDataExportError, PostBotsByBotIdContainerDataExportErrors, PostBotsByBotIdContainerDataExportResponses, PostBotsByBotIdContainerDataImportData, PostBotsByBotIdContainerDataImportError, PostBotsByBotIdContainerDataImportErrors, PostBotsByBotIdContainerDataImportResponse, PostBotsByBotIdContainerDataImportResponses, PostBotsByBotIdContainerDataRestoreData, PostBotsByBotIdContainerDataRestoreError, PostBotsByBotIdContainerDataRestoreErrors, PostBotsByBotIdContainerDataRestoreResponse, PostBotsByBotIdContainerDataRestoreResponses, PostBotsByBotIdContainerError, PostBotsByBotIdContainerErrors, PostBotsByBotIdContainerFsDeleteData, PostBotsByBotIdContainerFsDeleteError, PostBotsByBotIdContainerFsDeleteErrors, PostBotsByBotIdContainerFsDeleteResponse, PostBotsByBotIdContainerFsDeleteResponses, PostBotsByBotIdContainerFsMkdirData, PostBotsByBotIdContainerFsMkdirError, PostBotsByBotIdContainerFsMkdirErrors, PostBotsByBotIdContainerFsMkdirResponse, PostBotsByBotIdContainerFsMkdirResponses, PostBotsByBotIdContainerFsRenameData, PostBotsByBotIdContainerFsRenameError, PostBotsByBotIdContainerFsRenameErrors, PostBotsByBotIdContainerFsRenameResponse, PostBotsByBotIdContainerFsRenameResponses, PostBotsByBotIdContainerFsUploadData, PostBotsByBotIdContainerFsUploadError, PostBotsByBotIdContainerFsUploadErrors, PostBotsByBotIdContainerFsUploadResponse, PostBotsByBotIdContainerFsUploadResponses, PostBotsByBotIdContainerFsWriteData, PostBotsByBotIdContainerFsWriteError, PostBotsByBotIdContainerFsWriteErrors, PostBotsByBotIdContainerFsWriteResponse, PostBotsByBotIdContainerFsWriteResponses, PostBotsByBotIdContainerResponse, PostBotsByBotIdContainerResponses, PostBotsByBotIdContainerSkillsActionsData, PostBotsByBotIdContainerSkillsActionsError, PostBotsByBotIdContainerSkillsActionsErrors, PostBotsByBotIdContainerSkillsActionsResponse, PostBotsByBotIdContainerSkillsActionsResponses, PostBotsByBotIdContainerSkillsData, PostBotsByBotIdContainerSkillsError, PostBotsByBotIdContainerSkillsErrors, PostBotsByBotIdContainerSkillsResponse, PostBotsByBotIdContainerSkillsResponses, PostBotsByBotIdContainerSnapshotsData, PostBotsByBotIdContainerSnapshotsError, PostBotsByBotIdContainerSnapshotsErrors, PostBotsByBotIdContainerSnapshotsResponse, PostBotsByBotIdContainerSnapshotsResponses, PostBotsByBotIdContainerSnapshotsRollbackData, PostBotsByBotIdContainerSnapshotsRollbackError, PostBotsByBotIdContainerSnapshotsRollbackErrors, PostBotsByBotIdContainerSnapshotsRollbackResponse, PostBotsByBotIdContainerSnapshotsRollbackResponses, PostBotsByBotIdContainerStartData, PostBotsByBotIdContainerStartError, PostBotsByBotIdContainerStartErrors, PostBotsByBotIdContainerStartResponse, PostBotsByBotIdContainerStartResponses, PostBotsByBotIdContainerStopData, PostBotsByBotIdContainerStopError, PostBotsByBotIdContainerStopErrors, PostBotsByBotIdContainerStopResponse, PostBotsByBotIdContainerStopResponses, PostBotsByBotIdEmailBindingsData, PostBotsByBotIdEmailBindingsError, PostBotsByBotIdEmailBindingsErrors, PostBotsByBotIdEmailBindingsResponse, PostBotsByBotIdEmailBindingsResponses, PostBotsByBotIdLocalMessagesData, PostBotsByBotIdLocalMessagesError, PostBotsByBotIdLocalMessagesErrors, PostBotsByBotIdLocalMessagesResponse, PostBotsByBotIdLocalMessagesResponses, PostBotsByBotIdMcpByIdOauthAuthorizeData, PostBotsByBotIdMcpByIdOauthAuthorizeError, PostBotsByBotIdMcpByIdOauthAuthorizeErrors, PostBotsByBotIdMcpByIdOauthAuthorizeResponse, PostBotsByBotIdMcpByIdOauthAuthorizeResponses, PostBotsByBotIdMcpByIdOauthDiscoverData, PostBotsByBotIdMcpByIdOauthDiscoverError, PostBotsByBotIdMcpByIdOauthDiscoverErrors, PostBotsByBotIdMcpByIdOauthDiscoverResponse, PostBotsByBotIdMcpByIdOauthDiscoverResponses, PostBotsByBotIdMcpByIdOauthExchangeData, PostBotsByBotIdMcpByIdOauthExchangeError, PostBotsByBotIdMcpByIdOauthExchangeErrors, PostBotsByBotIdMcpByIdOauthExchangeResponse, PostBotsByBotIdMcpByIdOauthExchangeResponses, PostBotsByBotIdMcpByIdProbeData, PostBotsByBotIdMcpByIdProbeError, PostBotsByBotIdMcpByIdProbeErrors, PostBotsByBotIdMcpByIdProbeResponse, PostBotsByBotIdMcpByIdProbeResponses, PostBotsByBotIdMcpData, PostBotsByBotIdMcpError, PostBotsByBotIdMcpErrors, PostBotsByBotIdMcpOpsBatchDeleteData, PostBotsByBotIdMcpOpsBatchDeleteError, PostBotsByBotIdMcpOpsBatchDeleteErrors, PostBotsByBotIdMcpOpsBatchDeleteResponses, PostBotsByBotIdMcpResponse, PostBotsByBotIdMcpResponses, PostBotsByBotIdMcpStdioByConnectionIdData, PostBotsByBotIdMcpStdioByConnectionIdError, PostBotsByBotIdMcpStdioByConnectionIdErrors, PostBotsByBotIdMcpStdioByConnectionIdResponse, PostBotsByBotIdMcpStdioByConnectionIdResponses, PostBotsByBotIdMcpStdioData, PostBotsByBotIdMcpStdioError, PostBotsByBotIdMcpStdioErrors, PostBotsByBotIdMcpStdioResponse, PostBotsByBotIdMcpStdioResponses, PostBotsByBotIdMemoryCompactData, PostBotsByBotIdMemoryCompactError, PostBotsByBotIdMemoryCompactErrors, PostBotsByBotIdMemoryCompactResponse, PostBotsByBotIdMemoryCompactResponses, PostBotsByBotIdMemoryData, PostBotsByBotIdMemoryError, PostBotsByBotIdMemoryErrors, PostBotsByBotIdMemoryRebuildData, PostBotsByBotIdMemoryRebuildError, PostBotsByBotIdMemoryRebuildErrors, PostBotsByBotIdMemoryRebuildResponse, PostBotsByBotIdMemoryRebuildResponses, PostBotsByBotIdMemoryResponse, PostBotsByBotIdMemoryResponses, PostBotsByBotIdMemorySearchData, PostBotsByBotIdMemorySearchError, PostBotsByBotIdMemorySearchErrors, PostBotsByBotIdMemorySearchResponse, PostBotsByBotIdMemorySearchResponses, PostBotsByBotIdScheduleData, PostBotsByBotIdScheduleError, PostBotsByBotIdScheduleErrors, PostBotsByBotIdScheduleResponse, PostBotsByBotIdScheduleResponses, PostBotsByBotIdSessionsBySessionIdCompactData, PostBotsByBotIdSessionsBySessionIdCompactError, PostBotsByBotIdSessionsBySessionIdCompactErrors, PostBotsByBotIdSessionsBySessionIdCompactResponse, PostBotsByBotIdSessionsBySessionIdCompactResponses, PostBotsByBotIdSessionsData, PostBotsByBotIdSessionsError, PostBotsByBotIdSessionsErrors, PostBotsByBotIdSessionsResponse, PostBotsByBotIdSessionsResponses, PostBotsByBotIdSettingsData, PostBotsByBotIdSettingsError, PostBotsByBotIdSettingsErrors, PostBotsByBotIdSettingsResponse, PostBotsByBotIdSettingsResponses, PostBotsByBotIdSupermarketInstallMcpData, PostBotsByBotIdSupermarketInstallMcpError, PostBotsByBotIdSupermarketInstallMcpErrors, PostBotsByBotIdSupermarketInstallMcpResponse, PostBotsByBotIdSupermarketInstallMcpResponses, PostBotsByBotIdSupermarketInstallSkillData, PostBotsByBotIdSupermarketInstallSkillError, PostBotsByBotIdSupermarketInstallSkillErrors, PostBotsByBotIdSupermarketInstallSkillResponse, PostBotsByBotIdSupermarketInstallSkillResponses, PostBotsByBotIdToolsData, PostBotsByBotIdToolsError, PostBotsByBotIdToolsErrors, PostBotsByBotIdToolsResponse, PostBotsByBotIdToolsResponses, PostBotsByBotIdTtsSynthesizeData, PostBotsByBotIdTtsSynthesizeError, PostBotsByBotIdTtsSynthesizeErrors, PostBotsByBotIdTtsSynthesizeResponse, PostBotsByBotIdTtsSynthesizeResponses, PostBotsByIdChannelByPlatformSendChatData, PostBotsByIdChannelByPlatformSendChatError, PostBotsByIdChannelByPlatformSendChatErrors, PostBotsByIdChannelByPlatformSendChatResponse, PostBotsByIdChannelByPlatformSendChatResponses, PostBotsByIdChannelByPlatformSendData, PostBotsByIdChannelByPlatformSendError, PostBotsByIdChannelByPlatformSendErrors, PostBotsByIdChannelByPlatformSendResponse, PostBotsByIdChannelByPlatformSendResponses, PostBotsData, PostBotsError, PostBotsErrors, PostBotsResponse, PostBotsResponses, PostBrowserContextsData, PostBrowserContextsError, PostBrowserContextsErrors, PostBrowserContextsResponse, PostBrowserContextsResponses, PostEmailMailgunWebhookByConfigIdData, PostEmailMailgunWebhookByConfigIdError, PostEmailMailgunWebhookByConfigIdErrors, PostEmailMailgunWebhookByConfigIdResponse, PostEmailMailgunWebhookByConfigIdResponses, PostEmailProvidersData, PostEmailProvidersError, PostEmailProvidersErrors, PostEmailProvidersResponse, PostEmailProvidersResponses, PostMemoryProvidersData, PostMemoryProvidersError, PostMemoryProvidersErrors, PostMemoryProvidersResponse, PostMemoryProvidersResponses, PostModelsByIdTestData, PostModelsByIdTestError, PostModelsByIdTestErrors, PostModelsByIdTestResponse, PostModelsByIdTestResponses, PostModelsData, PostModelsError, PostModelsErrors, PostModelsResponse, PostModelsResponses, PostProvidersByIdImportModelsData, PostProvidersByIdImportModelsError, PostProvidersByIdImportModelsErrors, PostProvidersByIdImportModelsResponse, PostProvidersByIdImportModelsResponses, PostProvidersByIdOauthPollData, PostProvidersByIdOauthPollError, PostProvidersByIdOauthPollErrors, PostProvidersByIdOauthPollResponse, PostProvidersByIdOauthPollResponses, PostProvidersByIdTestData, PostProvidersByIdTestError, PostProvidersByIdTestErrors, PostProvidersByIdTestResponse, PostProvidersByIdTestResponses, PostProvidersData, PostProvidersError, PostProvidersErrors, PostProvidersResponse, PostProvidersResponses, PostSearchProvidersData, PostSearchProvidersError, PostSearchProvidersErrors, PostSearchProvidersResponse, PostSearchProvidersResponses, PostSpeechModelsByIdTestData, PostSpeechModelsByIdTestError, PostSpeechModelsByIdTestErrors, PostSpeechModelsByIdTestResponses, PostSpeechProvidersByIdImportModelsData, PostSpeechProvidersByIdImportModelsError, PostSpeechProvidersByIdImportModelsErrors, PostSpeechProvidersByIdImportModelsResponse, PostSpeechProvidersByIdImportModelsResponses, PostTranscriptionModelsByIdTestData, PostTranscriptionModelsByIdTestError, PostTranscriptionModelsByIdTestErrors, PostTranscriptionModelsByIdTestResponse, PostTranscriptionModelsByIdTestResponses, PostTranscriptionProvidersByIdImportModelsData, PostTranscriptionProvidersByIdImportModelsError, PostTranscriptionProvidersByIdImportModelsErrors, PostTranscriptionProvidersByIdImportModelsResponse, PostTranscriptionProvidersByIdImportModelsResponses, PostUsersData, PostUsersError, PostUsersErrors, PostUsersResponse, PostUsersResponses, ProvidersCountResponse, ProvidersCreateRequest, ProvidersGetResponse, ProvidersImportModelsResponse, ProvidersOAuthAccount, ProvidersOAuthAuthorizeResponse, ProvidersOAuthDeviceStatus, ProvidersOAuthStatus, ProvidersTestResponse, ProvidersUpdateRequest, PutBotsByBotIdAclDefaultEffectData, PutBotsByBotIdAclDefaultEffectError, PutBotsByBotIdAclDefaultEffectErrors, PutBotsByBotIdAclDefaultEffectResponses, PutBotsByBotIdAclRulesByRuleIdData, PutBotsByBotIdAclRulesByRuleIdError, PutBotsByBotIdAclRulesByRuleIdErrors, PutBotsByBotIdAclRulesByRuleIdResponse, PutBotsByBotIdAclRulesByRuleIdResponses, PutBotsByBotIdAclRulesReorderData, PutBotsByBotIdAclRulesReorderError, PutBotsByBotIdAclRulesReorderErrors, PutBotsByBotIdAclRulesReorderResponses, PutBotsByBotIdEmailBindingsByIdData, PutBotsByBotIdEmailBindingsByIdError, PutBotsByBotIdEmailBindingsByIdErrors, PutBotsByBotIdEmailBindingsByIdResponse, PutBotsByBotIdEmailBindingsByIdResponses, PutBotsByBotIdMcpByIdData, PutBotsByBotIdMcpByIdError, PutBotsByBotIdMcpByIdErrors, PutBotsByBotIdMcpByIdResponse, PutBotsByBotIdMcpByIdResponses, PutBotsByBotIdMcpImportData, PutBotsByBotIdMcpImportError, PutBotsByBotIdMcpImportErrors, PutBotsByBotIdMcpImportResponse, PutBotsByBotIdMcpImportResponses, PutBotsByBotIdScheduleByIdData, PutBotsByBotIdScheduleByIdError, PutBotsByBotIdScheduleByIdErrors, PutBotsByBotIdScheduleByIdResponse, PutBotsByBotIdScheduleByIdResponses, PutBotsByBotIdSettingsData, PutBotsByBotIdSettingsError, PutBotsByBotIdSettingsErrors, PutBotsByBotIdSettingsResponse, PutBotsByBotIdSettingsResponses, PutBotsByIdChannelByPlatformData, PutBotsByIdChannelByPlatformError, PutBotsByIdChannelByPlatformErrors, PutBotsByIdChannelByPlatformResponse, PutBotsByIdChannelByPlatformResponses, PutBotsByIdData, PutBotsByIdError, PutBotsByIdErrors, PutBotsByIdOwnerData, PutBotsByIdOwnerError, PutBotsByIdOwnerErrors, PutBotsByIdOwnerResponse, PutBotsByIdOwnerResponses, PutBotsByIdResponse, PutBotsByIdResponses, PutBrowserContextsByIdData, PutBrowserContextsByIdError, PutBrowserContextsByIdErrors, PutBrowserContextsByIdResponse, PutBrowserContextsByIdResponses, PutEmailProvidersByIdData, PutEmailProvidersByIdError, PutEmailProvidersByIdErrors, PutEmailProvidersByIdResponse, PutEmailProvidersByIdResponses, PutMemoryProvidersByIdData, PutMemoryProvidersByIdError, PutMemoryProvidersByIdErrors, PutMemoryProvidersByIdResponse, PutMemoryProvidersByIdResponses, PutModelsByIdData, PutModelsByIdError, PutModelsByIdErrors, PutModelsByIdResponse, PutModelsByIdResponses, PutModelsModelByModelIdData, PutModelsModelByModelIdError, PutModelsModelByModelIdErrors, PutModelsModelByModelIdResponse, PutModelsModelByModelIdResponses, PutProvidersByIdData, PutProvidersByIdError, PutProvidersByIdErrors, PutProvidersByIdResponse, PutProvidersByIdResponses, PutSearchProvidersByIdData, PutSearchProvidersByIdError, PutSearchProvidersByIdErrors, PutSearchProvidersByIdResponse, PutSearchProvidersByIdResponses, PutSpeechModelsByIdData, PutSpeechModelsByIdError, PutSpeechModelsByIdErrors, PutSpeechModelsByIdResponse, PutSpeechModelsByIdResponses, PutTranscriptionModelsByIdData, PutTranscriptionModelsByIdError, PutTranscriptionModelsByIdErrors, PutTranscriptionModelsByIdResponse, PutTranscriptionModelsByIdResponses, PutUsersByIdData, PutUsersByIdError, PutUsersByIdErrors, PutUsersByIdPasswordData, PutUsersByIdPasswordError, PutUsersByIdPasswordErrors, PutUsersByIdPasswordResponses, PutUsersByIdResponse, PutUsersByIdResponses, PutUsersMeChannelsByPlatformData, PutUsersMeChannelsByPlatformError, PutUsersMeChannelsByPlatformErrors, PutUsersMeChannelsByPlatformResponse, PutUsersMeChannelsByPlatformResponses, PutUsersMeData, PutUsersMeError, PutUsersMeErrors, PutUsersMePasswordData, PutUsersMePasswordError, PutUsersMePasswordErrors, PutUsersMePasswordResponses, PutUsersMeResponse, PutUsersMeResponses, ScheduleCreateRequest, ScheduleListLogsResponse, ScheduleListResponse, ScheduleLog, ScheduleNullableInt, ScheduleSchedule, ScheduleUpdateRequest, SearchprovidersCreateRequest, SearchprovidersGetResponse, SearchprovidersProviderConfigSchema, SearchprovidersProviderFieldSchema, SearchprovidersProviderMeta, SearchprovidersProviderName, SearchprovidersUpdateRequest, SessionSession, SettingsSettings, SettingsUpsertRequest } from './types.gen'; diff --git a/packages/sdk/src/sdk.gen.ts b/packages/sdk/src/sdk.gen.ts index dd2218f5..58a394df 100644 --- a/packages/sdk/src/sdk.gen.ts +++ b/packages/sdk/src/sdk.gen.ts @@ -2,7 +2,7 @@ import { type Client, formDataBodySerializer, type Options as Options2, type TDataShape } from './client'; import { client } from './client.gen'; -import type { DeleteBotsByBotIdAclRulesByRuleIdData, DeleteBotsByBotIdAclRulesByRuleIdErrors, DeleteBotsByBotIdAclRulesByRuleIdResponses, DeleteBotsByBotIdCompactionLogsData, DeleteBotsByBotIdCompactionLogsErrors, DeleteBotsByBotIdCompactionLogsResponses, DeleteBotsByBotIdContainerData, DeleteBotsByBotIdContainerErrors, DeleteBotsByBotIdContainerResponses, DeleteBotsByBotIdContainerSkillsData, DeleteBotsByBotIdContainerSkillsErrors, DeleteBotsByBotIdContainerSkillsResponses, DeleteBotsByBotIdEmailBindingsByIdData, DeleteBotsByBotIdEmailBindingsByIdErrors, DeleteBotsByBotIdEmailBindingsByIdResponses, DeleteBotsByBotIdHeartbeatLogsData, DeleteBotsByBotIdHeartbeatLogsErrors, DeleteBotsByBotIdHeartbeatLogsResponses, DeleteBotsByBotIdMcpByIdData, DeleteBotsByBotIdMcpByIdErrors, DeleteBotsByBotIdMcpByIdOauthTokenData, DeleteBotsByBotIdMcpByIdOauthTokenErrors, DeleteBotsByBotIdMcpByIdOauthTokenResponses, DeleteBotsByBotIdMcpByIdResponses, DeleteBotsByBotIdMemoryByIdData, DeleteBotsByBotIdMemoryByIdErrors, DeleteBotsByBotIdMemoryByIdResponses, DeleteBotsByBotIdMemoryData, DeleteBotsByBotIdMemoryErrors, DeleteBotsByBotIdMemoryResponses, DeleteBotsByBotIdMessagesData, DeleteBotsByBotIdMessagesErrors, DeleteBotsByBotIdMessagesResponses, DeleteBotsByBotIdScheduleByIdData, DeleteBotsByBotIdScheduleByIdErrors, DeleteBotsByBotIdScheduleByIdResponses, DeleteBotsByBotIdScheduleLogsData, DeleteBotsByBotIdScheduleLogsErrors, DeleteBotsByBotIdScheduleLogsResponses, DeleteBotsByBotIdSessionsBySessionIdData, DeleteBotsByBotIdSessionsBySessionIdErrors, DeleteBotsByBotIdSessionsBySessionIdResponses, DeleteBotsByBotIdSettingsData, DeleteBotsByBotIdSettingsErrors, DeleteBotsByBotIdSettingsResponses, DeleteBotsByIdChannelByPlatformData, DeleteBotsByIdChannelByPlatformErrors, DeleteBotsByIdChannelByPlatformResponses, DeleteBotsByIdData, DeleteBotsByIdErrors, DeleteBotsByIdResponses, DeleteBrowserContextsByIdData, DeleteBrowserContextsByIdErrors, DeleteBrowserContextsByIdResponses, DeleteEmailProvidersByIdData, DeleteEmailProvidersByIdErrors, DeleteEmailProvidersByIdOauthTokenData, DeleteEmailProvidersByIdOauthTokenErrors, DeleteEmailProvidersByIdOauthTokenResponses, DeleteEmailProvidersByIdResponses, DeleteMemoryProvidersByIdData, DeleteMemoryProvidersByIdErrors, DeleteMemoryProvidersByIdResponses, DeleteModelsByIdData, DeleteModelsByIdErrors, DeleteModelsByIdResponses, DeleteModelsModelByModelIdData, DeleteModelsModelByModelIdErrors, DeleteModelsModelByModelIdResponses, DeleteProvidersByIdData, DeleteProvidersByIdErrors, DeleteProvidersByIdOauthTokenData, DeleteProvidersByIdOauthTokenErrors, DeleteProvidersByIdOauthTokenResponses, DeleteProvidersByIdResponses, DeleteSearchProvidersByIdData, DeleteSearchProvidersByIdErrors, DeleteSearchProvidersByIdResponses, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsData, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsErrors, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsResponses, GetBotsByBotIdAclChannelIdentitiesData, GetBotsByBotIdAclChannelIdentitiesErrors, GetBotsByBotIdAclChannelIdentitiesResponses, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsData, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsErrors, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsResponses, GetBotsByBotIdAclDefaultEffectData, GetBotsByBotIdAclDefaultEffectErrors, GetBotsByBotIdAclDefaultEffectResponses, GetBotsByBotIdAclRulesData, GetBotsByBotIdAclRulesErrors, GetBotsByBotIdAclRulesResponses, GetBotsByBotIdCompactionLogsData, GetBotsByBotIdCompactionLogsErrors, GetBotsByBotIdCompactionLogsResponses, GetBotsByBotIdContainerData, GetBotsByBotIdContainerErrors, GetBotsByBotIdContainerFsData, GetBotsByBotIdContainerFsDownloadData, GetBotsByBotIdContainerFsDownloadErrors, GetBotsByBotIdContainerFsDownloadResponses, GetBotsByBotIdContainerFsErrors, GetBotsByBotIdContainerFsListData, GetBotsByBotIdContainerFsListErrors, GetBotsByBotIdContainerFsListResponses, GetBotsByBotIdContainerFsReadData, GetBotsByBotIdContainerFsReadErrors, GetBotsByBotIdContainerFsReadResponses, GetBotsByBotIdContainerFsResponses, GetBotsByBotIdContainerResponses, GetBotsByBotIdContainerSkillsData, GetBotsByBotIdContainerSkillsErrors, GetBotsByBotIdContainerSkillsResponses, GetBotsByBotIdContainerSnapshotsData, GetBotsByBotIdContainerSnapshotsErrors, GetBotsByBotIdContainerSnapshotsResponses, GetBotsByBotIdContainerTerminalData, GetBotsByBotIdContainerTerminalErrors, GetBotsByBotIdContainerTerminalResponses, GetBotsByBotIdContainerTerminalWsData, GetBotsByBotIdContainerTerminalWsErrors, GetBotsByBotIdEmailBindingsData, GetBotsByBotIdEmailBindingsErrors, GetBotsByBotIdEmailBindingsResponses, GetBotsByBotIdEmailOutboxByIdData, GetBotsByBotIdEmailOutboxByIdErrors, GetBotsByBotIdEmailOutboxByIdResponses, GetBotsByBotIdEmailOutboxData, GetBotsByBotIdEmailOutboxErrors, GetBotsByBotIdEmailOutboxResponses, GetBotsByBotIdHeartbeatLogsData, GetBotsByBotIdHeartbeatLogsErrors, GetBotsByBotIdHeartbeatLogsResponses, GetBotsByBotIdLocalStreamData, GetBotsByBotIdLocalStreamErrors, GetBotsByBotIdLocalStreamResponses, GetBotsByBotIdLocalWsData, GetBotsByBotIdLocalWsErrors, GetBotsByBotIdMcpByIdData, GetBotsByBotIdMcpByIdErrors, GetBotsByBotIdMcpByIdOauthStatusData, GetBotsByBotIdMcpByIdOauthStatusErrors, GetBotsByBotIdMcpByIdOauthStatusResponses, GetBotsByBotIdMcpByIdResponses, GetBotsByBotIdMcpData, GetBotsByBotIdMcpErrors, GetBotsByBotIdMcpExportData, GetBotsByBotIdMcpExportErrors, GetBotsByBotIdMcpExportResponses, GetBotsByBotIdMcpResponses, GetBotsByBotIdMemoryData, GetBotsByBotIdMemoryErrors, GetBotsByBotIdMemoryResponses, GetBotsByBotIdMemoryStatusData, GetBotsByBotIdMemoryStatusErrors, GetBotsByBotIdMemoryStatusResponses, GetBotsByBotIdMemoryUsageData, GetBotsByBotIdMemoryUsageErrors, GetBotsByBotIdMemoryUsageResponses, GetBotsByBotIdMessagesData, GetBotsByBotIdMessagesErrors, GetBotsByBotIdMessagesResponses, GetBotsByBotIdScheduleByIdData, GetBotsByBotIdScheduleByIdErrors, GetBotsByBotIdScheduleByIdLogsData, GetBotsByBotIdScheduleByIdLogsErrors, GetBotsByBotIdScheduleByIdLogsResponses, GetBotsByBotIdScheduleByIdResponses, GetBotsByBotIdScheduleData, GetBotsByBotIdScheduleErrors, GetBotsByBotIdScheduleLogsData, GetBotsByBotIdScheduleLogsErrors, GetBotsByBotIdScheduleLogsResponses, GetBotsByBotIdScheduleResponses, GetBotsByBotIdSessionsBySessionIdData, GetBotsByBotIdSessionsBySessionIdErrors, GetBotsByBotIdSessionsBySessionIdResponses, GetBotsByBotIdSessionsBySessionIdStatusData, GetBotsByBotIdSessionsBySessionIdStatusErrors, GetBotsByBotIdSessionsBySessionIdStatusResponses, GetBotsByBotIdSessionsData, GetBotsByBotIdSessionsErrors, GetBotsByBotIdSessionsResponses, GetBotsByBotIdSettingsData, GetBotsByBotIdSettingsErrors, GetBotsByBotIdSettingsResponses, GetBotsByBotIdTokenUsageData, GetBotsByBotIdTokenUsageErrors, GetBotsByBotIdTokenUsageResponses, GetBotsByIdChannelByPlatformData, GetBotsByIdChannelByPlatformErrors, GetBotsByIdChannelByPlatformResponses, GetBotsByIdChecksData, GetBotsByIdChecksErrors, GetBotsByIdChecksResponses, GetBotsByIdData, GetBotsByIdErrors, GetBotsByIdResponses, GetBotsData, GetBotsErrors, GetBotsResponses, GetBrowserContextsByIdData, GetBrowserContextsByIdErrors, GetBrowserContextsByIdResponses, GetBrowserContextsCoresData, GetBrowserContextsCoresErrors, GetBrowserContextsCoresResponses, GetBrowserContextsData, GetBrowserContextsErrors, GetBrowserContextsResponses, GetChannelsByPlatformData, GetChannelsByPlatformErrors, GetChannelsByPlatformResponses, GetChannelsData, GetChannelsErrors, GetChannelsResponses, GetEmailOauthCallbackData, GetEmailOauthCallbackErrors, GetEmailOauthCallbackResponses, GetEmailProvidersByIdData, GetEmailProvidersByIdErrors, GetEmailProvidersByIdOauthAuthorizeData, GetEmailProvidersByIdOauthAuthorizeErrors, GetEmailProvidersByIdOauthAuthorizeResponses, GetEmailProvidersByIdOauthStatusData, GetEmailProvidersByIdOauthStatusErrors, GetEmailProvidersByIdOauthStatusResponses, GetEmailProvidersByIdResponses, GetEmailProvidersData, GetEmailProvidersErrors, GetEmailProvidersMetaData, GetEmailProvidersMetaResponses, GetEmailProvidersResponses, GetMemoryProvidersByIdData, GetMemoryProvidersByIdErrors, GetMemoryProvidersByIdResponses, GetMemoryProvidersByIdStatusData, GetMemoryProvidersByIdStatusErrors, GetMemoryProvidersByIdStatusResponses, GetMemoryProvidersData, GetMemoryProvidersErrors, GetMemoryProvidersMetaData, GetMemoryProvidersMetaResponses, GetMemoryProvidersResponses, GetModelsByIdData, GetModelsByIdErrors, GetModelsByIdResponses, GetModelsCountData, GetModelsCountErrors, GetModelsCountResponses, GetModelsData, GetModelsErrors, GetModelsModelByModelIdData, GetModelsModelByModelIdErrors, GetModelsModelByModelIdResponses, GetModelsResponses, GetPingData, GetPingResponses, GetProvidersByIdData, GetProvidersByIdErrors, GetProvidersByIdModelsData, GetProvidersByIdModelsErrors, GetProvidersByIdModelsResponses, GetProvidersByIdOauthAuthorizeData, GetProvidersByIdOauthAuthorizeErrors, GetProvidersByIdOauthAuthorizeResponses, GetProvidersByIdOauthStatusData, GetProvidersByIdOauthStatusErrors, GetProvidersByIdOauthStatusResponses, GetProvidersByIdResponses, GetProvidersCountData, GetProvidersCountErrors, GetProvidersCountResponses, GetProvidersData, GetProvidersErrors, GetProvidersNameByNameData, GetProvidersNameByNameErrors, GetProvidersNameByNameResponses, GetProvidersOauthCallbackData, GetProvidersOauthCallbackErrors, GetProvidersOauthCallbackResponses, GetProvidersResponses, GetSearchProvidersByIdData, GetSearchProvidersByIdErrors, GetSearchProvidersByIdResponses, GetSearchProvidersData, GetSearchProvidersErrors, GetSearchProvidersMetaData, GetSearchProvidersMetaResponses, GetSearchProvidersResponses, GetSpeechModelsByIdCapabilitiesData, GetSpeechModelsByIdCapabilitiesErrors, GetSpeechModelsByIdCapabilitiesResponses, GetSpeechModelsByIdData, GetSpeechModelsByIdErrors, GetSpeechModelsByIdResponses, GetSpeechModelsData, GetSpeechModelsErrors, GetSpeechModelsResponses, GetSpeechProvidersByIdData, GetSpeechProvidersByIdErrors, GetSpeechProvidersByIdModelsData, GetSpeechProvidersByIdModelsErrors, GetSpeechProvidersByIdModelsResponses, GetSpeechProvidersByIdResponses, GetSpeechProvidersData, GetSpeechProvidersErrors, GetSpeechProvidersMetaData, GetSpeechProvidersMetaResponses, GetSpeechProvidersResponses, GetSupermarketMcpsByIdData, GetSupermarketMcpsByIdErrors, GetSupermarketMcpsByIdResponses, GetSupermarketMcpsData, GetSupermarketMcpsErrors, GetSupermarketMcpsResponses, GetSupermarketSkillsByIdData, GetSupermarketSkillsByIdErrors, GetSupermarketSkillsByIdResponses, GetSupermarketSkillsData, GetSupermarketSkillsErrors, GetSupermarketSkillsResponses, GetSupermarketTagsData, GetSupermarketTagsErrors, GetSupermarketTagsResponses, GetUsersByIdData, GetUsersByIdErrors, GetUsersByIdResponses, GetUsersData, GetUsersErrors, GetUsersMeChannelsByPlatformData, GetUsersMeChannelsByPlatformErrors, GetUsersMeChannelsByPlatformResponses, GetUsersMeData, GetUsersMeErrors, GetUsersMeIdentitiesData, GetUsersMeIdentitiesErrors, GetUsersMeIdentitiesResponses, GetUsersMeResponses, GetUsersResponses, PatchBotsByBotIdSessionsBySessionIdData, PatchBotsByBotIdSessionsBySessionIdErrors, PatchBotsByBotIdSessionsBySessionIdResponses, PatchBotsByIdChannelByPlatformStatusData, PatchBotsByIdChannelByPlatformStatusErrors, PatchBotsByIdChannelByPlatformStatusResponses, PostAuthLoginData, PostAuthLoginErrors, PostAuthLoginResponses, PostAuthRefreshData, PostAuthRefreshErrors, PostAuthRefreshResponses, PostBotsByBotIdAclRulesData, PostBotsByBotIdAclRulesErrors, PostBotsByBotIdAclRulesResponses, PostBotsByBotIdContainerData, PostBotsByBotIdContainerDataExportData, PostBotsByBotIdContainerDataExportErrors, PostBotsByBotIdContainerDataExportResponses, PostBotsByBotIdContainerDataImportData, PostBotsByBotIdContainerDataImportErrors, PostBotsByBotIdContainerDataImportResponses, PostBotsByBotIdContainerDataRestoreData, PostBotsByBotIdContainerDataRestoreErrors, PostBotsByBotIdContainerDataRestoreResponses, PostBotsByBotIdContainerErrors, PostBotsByBotIdContainerFsDeleteData, PostBotsByBotIdContainerFsDeleteErrors, PostBotsByBotIdContainerFsDeleteResponses, PostBotsByBotIdContainerFsMkdirData, PostBotsByBotIdContainerFsMkdirErrors, PostBotsByBotIdContainerFsMkdirResponses, PostBotsByBotIdContainerFsRenameData, PostBotsByBotIdContainerFsRenameErrors, PostBotsByBotIdContainerFsRenameResponses, PostBotsByBotIdContainerFsUploadData, PostBotsByBotIdContainerFsUploadErrors, PostBotsByBotIdContainerFsUploadResponses, PostBotsByBotIdContainerFsWriteData, PostBotsByBotIdContainerFsWriteErrors, PostBotsByBotIdContainerFsWriteResponses, PostBotsByBotIdContainerResponses, PostBotsByBotIdContainerSkillsActionsData, PostBotsByBotIdContainerSkillsActionsErrors, PostBotsByBotIdContainerSkillsActionsResponses, PostBotsByBotIdContainerSkillsData, PostBotsByBotIdContainerSkillsErrors, PostBotsByBotIdContainerSkillsResponses, PostBotsByBotIdContainerSnapshotsData, PostBotsByBotIdContainerSnapshotsErrors, PostBotsByBotIdContainerSnapshotsResponses, PostBotsByBotIdContainerSnapshotsRollbackData, PostBotsByBotIdContainerSnapshotsRollbackErrors, PostBotsByBotIdContainerSnapshotsRollbackResponses, PostBotsByBotIdContainerStartData, PostBotsByBotIdContainerStartErrors, PostBotsByBotIdContainerStartResponses, PostBotsByBotIdContainerStopData, PostBotsByBotIdContainerStopErrors, PostBotsByBotIdContainerStopResponses, PostBotsByBotIdEmailBindingsData, PostBotsByBotIdEmailBindingsErrors, PostBotsByBotIdEmailBindingsResponses, PostBotsByBotIdLocalMessagesData, PostBotsByBotIdLocalMessagesErrors, PostBotsByBotIdLocalMessagesResponses, PostBotsByBotIdMcpByIdOauthAuthorizeData, PostBotsByBotIdMcpByIdOauthAuthorizeErrors, PostBotsByBotIdMcpByIdOauthAuthorizeResponses, PostBotsByBotIdMcpByIdOauthDiscoverData, PostBotsByBotIdMcpByIdOauthDiscoverErrors, PostBotsByBotIdMcpByIdOauthDiscoverResponses, PostBotsByBotIdMcpByIdOauthExchangeData, PostBotsByBotIdMcpByIdOauthExchangeErrors, PostBotsByBotIdMcpByIdOauthExchangeResponses, PostBotsByBotIdMcpByIdProbeData, PostBotsByBotIdMcpByIdProbeErrors, PostBotsByBotIdMcpByIdProbeResponses, PostBotsByBotIdMcpData, PostBotsByBotIdMcpErrors, PostBotsByBotIdMcpOpsBatchDeleteData, PostBotsByBotIdMcpOpsBatchDeleteErrors, PostBotsByBotIdMcpOpsBatchDeleteResponses, PostBotsByBotIdMcpResponses, PostBotsByBotIdMcpStdioByConnectionIdData, PostBotsByBotIdMcpStdioByConnectionIdErrors, PostBotsByBotIdMcpStdioByConnectionIdResponses, PostBotsByBotIdMcpStdioData, PostBotsByBotIdMcpStdioErrors, PostBotsByBotIdMcpStdioResponses, PostBotsByBotIdMemoryCompactData, PostBotsByBotIdMemoryCompactErrors, PostBotsByBotIdMemoryCompactResponses, PostBotsByBotIdMemoryData, PostBotsByBotIdMemoryErrors, PostBotsByBotIdMemoryRebuildData, PostBotsByBotIdMemoryRebuildErrors, PostBotsByBotIdMemoryRebuildResponses, PostBotsByBotIdMemoryResponses, PostBotsByBotIdMemorySearchData, PostBotsByBotIdMemorySearchErrors, PostBotsByBotIdMemorySearchResponses, PostBotsByBotIdScheduleData, PostBotsByBotIdScheduleErrors, PostBotsByBotIdScheduleResponses, PostBotsByBotIdSessionsBySessionIdCompactData, PostBotsByBotIdSessionsBySessionIdCompactErrors, PostBotsByBotIdSessionsBySessionIdCompactResponses, PostBotsByBotIdSessionsData, PostBotsByBotIdSessionsErrors, PostBotsByBotIdSessionsResponses, PostBotsByBotIdSettingsData, PostBotsByBotIdSettingsErrors, PostBotsByBotIdSettingsResponses, PostBotsByBotIdSupermarketInstallMcpData, PostBotsByBotIdSupermarketInstallMcpErrors, PostBotsByBotIdSupermarketInstallMcpResponses, PostBotsByBotIdSupermarketInstallSkillData, PostBotsByBotIdSupermarketInstallSkillErrors, PostBotsByBotIdSupermarketInstallSkillResponses, PostBotsByBotIdToolsData, PostBotsByBotIdToolsErrors, PostBotsByBotIdToolsResponses, PostBotsByBotIdTtsSynthesizeData, PostBotsByBotIdTtsSynthesizeErrors, PostBotsByBotIdTtsSynthesizeResponses, PostBotsByIdChannelByPlatformSendChatData, PostBotsByIdChannelByPlatformSendChatErrors, PostBotsByIdChannelByPlatformSendChatResponses, PostBotsByIdChannelByPlatformSendData, PostBotsByIdChannelByPlatformSendErrors, PostBotsByIdChannelByPlatformSendResponses, PostBotsData, PostBotsErrors, PostBotsResponses, PostBrowserContextsData, PostBrowserContextsErrors, PostBrowserContextsResponses, PostEmailMailgunWebhookByConfigIdData, PostEmailMailgunWebhookByConfigIdErrors, PostEmailMailgunWebhookByConfigIdResponses, PostEmailProvidersData, PostEmailProvidersErrors, PostEmailProvidersResponses, PostMemoryProvidersData, PostMemoryProvidersErrors, PostMemoryProvidersResponses, PostModelsByIdTestData, PostModelsByIdTestErrors, PostModelsByIdTestResponses, PostModelsData, PostModelsErrors, PostModelsResponses, PostProvidersByIdImportModelsData, PostProvidersByIdImportModelsErrors, PostProvidersByIdImportModelsResponses, PostProvidersByIdOauthPollData, PostProvidersByIdOauthPollErrors, PostProvidersByIdOauthPollResponses, PostProvidersByIdTestData, PostProvidersByIdTestErrors, PostProvidersByIdTestResponses, PostProvidersData, PostProvidersErrors, PostProvidersResponses, PostSearchProvidersData, PostSearchProvidersErrors, PostSearchProvidersResponses, PostSpeechModelsByIdTestData, PostSpeechModelsByIdTestErrors, PostSpeechModelsByIdTestResponses, PostSpeechProvidersByIdImportModelsData, PostSpeechProvidersByIdImportModelsErrors, PostSpeechProvidersByIdImportModelsResponses, PostUsersData, PostUsersErrors, PostUsersResponses, PutBotsByBotIdAclDefaultEffectData, PutBotsByBotIdAclDefaultEffectErrors, PutBotsByBotIdAclDefaultEffectResponses, PutBotsByBotIdAclRulesByRuleIdData, PutBotsByBotIdAclRulesByRuleIdErrors, PutBotsByBotIdAclRulesByRuleIdResponses, PutBotsByBotIdAclRulesReorderData, PutBotsByBotIdAclRulesReorderErrors, PutBotsByBotIdAclRulesReorderResponses, PutBotsByBotIdEmailBindingsByIdData, PutBotsByBotIdEmailBindingsByIdErrors, PutBotsByBotIdEmailBindingsByIdResponses, PutBotsByBotIdMcpByIdData, PutBotsByBotIdMcpByIdErrors, PutBotsByBotIdMcpByIdResponses, PutBotsByBotIdMcpImportData, PutBotsByBotIdMcpImportErrors, PutBotsByBotIdMcpImportResponses, PutBotsByBotIdScheduleByIdData, PutBotsByBotIdScheduleByIdErrors, PutBotsByBotIdScheduleByIdResponses, PutBotsByBotIdSettingsData, PutBotsByBotIdSettingsErrors, PutBotsByBotIdSettingsResponses, PutBotsByIdChannelByPlatformData, PutBotsByIdChannelByPlatformErrors, PutBotsByIdChannelByPlatformResponses, PutBotsByIdData, PutBotsByIdErrors, PutBotsByIdOwnerData, PutBotsByIdOwnerErrors, PutBotsByIdOwnerResponses, PutBotsByIdResponses, PutBrowserContextsByIdData, PutBrowserContextsByIdErrors, PutBrowserContextsByIdResponses, PutEmailProvidersByIdData, PutEmailProvidersByIdErrors, PutEmailProvidersByIdResponses, PutMemoryProvidersByIdData, PutMemoryProvidersByIdErrors, PutMemoryProvidersByIdResponses, PutModelsByIdData, PutModelsByIdErrors, PutModelsByIdResponses, PutModelsModelByModelIdData, PutModelsModelByModelIdErrors, PutModelsModelByModelIdResponses, PutProvidersByIdData, PutProvidersByIdErrors, PutProvidersByIdResponses, PutSearchProvidersByIdData, PutSearchProvidersByIdErrors, PutSearchProvidersByIdResponses, PutUsersByIdData, PutUsersByIdErrors, PutUsersByIdPasswordData, PutUsersByIdPasswordErrors, PutUsersByIdPasswordResponses, PutUsersByIdResponses, PutUsersMeChannelsByPlatformData, PutUsersMeChannelsByPlatformErrors, PutUsersMeChannelsByPlatformResponses, PutUsersMeData, PutUsersMeErrors, PutUsersMePasswordData, PutUsersMePasswordErrors, PutUsersMePasswordResponses, PutUsersMeResponses } from './types.gen'; +import type { DeleteBotsByBotIdAclRulesByRuleIdData, DeleteBotsByBotIdAclRulesByRuleIdErrors, DeleteBotsByBotIdAclRulesByRuleIdResponses, DeleteBotsByBotIdCompactionLogsData, DeleteBotsByBotIdCompactionLogsErrors, DeleteBotsByBotIdCompactionLogsResponses, DeleteBotsByBotIdContainerData, DeleteBotsByBotIdContainerErrors, DeleteBotsByBotIdContainerResponses, DeleteBotsByBotIdContainerSkillsData, DeleteBotsByBotIdContainerSkillsErrors, DeleteBotsByBotIdContainerSkillsResponses, DeleteBotsByBotIdEmailBindingsByIdData, DeleteBotsByBotIdEmailBindingsByIdErrors, DeleteBotsByBotIdEmailBindingsByIdResponses, DeleteBotsByBotIdHeartbeatLogsData, DeleteBotsByBotIdHeartbeatLogsErrors, DeleteBotsByBotIdHeartbeatLogsResponses, DeleteBotsByBotIdMcpByIdData, DeleteBotsByBotIdMcpByIdErrors, DeleteBotsByBotIdMcpByIdOauthTokenData, DeleteBotsByBotIdMcpByIdOauthTokenErrors, DeleteBotsByBotIdMcpByIdOauthTokenResponses, DeleteBotsByBotIdMcpByIdResponses, DeleteBotsByBotIdMemoryByIdData, DeleteBotsByBotIdMemoryByIdErrors, DeleteBotsByBotIdMemoryByIdResponses, DeleteBotsByBotIdMemoryData, DeleteBotsByBotIdMemoryErrors, DeleteBotsByBotIdMemoryResponses, DeleteBotsByBotIdMessagesData, DeleteBotsByBotIdMessagesErrors, DeleteBotsByBotIdMessagesResponses, DeleteBotsByBotIdScheduleByIdData, DeleteBotsByBotIdScheduleByIdErrors, DeleteBotsByBotIdScheduleByIdResponses, DeleteBotsByBotIdScheduleLogsData, DeleteBotsByBotIdScheduleLogsErrors, DeleteBotsByBotIdScheduleLogsResponses, DeleteBotsByBotIdSessionsBySessionIdData, DeleteBotsByBotIdSessionsBySessionIdErrors, DeleteBotsByBotIdSessionsBySessionIdResponses, DeleteBotsByBotIdSettingsData, DeleteBotsByBotIdSettingsErrors, DeleteBotsByBotIdSettingsResponses, DeleteBotsByIdChannelByPlatformData, DeleteBotsByIdChannelByPlatformErrors, DeleteBotsByIdChannelByPlatformResponses, DeleteBotsByIdData, DeleteBotsByIdErrors, DeleteBotsByIdResponses, DeleteBrowserContextsByIdData, DeleteBrowserContextsByIdErrors, DeleteBrowserContextsByIdResponses, DeleteEmailProvidersByIdData, DeleteEmailProvidersByIdErrors, DeleteEmailProvidersByIdOauthTokenData, DeleteEmailProvidersByIdOauthTokenErrors, DeleteEmailProvidersByIdOauthTokenResponses, DeleteEmailProvidersByIdResponses, DeleteMemoryProvidersByIdData, DeleteMemoryProvidersByIdErrors, DeleteMemoryProvidersByIdResponses, DeleteModelsByIdData, DeleteModelsByIdErrors, DeleteModelsByIdResponses, DeleteModelsModelByModelIdData, DeleteModelsModelByModelIdErrors, DeleteModelsModelByModelIdResponses, DeleteProvidersByIdData, DeleteProvidersByIdErrors, DeleteProvidersByIdOauthTokenData, DeleteProvidersByIdOauthTokenErrors, DeleteProvidersByIdOauthTokenResponses, DeleteProvidersByIdResponses, DeleteSearchProvidersByIdData, DeleteSearchProvidersByIdErrors, DeleteSearchProvidersByIdResponses, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsData, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsErrors, GetBotsByBotIdAclChannelIdentitiesByChannelIdentityIdConversationsResponses, GetBotsByBotIdAclChannelIdentitiesData, GetBotsByBotIdAclChannelIdentitiesErrors, GetBotsByBotIdAclChannelIdentitiesResponses, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsData, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsErrors, GetBotsByBotIdAclChannelTypesByChannelTypeConversationsResponses, GetBotsByBotIdAclDefaultEffectData, GetBotsByBotIdAclDefaultEffectErrors, GetBotsByBotIdAclDefaultEffectResponses, GetBotsByBotIdAclRulesData, GetBotsByBotIdAclRulesErrors, GetBotsByBotIdAclRulesResponses, GetBotsByBotIdCompactionLogsData, GetBotsByBotIdCompactionLogsErrors, GetBotsByBotIdCompactionLogsResponses, GetBotsByBotIdContainerData, GetBotsByBotIdContainerErrors, GetBotsByBotIdContainerFsData, GetBotsByBotIdContainerFsDownloadData, GetBotsByBotIdContainerFsDownloadErrors, GetBotsByBotIdContainerFsDownloadResponses, GetBotsByBotIdContainerFsErrors, GetBotsByBotIdContainerFsListData, GetBotsByBotIdContainerFsListErrors, GetBotsByBotIdContainerFsListResponses, GetBotsByBotIdContainerFsReadData, GetBotsByBotIdContainerFsReadErrors, GetBotsByBotIdContainerFsReadResponses, GetBotsByBotIdContainerFsResponses, GetBotsByBotIdContainerResponses, GetBotsByBotIdContainerSkillsData, GetBotsByBotIdContainerSkillsErrors, GetBotsByBotIdContainerSkillsResponses, GetBotsByBotIdContainerSnapshotsData, GetBotsByBotIdContainerSnapshotsErrors, GetBotsByBotIdContainerSnapshotsResponses, GetBotsByBotIdContainerTerminalData, GetBotsByBotIdContainerTerminalErrors, GetBotsByBotIdContainerTerminalResponses, GetBotsByBotIdContainerTerminalWsData, GetBotsByBotIdContainerTerminalWsErrors, GetBotsByBotIdEmailBindingsData, GetBotsByBotIdEmailBindingsErrors, GetBotsByBotIdEmailBindingsResponses, GetBotsByBotIdEmailOutboxByIdData, GetBotsByBotIdEmailOutboxByIdErrors, GetBotsByBotIdEmailOutboxByIdResponses, GetBotsByBotIdEmailOutboxData, GetBotsByBotIdEmailOutboxErrors, GetBotsByBotIdEmailOutboxResponses, GetBotsByBotIdHeartbeatLogsData, GetBotsByBotIdHeartbeatLogsErrors, GetBotsByBotIdHeartbeatLogsResponses, GetBotsByBotIdLocalStreamData, GetBotsByBotIdLocalStreamErrors, GetBotsByBotIdLocalStreamResponses, GetBotsByBotIdLocalWsData, GetBotsByBotIdLocalWsErrors, GetBotsByBotIdMcpByIdData, GetBotsByBotIdMcpByIdErrors, GetBotsByBotIdMcpByIdOauthStatusData, GetBotsByBotIdMcpByIdOauthStatusErrors, GetBotsByBotIdMcpByIdOauthStatusResponses, GetBotsByBotIdMcpByIdResponses, GetBotsByBotIdMcpData, GetBotsByBotIdMcpErrors, GetBotsByBotIdMcpExportData, GetBotsByBotIdMcpExportErrors, GetBotsByBotIdMcpExportResponses, GetBotsByBotIdMcpResponses, GetBotsByBotIdMemoryData, GetBotsByBotIdMemoryErrors, GetBotsByBotIdMemoryResponses, GetBotsByBotIdMemoryStatusData, GetBotsByBotIdMemoryStatusErrors, GetBotsByBotIdMemoryStatusResponses, GetBotsByBotIdMemoryUsageData, GetBotsByBotIdMemoryUsageErrors, GetBotsByBotIdMemoryUsageResponses, GetBotsByBotIdMessagesData, GetBotsByBotIdMessagesErrors, GetBotsByBotIdMessagesResponses, GetBotsByBotIdScheduleByIdData, GetBotsByBotIdScheduleByIdErrors, GetBotsByBotIdScheduleByIdLogsData, GetBotsByBotIdScheduleByIdLogsErrors, GetBotsByBotIdScheduleByIdLogsResponses, GetBotsByBotIdScheduleByIdResponses, GetBotsByBotIdScheduleData, GetBotsByBotIdScheduleErrors, GetBotsByBotIdScheduleLogsData, GetBotsByBotIdScheduleLogsErrors, GetBotsByBotIdScheduleLogsResponses, GetBotsByBotIdScheduleResponses, GetBotsByBotIdSessionsBySessionIdData, GetBotsByBotIdSessionsBySessionIdErrors, GetBotsByBotIdSessionsBySessionIdResponses, GetBotsByBotIdSessionsBySessionIdStatusData, GetBotsByBotIdSessionsBySessionIdStatusErrors, GetBotsByBotIdSessionsBySessionIdStatusResponses, GetBotsByBotIdSessionsData, GetBotsByBotIdSessionsErrors, GetBotsByBotIdSessionsResponses, GetBotsByBotIdSettingsData, GetBotsByBotIdSettingsErrors, GetBotsByBotIdSettingsResponses, GetBotsByBotIdTokenUsageData, GetBotsByBotIdTokenUsageErrors, GetBotsByBotIdTokenUsageResponses, GetBotsByIdChannelByPlatformData, GetBotsByIdChannelByPlatformErrors, GetBotsByIdChannelByPlatformResponses, GetBotsByIdChecksData, GetBotsByIdChecksErrors, GetBotsByIdChecksResponses, GetBotsByIdData, GetBotsByIdErrors, GetBotsByIdResponses, GetBotsData, GetBotsErrors, GetBotsResponses, GetBrowserContextsByIdData, GetBrowserContextsByIdErrors, GetBrowserContextsByIdResponses, GetBrowserContextsCoresData, GetBrowserContextsCoresErrors, GetBrowserContextsCoresResponses, GetBrowserContextsData, GetBrowserContextsErrors, GetBrowserContextsResponses, GetChannelsByPlatformData, GetChannelsByPlatformErrors, GetChannelsByPlatformResponses, GetChannelsData, GetChannelsErrors, GetChannelsResponses, GetEmailOauthCallbackData, GetEmailOauthCallbackErrors, GetEmailOauthCallbackResponses, GetEmailProvidersByIdData, GetEmailProvidersByIdErrors, GetEmailProvidersByIdOauthAuthorizeData, GetEmailProvidersByIdOauthAuthorizeErrors, GetEmailProvidersByIdOauthAuthorizeResponses, GetEmailProvidersByIdOauthStatusData, GetEmailProvidersByIdOauthStatusErrors, GetEmailProvidersByIdOauthStatusResponses, GetEmailProvidersByIdResponses, GetEmailProvidersData, GetEmailProvidersErrors, GetEmailProvidersMetaData, GetEmailProvidersMetaResponses, GetEmailProvidersResponses, GetMemoryProvidersByIdData, GetMemoryProvidersByIdErrors, GetMemoryProvidersByIdResponses, GetMemoryProvidersByIdStatusData, GetMemoryProvidersByIdStatusErrors, GetMemoryProvidersByIdStatusResponses, GetMemoryProvidersData, GetMemoryProvidersErrors, GetMemoryProvidersMetaData, GetMemoryProvidersMetaResponses, GetMemoryProvidersResponses, GetModelsByIdData, GetModelsByIdErrors, GetModelsByIdResponses, GetModelsCountData, GetModelsCountErrors, GetModelsCountResponses, GetModelsData, GetModelsErrors, GetModelsModelByModelIdData, GetModelsModelByModelIdErrors, GetModelsModelByModelIdResponses, GetModelsResponses, GetPingData, GetPingResponses, GetProvidersByIdData, GetProvidersByIdErrors, GetProvidersByIdModelsData, GetProvidersByIdModelsErrors, GetProvidersByIdModelsResponses, GetProvidersByIdOauthAuthorizeData, GetProvidersByIdOauthAuthorizeErrors, GetProvidersByIdOauthAuthorizeResponses, GetProvidersByIdOauthStatusData, GetProvidersByIdOauthStatusErrors, GetProvidersByIdOauthStatusResponses, GetProvidersByIdResponses, GetProvidersCountData, GetProvidersCountErrors, GetProvidersCountResponses, GetProvidersData, GetProvidersErrors, GetProvidersNameByNameData, GetProvidersNameByNameErrors, GetProvidersNameByNameResponses, GetProvidersOauthCallbackData, GetProvidersOauthCallbackErrors, GetProvidersOauthCallbackResponses, GetProvidersResponses, GetSearchProvidersByIdData, GetSearchProvidersByIdErrors, GetSearchProvidersByIdResponses, GetSearchProvidersData, GetSearchProvidersErrors, GetSearchProvidersMetaData, GetSearchProvidersMetaResponses, GetSearchProvidersResponses, GetSpeechModelsByIdCapabilitiesData, GetSpeechModelsByIdCapabilitiesErrors, GetSpeechModelsByIdCapabilitiesResponses, GetSpeechModelsByIdData, GetSpeechModelsByIdErrors, GetSpeechModelsByIdResponses, GetSpeechModelsData, GetSpeechModelsErrors, GetSpeechModelsResponses, GetSpeechProvidersByIdData, GetSpeechProvidersByIdErrors, GetSpeechProvidersByIdModelsData, GetSpeechProvidersByIdModelsErrors, GetSpeechProvidersByIdModelsResponses, GetSpeechProvidersByIdResponses, GetSpeechProvidersData, GetSpeechProvidersErrors, GetSpeechProvidersMetaData, GetSpeechProvidersMetaResponses, GetSpeechProvidersResponses, GetSupermarketMcpsByIdData, GetSupermarketMcpsByIdErrors, GetSupermarketMcpsByIdResponses, GetSupermarketMcpsData, GetSupermarketMcpsErrors, GetSupermarketMcpsResponses, GetSupermarketSkillsByIdData, GetSupermarketSkillsByIdErrors, GetSupermarketSkillsByIdResponses, GetSupermarketSkillsData, GetSupermarketSkillsErrors, GetSupermarketSkillsResponses, GetSupermarketTagsData, GetSupermarketTagsErrors, GetSupermarketTagsResponses, GetTranscriptionModelsByIdCapabilitiesData, GetTranscriptionModelsByIdCapabilitiesErrors, GetTranscriptionModelsByIdCapabilitiesResponses, GetTranscriptionModelsByIdData, GetTranscriptionModelsByIdErrors, GetTranscriptionModelsByIdResponses, GetTranscriptionModelsData, GetTranscriptionModelsErrors, GetTranscriptionModelsResponses, GetTranscriptionProvidersByIdData, GetTranscriptionProvidersByIdErrors, GetTranscriptionProvidersByIdModelsData, GetTranscriptionProvidersByIdModelsErrors, GetTranscriptionProvidersByIdModelsResponses, GetTranscriptionProvidersByIdResponses, GetTranscriptionProvidersData, GetTranscriptionProvidersErrors, GetTranscriptionProvidersMetaData, GetTranscriptionProvidersMetaResponses, GetTranscriptionProvidersResponses, GetUsersByIdData, GetUsersByIdErrors, GetUsersByIdResponses, GetUsersData, GetUsersErrors, GetUsersMeChannelsByPlatformData, GetUsersMeChannelsByPlatformErrors, GetUsersMeChannelsByPlatformResponses, GetUsersMeData, GetUsersMeErrors, GetUsersMeIdentitiesData, GetUsersMeIdentitiesErrors, GetUsersMeIdentitiesResponses, GetUsersMeResponses, GetUsersResponses, PatchBotsByBotIdSessionsBySessionIdData, PatchBotsByBotIdSessionsBySessionIdErrors, PatchBotsByBotIdSessionsBySessionIdResponses, PatchBotsByIdChannelByPlatformStatusData, PatchBotsByIdChannelByPlatformStatusErrors, PatchBotsByIdChannelByPlatformStatusResponses, PostAuthLoginData, PostAuthLoginErrors, PostAuthLoginResponses, PostAuthRefreshData, PostAuthRefreshErrors, PostAuthRefreshResponses, PostBotsByBotIdAclRulesData, PostBotsByBotIdAclRulesErrors, PostBotsByBotIdAclRulesResponses, PostBotsByBotIdContainerData, PostBotsByBotIdContainerDataExportData, PostBotsByBotIdContainerDataExportErrors, PostBotsByBotIdContainerDataExportResponses, PostBotsByBotIdContainerDataImportData, PostBotsByBotIdContainerDataImportErrors, PostBotsByBotIdContainerDataImportResponses, PostBotsByBotIdContainerDataRestoreData, PostBotsByBotIdContainerDataRestoreErrors, PostBotsByBotIdContainerDataRestoreResponses, PostBotsByBotIdContainerErrors, PostBotsByBotIdContainerFsDeleteData, PostBotsByBotIdContainerFsDeleteErrors, PostBotsByBotIdContainerFsDeleteResponses, PostBotsByBotIdContainerFsMkdirData, PostBotsByBotIdContainerFsMkdirErrors, PostBotsByBotIdContainerFsMkdirResponses, PostBotsByBotIdContainerFsRenameData, PostBotsByBotIdContainerFsRenameErrors, PostBotsByBotIdContainerFsRenameResponses, PostBotsByBotIdContainerFsUploadData, PostBotsByBotIdContainerFsUploadErrors, PostBotsByBotIdContainerFsUploadResponses, PostBotsByBotIdContainerFsWriteData, PostBotsByBotIdContainerFsWriteErrors, PostBotsByBotIdContainerFsWriteResponses, PostBotsByBotIdContainerResponses, PostBotsByBotIdContainerSkillsActionsData, PostBotsByBotIdContainerSkillsActionsErrors, PostBotsByBotIdContainerSkillsActionsResponses, PostBotsByBotIdContainerSkillsData, PostBotsByBotIdContainerSkillsErrors, PostBotsByBotIdContainerSkillsResponses, PostBotsByBotIdContainerSnapshotsData, PostBotsByBotIdContainerSnapshotsErrors, PostBotsByBotIdContainerSnapshotsResponses, PostBotsByBotIdContainerSnapshotsRollbackData, PostBotsByBotIdContainerSnapshotsRollbackErrors, PostBotsByBotIdContainerSnapshotsRollbackResponses, PostBotsByBotIdContainerStartData, PostBotsByBotIdContainerStartErrors, PostBotsByBotIdContainerStartResponses, PostBotsByBotIdContainerStopData, PostBotsByBotIdContainerStopErrors, PostBotsByBotIdContainerStopResponses, PostBotsByBotIdEmailBindingsData, PostBotsByBotIdEmailBindingsErrors, PostBotsByBotIdEmailBindingsResponses, PostBotsByBotIdLocalMessagesData, PostBotsByBotIdLocalMessagesErrors, PostBotsByBotIdLocalMessagesResponses, PostBotsByBotIdMcpByIdOauthAuthorizeData, PostBotsByBotIdMcpByIdOauthAuthorizeErrors, PostBotsByBotIdMcpByIdOauthAuthorizeResponses, PostBotsByBotIdMcpByIdOauthDiscoverData, PostBotsByBotIdMcpByIdOauthDiscoverErrors, PostBotsByBotIdMcpByIdOauthDiscoverResponses, PostBotsByBotIdMcpByIdOauthExchangeData, PostBotsByBotIdMcpByIdOauthExchangeErrors, PostBotsByBotIdMcpByIdOauthExchangeResponses, PostBotsByBotIdMcpByIdProbeData, PostBotsByBotIdMcpByIdProbeErrors, PostBotsByBotIdMcpByIdProbeResponses, PostBotsByBotIdMcpData, PostBotsByBotIdMcpErrors, PostBotsByBotIdMcpOpsBatchDeleteData, PostBotsByBotIdMcpOpsBatchDeleteErrors, PostBotsByBotIdMcpOpsBatchDeleteResponses, PostBotsByBotIdMcpResponses, PostBotsByBotIdMcpStdioByConnectionIdData, PostBotsByBotIdMcpStdioByConnectionIdErrors, PostBotsByBotIdMcpStdioByConnectionIdResponses, PostBotsByBotIdMcpStdioData, PostBotsByBotIdMcpStdioErrors, PostBotsByBotIdMcpStdioResponses, PostBotsByBotIdMemoryCompactData, PostBotsByBotIdMemoryCompactErrors, PostBotsByBotIdMemoryCompactResponses, PostBotsByBotIdMemoryData, PostBotsByBotIdMemoryErrors, PostBotsByBotIdMemoryRebuildData, PostBotsByBotIdMemoryRebuildErrors, PostBotsByBotIdMemoryRebuildResponses, PostBotsByBotIdMemoryResponses, PostBotsByBotIdMemorySearchData, PostBotsByBotIdMemorySearchErrors, PostBotsByBotIdMemorySearchResponses, PostBotsByBotIdScheduleData, PostBotsByBotIdScheduleErrors, PostBotsByBotIdScheduleResponses, PostBotsByBotIdSessionsBySessionIdCompactData, PostBotsByBotIdSessionsBySessionIdCompactErrors, PostBotsByBotIdSessionsBySessionIdCompactResponses, PostBotsByBotIdSessionsData, PostBotsByBotIdSessionsErrors, PostBotsByBotIdSessionsResponses, PostBotsByBotIdSettingsData, PostBotsByBotIdSettingsErrors, PostBotsByBotIdSettingsResponses, PostBotsByBotIdSupermarketInstallMcpData, PostBotsByBotIdSupermarketInstallMcpErrors, PostBotsByBotIdSupermarketInstallMcpResponses, PostBotsByBotIdSupermarketInstallSkillData, PostBotsByBotIdSupermarketInstallSkillErrors, PostBotsByBotIdSupermarketInstallSkillResponses, PostBotsByBotIdToolsData, PostBotsByBotIdToolsErrors, PostBotsByBotIdToolsResponses, PostBotsByBotIdTtsSynthesizeData, PostBotsByBotIdTtsSynthesizeErrors, PostBotsByBotIdTtsSynthesizeResponses, PostBotsByIdChannelByPlatformSendChatData, PostBotsByIdChannelByPlatformSendChatErrors, PostBotsByIdChannelByPlatformSendChatResponses, PostBotsByIdChannelByPlatformSendData, PostBotsByIdChannelByPlatformSendErrors, PostBotsByIdChannelByPlatformSendResponses, PostBotsData, PostBotsErrors, PostBotsResponses, PostBrowserContextsData, PostBrowserContextsErrors, PostBrowserContextsResponses, PostEmailMailgunWebhookByConfigIdData, PostEmailMailgunWebhookByConfigIdErrors, PostEmailMailgunWebhookByConfigIdResponses, PostEmailProvidersData, PostEmailProvidersErrors, PostEmailProvidersResponses, PostMemoryProvidersData, PostMemoryProvidersErrors, PostMemoryProvidersResponses, PostModelsByIdTestData, PostModelsByIdTestErrors, PostModelsByIdTestResponses, PostModelsData, PostModelsErrors, PostModelsResponses, PostProvidersByIdImportModelsData, PostProvidersByIdImportModelsErrors, PostProvidersByIdImportModelsResponses, PostProvidersByIdOauthPollData, PostProvidersByIdOauthPollErrors, PostProvidersByIdOauthPollResponses, PostProvidersByIdTestData, PostProvidersByIdTestErrors, PostProvidersByIdTestResponses, PostProvidersData, PostProvidersErrors, PostProvidersResponses, PostSearchProvidersData, PostSearchProvidersErrors, PostSearchProvidersResponses, PostSpeechModelsByIdTestData, PostSpeechModelsByIdTestErrors, PostSpeechModelsByIdTestResponses, PostSpeechProvidersByIdImportModelsData, PostSpeechProvidersByIdImportModelsErrors, PostSpeechProvidersByIdImportModelsResponses, PostTranscriptionModelsByIdTestData, PostTranscriptionModelsByIdTestErrors, PostTranscriptionModelsByIdTestResponses, PostTranscriptionProvidersByIdImportModelsData, PostTranscriptionProvidersByIdImportModelsErrors, PostTranscriptionProvidersByIdImportModelsResponses, PostUsersData, PostUsersErrors, PostUsersResponses, PutBotsByBotIdAclDefaultEffectData, PutBotsByBotIdAclDefaultEffectErrors, PutBotsByBotIdAclDefaultEffectResponses, PutBotsByBotIdAclRulesByRuleIdData, PutBotsByBotIdAclRulesByRuleIdErrors, PutBotsByBotIdAclRulesByRuleIdResponses, PutBotsByBotIdAclRulesReorderData, PutBotsByBotIdAclRulesReorderErrors, PutBotsByBotIdAclRulesReorderResponses, PutBotsByBotIdEmailBindingsByIdData, PutBotsByBotIdEmailBindingsByIdErrors, PutBotsByBotIdEmailBindingsByIdResponses, PutBotsByBotIdMcpByIdData, PutBotsByBotIdMcpByIdErrors, PutBotsByBotIdMcpByIdResponses, PutBotsByBotIdMcpImportData, PutBotsByBotIdMcpImportErrors, PutBotsByBotIdMcpImportResponses, PutBotsByBotIdScheduleByIdData, PutBotsByBotIdScheduleByIdErrors, PutBotsByBotIdScheduleByIdResponses, PutBotsByBotIdSettingsData, PutBotsByBotIdSettingsErrors, PutBotsByBotIdSettingsResponses, PutBotsByIdChannelByPlatformData, PutBotsByIdChannelByPlatformErrors, PutBotsByIdChannelByPlatformResponses, PutBotsByIdData, PutBotsByIdErrors, PutBotsByIdOwnerData, PutBotsByIdOwnerErrors, PutBotsByIdOwnerResponses, PutBotsByIdResponses, PutBrowserContextsByIdData, PutBrowserContextsByIdErrors, PutBrowserContextsByIdResponses, PutEmailProvidersByIdData, PutEmailProvidersByIdErrors, PutEmailProvidersByIdResponses, PutMemoryProvidersByIdData, PutMemoryProvidersByIdErrors, PutMemoryProvidersByIdResponses, PutModelsByIdData, PutModelsByIdErrors, PutModelsByIdResponses, PutModelsModelByModelIdData, PutModelsModelByModelIdErrors, PutModelsModelByModelIdResponses, PutProvidersByIdData, PutProvidersByIdErrors, PutProvidersByIdResponses, PutSearchProvidersByIdData, PutSearchProvidersByIdErrors, PutSearchProvidersByIdResponses, PutSpeechModelsByIdData, PutSpeechModelsByIdErrors, PutSpeechModelsByIdResponses, PutTranscriptionModelsByIdData, PutTranscriptionModelsByIdErrors, PutTranscriptionModelsByIdResponses, PutUsersByIdData, PutUsersByIdErrors, PutUsersByIdPasswordData, PutUsersByIdPasswordErrors, PutUsersByIdPasswordResponses, PutUsersByIdResponses, PutUsersMeChannelsByPlatformData, PutUsersMeChannelsByPlatformErrors, PutUsersMeChannelsByPlatformResponses, PutUsersMeData, PutUsersMeErrors, PutUsersMePasswordData, PutUsersMePasswordErrors, PutUsersMePasswordResponses, PutUsersMeResponses } from './types.gen'; export type Options = Options2 & { /** @@ -1605,6 +1605,18 @@ export const getSpeechModels = (options?: */ export const getSpeechModelsById = (options: Options) => (options.client ?? client).get({ url: '/speech-models/{id}', ...options }); +/** + * Update a speech model + */ +export const putSpeechModelsById = (options: Options) => (options.client ?? client).put({ + url: '/speech-models/{id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + /** * Get speech model capabilities */ @@ -1684,6 +1696,85 @@ export const getSupermarketSkillsById = (o */ export const getSupermarketTags = (options?: Options) => (options?.client ?? client).get({ url: '/supermarket/tags', ...options }); +/** + * List all transcription models + * + * List all models of type 'transcription' (filtered view of unified models table) + */ +export const getTranscriptionModels = (options?: Options) => (options?.client ?? client).get({ url: '/transcription-models', ...options }); + +/** + * Get a transcription model + */ +export const getTranscriptionModelsById = (options: Options) => (options.client ?? client).get({ url: '/transcription-models/{id}', ...options }); + +/** + * Update a transcription model + */ +export const putTranscriptionModelsById = (options: Options) => (options.client ?? client).put({ + url: '/transcription-models/{id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers + } +}); + +/** + * Get transcription model capabilities + */ +export const getTranscriptionModelsByIdCapabilities = (options: Options) => (options.client ?? client).get({ url: '/transcription-models/{id}/capabilities', ...options }); + +/** + * Test transcription model recognition + * + * Transcribe uploaded audio using a specific model's config and return structured text output + */ +export const postTranscriptionModelsByIdTest = (options: Options) => (options.client ?? client).post({ + ...formDataBodySerializer, + url: '/transcription-models/{id}/test', + ...options, + headers: { + 'Content-Type': null, + ...options.headers + } +}); + +/** + * List transcription providers + * + * List providers that support transcription (filtered view of unified providers table) + */ +export const getTranscriptionProviders = (options?: Options) => (options?.client ?? client).get({ url: '/transcription-providers', ...options }); + +/** + * List transcription provider metadata + * + * List available transcription provider types with their models and capabilities + */ +export const getTranscriptionProvidersMeta = (options?: Options) => (options?.client ?? client).get({ url: '/transcription-providers/meta', ...options }); + +/** + * Get speech provider + * + * Get a speech provider with masked config values + */ +export const getTranscriptionProvidersById = (options: Options) => (options.client ?? client).get({ url: '/transcription-providers/{id}', ...options }); + +/** + * Import transcription models from provider + * + * Fetch models using the configured transcription provider and import them into the unified models table + */ +export const postTranscriptionProvidersByIdImportModels = (options: Options) => (options.client ?? client).post({ url: '/transcription-providers/{id}/import-models', ...options }); + +/** + * List transcription models by provider + * + * List models of type 'transcription' for a specific transcription provider + */ +export const getTranscriptionProvidersByIdModels = (options: Options) => (options.client ?? client).get({ url: '/transcription-providers/{id}/models', ...options }); + /** * List users (admin only) * diff --git a/packages/sdk/src/types.gen.ts b/packages/sdk/src/types.gen.ts index ab32fbf7..cf1a1d04 100644 --- a/packages/sdk/src/types.gen.ts +++ b/packages/sdk/src/types.gen.ts @@ -310,6 +310,146 @@ export type AdaptersUsageResponse = { total_text_bytes?: number; }; +export type AudioConfigSchema = { + fields?: Array; +}; + +export type AudioFieldSchema = { + advanced?: boolean; + description?: string; + enum?: Array; + example?: unknown; + key?: string; + order?: number; + required?: boolean; + title?: string; + type?: string; +}; + +export type AudioImportModelsResponse = { + created?: number; + models?: Array; + skipped?: number; +}; + +export type AudioModelCapabilities = { + config_schema?: AudioConfigSchema; + formats?: Array; + metadata?: { + [key: string]: string; + }; + pitch?: AudioParamConstraint; + speed?: AudioParamConstraint; + voices?: Array; +}; + +export type AudioModelInfo = { + capabilities?: AudioModelCapabilities; + config_schema?: AudioConfigSchema; + description?: string; + id?: string; + name?: string; + template_only?: boolean; +}; + +export type AudioParamConstraint = { + default?: number; + max?: number; + min?: number; + options?: Array; +}; + +export type AudioProviderMetaResponse = { + config_schema?: AudioConfigSchema; + default_model?: string; + default_synthesis_model?: string; + default_transcription_model?: string; + description?: string; + display_name?: string; + models?: Array; + provider?: string; + supports_synthesis_list?: boolean; + supports_transcription_list?: boolean; + synthesis_models?: Array; + transcription_models?: Array; +}; + +export type AudioSpeechModelResponse = { + config?: { + [key: string]: unknown; + }; + created_at?: string; + id?: string; + model_id?: string; + name?: string; + provider_id?: string; + provider_type?: string; + updated_at?: string; +}; + +export type AudioSpeechProviderResponse = { + client_type?: string; + config?: { + [key: string]: unknown; + }; + created_at?: string; + enable?: boolean; + icon?: string; + id?: string; + name?: string; + updated_at?: string; +}; + +export type AudioTestSynthesizeRequest = { + config?: { + [key: string]: unknown; + }; + text?: string; +}; + +export type AudioTestTranscriptionResponse = { + duration_seconds?: number; + language?: string; + metadata?: { + [key: string]: unknown; + }; + text?: string; + words?: Array; +}; + +export type AudioTranscriptionModelResponse = { + config?: { + [key: string]: unknown; + }; + created_at?: string; + id?: string; + model_id?: string; + name?: string; + provider_id?: string; + provider_type?: string; + updated_at?: string; +}; + +export type AudioTranscriptionWord = { + end?: number; + speaker_id?: string; + start?: number; + text?: string; +}; + +export type AudioUpdateSpeechModelRequest = { + config?: { + [key: string]: unknown; + }; + name?: string; +}; + +export type AudioVoiceInfo = { + id?: string; + lang?: string; + name?: string; +}; + export type BotsBot = { avatar_url?: string; check_issue_count?: number; @@ -473,7 +613,7 @@ export type ChannelChannelIdentityBinding = { updated_at?: string; }; -export type ChannelChannelType = 'telegram' | 'feishu' | 'dingtalk' | 'matrix' | 'discord' | 'qq' | 'wecom' | 'weixin' | 'wechatoa' | 'local'; +export type ChannelChannelType = 'telegram' | 'feishu' | 'dingtalk' | 'matrix' | 'discord' | 'qq' | 'wecom' | 'weixin' | 'wechatoa' | 'local' | 'slack'; export type ChannelConfigSchema = { fields?: { @@ -1354,7 +1494,7 @@ export type ModelsModelConfig = { reasoning_efforts?: Array; }; -export type ModelsModelType = 'chat' | 'embedding' | 'speech'; +export type ModelsModelType = 'chat' | 'embedding' | 'speech' | 'transcription'; export type ModelsTestResponse = { latency_ms?: number; @@ -1644,102 +1784,6 @@ export type SettingsUpsertRequest = { tts_model_id?: string; }; -export type TtsConfigSchema = { - fields?: Array; -}; - -export type TtsFieldSchema = { - advanced?: boolean; - description?: string; - enum?: Array; - example?: unknown; - key?: string; - order?: number; - required?: boolean; - title?: string; - type?: string; -}; - -export type TtsImportModelsResponse = { - created?: number; - models?: Array; - skipped?: number; -}; - -export type TtsModelCapabilities = { - config_schema?: TtsConfigSchema; - formats?: Array; - metadata?: { - [key: string]: string; - }; - pitch?: TtsParamConstraint; - speed?: TtsParamConstraint; - voices?: Array; -}; - -export type TtsModelInfo = { - capabilities?: TtsModelCapabilities; - config_schema?: TtsConfigSchema; - description?: string; - id?: string; - name?: string; -}; - -export type TtsParamConstraint = { - default?: number; - max?: number; - min?: number; - options?: Array; -}; - -export type TtsProviderMetaResponse = { - config_schema?: TtsConfigSchema; - default_model?: string; - description?: string; - display_name?: string; - models?: Array; - provider?: string; -}; - -export type TtsSpeechModelResponse = { - config?: { - [key: string]: unknown; - }; - created_at?: string; - id?: string; - model_id?: string; - name?: string; - provider_id?: string; - provider_type?: string; - updated_at?: string; -}; - -export type TtsSpeechProviderResponse = { - client_type?: string; - config?: { - [key: string]: unknown; - }; - created_at?: string; - enable?: boolean; - icon?: string; - id?: string; - name?: string; - updated_at?: string; -}; - -export type TtsTestSynthesizeRequest = { - config?: { - [key: string]: unknown; - }; - text?: string; -}; - -export type TtsVoiceInfo = { - id?: string; - lang?: string; - name?: string; -}; - export type PostAuthLoginData = { /** * Login request @@ -8224,7 +8268,7 @@ export type GetSpeechModelsResponses = { /** * OK */ - 200: Array; + 200: Array; }; export type GetSpeechModelsResponse = GetSpeechModelsResponses[keyof GetSpeechModelsResponses]; @@ -8254,11 +8298,48 @@ export type GetSpeechModelsByIdResponses = { /** * OK */ - 200: TtsSpeechModelResponse; + 200: AudioSpeechModelResponse; }; export type GetSpeechModelsByIdResponse = GetSpeechModelsByIdResponses[keyof GetSpeechModelsByIdResponses]; +export type PutSpeechModelsByIdData = { + /** + * Model update payload + */ + body: AudioUpdateSpeechModelRequest; + path: { + /** + * Model ID + */ + id: string; + }; + query?: never; + url: '/speech-models/{id}'; +}; + +export type PutSpeechModelsByIdErrors = { + /** + * Bad Request + */ + 400: HandlersErrorResponse; + /** + * Internal Server Error + */ + 500: HandlersErrorResponse; +}; + +export type PutSpeechModelsByIdError = PutSpeechModelsByIdErrors[keyof PutSpeechModelsByIdErrors]; + +export type PutSpeechModelsByIdResponses = { + /** + * OK + */ + 200: AudioSpeechModelResponse; +}; + +export type PutSpeechModelsByIdResponse = PutSpeechModelsByIdResponses[keyof PutSpeechModelsByIdResponses]; + export type GetSpeechModelsByIdCapabilitiesData = { body?: never; path: { @@ -8284,7 +8365,7 @@ export type GetSpeechModelsByIdCapabilitiesResponses = { /** * OK */ - 200: TtsModelCapabilities; + 200: AudioModelCapabilities; }; export type GetSpeechModelsByIdCapabilitiesResponse = GetSpeechModelsByIdCapabilitiesResponses[keyof GetSpeechModelsByIdCapabilitiesResponses]; @@ -8293,7 +8374,7 @@ export type PostSpeechModelsByIdTestData = { /** * Text to synthesize */ - body: TtsTestSynthesizeRequest; + body: AudioTestSynthesizeRequest; path: { /** * Model ID @@ -8344,7 +8425,7 @@ export type GetSpeechProvidersResponses = { /** * OK */ - 200: Array; + 200: Array; }; export type GetSpeechProvidersResponse = GetSpeechProvidersResponses[keyof GetSpeechProvidersResponses]; @@ -8360,7 +8441,7 @@ export type GetSpeechProvidersMetaResponses = { /** * OK */ - 200: Array; + 200: Array; }; export type GetSpeechProvidersMetaResponse = GetSpeechProvidersMetaResponses[keyof GetSpeechProvidersMetaResponses]; @@ -8394,7 +8475,7 @@ export type GetSpeechProvidersByIdResponses = { /** * OK */ - 200: TtsSpeechProviderResponse; + 200: AudioSpeechProviderResponse; }; export type GetSpeechProvidersByIdResponse = GetSpeechProvidersByIdResponses[keyof GetSpeechProvidersByIdResponses]; @@ -8432,7 +8513,7 @@ export type PostSpeechProvidersByIdImportModelsResponses = { /** * OK */ - 200: TtsImportModelsResponse; + 200: AudioImportModelsResponse; }; export type PostSpeechProvidersByIdImportModelsResponse = PostSpeechProvidersByIdImportModelsResponses[keyof PostSpeechProvidersByIdImportModelsResponses]; @@ -8466,7 +8547,7 @@ export type GetSpeechProvidersByIdModelsResponses = { /** * OK */ - 200: Array; + 200: Array; }; export type GetSpeechProvidersByIdModelsResponse = GetSpeechProvidersByIdModelsResponses[keyof GetSpeechProvidersByIdModelsResponses]; @@ -8652,6 +8733,318 @@ export type GetSupermarketTagsResponses = { export type GetSupermarketTagsResponse = GetSupermarketTagsResponses[keyof GetSupermarketTagsResponses]; +export type GetTranscriptionModelsData = { + body?: never; + path?: never; + query?: never; + url: '/transcription-models'; +}; + +export type GetTranscriptionModelsErrors = { + /** + * Internal Server Error + */ + 500: HandlersErrorResponse; +}; + +export type GetTranscriptionModelsError = GetTranscriptionModelsErrors[keyof GetTranscriptionModelsErrors]; + +export type GetTranscriptionModelsResponses = { + /** + * OK + */ + 200: Array; +}; + +export type GetTranscriptionModelsResponse = GetTranscriptionModelsResponses[keyof GetTranscriptionModelsResponses]; + +export type GetTranscriptionModelsByIdData = { + body?: never; + path: { + /** + * Model ID + */ + id: string; + }; + query?: never; + url: '/transcription-models/{id}'; +}; + +export type GetTranscriptionModelsByIdErrors = { + /** + * Not Found + */ + 404: HandlersErrorResponse; +}; + +export type GetTranscriptionModelsByIdError = GetTranscriptionModelsByIdErrors[keyof GetTranscriptionModelsByIdErrors]; + +export type GetTranscriptionModelsByIdResponses = { + /** + * OK + */ + 200: AudioTranscriptionModelResponse; +}; + +export type GetTranscriptionModelsByIdResponse = GetTranscriptionModelsByIdResponses[keyof GetTranscriptionModelsByIdResponses]; + +export type PutTranscriptionModelsByIdData = { + /** + * Model update payload + */ + body: AudioUpdateSpeechModelRequest; + path: { + /** + * Model ID + */ + id: string; + }; + query?: never; + url: '/transcription-models/{id}'; +}; + +export type PutTranscriptionModelsByIdErrors = { + /** + * Bad Request + */ + 400: HandlersErrorResponse; + /** + * Internal Server Error + */ + 500: HandlersErrorResponse; +}; + +export type PutTranscriptionModelsByIdError = PutTranscriptionModelsByIdErrors[keyof PutTranscriptionModelsByIdErrors]; + +export type PutTranscriptionModelsByIdResponses = { + /** + * OK + */ + 200: AudioTranscriptionModelResponse; +}; + +export type PutTranscriptionModelsByIdResponse = PutTranscriptionModelsByIdResponses[keyof PutTranscriptionModelsByIdResponses]; + +export type GetTranscriptionModelsByIdCapabilitiesData = { + body?: never; + path: { + /** + * Model ID + */ + id: string; + }; + query?: never; + url: '/transcription-models/{id}/capabilities'; +}; + +export type GetTranscriptionModelsByIdCapabilitiesErrors = { + /** + * Not Found + */ + 404: HandlersErrorResponse; +}; + +export type GetTranscriptionModelsByIdCapabilitiesError = GetTranscriptionModelsByIdCapabilitiesErrors[keyof GetTranscriptionModelsByIdCapabilitiesErrors]; + +export type GetTranscriptionModelsByIdCapabilitiesResponses = { + /** + * OK + */ + 200: AudioModelCapabilities; +}; + +export type GetTranscriptionModelsByIdCapabilitiesResponse = GetTranscriptionModelsByIdCapabilitiesResponses[keyof GetTranscriptionModelsByIdCapabilitiesResponses]; + +export type PostTranscriptionModelsByIdTestData = { + body: { + /** + * Audio file + */ + file: Blob | File; + /** + * Optional JSON config + */ + config?: string; + }; + path: { + /** + * Model ID + */ + id: string; + }; + query?: never; + url: '/transcription-models/{id}/test'; +}; + +export type PostTranscriptionModelsByIdTestErrors = { + /** + * Bad Request + */ + 400: HandlersErrorResponse; + /** + * Internal Server Error + */ + 500: HandlersErrorResponse; +}; + +export type PostTranscriptionModelsByIdTestError = PostTranscriptionModelsByIdTestErrors[keyof PostTranscriptionModelsByIdTestErrors]; + +export type PostTranscriptionModelsByIdTestResponses = { + /** + * OK + */ + 200: AudioTestTranscriptionResponse; +}; + +export type PostTranscriptionModelsByIdTestResponse = PostTranscriptionModelsByIdTestResponses[keyof PostTranscriptionModelsByIdTestResponses]; + +export type GetTranscriptionProvidersData = { + body?: never; + path?: never; + query?: never; + url: '/transcription-providers'; +}; + +export type GetTranscriptionProvidersErrors = { + /** + * Internal Server Error + */ + 500: HandlersErrorResponse; +}; + +export type GetTranscriptionProvidersError = GetTranscriptionProvidersErrors[keyof GetTranscriptionProvidersErrors]; + +export type GetTranscriptionProvidersResponses = { + /** + * OK + */ + 200: Array; +}; + +export type GetTranscriptionProvidersResponse = GetTranscriptionProvidersResponses[keyof GetTranscriptionProvidersResponses]; + +export type GetTranscriptionProvidersMetaData = { + body?: never; + path?: never; + query?: never; + url: '/transcription-providers/meta'; +}; + +export type GetTranscriptionProvidersMetaResponses = { + /** + * OK + */ + 200: Array; +}; + +export type GetTranscriptionProvidersMetaResponse = GetTranscriptionProvidersMetaResponses[keyof GetTranscriptionProvidersMetaResponses]; + +export type GetTranscriptionProvidersByIdData = { + body?: never; + path: { + /** + * Provider ID (UUID) + */ + id: string; + }; + query?: never; + url: '/transcription-providers/{id}'; +}; + +export type GetTranscriptionProvidersByIdErrors = { + /** + * Bad Request + */ + 400: HandlersErrorResponse; + /** + * Not Found + */ + 404: HandlersErrorResponse; +}; + +export type GetTranscriptionProvidersByIdError = GetTranscriptionProvidersByIdErrors[keyof GetTranscriptionProvidersByIdErrors]; + +export type GetTranscriptionProvidersByIdResponses = { + /** + * OK + */ + 200: AudioSpeechProviderResponse; +}; + +export type GetTranscriptionProvidersByIdResponse = GetTranscriptionProvidersByIdResponses[keyof GetTranscriptionProvidersByIdResponses]; + +export type PostTranscriptionProvidersByIdImportModelsData = { + body?: never; + path: { + /** + * Provider ID (UUID) + */ + id: string; + }; + query?: never; + url: '/transcription-providers/{id}/import-models'; +}; + +export type PostTranscriptionProvidersByIdImportModelsErrors = { + /** + * Bad Request + */ + 400: HandlersErrorResponse; + /** + * Not Found + */ + 404: HandlersErrorResponse; + /** + * Internal Server Error + */ + 500: HandlersErrorResponse; +}; + +export type PostTranscriptionProvidersByIdImportModelsError = PostTranscriptionProvidersByIdImportModelsErrors[keyof PostTranscriptionProvidersByIdImportModelsErrors]; + +export type PostTranscriptionProvidersByIdImportModelsResponses = { + /** + * OK + */ + 200: AudioImportModelsResponse; +}; + +export type PostTranscriptionProvidersByIdImportModelsResponse = PostTranscriptionProvidersByIdImportModelsResponses[keyof PostTranscriptionProvidersByIdImportModelsResponses]; + +export type GetTranscriptionProvidersByIdModelsData = { + body?: never; + path: { + /** + * Provider ID (UUID) + */ + id: string; + }; + query?: never; + url: '/transcription-providers/{id}/models'; +}; + +export type GetTranscriptionProvidersByIdModelsErrors = { + /** + * Bad Request + */ + 400: HandlersErrorResponse; + /** + * Internal Server Error + */ + 500: HandlersErrorResponse; +}; + +export type GetTranscriptionProvidersByIdModelsError = GetTranscriptionProvidersByIdModelsErrors[keyof GetTranscriptionProvidersByIdModelsErrors]; + +export type GetTranscriptionProvidersByIdModelsResponses = { + /** + * OK + */ + 200: Array; +}; + +export type GetTranscriptionProvidersByIdModelsResponse = GetTranscriptionProvidersByIdModelsResponses[keyof GetTranscriptionProvidersByIdModelsResponses]; + export type GetUsersData = { body?: never; path?: never; diff --git a/spec/docs.go b/spec/docs.go index abcf1ee5..4c4ff6c5 100644 --- a/spec/docs.go +++ b/spec/docs.go @@ -7914,7 +7914,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.SpeechModelResponse" + "$ref": "#/definitions/audio.SpeechModelResponse" } } }, @@ -7949,7 +7949,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.SpeechModelResponse" + "$ref": "#/definitions/audio.SpeechModelResponse" } }, "404": { @@ -7959,6 +7959,56 @@ const docTemplate = `{ } } } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "speech-models" + ], + "summary": "Update a speech model", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "Model update payload", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/audio.UpdateSpeechModelRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.SpeechModelResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } } }, "/speech-models/{id}/capabilities": { @@ -7983,7 +8033,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.ModelCapabilities" + "$ref": "#/definitions/audio.ModelCapabilities" } }, "404": { @@ -8022,7 +8072,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/tts.TestSynthesizeRequest" + "$ref": "#/definitions/audio.TestSynthesizeRequest" } } ], @@ -8064,7 +8114,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.SpeechProviderResponse" + "$ref": "#/definitions/audio.SpeechProviderResponse" } } }, @@ -8090,7 +8140,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.ProviderMetaResponse" + "$ref": "#/definitions/audio.ProviderMetaResponse" } } } @@ -8120,7 +8170,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.SpeechProviderResponse" + "$ref": "#/definitions/audio.SpeechProviderResponse" } }, "400": { @@ -8164,7 +8214,7 @@ const docTemplate = `{ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.ImportModelsResponse" + "$ref": "#/definitions/audio.ImportModelsResponse" } }, "400": { @@ -8213,7 +8263,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.SpeechModelResponse" + "$ref": "#/definitions/audio.SpeechModelResponse" } } }, @@ -8430,6 +8480,394 @@ const docTemplate = `{ } } }, + "/transcription-models": { + "get": { + "description": "List all models of type 'transcription' (filtered view of unified models table)", + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "List all transcription models", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-models/{id}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Get a transcription model", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Update a transcription model", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "Model update payload", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/audio.UpdateSpeechModelRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-models/{id}/capabilities": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Get transcription model capabilities", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.ModelCapabilities" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-models/{id}/test": { + "post": { + "description": "Transcribe uploaded audio using a specific model's config and return structured text output", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Test transcription model recognition", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + }, + { + "type": "file", + "description": "Audio file", + "name": "file", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "Optional JSON config", + "name": "config", + "in": "formData" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.TestTranscriptionResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers": { + "get": { + "description": "List providers that support transcription (filtered view of unified providers table)", + "produces": [ + "application/json" + ], + "tags": [ + "transcription-providers" + ], + "summary": "List transcription providers", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.SpeechProviderResponse" + } + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers/meta": { + "get": { + "description": "List available transcription provider types with their models and capabilities", + "tags": [ + "transcription-providers" + ], + "summary": "List transcription provider metadata", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ProviderMetaResponse" + } + } + } + } + } + }, + "/transcription-providers/{id}": { + "get": { + "description": "Get a speech provider with masked config values", + "produces": [ + "application/json" + ], + "tags": [ + "speech-providers" + ], + "summary": "Get speech provider", + "parameters": [ + { + "type": "string", + "description": "Provider ID (UUID)", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.SpeechProviderResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers/{id}/import-models": { + "post": { + "description": "Fetch models using the configured transcription provider and import them into the unified models table", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "transcription-providers" + ], + "summary": "Import transcription models from provider", + "parameters": [ + { + "type": "string", + "description": "Provider ID (UUID)", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.ImportModelsResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers/{id}/models": { + "get": { + "description": "List models of type 'transcription' for a specific transcription provider", + "produces": [ + "application/json" + ], + "tags": [ + "transcription-providers" + ], + "summary": "List transcription models by provider", + "parameters": [ + { + "type": "string", + "description": "Provider ID (UUID)", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, "/users": { "get": { "description": "List users", @@ -9649,6 +10087,361 @@ const docTemplate = `{ } } }, + "audio.ConfigSchema": { + "type": "object", + "properties": { + "fields": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.FieldSchema" + } + } + } + }, + "audio.FieldSchema": { + "type": "object", + "properties": { + "advanced": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "enum": { + "type": "array", + "items": { + "type": "string" + } + }, + "example": {}, + "key": { + "type": "string" + }, + "order": { + "type": "integer" + }, + "required": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "audio.ImportModelsResponse": { + "type": "object", + "properties": { + "created": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "type": "string" + } + }, + "skipped": { + "type": "integer" + } + } + }, + "audio.ModelCapabilities": { + "type": "object", + "properties": { + "config_schema": { + "$ref": "#/definitions/audio.ConfigSchema" + }, + "formats": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "pitch": { + "$ref": "#/definitions/audio.ParamConstraint" + }, + "speed": { + "$ref": "#/definitions/audio.ParamConstraint" + }, + "voices": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.VoiceInfo" + } + } + } + }, + "audio.ModelInfo": { + "type": "object", + "properties": { + "capabilities": { + "$ref": "#/definitions/audio.ModelCapabilities" + }, + "config_schema": { + "$ref": "#/definitions/audio.ConfigSchema" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "template_only": { + "type": "boolean" + } + } + }, + "audio.ParamConstraint": { + "type": "object", + "properties": { + "default": { + "type": "number" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + }, + "options": { + "type": "array", + "items": { + "type": "number" + } + } + } + }, + "audio.ProviderMetaResponse": { + "type": "object", + "properties": { + "config_schema": { + "$ref": "#/definitions/audio.ConfigSchema" + }, + "default_model": { + "type": "string" + }, + "default_synthesis_model": { + "type": "string" + }, + "default_transcription_model": { + "type": "string" + }, + "description": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ModelInfo" + } + }, + "provider": { + "type": "string" + }, + "supports_synthesis_list": { + "type": "boolean" + }, + "supports_transcription_list": { + "type": "boolean" + }, + "synthesis_models": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ModelInfo" + } + }, + "transcription_models": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ModelInfo" + } + } + } + }, + "audio.SpeechModelResponse": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "created_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "provider_id": { + "type": "string" + }, + "provider_type": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "audio.SpeechProviderResponse": { + "type": "object", + "properties": { + "client_type": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": {} + }, + "created_at": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "icon": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "audio.TestSynthesizeRequest": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "text": { + "type": "string" + } + } + }, + "audio.TestTranscriptionResponse": { + "type": "object", + "properties": { + "duration_seconds": { + "type": "number" + }, + "language": { + "type": "string" + }, + "metadata": { + "type": "object", + "additionalProperties": {} + }, + "text": { + "type": "string" + }, + "words": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.TranscriptionWord" + } + } + } + }, + "audio.TranscriptionModelResponse": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "created_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "provider_id": { + "type": "string" + }, + "provider_type": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "audio.TranscriptionWord": { + "type": "object", + "properties": { + "end": { + "type": "number" + }, + "speaker_id": { + "type": "string" + }, + "start": { + "type": "number" + }, + "text": { + "type": "string" + } + } + }, + "audio.UpdateSpeechModelRequest": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "name": { + "type": "string" + } + } + }, + "audio.VoiceInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "lang": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, "bots.Bot": { "type": "object", "properties": { @@ -10068,7 +10861,8 @@ const docTemplate = `{ "wecom", "weixin", "wechatoa", - "local" + "local", + "slack" ], "x-enum-varnames": [ "ChannelTypeTelegram", @@ -10080,7 +10874,8 @@ const docTemplate = `{ "ChannelTypeWecom", "ChannelTypeWeixin", "ChannelTypeWeChatOA", - "ChannelTypeLocal" + "ChannelTypeLocal", + "ChannelTypeSlack" ] }, "channel.ConfigSchema": { @@ -12323,12 +13118,14 @@ const docTemplate = `{ "enum": [ "chat", "embedding", - "speech" + "speech", + "transcription" ], "x-enum-varnames": [ "ModelTypeChat", "ModelTypeEmbedding", - "ModelTypeSpeech" + "ModelTypeSpeech", + "ModelTypeTranscription" ] }, "models.TestResponse": { @@ -12992,6 +13789,9 @@ const docTemplate = `{ "title_model_id": { "type": "string" }, + "transcription_model_id": { + "type": "string" + }, "tts_model_id": { "type": "string" } @@ -13060,255 +13860,13 @@ const docTemplate = `{ "title_model_id": { "type": "string" }, + "transcription_model_id": { + "type": "string" + }, "tts_model_id": { "type": "string" } } - }, - "tts.ConfigSchema": { - "type": "object", - "properties": { - "fields": { - "type": "array", - "items": { - "$ref": "#/definitions/tts.FieldSchema" - } - } - } - }, - "tts.FieldSchema": { - "type": "object", - "properties": { - "advanced": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - } - }, - "example": {}, - "key": { - "type": "string" - }, - "order": { - "type": "integer" - }, - "required": { - "type": "boolean" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "tts.ImportModelsResponse": { - "type": "object", - "properties": { - "created": { - "type": "integer" - }, - "models": { - "type": "array", - "items": { - "type": "string" - } - }, - "skipped": { - "type": "integer" - } - } - }, - "tts.ModelCapabilities": { - "type": "object", - "properties": { - "config_schema": { - "$ref": "#/definitions/tts.ConfigSchema" - }, - "formats": { - "type": "array", - "items": { - "type": "string" - } - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "pitch": { - "$ref": "#/definitions/tts.ParamConstraint" - }, - "speed": { - "$ref": "#/definitions/tts.ParamConstraint" - }, - "voices": { - "type": "array", - "items": { - "$ref": "#/definitions/tts.VoiceInfo" - } - } - } - }, - "tts.ModelInfo": { - "type": "object", - "properties": { - "capabilities": { - "$ref": "#/definitions/tts.ModelCapabilities" - }, - "config_schema": { - "$ref": "#/definitions/tts.ConfigSchema" - }, - "description": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "tts.ParamConstraint": { - "type": "object", - "properties": { - "default": { - "type": "number" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "options": { - "type": "array", - "items": { - "type": "number" - } - } - } - }, - "tts.ProviderMetaResponse": { - "type": "object", - "properties": { - "config_schema": { - "$ref": "#/definitions/tts.ConfigSchema" - }, - "default_model": { - "type": "string" - }, - "description": { - "type": "string" - }, - "display_name": { - "type": "string" - }, - "models": { - "type": "array", - "items": { - "$ref": "#/definitions/tts.ModelInfo" - } - }, - "provider": { - "type": "string" - } - } - }, - "tts.SpeechModelResponse": { - "type": "object", - "properties": { - "config": { - "type": "object", - "additionalProperties": {} - }, - "created_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "model_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "provider_id": { - "type": "string" - }, - "provider_type": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - } - }, - "tts.SpeechProviderResponse": { - "type": "object", - "properties": { - "client_type": { - "type": "string" - }, - "config": { - "type": "object", - "additionalProperties": {} - }, - "created_at": { - "type": "string" - }, - "enable": { - "type": "boolean" - }, - "icon": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - } - }, - "tts.TestSynthesizeRequest": { - "type": "object", - "properties": { - "config": { - "type": "object", - "additionalProperties": {} - }, - "text": { - "type": "string" - } - } - }, - "tts.VoiceInfo": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "lang": { - "type": "string" - }, - "name": { - "type": "string" - } - } } } }` diff --git a/spec/swagger.json b/spec/swagger.json index 4b994a4a..4c333ab8 100644 --- a/spec/swagger.json +++ b/spec/swagger.json @@ -7905,7 +7905,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.SpeechModelResponse" + "$ref": "#/definitions/audio.SpeechModelResponse" } } }, @@ -7940,7 +7940,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.SpeechModelResponse" + "$ref": "#/definitions/audio.SpeechModelResponse" } }, "404": { @@ -7950,6 +7950,56 @@ } } } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "speech-models" + ], + "summary": "Update a speech model", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "Model update payload", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/audio.UpdateSpeechModelRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.SpeechModelResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } } }, "/speech-models/{id}/capabilities": { @@ -7974,7 +8024,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.ModelCapabilities" + "$ref": "#/definitions/audio.ModelCapabilities" } }, "404": { @@ -8013,7 +8063,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/tts.TestSynthesizeRequest" + "$ref": "#/definitions/audio.TestSynthesizeRequest" } } ], @@ -8055,7 +8105,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.SpeechProviderResponse" + "$ref": "#/definitions/audio.SpeechProviderResponse" } } }, @@ -8081,7 +8131,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.ProviderMetaResponse" + "$ref": "#/definitions/audio.ProviderMetaResponse" } } } @@ -8111,7 +8161,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.SpeechProviderResponse" + "$ref": "#/definitions/audio.SpeechProviderResponse" } }, "400": { @@ -8155,7 +8205,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/tts.ImportModelsResponse" + "$ref": "#/definitions/audio.ImportModelsResponse" } }, "400": { @@ -8204,7 +8254,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/tts.SpeechModelResponse" + "$ref": "#/definitions/audio.SpeechModelResponse" } } }, @@ -8421,6 +8471,394 @@ } } }, + "/transcription-models": { + "get": { + "description": "List all models of type 'transcription' (filtered view of unified models table)", + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "List all transcription models", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-models/{id}": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Get a transcription model", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + }, + "put": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Update a transcription model", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + }, + { + "description": "Model update payload", + "name": "request", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/audio.UpdateSpeechModelRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-models/{id}/capabilities": { + "get": { + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Get transcription model capabilities", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.ModelCapabilities" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-models/{id}/test": { + "post": { + "description": "Transcribe uploaded audio using a specific model's config and return structured text output", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "application/json" + ], + "tags": [ + "transcription-models" + ], + "summary": "Test transcription model recognition", + "parameters": [ + { + "type": "string", + "description": "Model ID", + "name": "id", + "in": "path", + "required": true + }, + { + "type": "file", + "description": "Audio file", + "name": "file", + "in": "formData", + "required": true + }, + { + "type": "string", + "description": "Optional JSON config", + "name": "config", + "in": "formData" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.TestTranscriptionResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers": { + "get": { + "description": "List providers that support transcription (filtered view of unified providers table)", + "produces": [ + "application/json" + ], + "tags": [ + "transcription-providers" + ], + "summary": "List transcription providers", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.SpeechProviderResponse" + } + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers/meta": { + "get": { + "description": "List available transcription provider types with their models and capabilities", + "tags": [ + "transcription-providers" + ], + "summary": "List transcription provider metadata", + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ProviderMetaResponse" + } + } + } + } + } + }, + "/transcription-providers/{id}": { + "get": { + "description": "Get a speech provider with masked config values", + "produces": [ + "application/json" + ], + "tags": [ + "speech-providers" + ], + "summary": "Get speech provider", + "parameters": [ + { + "type": "string", + "description": "Provider ID (UUID)", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.SpeechProviderResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers/{id}/import-models": { + "post": { + "description": "Fetch models using the configured transcription provider and import them into the unified models table", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "tags": [ + "transcription-providers" + ], + "summary": "Import transcription models from provider", + "parameters": [ + { + "type": "string", + "description": "Provider ID (UUID)", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/audio.ImportModelsResponse" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, + "/transcription-providers/{id}/models": { + "get": { + "description": "List models of type 'transcription' for a specific transcription provider", + "produces": [ + "application/json" + ], + "tags": [ + "transcription-providers" + ], + "summary": "List transcription models by provider", + "parameters": [ + { + "type": "string", + "description": "Provider ID (UUID)", + "name": "id", + "in": "path", + "required": true + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.TranscriptionModelResponse" + } + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "$ref": "#/definitions/handlers.ErrorResponse" + } + } + } + } + }, "/users": { "get": { "description": "List users", @@ -9640,6 +10078,361 @@ } } }, + "audio.ConfigSchema": { + "type": "object", + "properties": { + "fields": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.FieldSchema" + } + } + } + }, + "audio.FieldSchema": { + "type": "object", + "properties": { + "advanced": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "enum": { + "type": "array", + "items": { + "type": "string" + } + }, + "example": {}, + "key": { + "type": "string" + }, + "order": { + "type": "integer" + }, + "required": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "audio.ImportModelsResponse": { + "type": "object", + "properties": { + "created": { + "type": "integer" + }, + "models": { + "type": "array", + "items": { + "type": "string" + } + }, + "skipped": { + "type": "integer" + } + } + }, + "audio.ModelCapabilities": { + "type": "object", + "properties": { + "config_schema": { + "$ref": "#/definitions/audio.ConfigSchema" + }, + "formats": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "pitch": { + "$ref": "#/definitions/audio.ParamConstraint" + }, + "speed": { + "$ref": "#/definitions/audio.ParamConstraint" + }, + "voices": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.VoiceInfo" + } + } + } + }, + "audio.ModelInfo": { + "type": "object", + "properties": { + "capabilities": { + "$ref": "#/definitions/audio.ModelCapabilities" + }, + "config_schema": { + "$ref": "#/definitions/audio.ConfigSchema" + }, + "description": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "template_only": { + "type": "boolean" + } + } + }, + "audio.ParamConstraint": { + "type": "object", + "properties": { + "default": { + "type": "number" + }, + "max": { + "type": "number" + }, + "min": { + "type": "number" + }, + "options": { + "type": "array", + "items": { + "type": "number" + } + } + } + }, + "audio.ProviderMetaResponse": { + "type": "object", + "properties": { + "config_schema": { + "$ref": "#/definitions/audio.ConfigSchema" + }, + "default_model": { + "type": "string" + }, + "default_synthesis_model": { + "type": "string" + }, + "default_transcription_model": { + "type": "string" + }, + "description": { + "type": "string" + }, + "display_name": { + "type": "string" + }, + "models": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ModelInfo" + } + }, + "provider": { + "type": "string" + }, + "supports_synthesis_list": { + "type": "boolean" + }, + "supports_transcription_list": { + "type": "boolean" + }, + "synthesis_models": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ModelInfo" + } + }, + "transcription_models": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.ModelInfo" + } + } + } + }, + "audio.SpeechModelResponse": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "created_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "provider_id": { + "type": "string" + }, + "provider_type": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "audio.SpeechProviderResponse": { + "type": "object", + "properties": { + "client_type": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": {} + }, + "created_at": { + "type": "string" + }, + "enable": { + "type": "boolean" + }, + "icon": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "audio.TestSynthesizeRequest": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "text": { + "type": "string" + } + } + }, + "audio.TestTranscriptionResponse": { + "type": "object", + "properties": { + "duration_seconds": { + "type": "number" + }, + "language": { + "type": "string" + }, + "metadata": { + "type": "object", + "additionalProperties": {} + }, + "text": { + "type": "string" + }, + "words": { + "type": "array", + "items": { + "$ref": "#/definitions/audio.TranscriptionWord" + } + } + } + }, + "audio.TranscriptionModelResponse": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "created_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "model_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "provider_id": { + "type": "string" + }, + "provider_type": { + "type": "string" + }, + "updated_at": { + "type": "string" + } + } + }, + "audio.TranscriptionWord": { + "type": "object", + "properties": { + "end": { + "type": "number" + }, + "speaker_id": { + "type": "string" + }, + "start": { + "type": "number" + }, + "text": { + "type": "string" + } + } + }, + "audio.UpdateSpeechModelRequest": { + "type": "object", + "properties": { + "config": { + "type": "object", + "additionalProperties": {} + }, + "name": { + "type": "string" + } + } + }, + "audio.VoiceInfo": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "lang": { + "type": "string" + }, + "name": { + "type": "string" + } + } + }, "bots.Bot": { "type": "object", "properties": { @@ -10059,7 +10852,8 @@ "wecom", "weixin", "wechatoa", - "local" + "local", + "slack" ], "x-enum-varnames": [ "ChannelTypeTelegram", @@ -10071,7 +10865,8 @@ "ChannelTypeWecom", "ChannelTypeWeixin", "ChannelTypeWeChatOA", - "ChannelTypeLocal" + "ChannelTypeLocal", + "ChannelTypeSlack" ] }, "channel.ConfigSchema": { @@ -12314,12 +13109,14 @@ "enum": [ "chat", "embedding", - "speech" + "speech", + "transcription" ], "x-enum-varnames": [ "ModelTypeChat", "ModelTypeEmbedding", - "ModelTypeSpeech" + "ModelTypeSpeech", + "ModelTypeTranscription" ] }, "models.TestResponse": { @@ -12983,6 +13780,9 @@ "title_model_id": { "type": "string" }, + "transcription_model_id": { + "type": "string" + }, "tts_model_id": { "type": "string" } @@ -13051,255 +13851,13 @@ "title_model_id": { "type": "string" }, + "transcription_model_id": { + "type": "string" + }, "tts_model_id": { "type": "string" } } - }, - "tts.ConfigSchema": { - "type": "object", - "properties": { - "fields": { - "type": "array", - "items": { - "$ref": "#/definitions/tts.FieldSchema" - } - } - } - }, - "tts.FieldSchema": { - "type": "object", - "properties": { - "advanced": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "enum": { - "type": "array", - "items": { - "type": "string" - } - }, - "example": {}, - "key": { - "type": "string" - }, - "order": { - "type": "integer" - }, - "required": { - "type": "boolean" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "tts.ImportModelsResponse": { - "type": "object", - "properties": { - "created": { - "type": "integer" - }, - "models": { - "type": "array", - "items": { - "type": "string" - } - }, - "skipped": { - "type": "integer" - } - } - }, - "tts.ModelCapabilities": { - "type": "object", - "properties": { - "config_schema": { - "$ref": "#/definitions/tts.ConfigSchema" - }, - "formats": { - "type": "array", - "items": { - "type": "string" - } - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "pitch": { - "$ref": "#/definitions/tts.ParamConstraint" - }, - "speed": { - "$ref": "#/definitions/tts.ParamConstraint" - }, - "voices": { - "type": "array", - "items": { - "$ref": "#/definitions/tts.VoiceInfo" - } - } - } - }, - "tts.ModelInfo": { - "type": "object", - "properties": { - "capabilities": { - "$ref": "#/definitions/tts.ModelCapabilities" - }, - "config_schema": { - "$ref": "#/definitions/tts.ConfigSchema" - }, - "description": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - } - }, - "tts.ParamConstraint": { - "type": "object", - "properties": { - "default": { - "type": "number" - }, - "max": { - "type": "number" - }, - "min": { - "type": "number" - }, - "options": { - "type": "array", - "items": { - "type": "number" - } - } - } - }, - "tts.ProviderMetaResponse": { - "type": "object", - "properties": { - "config_schema": { - "$ref": "#/definitions/tts.ConfigSchema" - }, - "default_model": { - "type": "string" - }, - "description": { - "type": "string" - }, - "display_name": { - "type": "string" - }, - "models": { - "type": "array", - "items": { - "$ref": "#/definitions/tts.ModelInfo" - } - }, - "provider": { - "type": "string" - } - } - }, - "tts.SpeechModelResponse": { - "type": "object", - "properties": { - "config": { - "type": "object", - "additionalProperties": {} - }, - "created_at": { - "type": "string" - }, - "id": { - "type": "string" - }, - "model_id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "provider_id": { - "type": "string" - }, - "provider_type": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - } - }, - "tts.SpeechProviderResponse": { - "type": "object", - "properties": { - "client_type": { - "type": "string" - }, - "config": { - "type": "object", - "additionalProperties": {} - }, - "created_at": { - "type": "string" - }, - "enable": { - "type": "boolean" - }, - "icon": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "updated_at": { - "type": "string" - } - } - }, - "tts.TestSynthesizeRequest": { - "type": "object", - "properties": { - "config": { - "type": "object", - "additionalProperties": {} - }, - "text": { - "type": "string" - } - } - }, - "tts.VoiceInfo": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "lang": { - "type": "string" - }, - "name": { - "type": "string" - } - } } } } \ No newline at end of file diff --git a/spec/swagger.yaml b/spec/swagger.yaml index 05b86a1c..38de73fe 100644 --- a/spec/swagger.yaml +++ b/spec/swagger.yaml @@ -489,6 +489,240 @@ definitions: total_text_bytes: type: integer type: object + audio.ConfigSchema: + properties: + fields: + items: + $ref: '#/definitions/audio.FieldSchema' + type: array + type: object + audio.FieldSchema: + properties: + advanced: + type: boolean + description: + type: string + enum: + items: + type: string + type: array + example: {} + key: + type: string + order: + type: integer + required: + type: boolean + title: + type: string + type: + type: string + type: object + audio.ImportModelsResponse: + properties: + created: + type: integer + models: + items: + type: string + type: array + skipped: + type: integer + type: object + audio.ModelCapabilities: + properties: + config_schema: + $ref: '#/definitions/audio.ConfigSchema' + formats: + items: + type: string + type: array + metadata: + additionalProperties: + type: string + type: object + pitch: + $ref: '#/definitions/audio.ParamConstraint' + speed: + $ref: '#/definitions/audio.ParamConstraint' + voices: + items: + $ref: '#/definitions/audio.VoiceInfo' + type: array + type: object + audio.ModelInfo: + properties: + capabilities: + $ref: '#/definitions/audio.ModelCapabilities' + config_schema: + $ref: '#/definitions/audio.ConfigSchema' + description: + type: string + id: + type: string + name: + type: string + template_only: + type: boolean + type: object + audio.ParamConstraint: + properties: + default: + type: number + max: + type: number + min: + type: number + options: + items: + type: number + type: array + type: object + audio.ProviderMetaResponse: + properties: + config_schema: + $ref: '#/definitions/audio.ConfigSchema' + default_model: + type: string + default_synthesis_model: + type: string + default_transcription_model: + type: string + description: + type: string + display_name: + type: string + models: + items: + $ref: '#/definitions/audio.ModelInfo' + type: array + provider: + type: string + supports_synthesis_list: + type: boolean + supports_transcription_list: + type: boolean + synthesis_models: + items: + $ref: '#/definitions/audio.ModelInfo' + type: array + transcription_models: + items: + $ref: '#/definitions/audio.ModelInfo' + type: array + type: object + audio.SpeechModelResponse: + properties: + config: + additionalProperties: {} + type: object + created_at: + type: string + id: + type: string + model_id: + type: string + name: + type: string + provider_id: + type: string + provider_type: + type: string + updated_at: + type: string + type: object + audio.SpeechProviderResponse: + properties: + client_type: + type: string + config: + additionalProperties: {} + type: object + created_at: + type: string + enable: + type: boolean + icon: + type: string + id: + type: string + name: + type: string + updated_at: + type: string + type: object + audio.TestSynthesizeRequest: + properties: + config: + additionalProperties: {} + type: object + text: + type: string + type: object + audio.TestTranscriptionResponse: + properties: + duration_seconds: + type: number + language: + type: string + metadata: + additionalProperties: {} + type: object + text: + type: string + words: + items: + $ref: '#/definitions/audio.TranscriptionWord' + type: array + type: object + audio.TranscriptionModelResponse: + properties: + config: + additionalProperties: {} + type: object + created_at: + type: string + id: + type: string + model_id: + type: string + name: + type: string + provider_id: + type: string + provider_type: + type: string + updated_at: + type: string + type: object + audio.TranscriptionWord: + properties: + end: + type: number + speaker_id: + type: string + start: + type: number + text: + type: string + type: object + audio.UpdateSpeechModelRequest: + properties: + config: + additionalProperties: {} + type: object + name: + type: string + type: object + audio.VoiceInfo: + properties: + id: + type: string + lang: + type: string + name: + type: string + type: object bots.Bot: properties: avatar_url: @@ -774,6 +1008,7 @@ definitions: - weixin - wechatoa - local + - slack type: string x-enum-varnames: - ChannelTypeTelegram @@ -786,6 +1021,7 @@ definitions: - ChannelTypeWeixin - ChannelTypeWeChatOA - ChannelTypeLocal + - ChannelTypeSlack channel.ConfigSchema: properties: fields: @@ -2262,11 +2498,13 @@ definitions: - chat - embedding - speech + - transcription type: string x-enum-varnames: - ModelTypeChat - ModelTypeEmbedding - ModelTypeSpeech + - ModelTypeTranscription models.TestResponse: properties: latency_ms: @@ -2713,6 +2951,8 @@ definitions: type: string title_model_id: type: string + transcription_model_id: + type: string tts_model_id: type: string type: object @@ -2758,170 +2998,11 @@ definitions: type: string title_model_id: type: string + transcription_model_id: + type: string tts_model_id: type: string type: object - tts.ConfigSchema: - properties: - fields: - items: - $ref: '#/definitions/tts.FieldSchema' - type: array - type: object - tts.FieldSchema: - properties: - advanced: - type: boolean - description: - type: string - enum: - items: - type: string - type: array - example: {} - key: - type: string - order: - type: integer - required: - type: boolean - title: - type: string - type: - type: string - type: object - tts.ImportModelsResponse: - properties: - created: - type: integer - models: - items: - type: string - type: array - skipped: - type: integer - type: object - tts.ModelCapabilities: - properties: - config_schema: - $ref: '#/definitions/tts.ConfigSchema' - formats: - items: - type: string - type: array - metadata: - additionalProperties: - type: string - type: object - pitch: - $ref: '#/definitions/tts.ParamConstraint' - speed: - $ref: '#/definitions/tts.ParamConstraint' - voices: - items: - $ref: '#/definitions/tts.VoiceInfo' - type: array - type: object - tts.ModelInfo: - properties: - capabilities: - $ref: '#/definitions/tts.ModelCapabilities' - config_schema: - $ref: '#/definitions/tts.ConfigSchema' - description: - type: string - id: - type: string - name: - type: string - type: object - tts.ParamConstraint: - properties: - default: - type: number - max: - type: number - min: - type: number - options: - items: - type: number - type: array - type: object - tts.ProviderMetaResponse: - properties: - config_schema: - $ref: '#/definitions/tts.ConfigSchema' - default_model: - type: string - description: - type: string - display_name: - type: string - models: - items: - $ref: '#/definitions/tts.ModelInfo' - type: array - provider: - type: string - type: object - tts.SpeechModelResponse: - properties: - config: - additionalProperties: {} - type: object - created_at: - type: string - id: - type: string - model_id: - type: string - name: - type: string - provider_id: - type: string - provider_type: - type: string - updated_at: - type: string - type: object - tts.SpeechProviderResponse: - properties: - client_type: - type: string - config: - additionalProperties: {} - type: object - created_at: - type: string - enable: - type: boolean - icon: - type: string - id: - type: string - name: - type: string - updated_at: - type: string - type: object - tts.TestSynthesizeRequest: - properties: - config: - additionalProperties: {} - type: object - text: - type: string - type: object - tts.VoiceInfo: - properties: - id: - type: string - lang: - type: string - name: - type: string - type: object info: contact: {} title: Memoh API @@ -8176,7 +8257,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/tts.SpeechModelResponse' + $ref: '#/definitions/audio.SpeechModelResponse' type: array "500": description: Internal Server Error @@ -8199,7 +8280,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/tts.SpeechModelResponse' + $ref: '#/definitions/audio.SpeechModelResponse' "404": description: Not Found schema: @@ -8207,6 +8288,39 @@ paths: summary: Get a speech model tags: - speech-models + put: + consumes: + - application/json + parameters: + - description: Model ID + in: path + name: id + required: true + type: string + - description: Model update payload + in: body + name: request + required: true + schema: + $ref: '#/definitions/audio.UpdateSpeechModelRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/audio.SpeechModelResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/handlers.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: Update a speech model + tags: + - speech-models /speech-models/{id}/capabilities: get: parameters: @@ -8221,7 +8335,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/tts.ModelCapabilities' + $ref: '#/definitions/audio.ModelCapabilities' "404": description: Not Found schema: @@ -8245,7 +8359,7 @@ paths: name: request required: true schema: - $ref: '#/definitions/tts.TestSynthesizeRequest' + $ref: '#/definitions/audio.TestSynthesizeRequest' produces: - application/octet-stream responses: @@ -8275,7 +8389,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/tts.SpeechProviderResponse' + $ref: '#/definitions/audio.SpeechProviderResponse' type: array "500": description: Internal Server Error @@ -8299,7 +8413,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/tts.SpeechProviderResponse' + $ref: '#/definitions/audio.SpeechProviderResponse' "400": description: Bad Request schema: @@ -8329,7 +8443,7 @@ paths: "200": description: OK schema: - $ref: '#/definitions/tts.ImportModelsResponse' + $ref: '#/definitions/audio.ImportModelsResponse' "400": description: Bad Request schema: @@ -8361,7 +8475,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/tts.SpeechModelResponse' + $ref: '#/definitions/audio.SpeechModelResponse' type: array "400": description: Bad Request @@ -8382,7 +8496,7 @@ paths: description: OK schema: items: - $ref: '#/definitions/tts.ProviderMetaResponse' + $ref: '#/definitions/audio.ProviderMetaResponse' type: array summary: List speech provider metadata tags: @@ -8515,6 +8629,267 @@ paths: summary: List all tags from supermarket tags: - supermarket + /transcription-models: + get: + description: List all models of type 'transcription' (filtered view of unified + models table) + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/audio.TranscriptionModelResponse' + type: array + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: List all transcription models + tags: + - transcription-models + /transcription-models/{id}: + get: + parameters: + - description: Model ID + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/audio.TranscriptionModelResponse' + "404": + description: Not Found + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: Get a transcription model + tags: + - transcription-models + put: + consumes: + - application/json + parameters: + - description: Model ID + in: path + name: id + required: true + type: string + - description: Model update payload + in: body + name: request + required: true + schema: + $ref: '#/definitions/audio.UpdateSpeechModelRequest' + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/audio.TranscriptionModelResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/handlers.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: Update a transcription model + tags: + - transcription-models + /transcription-models/{id}/capabilities: + get: + parameters: + - description: Model ID + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/audio.ModelCapabilities' + "404": + description: Not Found + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: Get transcription model capabilities + tags: + - transcription-models + /transcription-models/{id}/test: + post: + consumes: + - multipart/form-data + description: Transcribe uploaded audio using a specific model's config and return + structured text output + parameters: + - description: Model ID + in: path + name: id + required: true + type: string + - description: Audio file + in: formData + name: file + required: true + type: file + - description: Optional JSON config + in: formData + name: config + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/audio.TestTranscriptionResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/handlers.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: Test transcription model recognition + tags: + - transcription-models + /transcription-providers: + get: + description: List providers that support transcription (filtered view of unified + providers table) + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/audio.SpeechProviderResponse' + type: array + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: List transcription providers + tags: + - transcription-providers + /transcription-providers/{id}: + get: + description: Get a speech provider with masked config values + parameters: + - description: Provider ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/audio.SpeechProviderResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/handlers.ErrorResponse' + "404": + description: Not Found + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: Get speech provider + tags: + - speech-providers + /transcription-providers/{id}/import-models: + post: + consumes: + - application/json + description: Fetch models using the configured transcription provider and import + them into the unified models table + parameters: + - description: Provider ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + $ref: '#/definitions/audio.ImportModelsResponse' + "400": + description: Bad Request + schema: + $ref: '#/definitions/handlers.ErrorResponse' + "404": + description: Not Found + schema: + $ref: '#/definitions/handlers.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: Import transcription models from provider + tags: + - transcription-providers + /transcription-providers/{id}/models: + get: + description: List models of type 'transcription' for a specific transcription + provider + parameters: + - description: Provider ID (UUID) + in: path + name: id + required: true + type: string + produces: + - application/json + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/audio.TranscriptionModelResponse' + type: array + "400": + description: Bad Request + schema: + $ref: '#/definitions/handlers.ErrorResponse' + "500": + description: Internal Server Error + schema: + $ref: '#/definitions/handlers.ErrorResponse' + summary: List transcription models by provider + tags: + - transcription-providers + /transcription-providers/meta: + get: + description: List available transcription provider types with their models and + capabilities + responses: + "200": + description: OK + schema: + items: + $ref: '#/definitions/audio.ProviderMetaResponse' + type: array + summary: List transcription provider metadata + tags: + - transcription-providers /users: get: description: List users