@8wave/ai-elements 0.87.0 → 0.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-elements.es.js +3093 -3080
- package/dist/ai-elements.es.js.map +1 -1
- package/dist-vue/PkChatbot.js +1 -1
- package/dist-vue/PkChatbotMessages.js +1 -1
- package/dist-vue/PkChatbotViewChat.js +1 -1
- package/dist-vue/PkChatbotViewConversations.js +1 -1
- package/dist-vue/PkChatbotViewProfile.js +1 -1
- package/dist-vue/_chunks/{PkChatbot-tFvlH12N.js → PkChatbot-obI_7VAa.js} +5 -5
- package/dist-vue/_chunks/{PkChatbot-tFvlH12N.js.map → PkChatbot-obI_7VAa.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotMessages-Cw9yOYh2.js → PkChatbotMessages-BTVFyrnS.js} +16 -16
- package/dist-vue/_chunks/{PkChatbotMessages-Cw9yOYh2.js.map → PkChatbotMessages-BTVFyrnS.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewChat-jhCgPRLx.js → PkChatbotViewChat-DdY7Xuqa.js} +4 -4
- package/dist-vue/_chunks/{PkChatbotViewChat-jhCgPRLx.js.map → PkChatbotViewChat-DdY7Xuqa.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewConversations-sVmftv8d.js → PkChatbotViewConversations-C8hV9Mwm.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewConversations-sVmftv8d.js.map → PkChatbotViewConversations-C8hV9Mwm.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewProfile-C1w-xiU1.js → PkChatbotViewProfile-Dk02VeJS.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewProfile-C1w-xiU1.js.map → PkChatbotViewProfile-Dk02VeJS.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowArtifact-1TIqmmMX.js → PkToolShowArtifact-LA-xP42x.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowArtifact-1TIqmmMX.js.map → PkToolShowArtifact-LA-xP42x.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-CYnRZvNt.js → PkToolShowCalendarEvent-B0fvvNqq.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowCalendarEvent-CYnRZvNt.js.map → PkToolShowCalendarEvent-B0fvvNqq.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowComparison-BrXMiW89.js → PkToolShowComparison-CkxbcdHx.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowComparison-BrXMiW89.js.map → PkToolShowComparison-CkxbcdHx.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowContactForm-BBHPHg7r.js → PkToolShowContactForm-Q-zWz2QT.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowContactForm-BBHPHg7r.js.map → PkToolShowContactForm-Q-zWz2QT.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowEmail-CS9P20kh.js → PkToolShowEmail-DcV3KIBI.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowEmail-CS9P20kh.js.map → PkToolShowEmail-DcV3KIBI.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowForm-0KHoL0kI.js → PkToolShowForm-YwhD8noA.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowForm-0KHoL0kI.js.map → PkToolShowForm-YwhD8noA.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowImageGallery-DkscAMgB.js → PkToolShowImageGallery-C1r8jvlG.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowImageGallery-DkscAMgB.js.map → PkToolShowImageGallery-C1r8jvlG.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowLocation-q398vKFd.js → PkToolShowLocation-BvKZaaJS.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowLocation-q398vKFd.js.map → PkToolShowLocation-BvKZaaJS.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowMessage-BajfguXg.js → PkToolShowMessage-J5IWwUjF.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowMessage-BajfguXg.js.map → PkToolShowMessage-J5IWwUjF.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowProductList-DOdJ5im8.js → PkToolShowProductList-D4Fap8dC.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowProductList-DOdJ5im8.js.map → PkToolShowProductList-D4Fap8dC.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowQrCode-tYNOd6lJ.js → PkToolShowQrCode-BUH5vIS8.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowQrCode-tYNOd6lJ.js.map → PkToolShowQrCode-BUH5vIS8.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSources-BrA6dwWu.js → PkToolShowSources-ChkWKhFd.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowSources-BrA6dwWu.js.map → PkToolShowSources-ChkWKhFd.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-DOY7Ru9m.js → PkToolShowSuggestedReply-VVg-OVtH.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowSuggestedReply-DOY7Ru9m.js.map → PkToolShowSuggestedReply-VVg-OVtH.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWebPages-76owZhMK.js → PkToolShowWebPages-CbdH6FZQ.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowWebPages-76owZhMK.js.map → PkToolShowWebPages-CbdH6FZQ.js.map} +1 -1
- package/dist-vue/_chunks/{createChatbotApiClient-nfzYJAR8.js → createChatbotApiClient-DWRtOu7t.js} +386 -383
- package/dist-vue/_chunks/createChatbotApiClient-DWRtOu7t.js.map +1 -0
- package/dist-vue/_chunks/{dist-BSJCZVGe.js → dist-BN5P-Pmm.js} +2 -2
- package/dist-vue/_chunks/{dist-BSJCZVGe.js.map → dist-BN5P-Pmm.js.map} +1 -1
- package/dist-vue/_chunks/{dist-CUn2C8Pr.js → dist-Bv_EQP56.js} +2 -2
- package/dist-vue/_chunks/{dist-CUn2C8Pr.js.map → dist-Bv_EQP56.js.map} +1 -1
- package/dist-vue/_chunks/{dist-13JQnKdr.js → dist-C2-7Fze7.js} +2 -2
- package/dist-vue/_chunks/{dist-13JQnKdr.js.map → dist-C2-7Fze7.js.map} +1 -1
- package/dist-vue/_chunks/{dist-F_SO4sD9.js → dist-CYAK1sKO.js} +2 -2
- package/dist-vue/_chunks/{dist-F_SO4sD9.js.map → dist-CYAK1sKO.js.map} +1 -1
- package/dist-vue/_chunks/{dist-1XsQJvY2.js → dist-Cact3-tk.js} +2 -2
- package/dist-vue/_chunks/{dist-1XsQJvY2.js.map → dist-Cact3-tk.js.map} +1 -1
- package/dist-vue/_chunks/{dist-HGbNOlPU.js → dist-D7NafeHu.js} +4 -4
- package/dist-vue/_chunks/{dist-HGbNOlPU.js.map → dist-D7NafeHu.js.map} +1 -1
- package/dist-vue/_chunks/{dist-BibPhIx9.js → dist-DHQ8itnF.js} +2 -2
- package/dist-vue/_chunks/{dist-BibPhIx9.js.map → dist-DHQ8itnF.js.map} +1 -1
- package/dist-vue/_chunks/{dist-C36I45tf.js → dist-DTPBebYZ.js} +3 -3
- package/dist-vue/_chunks/{dist-C36I45tf.js.map → dist-DTPBebYZ.js.map} +1 -1
- package/dist-vue/_chunks/{dist-Bo0xZq3l.js → dist-DlXJzThT.js} +2 -2
- package/dist-vue/_chunks/{dist-Bo0xZq3l.js.map → dist-DlXJzThT.js.map} +1 -1
- package/dist-vue/_chunks/{dist-DIxP72nB.js → dist-_Aw9VPtK.js} +3 -3
- package/dist-vue/_chunks/{dist-DIxP72nB.js.map → dist-_Aw9VPtK.js.map} +1 -1
- package/dist-vue/_chunks/{useChatbotStore-DO4-QCQt.js → useChatbotStore-VxGMdCch.js} +2 -2
- package/dist-vue/_chunks/{useChatbotStore-DO4-QCQt.js.map → useChatbotStore-VxGMdCch.js.map} +1 -1
- package/dist-vue/api.js +1 -1
- package/dist-vue/apps/web-component/src/composables/useChatbotAuth.d.ts +4 -4
- package/dist-vue/composables.js +2 -2
- package/dist-vue/index.js +51 -44
- package/dist-vue/index.js.map +1 -1
- package/dist-vue/packages/ability/src/index.d.ts +1 -2
- package/dist-vue/packages/ability/src/types.d.ts +10 -1
- package/dist-vue/packages/auth/src/index.d.ts +2 -2
- package/dist-vue/packages/components/src/chat/PkChatSidebarConversationItem.d.ts +2 -2
- package/dist-vue/packages/components/src/chat/PkChatbotAuth.d.ts +10 -10
- package/dist-vue/packages/composable/src/chatbot/useChatbotStore.d.ts +1 -1
- package/dist-vue/packages/models/src/schema/Agent.d.ts +14 -0
- package/dist-vue/style.css +1 -1
- package/package.json +1 -1
- package/dist-vue/_chunks/createChatbotApiClient-nfzYJAR8.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createChatbotApiClient-nfzYJAR8.js","names":["c","l","u","d","f","s","n","e","t","i","r"],"sources":["../../../../packages/models/src/schema/Agent.ts","../../../../packages/models/src/schema/ConversationAnalysis.ts","../../../../packages/models/src/schema/Chat.ts","../../../../node_modules/.pnpm/@ucast+core@2.0.0/node_modules/@ucast/core/dist/esm/index.mjs","../../../../node_modules/.pnpm/@ucast+mongo@3.0.0/node_modules/@ucast/mongo/dist/esm/index.mjs","../../../../packages/ability/src/types.ts","../../../../packages/ability/src/roles/User.ts","../../../../packages/ability/src/index.ts","../../../../packages/composable/src/chatbot/api/createChatbotApiClient.ts"],"sourcesContent":["import * as z from 'zod'\nimport { zodQs, jsonSchemaField } from '../utils'\nimport { LanguageModel } from './constants'\nimport { MediaSchema, MIME_TYPE_REGEX } from './Media'\n\nexport enum AgentStatus {\n Draft = 'draft',\n Active = 'active',\n Inactive = 'inactive',\n}\n\nexport enum AgentVisibility {\n Public = 'public',\n Private = 'private',\n Organization = 'organization',\n}\n\nexport enum AgentType {\n Chat = 'chat',\n Reasoning = 'reasoning',\n}\n\nexport enum AgentSearchMode {\n Semantic = 'semantic',\n Balanced = 'balanced',\n Keyword = 'keyword',\n}\n\n/**\n * Provider-specific reasoning configurations.\n *\n * Each provider has its own reasoning API:\n * - OpenAI (GPT-5, o-series): `reasoningEffort` + `reasoningSummary`\n * - Anthropic (Claude 4.6+): adaptive thinking with `effort` levels, or legacy `budgetTokens`\n * - Google (Gemini 3/3.1): `thinkingLevel`; Gemini 2.5: `thinkingBudget`\n * - DeepSeek: on/off thinking toggle\n *\n * Only the matching provider's config is used at runtime (based on model prefix).\n * Admins can pre-configure multiple providers for easy model switching.\n */\n\nexport const OpenAIReasoningSchema = z.object({\n reasoningEffort: z\n .enum(['none', 'low', 'medium', 'high', 'xhigh'])\n .optional(),\n reasoningSummary: z.enum(['auto', 'detailed', 'concise']).optional(),\n})\nexport type OpenAIReasoning = z.infer<typeof OpenAIReasoningSchema>\n\nexport const AnthropicReasoningSchema = z.object({\n type: z.enum(['adaptive', 'enabled', 'disabled']).optional(),\n effort: z.enum(['low', 'medium', 'high', 'xhigh', 'max']).optional(),\n display: z.enum(['summarized', 'omitted']).optional(),\n budgetTokens: z.number().int().positive().optional(),\n})\nexport type AnthropicReasoning = z.infer<typeof AnthropicReasoningSchema>\n\nexport const GoogleReasoningSchema = z.object({\n thinkingLevel: z.enum(['minimal', 'low', 'medium', 'high']).optional(),\n thinkingBudget: z.number().int().optional(),\n includeThoughts: z.boolean().optional(),\n})\nexport type GoogleReasoning = z.infer<typeof GoogleReasoningSchema>\n\nexport const DeepSeekReasoningSchema = z.object({\n type: z.enum(['enabled', 'disabled']).optional(),\n})\nexport type DeepSeekReasoning = z.infer<typeof DeepSeekReasoningSchema>\n\n/**\n * Migrates legacy format `{ effort: 'high', reasoningSummary: 'auto' }` to the new\n * per-provider format. Applied via preprocess so old DB data auto-migrates on parse.\n */\nfunction migrateReasoningConfig(val: unknown): unknown {\n if (!val || typeof val !== 'object') {\n return val\n }\n const obj = val as Record<string, unknown>\n // Detect legacy format: has `effort` key with old enum values\n if (\n 'effort' in obj &&\n !(\n 'openai' in obj ||\n 'anthropic' in obj ||\n 'google' in obj ||\n 'deepseek' in obj\n )\n ) {\n const effort = obj.effort as string | undefined\n const reasoningSummary = obj.reasoningSummary as string | undefined\n const migrated: Record<string, unknown> = {}\n\n if (effort && effort !== 'off') {\n migrated.openai = {\n reasoningEffort: effort,\n ...(reasoningSummary ? { reasoningSummary } : {}),\n }\n migrated.anthropic = {\n type: 'adaptive' as const,\n effort: effort as 'low' | 'medium' | 'high',\n }\n migrated.google = {\n thinkingLevel: effort as 'low' | 'medium' | 'high',\n }\n migrated.deepseek = { type: 'enabled' as const }\n } else {\n migrated.openai = { reasoningEffort: 'none' }\n migrated.deepseek = { type: 'disabled' as const }\n }\n return migrated\n }\n return val\n}\n\nexport const AgentReasoningSchema = z.preprocess(\n migrateReasoningConfig,\n z\n .object({\n openai: OpenAIReasoningSchema.optional(),\n anthropic: AnthropicReasoningSchema.optional(),\n google: GoogleReasoningSchema.optional(),\n deepseek: DeepSeekReasoningSchema.optional(),\n })\n .optional(),\n)\n\nexport type AgentReasoning = z.infer<typeof AgentReasoningSchema>\n\n/**\n * Whether reasoning is effectively enabled for the given model.\n *\n * Mirrors the runtime semantics of `getReasoningProviderOptions` (backend):\n * only the provider config matching the model prefix is considered.\n * Note: for Anthropic with `display: 'omitted'` reasoning runs but no\n * reasoning parts are streamed to the client.\n */\nexport function isReasoningEnabled(\n model: string,\n reasoning: AgentReasoning | null | undefined,\n): boolean {\n if (!reasoning) {\n return false\n }\n\n const [provider = ''] = model.split('/')\n\n if (provider === 'openai') {\n const config = reasoning.openai\n return Boolean(\n config?.reasoningEffort && config.reasoningEffort !== 'none',\n )\n }\n\n if (provider === 'anthropic') {\n const config = reasoning.anthropic\n return Boolean(config && config.type !== 'disabled')\n }\n\n if (provider === 'google') {\n const config = reasoning.google\n if (!config || config.thinkingBudget === 0) {\n return false\n }\n return Boolean(\n (config.thinkingLevel && config.thinkingLevel !== 'minimal') ||\n config.thinkingBudget ||\n config.includeThoughts,\n )\n }\n\n if (provider === 'deepseek') {\n return reasoning.deepseek?.type === 'enabled'\n }\n\n return false\n}\n\nexport enum AgentBuiltInTool {\n Geocode = 'geocode',\n GetWeather = 'getWeather',\n ReadDocumentFile = 'readDocumentFile',\n RequestConfirm = 'requestConfirm',\n RequestGeolocation = 'requestGeolocation',\n RetrieveRevisedAnswers = 'retrieveRevisedAnswers',\n SearchInKnowledgeBase = 'searchInKnowledgeBase',\n ShowArtifact = 'showArtifact',\n ShowCalendarEvent = 'showCalendarEvent',\n ShowComparison = 'showComparison',\n ShowContactForm = 'showContactForm',\n ShowDiagram = 'showDiagram',\n ShowEmail = 'showEmail',\n ShowImageGallery = 'showImageGallery',\n ShowLocation = 'showLocation',\n ShowMessage = 'showMessage',\n ShowForm = 'showForm',\n ShowProductList = 'showProductList',\n ShowQrCode = 'showQrCode',\n ShowSources = 'showSources',\n ShowSuggestedReply = 'showSuggestedReply',\n ShowWeather = 'showWeather',\n ShowWebPages = 'showWebPages',\n // deprecated tools - to be removed in favor of more specific tools above\n ShowMultipleChoice = 'showMultipleChoice',\n}\n\n/**\n * Returns true if the tool renders a UI element (card, form, list, etc.).\n * Used in `prepareStep` to prevent duplicate UI elements across streaming steps.\n */\nexport function isPresentationTool(toolName: string): boolean {\n return (\n toolName === AgentBuiltInTool.RequestConfirm ||\n toolName === AgentBuiltInTool.ShowArtifact ||\n toolName === AgentBuiltInTool.ShowCalendarEvent ||\n toolName === AgentBuiltInTool.ShowComparison ||\n toolName === AgentBuiltInTool.ShowContactForm ||\n toolName === AgentBuiltInTool.ShowDiagram ||\n toolName === AgentBuiltInTool.ShowEmail ||\n toolName === AgentBuiltInTool.ShowImageGallery ||\n toolName === AgentBuiltInTool.ShowLocation ||\n toolName === AgentBuiltInTool.ShowMessage ||\n toolName === AgentBuiltInTool.ShowForm ||\n toolName === AgentBuiltInTool.ShowMultipleChoice ||\n toolName === AgentBuiltInTool.ShowProductList ||\n toolName === AgentBuiltInTool.ShowQrCode ||\n toolName === AgentBuiltInTool.ShowSources ||\n toolName === AgentBuiltInTool.ShowSuggestedReply ||\n toolName === AgentBuiltInTool.ShowWeather ||\n toolName === AgentBuiltInTool.ShowWebPages\n )\n}\n\nexport const AgentFormSettingsSchema = z.object({\n maxSteps: z.number().int().min(1).max(10).optional().default(5),\n maxOptionsPerStep: z.number().int().min(2).max(10).optional().default(5),\n})\nexport type AgentFormSettings = z.infer<typeof AgentFormSettingsSchema>\n\nexport const DEFAULT_MAX_STEP_COUNT = 10\nexport const DEFAULT_SUB_AGENT_MAX_STEP_COUNT = 6\nexport const DEFAULT_ENDPOINT_MAX_STEP_COUNT = 5\n\nexport enum WebSearchProvider {\n Perplexity = 'perplexity',\n Parallel = 'parallel',\n Native = 'native',\n}\n\nexport const PerplexitySearchConfigSchema = z.object({\n maxResults: z.number().int().min(1).max(20).optional(),\n maxTokens: z.number().int().positive().max(1_000_000).optional(),\n maxTokensPerPage: z.number().int().positive().optional(),\n country: z.string().max(2).optional(),\n searchLanguageFilter: z.array(z.string().max(5)).max(10).optional(),\n searchDomainFilter: z.array(z.string()).max(20).optional(),\n searchRecencyFilter: z.enum(['day', 'week', 'month', 'year']).optional(),\n})\nexport type PerplexitySearchConfig = z.infer<\n typeof PerplexitySearchConfigSchema\n>\n\nexport const ParallelSearchConfigSchema = z.object({\n mode: z.enum(['one-shot', 'agentic']).optional(),\n maxResults: z.number().int().min(1).max(20).optional(),\n sourcePolicy: z\n .object({\n includeDomains: z.array(z.string()).optional(),\n excludeDomains: z.array(z.string()).optional(),\n afterDate: z.string().optional(),\n })\n .optional(),\n excerpts: z\n .object({\n maxCharsPerResult: z.number().int().positive().optional(),\n maxCharsTotal: z.number().int().positive().optional(),\n })\n .optional(),\n fetchPolicy: z\n .object({\n maxAgeSeconds: z.number().int().positive().optional(),\n })\n .optional(),\n})\nexport type ParallelSearchConfig = z.infer<typeof ParallelSearchConfigSchema>\n\nexport const NativeWebSearchConfigSchema = z.object({\n openai: z.object({}).optional(),\n anthropic: z\n .object({\n maxUses: z.number().int().positive().optional(),\n allowedDomains: z.array(z.string()).optional(),\n blockedDomains: z.array(z.string()).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate').optional(),\n country: z.string().optional(),\n region: z.string().optional(),\n city: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n })\n .optional(),\n google: z.object({}).optional(),\n})\nexport type NativeWebSearchConfig = z.infer<typeof NativeWebSearchConfigSchema>\n\nexport const AgentWebSearchSchema = z.object({\n enabled: z.boolean().default(false),\n provider: z\n .enum(WebSearchProvider)\n .optional()\n .default(WebSearchProvider.Native),\n perplexity: PerplexitySearchConfigSchema.optional(),\n parallel: ParallelSearchConfigSchema.optional(),\n native: NativeWebSearchConfigSchema.optional(),\n})\nexport type AgentWebSearch = z.infer<typeof AgentWebSearchSchema>\n\nexport const AgentToolsSchema = z.object({\n disabled: z.array(z.enum(AgentBuiltInTool)).default([]),\n showForm: AgentFormSettingsSchema.optional().default(() =>\n AgentFormSettingsSchema.parse({}),\n ),\n webSearch: AgentWebSearchSchema.optional().default(() =>\n AgentWebSearchSchema.parse({}),\n ),\n})\nexport type AgentTools = z.infer<typeof AgentToolsSchema>\n\n/**\n * Ranking configuration schema for smart chunk retrieval.\n * Controls freshness boost, document priority, and MMR.\n * Semantic deduplication is always applied at sync time (not configurable per-agent).\n */\nexport const AgentRankingSchema = z\n .object({\n freshness: z\n .object({\n enabled: z.boolean().default(false),\n /** Half-life in seconds (1 day – 1 year) */\n scale: z\n .number()\n .int()\n .min(86400)\n .max(31536000)\n .default(7776000),\n /** Weight multiplier for freshness boost in formula */\n weight: z.number().min(0.05).max(0.5).default(0.1),\n })\n .prefault({}),\n priority: z\n .object({\n /** Always enabled by default — priority is per-document, not per-agent */\n enabled: z.boolean().default(true),\n })\n .prefault({}),\n mmr: z\n .object({\n enabled: z.boolean().default(false),\n /** Diversity tradeoff (0.0 = relevance only, 1.0 = diversity only) */\n diversity: z.number().min(0.0).max(1.0).default(0.3),\n /** Candidates pre-selected before MMR (semantic mode only) */\n candidatesLimit: z.number().int().min(50).max(200).default(100),\n })\n .prefault({}),\n })\n .prefault({})\nexport type AgentRanking = z.infer<typeof AgentRankingSchema>\n\nexport const AgentModelSchema = z.object({\n prompt: z.string().optional(),\n temperature: z.number().min(0).max(2).optional().default(0.6),\n maxOutputTokens: z.number().positive().optional(),\n presencePenalty: z.number().min(-2).max(2).optional(),\n frequencyPenalty: z.number().min(-2).max(2).optional(),\n searchMode: z\n .enum(AgentSearchMode)\n .optional()\n .default(AgentSearchMode.Balanced),\n limit: z.number().positive().max(100).optional().default(10),\n maxStepCount: z\n .number()\n .int()\n .min(1)\n .max(40)\n .optional()\n .default(DEFAULT_MAX_STEP_COUNT),\n reasoning: AgentReasoningSchema,\n /** Smart ranking configuration (freshness, priority, MMR) */\n ranking: AgentRankingSchema.optional().default(() =>\n AgentRankingSchema.parse({}),\n ),\n})\nexport type AgentModel = z.infer<typeof AgentModelSchema>\n\nexport const LocalizedStringSchema = z.preprocess(\n (val) => (typeof val === 'string' ? { it: val } : val),\n z.record(z.string(), z.string()),\n)\nexport type LocalizedString = z.infer<typeof LocalizedStringSchema>\n\nexport const DEFAULT_WIDGET_URL =\n 'https://cdn.jsdelivr.net/npm/@8wave/ai-elements/dist/ai-elements.es.js'\n\nexport enum AgentLoaderStrategy {\n InlineModule = 'inline-module',\n ScriptSrc = 'script-src',\n DynamicImport = 'dynamic-import',\n}\n\nexport enum AgentChannel {\n Frontoffice = 'frontoffice',\n App = 'app',\n Widget = 'widget',\n}\n\nexport const ALL_AGENT_CHANNELS = Object.values(AgentChannel) as AgentChannel[]\n\nexport const AgentInterfaceSchema = z.object({\n media: MediaSchema.optional(),\n logo: z.string().optional(),\n theme: z.enum(['light', 'dark', 'auto']).optional().default('auto'),\n mainColor: z\n .string()\n .regex(/^#[0-9A-Fa-f]{6}$/)\n .optional()\n .default('#000000'),\n textColor: z.enum(['auto', 'white', 'black']).optional().default('auto'),\n useColorsForAgentHeader: z.boolean().optional().default(false),\n initialMessage: LocalizedStringSchema.optional(),\n greeting: z.array(LocalizedStringSchema).min(1).max(10).optional(),\n messagePlaceholder: LocalizedStringSchema.optional(),\n dismissableNotice: LocalizedStringSchema.optional(),\n footerMessage: LocalizedStringSchema.optional(),\n privacyPolicyNotice: LocalizedStringSchema.optional(),\n welcomePopup: z.boolean().optional().default(false),\n floatingButtonPosition: z\n .enum(['left', 'right'])\n .optional()\n .default('right'),\n maxMessageLength: z.number().int().positive().optional(),\n widgetUrl: z.url().default(DEFAULT_WIDGET_URL),\n loadDelay: z.number().int().min(0).max(30000).optional().default(0),\n loaderStrategy: z\n .enum(AgentLoaderStrategy)\n .optional()\n .default(AgentLoaderStrategy.InlineModule),\n customCss: z.string().optional(),\n smoothStream: z.boolean().optional().default(false),\n /**\n * Show every agent step (reasoning, tool calls) as an expanded timeline\n * in the chat instead of the compact activity indicator. Only meaningful\n * when reasoning is enabled on the agent model.\n */\n showExtendedSteps: z.boolean().optional().default(false),\n})\nexport type AgentInterface = z.infer<typeof AgentInterfaceSchema>\n\nexport const CHAT_FILE_UPLOAD_DEFAULT_MIME_TYPES = [\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/webp',\n 'application/pdf',\n 'text/plain',\n 'text/markdown',\n 'text/csv',\n] as const\n\nexport type ChatFileUploadMimeType =\n (typeof CHAT_FILE_UPLOAD_DEFAULT_MIME_TYPES)[number]\n\nexport const CHAT_FILE_UPLOAD_MAX_FILE_SIZE_BYTES = 104_857_600 // 100 MB\n\nexport const AgentFileUploadSchema = z.object({\n enabled: z.boolean().default(false),\n maxFileSizeBytes: z\n .number()\n .int()\n .positive()\n .max(CHAT_FILE_UPLOAD_MAX_FILE_SIZE_BYTES)\n .optional()\n .default(20_971_520),\n allowedMimeTypes: z\n .array(z.string().regex(MIME_TYPE_REGEX))\n .optional()\n .default([...CHAT_FILE_UPLOAD_DEFAULT_MIME_TYPES]),\n maxFilesPerMessage: z\n .number()\n .int()\n .positive()\n .max(10)\n .optional()\n .default(5),\n maxFilesPerChat: z.number().int().positive().max(50).optional().default(20),\n})\nexport type AgentFileUpload = z.infer<typeof AgentFileUploadSchema>\n\nexport const AgentGatewayOptionsSchema = z.object({\n zeroDataRetention: z.boolean().default(true),\n disallowPromptTraining: z.boolean().default(true),\n providerTimeoutMs: z.number().int().min(1000).max(789000).optional(),\n})\nexport type AgentGatewayOptions = z.infer<typeof AgentGatewayOptionsSchema>\n\nexport const AgentSettingsSchema = z.object({\n model: AgentModelSchema,\n interface: AgentInterfaceSchema,\n tools: AgentToolsSchema.optional().default(() =>\n AgentToolsSchema.parse({}),\n ),\n fileUpload: AgentFileUploadSchema.optional().default(() =>\n AgentFileUploadSchema.parse({}),\n ),\n gatewayOptions: AgentGatewayOptionsSchema.optional().default(() =>\n AgentGatewayOptionsSchema.parse({}),\n ),\n channels: z\n .array(z.enum(AgentChannel))\n .optional()\n .default(() => [...ALL_AGENT_CHANNELS]),\n /**\n * JSON Schema definition for the `externalContext` field accepted in chat\n * requests. Only top-level string-keyed properties that match this schema\n * will be forwarded to the LLM. When absent, all external context is\n * silently ignored (deny-by-default).\n */\n externalContextSchema: jsonSchemaField.optional(),\n})\nexport type AgentSettings = z.infer<typeof AgentSettingsSchema>\n\nexport const AgentSecuritySchema = z.object({\n rateLimits: z.object({\n minuteRateLimit: z.number().int().min(0).optional(),\n hourRateLimit: z.number().int().min(0).optional(),\n dayRateLimit: z.number().int().min(0).optional(),\n monthRateLimit: z.number().int().min(0).optional(),\n }),\n trustedOrigins: z\n .object({\n origins: z\n .array(z.url().or(z.literal('')))\n .transform((items) => {\n return items?.filter((item) => item?.trim())\n })\n .default([]),\n })\n .default({ origins: [] }),\n})\nexport type AgentSecurity = z.infer<typeof AgentSecuritySchema>\n\nexport const AgentDtoSchema = z.object({\n id: z.string().optional(),\n name: z.string(),\n prompt: z.string().optional(),\n model: z.string().default(LanguageModel.gpt52Chat),\n fallbackModels: z.array(z.string()).default([]),\n status: z.enum(AgentStatus).default(AgentStatus.Draft),\n visibility: z.enum(AgentVisibility).default(AgentVisibility.Organization),\n settings: AgentSettingsSchema,\n security: AgentSecuritySchema.nullish(),\n type: z.enum(AgentType).default(AgentType.Chat),\n organizationId: z.string(),\n})\n\nexport const AgentSchema = z.lazy(() =>\n z.object({\n id: z.string(),\n name: z.string(),\n prompt: z.string(),\n model: z.string(),\n fallbackModels: z.array(z.string()).nullable().default([]),\n status: z.enum(AgentStatus).default(AgentStatus.Draft),\n visibility: z\n .enum(AgentVisibility)\n .default(AgentVisibility.Organization),\n settings: AgentSettingsSchema,\n security: AgentSecuritySchema.nullable(),\n type: z.enum(AgentType).default(AgentType.Chat),\n organizationId: z.string(),\n createdAt: z.coerce.date(),\n createdBy: z.string(),\n updatedAt: z.coerce.date(),\n updatedBy: z.string(),\n deleted: z.boolean(),\n deletedAt: z.coerce.date().nullable(),\n deletedBy: z.string().nullable(),\n outOfBudget: z.boolean().optional().default(false),\n outOfBudgetReason: z.string().optional().default(''),\n }),\n)\n\n/* -------------------------------------------------------------------------- *\n * Agent exposure tiers\n *\n * The same agent is serialized at decreasing levels of detail depending on\n * who is asking. Each tier is a strict narrowing of the one above it:\n *\n * Agent Full internal entity — prompt, model, settings, security.\n * Never leaves the trusted (admin/backoffice) boundary.\n * AgentPublic Client view for a viewer who ALREADY HAS ACCESS. \"Public\"\n * means \"safe to expose to the client\", NOT \"visibility =\n * public\": a private/organization agent is still served as\n * AgentPublic once the viewer is authorized.\n * AgentBranding Minimal, safe subset shown to ANONYMOUS viewers on the\n * pre-login screen — just enough to render branded chrome.\n * AgentAccess Envelope returned by the `/access` endpoint: a discriminated\n * union on `requiresAuth` that resolves to either an\n * AgentPublic (access granted) or an AgentBranding (login\n * required), plus the available auth methods.\n * -------------------------------------------------------------------------- */\n\nexport const AgentPublicSchema = z.object({\n id: z.string(),\n name: z.string(),\n status: z.enum(AgentStatus),\n visibility: z.enum(AgentVisibility),\n organizationId: z.string(),\n interface: AgentInterfaceSchema,\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n capabilities: z.object({\n fileUpload: AgentFileUploadSchema,\n }),\n channels: z\n .array(z.enum(AgentChannel))\n .default(() => [...ALL_AGENT_CHANNELS]),\n})\n\n/**\n * Safe subset of `AgentInterface` exposed to anonymous users on the public\n * \"access\" endpoint to render a branded login screen. Mirrors the field names\n * of `AgentInterfaceSchema` (via `pick`) so consumers can read branding the\n * same way for both `AgentPublic.interface` and `AgentBranding.interface`.\n *\n * 🔒 NEVER add sensitive fields here (system prompt, models, tools, …).\n */\nexport const AgentBrandingInterfaceSchema = AgentInterfaceSchema.pick({\n logo: true,\n mainColor: true,\n textColor: true,\n theme: true,\n floatingButtonPosition: true,\n customCss: true,\n})\nexport type AgentBrandingInterface = z.infer<\n typeof AgentBrandingInterfaceSchema\n>\n\nexport const AgentBrandingSchema = AgentPublicSchema.pick({\n id: true,\n name: true,\n organizationId: true,\n}).extend({\n interface: AgentBrandingInterfaceSchema,\n})\nexport type AgentBranding = z.infer<typeof AgentBrandingSchema>\n\nexport const AuthMethodsSchema = z.object({\n emailPassword: z.boolean(),\n google: z.boolean(),\n microsoft: z.boolean(),\n})\nexport type AuthMethods = z.infer<typeof AuthMethodsSchema>\n\n/**\n * Access decision for an agent, WITHOUT the auth methods.\n *\n * Discriminated on `requiresAuth` so the two outcomes are mutually exclusive at\n * the type level — no caller has to null-check `agent`/`branding` by hand:\n * - `requiresAuth: false` → access granted, full `agent` is present.\n * - `requiresAuth: true` → login required, only `branding` is present.\n *\n * This is what the service returns; the controller layers `authMethods` on top\n * to produce {@link AgentAccessSchema}.\n */\nexport const AgentAccessGrantedSchema = z.object({\n requiresAuth: z.literal(false),\n agent: AgentPublicSchema,\n branding: z.null(),\n})\n\nexport const AgentAccessRequiresAuthSchema = z.object({\n requiresAuth: z.literal(true),\n agent: z.null(),\n branding: AgentBrandingSchema,\n})\n\nexport const AgentAccessDecisionSchema = z.discriminatedUnion('requiresAuth', [\n AgentAccessGrantedSchema,\n AgentAccessRequiresAuthSchema,\n])\nexport type AgentAccessDecision = z.infer<typeof AgentAccessDecisionSchema>\n\n/**\n * Full payload returned by the public `/access` endpoint: the\n * {@link AgentAccessDecisionSchema} plus the auth methods the client may offer\n * on the login screen.\n */\nexport const AgentAccessSchema = z.discriminatedUnion('requiresAuth', [\n AgentAccessGrantedSchema.extend({ authMethods: AuthMethodsSchema }),\n AgentAccessRequiresAuthSchema.extend({ authMethods: AuthMethodsSchema }),\n])\nexport type AgentAccess = z.infer<typeof AgentAccessSchema>\n\nexport const AgentsQuerystringSchema = z.object({\n ...zodQs.pagination(),\n ...zodQs.sort([\n 'id',\n 'updatedAt',\n 'createdAt',\n 'name',\n 'type',\n 'status',\n 'visibility',\n 'model',\n ]),\n ...zodQs.filters(['done', 'type']),\n ...zodQs.filter('id'),\n ...zodQs.fullText(),\n ...zodQs.ids(),\n})\n\nexport type AgentDto = z.infer<typeof AgentDtoSchema>\nexport type Agent = z.infer<typeof AgentSchema>\nexport type AgentPublic = z.infer<typeof AgentPublicSchema>\n\nexport type AgentQuerystring = z.infer<typeof AgentsQuerystringSchema>\n","import * as z from 'zod'\n\nexport enum AbuseCategory {\n Harassment = 'harassment',\n HateSpeech = 'hate_speech',\n SexualContent = 'sexual_content',\n SelfHarm = 'self_harm',\n Violence = 'violence',\n PromptInjection = 'prompt_injection',\n DataExtraction = 'data_extraction',\n Spam = 'spam',\n OffTopicPersistent = 'off_topic_persistent',\n Impersonation = 'impersonation',\n}\n\nexport enum AbuseConfidence {\n Low = 'low',\n Medium = 'medium',\n High = 'high',\n}\n\nexport enum LlmIssueCategory {\n Hallucination = 'hallucination',\n OffBrand = 'off_brand',\n DataLeak = 'data_leak',\n InappropriateTone = 'inappropriate_tone',\n RefusalLoop = 'refusal_loop',\n Repetition = 'repetition',\n}\n\nexport enum ConversationAnalysisTrigger {\n SummaryCycle = 'summary_cycle',\n AgentRequest = 'agent_request',\n Manual = 'manual',\n}\n\nexport enum UserEngagement {\n High = 'high',\n Medium = 'medium',\n Low = 'low',\n Disengaged = 'disengaged',\n}\n\nexport enum UserTone {\n Polite = 'polite',\n Neutral = 'neutral',\n Impatient = 'impatient',\n Aggressive = 'aggressive',\n Abusive = 'abusive',\n}\n\nexport enum Sentiment {\n Positive = 'positive',\n Neutral = 'neutral',\n Negative = 'negative',\n Frustrated = 'frustrated',\n Excited = 'excited',\n}\n\nexport enum SentimentTrend {\n Improving = 'improving',\n Stable = 'stable',\n Degrading = 'degrading',\n}\n\nexport const ConversationAnalysisSchema = z.object({\n // --- Metadata (set programmatically, not by the LLM) ---\n analyzedAt: z.coerce.date().describe('When the analysis was generated.'),\n analysisTrigger: z\n .enum(ConversationAnalysisTrigger)\n .describe('What triggered this analysis run.'),\n\n // --- Sentiment & Tone ---\n sentiment: z\n .enum(Sentiment)\n .describe('Overall user sentiment in the conversation.'),\n sentimentTrend: z\n .enum(SentimentTrend)\n .describe('How the user sentiment evolved during the conversation.'),\n userTone: z\n .enum(UserTone)\n .describe('Predominant tone of the user messages.'),\n\n // --- Language ---\n language: z\n .string()\n .max(10)\n .describe(\n 'ISO 639-1 language code of the conversation (e.g. \"en\", \"it\").',\n ),\n\n // --- Topics ---\n topics: z\n .array(z.string().max(100))\n .max(10)\n .describe('Main topics discussed, as short lowercase labels.'),\n\n // --- User Abuse Detection ---\n userAbuseDetected: z\n .boolean()\n .describe(\n 'Whether user abuse was detected. If false, userAbuseCategories MUST be empty.',\n ),\n userAbuseCategories: z\n .array(z.enum(AbuseCategory))\n .default([])\n .describe(\n 'Abuse categories detected. Non-empty only if userAbuseDetected is true.',\n ),\n userAbuseConfidence: z\n .enum(AbuseConfidence)\n .optional()\n .describe(\n 'Confidence level of the abuse detection. Set only if userAbuseDetected is true.',\n ),\n userAbuseSummary: z\n .string()\n .max(500)\n .optional()\n .describe(\n 'Brief description of the abusive behavior detected. Always write in English. Set only if userAbuseDetected is true.',\n ),\n\n // --- LLM Quality Issues ---\n llmIssueDetected: z\n .boolean()\n .describe(\n 'Whether an LLM quality issue was detected. If false, llmIssueCategories MUST be empty.',\n ),\n llmIssueCategories: z\n .array(z.enum(LlmIssueCategory))\n .default([])\n .describe(\n 'LLM issue categories detected. Non-empty only if llmIssueDetected is true.',\n ),\n llmIssueSummary: z\n .string()\n .max(500)\n .optional()\n .describe(\n 'Brief description of the LLM quality issue detected. Always write in English. Set only if llmIssueDetected is true.',\n ),\n\n // --- Engagement ---\n userEngagement: z\n .enum(UserEngagement)\n .describe('Level of user engagement in the conversation.'),\n conversationGoalMet: z\n .boolean()\n .optional()\n .describe(\n 'Whether the user seems to have achieved what they came for. Leave undefined if unclear.',\n ),\n\n // --- Risk Score ---\n riskScore: z\n .number()\n .int()\n .min(0)\n .max(100)\n .describe(\n 'Overall risk score (0 = safe, 100 = critical). Combination of abuse severity, persistence and escalation.',\n ),\n})\n\nexport type ConversationAnalysis = z.infer<typeof ConversationAnalysisSchema>\n","import * as z from 'zod'\nimport { zodQs } from '../utils'\nimport type { UIMessage, LanguageModelUsage } from 'ai'\nimport { ConversationAnalysisSchema } from './ConversationAnalysis'\nimport {\n AgentBuiltInTool,\n AgentGatewayOptionsSchema,\n AgentReasoningSchema,\n AgentWebSearchSchema,\n AgentSearchMode,\n AgentRankingSchema,\n} from './Agent'\nimport { MIME_TYPE_REGEX } from './Media'\n\nexport const DeviceContextSchema = z.object({\n dateTime: z.string().optional(),\n timezone: z.string().optional(),\n language: z.string().optional(),\n languages: z.array(z.string()).optional(),\n url: z.string().optional(),\n pathname: z.string().optional(),\n pageTitle: z.string().optional(),\n referrer: z.string().optional(),\n screenWidth: z.number().optional(),\n screenHeight: z.number().optional(),\n viewportWidth: z.number().optional(),\n viewportHeight: z.number().optional(),\n devicePixelRatio: z.number().optional(),\n maxTouchPoints: z.number().optional(),\n hardwareConcurrency: z.number().optional(),\n deviceMemory: z.number().optional(),\n platform: z.string().optional(),\n connectionType: z.string().optional(),\n connectionEffectiveType: z.string().optional(),\n connectionDownlink: z.number().optional(),\n connectionRtt: z.number().optional(),\n saveData: z.boolean().optional(),\n darkMode: z.boolean().optional(),\n reducedMotion: z.boolean().optional(),\n historyLength: z.number().optional(),\n geolocationLatitude: z.number().optional(),\n geolocationLongitude: z.number().optional(),\n geolocationAccuracy: z.number().optional(),\n geolocationCity: z.string().optional(),\n})\n\nexport type DeviceContext = z.infer<typeof DeviceContextSchema>\n\nconst TextPartSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n})\n\nconst FilePartSchema = z.object({\n type: z.literal('file'),\n mediaType: z.string().regex(MIME_TYPE_REGEX),\n url: z.url(),\n filename: z.string().optional(),\n providerMetadata: z\n .record(z.string(), z.record(z.string(), z.unknown()))\n .optional(),\n})\n\nconst MessagePartSchema = z.discriminatedUnion('type', [\n TextPartSchema,\n FilePartSchema,\n])\n\nexport const ChatRequestSchema = z.object({\n id: z.string(),\n messages: z.array(\n z.object({\n id: z.string().optional(),\n role: z.enum(['assistant', 'user']),\n content: z.string(),\n parts: z.array(MessagePartSchema),\n createdAt: z.string().optional(),\n }),\n ),\n model: z.string().optional(),\n temperature: z.number().optional(),\n prompt: z.string().optional(),\n maxOutputTokens: z.number().positive().optional(),\n presencePenalty: z.number().min(-2).max(2).optional(),\n frequencyPenalty: z.number().min(-2).max(2).optional(),\n searchMode: z.enum(AgentSearchMode).optional(),\n limit: z.number().optional(),\n ranking: AgentRankingSchema.optional(),\n reasoning: AgentReasoningSchema,\n webSearch: AgentWebSearchSchema.optional(),\n maxStepCount: z.number().int().min(1).max(40).optional(),\n disabledTools: z.array(z.enum(AgentBuiltInTool)).optional(),\n fallbackModels: z.array(z.string()).optional(),\n gatewayOptions: AgentGatewayOptionsSchema.partial().optional(),\n deviceContext: DeviceContextSchema.optional(),\n externalContext: z.record(z.string(), z.unknown()).optional(),\n smoothStream: z.boolean().optional(),\n})\n\nexport type ChatRequest = z.infer<typeof ChatRequestSchema>\n\nexport enum BlockedReasonCode {\n SevereAbuse = 'severe_abuse',\n HighRiskScore = 'high_risk_score',\n RepeatedWarnings = 'repeated_warnings',\n}\n\nexport type ChatMetadata = {\n ipAddress: string\n origin: string\n userAgent: string\n}\n\nexport type ChatMessageActions =\n | 'show-info'\n | 'revise'\n | 'regenerate'\n | 'upvote'\n | 'downvote'\n | 'feedback'\n\nexport type Chat = z.infer<typeof ChatSchema>\nexport type ChatsQuerystring = z.infer<typeof ChatsQuerystringSchema>\n\nexport type UIChatMessageDeviceContext = DeviceContext\n\nexport type UIChatMessageMetadata = {\n /** Unix timestamp (ms) when the stream started */\n createdAt?: number\n /** Unix timestamp (ms) when the stream finished */\n completedAt?: number\n /** Canonical model ID used for the request (e.g. `google/gemini-3-flash`) */\n model?: string\n /** Total tokens consumed across all steps */\n totalTokens?: number\n /** Per-tool-call durations in ms, keyed by tool call ID */\n partTimings?: Record<string, number>\n /** Client device context sent with the request */\n deviceContext?: UIChatMessageDeviceContext\n /** External context provided by the host application and validated server-side */\n externalContext?: Record<string, unknown>\n /** Provider that ultimately served the request (e.g. `vertex`, `openai`) */\n resolvedProvider?: string\n /** Actual model ID as exposed by the resolved provider (e.g. `gemini-3-flash-preview`) */\n resolvedModelId?: string\n /** Market cost of the request in USD, as a numeric string */\n cost?: string\n /** Number of model-level routing attempts made by the gateway */\n modelAttemptCount?: number\n /** Total number of provider-level attempts (includes retries across providers) */\n totalProviderAttemptCount?: number\n /** Whether Zero Data Retention was active for this request */\n zeroDataRetention?: boolean\n /** Whether the provider was instructed not to use the prompt for model training */\n disallowPromptTraining?: boolean\n /** Vercel AI Gateway generation ID, useful for tracing in the Vercel dashboard */\n generationId?: string\n /** Tokens served from the provider's prompt cache (e.g. Gemini context caching) */\n cachedTokens?: number\n /** Provider traffic tier (e.g. `PROVISIONED_THROUGHPUT`, `ON_DEMAND`) */\n trafficType?: string\n}\n\nexport type UIChatMessage = UIMessage & {\n metadata?: UIChatMessageMetadata\n}\n\nexport const ChatSchema = z.object({\n id: z.string(),\n messages: z.array(z.unknown()) as unknown as z.ZodType<UIChatMessage[]>,\n title: z.string().nullable(),\n summary: z.string().nullable(),\n messageCountAtLastSummary: z.string().nullable(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n metadata: z.record(z.string(), z.unknown()),\n totalCostInUSD: z.string(),\n usage: z.unknown() as unknown as z.ZodType<LanguageModelUsage>,\n agentId: z.string().nullable(),\n userId: z.string(),\n organizationId: z.string(),\n deleted: z.boolean(),\n deletedAt: z.coerce.date().nullable(),\n deletedBy: z.string().nullable(),\n conversationAnalysis: ConversationAnalysisSchema.nullable().optional(),\n blocked: z.boolean(),\n blockedAt: z.coerce.date().nullable(),\n blockedReasonCode: z.enum(BlockedReasonCode).nullable(),\n blockedReason: z.string().nullable(),\n warningCount: z.number(),\n lastMessageAt: z.coerce.date(),\n})\n\nexport const ChatsQuerystringSchema = z.object({\n ...zodQs.pagination(),\n ...zodQs.sort(['updatedAt', 'createdAt', 'lastMessageAt']),\n ...zodQs.filters(['agentId', 'userId']),\n ...zodQs.range('updatedAt'),\n ...zodQs.range('lastMessageAt'),\n ...zodQs.ids(),\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n})\n\nexport const ChatsPublicSchema = z.object({\n id: z.string(),\n agentId: z.string().optional(),\n organizationId: z.string(),\n summary: z.string().optional(),\n title: z.string().optional(),\n userId: z.string(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n lastMessageAt: z.coerce.date(),\n messages: z.array(z.unknown()),\n blocked: z.boolean(),\n})\n\nexport type ChatPublic = z.infer<typeof ChatsPublicSchema>\n","var e=class{constructor(e,t){this.operator=e,this.value=t,Object.defineProperty(this,`_notes`,{writable:!0})}get notes(){return this._notes}addNote(e){this._notes=this._notes||[],this._notes.push(e)}},t=class extends e{},n=class extends t{constructor(e,t){if(!Array.isArray(t))throw Error(`\"${e}\" operator expects to receive an array of conditions`);super(e,t)}};const r=`__itself__`;var i=class extends e{constructor(e,t,n){super(e,n),this.field=t}};const a=new t(`__null__`,null),o=Object.hasOwn||((e,t)=>Object.prototype.hasOwnProperty.call(e,t));function s(e,t){return t instanceof n&&t.operator===e}function c(e,t){let r;for(let i=0,a=t.length;i<a;i++){let a=t[i];if(a instanceof n){if(a.operator!==e){r&&r.push(a);continue}if(a.value.length===0)continue;r||(r=t.slice(0,i));let n=a.value;for(let e=0,t=n.length;e<t;e++)r.push(n[e])}else r&&r.push(a)}return r||t}function l(e,t){if(t.length===1)return t[0];if(t.length===0)return new n(e,t);let r=c(e,t);return r.length===1?r[0]:(r.length,new n(e,r))}const u=e=>e,d=()=>Object.create(null),f=Object.defineProperty(d(),`__@type@__`,{value:`ignore value`});function p(e,t,n=!1){if(!e||e&&e.constructor!==Object)return!1;for(let r in e)if(o(e,r)&&o(t,r)&&(!n||e[r]!==f))return!0;return!1}function m(e){let t=[];for(let n in e)o(e,n)&&e[n]!==f&&t.push(n);return t}function h(e,t){t!==a&&e.push(t)}const g=e=>l(`and`,e),_=e=>l(`or`,e);function v(e,t){let n=e[t];if(typeof n!=`function`)throw Error(`Unable to interpret \"${String(t)}\" condition. Did you forget to register interpreter for it?`);return n}function y(e){return e.operator}function b(e,t){let n=t,r=n&&n.getInterpreterName||y,i;switch(n?n.numberOfArguments:0){case 1:i=(t=>v(e,r(t,n))(t,a));break;case 3:i=((t,i,o)=>v(e,r(t,n))(t,i,o,a));break;default:i=((t,i)=>v(e,r(t,n))(t,i,a));break}let a={...n,interpret:i};return a.interpret}const x={compound(e,t,r){let i=(Array.isArray(t)?t:[t]).map(e=>r.parse(e));return new n(e.name,i)},field(e,t,n){return new i(e.name,n.field,t)},document(e,n){return new t(e.name,n)}};var S=class{constructor(e,t=d()){this.parse=this.parse.bind(this),this._options={operatorToConditionName:t.operatorToConditionName||u,defaultOperatorName:t.defaultOperatorName||`eq`,mergeFinalConditions:t.mergeFinalConditions||g},this._instructions=Object.keys(e).reduce((t,n)=>(t[n]={name:this._options.operatorToConditionName(n),...e[n]},t),{}),this._fieldInstructionContext={...t.fieldContext,field:``,query:{},parse:this.parse,hasOperators:e=>p(e,this._instructions,t.useIgnoreValue)},this._documentInstructionContext={...t.documentContext,parse:this.parse,query:{}},this._objectKeys=t.useIgnoreValue?m:Object.keys}setParse(e){this.parse=e,this._fieldInstructionContext.parse=e,this._documentInstructionContext.parse=e}parseField(e,t,n,r){let i=this._instructions[t];if(!i)throw Error(`Unsupported operator \"${t}\"`);if(i.type!==`field`)throw Error(`Unexpected ${i.type} operator \"${t}\" at field level`);return this._fieldInstructionContext.field=e,this._fieldInstructionContext.query=r,this.parseInstruction(i,n,this._fieldInstructionContext)}parseInstruction(e,t,n){return typeof e.validate==`function`&&e.validate(e,t),(e.parse||x[e.type])(e,t,n)}parseFieldOperators(e,t){let n=[],r=this._objectKeys(t);for(let i=0,a=r.length;i<a;i++){let a=r[i];if(!this._instructions[a])throw Error(`Field query for \"${e}\" may contain only operators or a plain object as a value`);h(n,this.parseField(e,a,t[a],t))}return n}parse(e){let t=[],n=this._objectKeys(e);this._documentInstructionContext.query=e;for(let r=0,i=n.length;r<i;r++){let i=n[r],a=e[i],o=this._instructions[i];if(o){if(o.type!==`document`&&o.type!==`compound`)throw Error(`Cannot use parsing instruction for operator \"${i}\" in \"document\" context as it is supposed to be used in \"${o.type}\" context`);h(t,this.parseInstruction(o,a,this._documentInstructionContext))}else this._fieldInstructionContext.hasOperators(a)?t.push(...this.parseFieldOperators(i,a)):h(t,this.parseField(i,this._options.defaultOperatorName,a,e))}return this._options.mergeFinalConditions(t)}};function C(e,t){return(n,...r)=>{let i=e(n,...r),a=t.bind(null,i);return Object.defineProperty(a,`ast`,{value:i}),a}}export{n as CompoundCondition,e as Condition,t as DocumentCondition,i as FieldCondition,r as ITSELF,a as NULL_CONDITION,S as ObjectQueryParser,g as buildAnd,_ as buildOr,b as createInterpreter,C as createTranslatorFactory,x as defaultInstructionParsers,p as hasOperators,u as identity,f as ignoreValue,s as isCompound,d as object,l as optimizedCompoundCondition};\n//# sourceMappingURL=index.mjs.map","import{CompoundCondition as e,FieldCondition as t,ITSELF as n,NULL_CONDITION as r,ObjectQueryParser as i,buildAnd as a,defaultInstructionParsers as o,optimizedCompoundCondition as s}from\"@ucast/core\";var c=Object.defineProperty,l=((e,t)=>{let n={};for(var r in e)c(n,r,{get:e[r],enumerable:!0});return t||c(n,Symbol.toStringTag,{value:`Module`}),n})({$all:()=>y,$and:()=>u,$elemMatch:()=>h,$eq:()=>E,$exists:()=>x,$gt:()=>C,$gte:()=>S,$in:()=>_,$lt:()=>w,$lte:()=>T,$mod:()=>b,$ne:()=>D,$nin:()=>v,$nor:()=>f,$not:()=>m,$options:()=>k,$or:()=>d,$regex:()=>O,$size:()=>g,$where:()=>A});const u={type:`compound`,validate:M,parse(e,t,n){let r=p(e,t,n);return s(e.name,r)}},d=u,f={type:`compound`,validate:M,parse(t,n,r){let i=p(t,n,r);return new e(t.name,i)}};function p(e,t,n){let r=Array(t.length);for(let i=0;i<t.length;i++){let a=t[i];F(e,a,i),r[i]=n.parse(a)}return r}const m={type:`field`,validate(e,t){if(!(t&&(t instanceof RegExp||t.constructor===Object)))throw Error(`\"${e.name}\" expects to receive either regular expression or object of field operators`)},parse(n,r,i){let a=r instanceof RegExp?new t(`regex`,i.field,r):i.parse(r,i);return new e(n.name,[a])}},h={type:`field`,validate(e,t){if(!t||t.constructor!==Object)throw Error(`\"${e.name}\" expects to receive an object with nested query or field level operators`)},parse(e,r,{parse:i,field:a,hasOperators:o}){let s=o(r)?i(r,{field:n}):i(r);return new t(e.name,a,s)}},g={type:`field`,validate:P(`number`)},_={type:`field`,validate:j},v=_,y=_,b={type:`field`,validate(e,t){if(!Array.isArray(t)||t.length!==2)throw Error(`\"${e.name}\" expects an array with 2 numeric elements`)}},x={type:`field`,validate:P(`boolean`)},S={type:`field`,validate:N},C=S,w=C,T=C,E={type:`field`},D=E,O={type:`field`,validate(e,t){if(!(t instanceof RegExp)&&typeof t!=`string`)throw Error(`\"${e.name}\" expects value to be a regular expression or a string that represents regular expression`)},parse(e,n,r){let i=typeof n==`string`?new RegExp(n,r.query.$options||``):n;return new t(e.name,r.field,i)}},k={type:`field`,parse:()=>r},A={type:`document`,validate:P(`function`)};function j(e,t){if(!Array.isArray(t))throw Error(`\"${e.name}\" expects value to be an array`)}function M(e,t){if(j(e,t),!t.length)throw Error(`\"${e.name}\" expects to have at least one element in array`)}function N(e,t){if(!(typeof t==`string`||typeof t==`number`||t instanceof Date))throw Error(`\"${e.name}\" expects value to be comparable (i.e., string, number or date)`)}function P(e){return(t,n)=>{if(typeof n!==e)throw Error(`\"${t.name}\" expects value to be a \"${e}\"`)}}function F(e,t,n){let r=t;if(!r||r.constructor!==Object)throw Error(`\"${e.name}\" expects item at index ${n} to be an object`)}var I=class extends i{constructor(e){super(e,{defaultOperatorName:`$eq`,operatorToConditionName:e=>e.slice(1)})}parse(e,t){return t&&t.field?a(this.parseFieldOperators(t.field,e)):super.parse(e)}};const L=l;export{y as $all,u as $and,h as $elemMatch,E as $eq,x as $exists,C as $gt,S as $gte,_ as $in,w as $lt,T as $lte,b as $mod,D as $ne,v as $nin,f as $nor,m as $not,k as $options,d as $or,O as $regex,g as $size,A as $where,I as MongoQueryParser,L as allParsingInstructions,o as defaultParsers};\n//# sourceMappingURL=index.mjs.map","import type { MongoQuery } from '@ucast/mongo2js'\nimport type { Session } from 'auth'\n\nexport enum Audience {\n Backoffice = 'backoffice',\n Frontoffice = 'frontoffice',\n System = 'system',\n Public = 'public',\n}\n\nexport enum Subject {\n All = 'all',\n Todo = 'todo',\n User = 'user',\n Chat = 'chat',\n Agent = 'agent',\n SubAgent = 'subAgent',\n Document = 'document',\n AgentDocument = 'agent_document',\n AgentAnalytic = 'agent_analytic',\n McpServer = 'mcp_server',\n Media = 'media',\n RevisedAnswer = 'revised_answer',\n Organization = 'organization',\n Member = 'member',\n Lead = 'lead',\n MessageFeedback = 'message_feedback',\n Backoffice = 'backoffice',\n Frontoffice = 'frontoffice',\n System = 'system',\n Invitation = 'invitation',\n Crawler = 'crawler',\n ReasoningChat = 'reasoning_chat',\n TimeTrackerChat = 'time_tracker_chat',\n OrganizationExternalAuth = 'organization_external_auth',\n AgentEndpoint = 'agent_endpoint',\n AgentEndpointLog = 'agent_endpoint_log',\n AgentApiTool = 'agent_api_tool',\n DocumentFolder = 'document_folder',\n Integration = 'integration',\n Notification = 'notification',\n}\n\n// action\nexport type Action =\n | 'create'\n | 'read'\n | 'update'\n | 'delete'\n | 'manage'\n | 'impersonate'\n | 'invite'\n | 'access'\n | 'clone'\n | 'ban'\n | 'unban'\n | 'change-role'\n | 'resend'\n | 'cancel'\n | 'execute'\n | 'refill'\n\nexport type Capability = {\n action: Action\n subject: Subject\n fields?: string[]\n condition?: MongoQuery\n inverted?: boolean\n}\n\nexport type CapabilitiesFactory = (\n currentSession?: Session | null,\n) => Capability[]\n","import { AgentStatus } from 'models'\nimport type { CapabilitiesFactory } from '../types'\nimport { Subject } from '../types'\n\nconst GuestCapabilities: CapabilitiesFactory = (currentSession) => {\n if (!currentSession) {\n return []\n }\n return [\n // chats\n {\n subject: Subject.Chat,\n action: 'create',\n },\n {\n subject: Subject.Chat,\n action: 'read',\n condition: {\n createdBy: {\n $eq: currentSession.user?.id,\n },\n },\n },\n {\n subject: Subject.Chat,\n action: 'update',\n },\n {\n subject: Subject.Chat,\n action: 'delete',\n },\n // agents\n {\n subject: Subject.Agent,\n action: 'read',\n condition: {\n status: {\n $eq: AgentStatus.Active,\n },\n },\n },\n // feedbacks\n {\n subject: Subject.MessageFeedback,\n action: 'create',\n },\n {\n subject: Subject.MessageFeedback,\n action: 'read',\n condition: {\n createdBy: {\n $eq: currentSession.user?.id,\n },\n },\n },\n ]\n}\nexport default GuestCapabilities\n","import type { MongoAbility, InferSubjects, ForcedSubject } from '@casl/ability'\nimport type { MongoQuery } from '@ucast/mongo2js'\nimport { Action, Capability, Subject } from './types'\nimport { $or } from '@ucast/mongo2js'\nimport {\n AbilityBuilder,\n createMongoAbility,\n buildMongoQueryMatcher,\n Ability as PureAbility,\n createAliasResolver,\n FieldMatcher,\n} from '@casl/ability'\nimport { organizationCapabilitiesByRole, userCapabilitiesByRole } from './roles'\nimport type { Session } from 'auth'\nimport DefaultCapabilities from './roles/User'\nimport { createAccessControl } from 'better-auth/plugins'\nimport {\n adminAc,\n defaultStatements,\n memberAc,\n ownerAc,\n} from 'better-auth/plugins/organization/access'\n\nexport const OrganizationRoles = {\n admin: 'admin',\n owner: 'owner',\n member: 'member',\n user: 'user',\n} as const\n\nexport const UserRoles = {\n admin: 'admin',\n user: 'user',\n} as const\n\n// action alias\nconst resolveAction = createAliasResolver({\n modify: ['read', 'update', 'delete'],\n})\n\n// subject\nexport type AbilitySubject =\n | InferSubjects<'all' | Subject, true>\n | ForcedSubject<InferSubjects<'all' | Subject, true>>\ntype Ability = MongoAbility<[Action, AbilitySubject]>\n\n// matcher\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst conditionsMatcher = buildMongoQueryMatcher({ $or } as Record<string, any>)\nconst fieldMatcher: FieldMatcher = (fields) => (field) => fields.includes(field)\n\n// ability\nexport const ability = new PureAbility<[Action, AbilitySubject], MongoQuery>(\n DefaultCapabilities(),\n {\n conditionsMatcher,\n resolveAction,\n fieldMatcher,\n },\n)\n\nexport const isValidOrganizationRole = (\n role?: string | null,\n): role is keyof typeof OrganizationRoles => {\n if (!role) {\n return false\n }\n return role in OrganizationRoles\n}\n\nexport const isValidUserRole = (\n role?: string | null,\n): role is keyof typeof UserRoles => {\n if (!role) {\n return false\n }\n return role in UserRoles\n}\n\nexport const getOrganizationRoleCapabilities = (\n currentSession?: Session | null,\n): Capability[] => {\n const organizationRole = currentSession?.session?.organizationRole\n if (!isValidOrganizationRole(organizationRole)) {\n return DefaultCapabilities(currentSession)\n }\n const capabilities = organizationCapabilitiesByRole[organizationRole]\n if (typeof capabilities === 'function') {\n return capabilities(currentSession)\n }\n return capabilities\n}\n\nexport const getUserRoleCapabilities = (\n currentSession?: Session | null,\n): Capability[] => {\n const userRole = currentSession?.user?.role\n if (!isValidUserRole(userRole)) {\n return DefaultCapabilities(currentSession)\n }\n const capabilities = userCapabilitiesByRole[userRole]\n if (typeof capabilities === 'function') {\n return capabilities(currentSession)\n }\n return capabilities\n}\n\nexport const updateAbilityFromSession = (currentSession?: Session | null) => {\n const { can, build, cannot } = new AbilityBuilder<Ability>(\n createMongoAbility,\n )\n const organizationRoleCapabilities =\n getOrganizationRoleCapabilities(currentSession)\n const userRoleCapabilities = getUserRoleCapabilities(currentSession)\n const capabilities = [\n ...organizationRoleCapabilities,\n ...userRoleCapabilities,\n ]\n capabilities.forEach((capability) => {\n const { action, subject, fields, condition, inverted } = capability\n if (inverted) {\n cannot(action, subject, fields, condition)\n return\n }\n can(action, subject, fields, condition)\n })\n ability.update(\n build({\n conditionsMatcher,\n resolveAction,\n fieldMatcher,\n }).rules,\n )\n}\n\nconst ac = createAccessControl(defaultStatements)\nconst adminRole = ac.newRole(adminAc.statements)\nconst ownerRole = ac.newRole(ownerAc.statements)\nconst memberRole = ac.newRole(memberAc.statements)\nconst userRole = ac.newRole(memberAc.statements)\n\nexport const betterAuthOrganizationSettings = {\n ac,\n roles: {\n owner: ownerRole,\n admin: adminRole,\n member: memberRole,\n user: userRole,\n },\n}\n\nexport * from './types'\nexport { subject } from '@casl/ability'\n","import { Audience } from 'ability'\nimport { ChatSchema, ChatsPublicSchema } from 'models'\nimport type {\n AgentAccess,\n Chat,\n MessageFeedback,\n AgentPublic,\n MediaSource,\n} from 'models'\nimport { addInitialSlash, removeTrailingSlash } from 'utils'\n\n// The chats endpoints respond with the full shape (frontoffice) or the\n// trimmed public one — same union the backend declares. Parsing coerces the\n// date fields (plain JSON strings otherwise); on mismatch keep the raw\n// payload instead of failing.\nconst ConversationSchema = ChatSchema.or(ChatsPublicSchema)\nfunction parseConversation(raw: unknown): Chat {\n const result = ConversationSchema.safeParse(raw)\n return (result.success ? result.data : raw) as Chat\n}\n\nexport interface ChatbotApiClientOptions {\n baseUrl: string\n basePath?: string\n headers?: () => Record<string, string> | undefined\n credentials?: RequestCredentials\n}\n\nexport interface SubmitFeedbackPayload {\n messageId: string\n chatId: string\n agentId: string\n vote?: 'upvote' | 'downvote'\n userQuestion: string\n assistantMessage: string\n comment?: string\n}\n\nexport interface SubmitLeadPayload {\n agentId: string\n chatId: string\n [key: string]: unknown\n}\n\nexport interface ChatbotApiClient {\n getConversations(\n agentId: string,\n userId: string | undefined,\n ): Promise<Chat[]>\n getChat(agentId: string, chatId: string): Promise<Chat | null>\n updateChatTitle(\n agentId: string,\n chatId: string,\n title: string,\n ): Promise<Chat>\n deleteChat(agentId: string, chatId: string): Promise<void>\n getMessageFeedbacks(chatId: string): Promise<MessageFeedback[]>\n submitMessageFeedback(\n payload: SubmitFeedbackPayload,\n ): Promise<MessageFeedback>\n submitLead(payload: SubmitLeadPayload): Promise<void>\n getAgent(orgSlug: string, agentId: string): Promise<AgentPublic>\n getAgentAccess(orgSlug: string, agentId: string): Promise<AgentAccess>\n getMediaUrl(agentId: string, chatId: string, storedFileName: string): string\n appendAuthToken(url: string): string\n uploadMedia(\n agentId: string,\n chatId: string,\n file: File,\n ): Promise<MediaSource>\n getChatEndpoint(agentId: string, type?: 'chat' | 'reasoning'): string\n expandSourceContext(\n agentId: string,\n documentId: string,\n chunkIndex: number,\n windowSize?: number,\n ): Promise<{ content: string }>\n downloadSourceDocument(\n agentId: string,\n documentId: string,\n ): Promise<{ downloadUrl: string; filename: string; mimeType: string }>\n reverseGeocode(\n lat: number,\n lon: number,\n lang?: string,\n ): Promise<string | undefined>\n forwardGeocode(\n query: string,\n lang?: string,\n ): Promise<\n { latitude: number; longitude: number; displayName: string } | undefined\n >\n getOAuthAuthorizeUrl(\n agentId: string,\n serverName: string,\n ): Promise<{ mcpServerId: string; authorizeUrl: string }>\n resolveShortUrls(hashes: string[]): Promise<Record<string, string>>\n}\n\nexport function createChatbotApiClient(\n options: ChatbotApiClientOptions,\n): ChatbotApiClient {\n const basePath = options.basePath\n ? addInitialSlash(options.basePath)\n : `/api/v1/${Audience.Public}`\n\n const baseUrl = `${removeTrailingSlash(options.baseUrl)}${basePath}`\n\n async function request<T>(\n url: string,\n init?: RequestInit,\n responseType: 'json' | 'void' = 'json',\n ): Promise<T> {\n const response = await fetch(`${baseUrl}${url}`, {\n credentials: options.credentials ?? 'include',\n ...init,\n headers: {\n ...options.headers?.(),\n ...init?.headers,\n },\n })\n\n if (!response.ok) {\n throw new Error(\n `API error: ${response.status} ${response.statusText}`,\n )\n }\n\n if (responseType === 'void' || response.status === 204) {\n return undefined as T\n }\n\n return response.json() as Promise<T>\n }\n\n return {\n async getConversations(agentId, userId) {\n const userFilter = userId\n ? `&filter[userId]=${encodeURIComponent(userId)}`\n : ''\n const conversations = await request<unknown[]>(\n `/agents/${encodeURIComponent(agentId)}/chats?sort=-lastMessageAt&page[size]=100${userFilter}`,\n )\n return conversations.map(parseConversation)\n },\n\n async getChat(agentId, chatId) {\n const result = await request<Chat | undefined>(\n `/agents/${encodeURIComponent(agentId)}/chats/${encodeURIComponent(chatId)}`,\n )\n return result ? parseConversation(result) : null\n },\n\n async updateChatTitle(agentId, chatId, title) {\n return parseConversation(\n await request<Chat>(\n `/agents/${encodeURIComponent(agentId)}/chats/${encodeURIComponent(chatId)}`,\n {\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ title }),\n },\n ),\n )\n },\n\n async deleteChat(agentId, chatId) {\n await request<void>(\n `/agents/${encodeURIComponent(agentId)}/chats/${encodeURIComponent(chatId)}`,\n { method: 'DELETE' },\n 'void',\n )\n },\n\n async getMessageFeedbacks(chatId) {\n return request<MessageFeedback[]>(\n `/message-feedbacks?filter[chatId]=${encodeURIComponent(chatId)}&page[size]=200`,\n )\n },\n\n async submitMessageFeedback(payload) {\n return request<MessageFeedback>('/message-feedbacks', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload),\n })\n },\n\n async submitLead(payload) {\n await request<void>(\n '/leads',\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(payload),\n },\n 'void',\n )\n },\n\n async getAgent(orgSlug, agentId) {\n return request<AgentPublic>(\n `/organizations/${encodeURIComponent(orgSlug)}/agents/${encodeURIComponent(agentId)}`,\n )\n },\n\n async getAgentAccess(orgSlug, agentId) {\n return request<AgentAccess>(\n `/organizations/${encodeURIComponent(orgSlug)}/agents/${encodeURIComponent(agentId)}/access`,\n )\n },\n\n async uploadMedia(agentId, chatId, file) {\n const formData = new FormData()\n formData.append('file', file)\n const response = await fetch(\n `${baseUrl}/agents/${encodeURIComponent(agentId)}/chats/${encodeURIComponent(chatId)}/media/upload`,\n {\n method: 'POST',\n credentials: options.credentials ?? 'include',\n // Do NOT set Content-Type — browser sets multipart/form-data with boundary automatically\n headers: options.headers?.(),\n body: formData,\n },\n )\n if (!response.ok) {\n const text = await response.text().catch(() => '')\n let title = `Upload failed: ${response.status}`\n try {\n title =\n (JSON.parse(text) as { title?: string }).title ?? title\n } catch {\n // ignore parse errors\n }\n throw new Error(title)\n }\n return response.json() as Promise<MediaSource>\n },\n\n getChatEndpoint(agentId, type = 'chat') {\n const path = type === 'reasoning' ? 'reasoning-chat' : 'chat'\n return `${baseUrl}/agents/${encodeURIComponent(agentId)}/${path}`\n },\n\n appendAuthToken(url) {\n const bearer = options\n .headers?.()\n ?.[`Authorization`]?.slice('Bearer '.length)\n if (!bearer) {\n return url\n }\n const separator = url.includes('?') ? '&' : '?'\n return `${url}${separator}token=${encodeURIComponent(bearer)}`\n },\n\n getMediaUrl(agentId, chatId, storedFileName) {\n const base = `${baseUrl}/agents/${encodeURIComponent(agentId)}/chats/${encodeURIComponent(chatId)}/media/${encodeURIComponent(storedFileName)}/view`\n return this.appendAuthToken(base)\n },\n\n async expandSourceContext(\n agentId,\n documentId,\n chunkIndex,\n windowSize = 2,\n ) {\n return request<{ content: string }>(\n `/agents/${encodeURIComponent(agentId)}/sources/expand-context`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n documentId,\n chunkIndex,\n windowSize,\n }),\n },\n )\n },\n\n async downloadSourceDocument(agentId, documentId) {\n return request<{\n downloadUrl: string\n filename: string\n mimeType: string\n }>(\n `/agents/${encodeURIComponent(agentId)}/sources/documents/${encodeURIComponent(documentId)}/download`,\n )\n },\n\n async reverseGeocode(lat, lon, lang) {\n const params = new URLSearchParams({\n lat: String(lat),\n lon: String(lon),\n })\n if (lang) {\n params.set('lang', lang)\n }\n try {\n const data = await request<{ displayName?: string }>(\n `/geocoder/reverse?${params}`,\n )\n return data.displayName\n } catch {\n return undefined\n }\n },\n\n async forwardGeocode(query, lang) {\n const params = new URLSearchParams({ q: query })\n if (lang) {\n params.set('lang', lang)\n }\n try {\n return await request<{\n latitude: number\n longitude: number\n displayName: string\n }>(`/geocoder/forward?${params}`)\n } catch {\n return undefined\n }\n },\n\n async getOAuthAuthorizeUrl(agentId, serverName) {\n const params = new URLSearchParams({ serverName })\n return request<{ mcpServerId: string; authorizeUrl: string }>(\n `/agents/${encodeURIComponent(agentId)}/mcp-oauth/authorize?${params}`,\n )\n },\n\n async resolveShortUrls(hashes) {\n // The redirect endpoint lives at `/api/r`, outside the JSON:API basePath\n const root = removeTrailingSlash(options.baseUrl)\n const response = await fetch(`${root}/api/r/resolve`, {\n method: 'POST',\n credentials: options.credentials ?? 'include',\n headers: {\n ...options.headers?.(),\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ hashes }),\n })\n if (!response.ok) {\n return {}\n }\n const data = (await response.json()) as {\n urls?: Record<string, string>\n }\n return data.urls ?? {}\n },\n }\n}\n"],"x_google_ignoreList":[3,4],"mappings":"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"}
|