@cossistant/types 0.1.1 → 0.1.2
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/api/ai-agent-capabilities.d.ts +16 -19
- package/api/ai-agent-capabilities.d.ts.map +1 -1
- package/api/ai-agent-capabilities.js +215 -286
- package/api/ai-agent-capabilities.js.map +1 -1
- package/api/ai-agent-defaults.d.ts +6 -0
- package/api/ai-agent-defaults.d.ts.map +1 -0
- package/api/ai-agent-defaults.js +33 -0
- package/api/ai-agent-defaults.js.map +1 -0
- package/api/ai-agent.d.ts +311 -204
- package/api/ai-agent.d.ts.map +1 -1
- package/api/ai-agent.js +175 -111
- package/api/ai-agent.js.map +1 -1
- package/api/conversation.d.ts +29 -6
- package/api/conversation.d.ts.map +1 -1
- package/api/conversation.js +7 -2
- package/api/conversation.js.map +1 -1
- package/api/feedback.d.ts +5 -0
- package/api/feedback.d.ts.map +1 -1
- package/api/feedback.js +2 -0
- package/api/feedback.js.map +1 -1
- package/api/index.d.ts +7 -6
- package/api/index.js +7 -6
- package/api/knowledge.d.ts.map +1 -1
- package/api/link-source.d.ts +4 -4
- package/api/link-source.d.ts.map +1 -1
- package/api/link-source.js +1 -1
- package/api/link-source.js.map +1 -1
- package/api/timeline-item.d.ts +18 -6
- package/api/timeline-item.d.ts.map +1 -1
- package/api/timeline-item.js +3 -1
- package/api/timeline-item.js.map +1 -1
- package/api/user.d.ts +1 -1
- package/api/user.d.ts.map +1 -1
- package/api/user.js +2 -2
- package/api/user.js.map +1 -1
- package/api/visitor.d.ts +225 -1
- package/api/visitor.d.ts.map +1 -1
- package/api/visitor.js +142 -1
- package/api/visitor.js.map +1 -1
- package/api/website.d.ts +12 -3
- package/api/website.d.ts.map +1 -1
- package/api/website.js +16 -2
- package/api/website.js.map +1 -1
- package/enums.d.ts +2 -0
- package/enums.d.ts.map +1 -1
- package/enums.js +3 -1
- package/enums.js.map +1 -1
- package/index.d.ts +9 -8
- package/index.d.ts.map +1 -1
- package/index.js +9 -8
- package/package.json +1 -1
- package/realtime-events.d.ts +74 -4
- package/realtime-events.d.ts.map +1 -1
- package/realtime-events.js +6 -2
- package/realtime-events.js.map +1 -1
- package/schemas.d.ts +3 -1
- package/schemas.d.ts.map +1 -1
- package/tool-timeline-policy.d.ts +19 -2
- package/tool-timeline-policy.d.ts.map +1 -1
- package/tool-timeline-policy.js +29 -6
- package/tool-timeline-policy.js.map +1 -1
- package/trpc/conversation-hard-limit.d.ts +30 -0
- package/trpc/conversation-hard-limit.d.ts.map +1 -0
- package/trpc/conversation-hard-limit.js +43 -0
- package/trpc/conversation-hard-limit.js.map +1 -0
- package/trpc/conversation.d.ts +44 -4
- package/trpc/conversation.d.ts.map +1 -1
- package/trpc/conversation.js +6 -0
- package/trpc/conversation.js.map +1 -1
- package/trpc/visitor.d.ts +73 -15
- package/trpc/visitor.d.ts.map +1 -1
- package/trpc/visitor.js +15 -8
- package/trpc/visitor.js.map +1 -1
package/api/ai-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-agent.js","names":[],"sources":["../../src/api/ai-agent.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport {\n\tAI_AGENT_BEHAVIOR_SETTING_KEYS,\n\tAI_AGENT_TOOL_CATEGORIES,\n\tAI_AGENT_TOOL_IDS,\n} from \"./ai-agent-capabilities\";\n\n/**\n * Available AI models from OpenRouter\n */\nexport const AI_MODELS = [\n\t{\n\t\tvalue: \"moonshotai/kimi-k2-0905\",\n\t\tlabel: \"Kimi K2\",\n\t\tprovider: \"Moonshot AI\",\n\t\ticon: \"agent\",\n\t\tfreeOnly: true,\n\t},\n\t{\n\t\tvalue: \"moonshotai/kimi-k2.5\",\n\t\tlabel: \"Kimi K2.5\",\n\t\tprovider: \"Moonshot AI\",\n\t\ticon: \"agent\",\n\t\tfreeOnly: true,\n\t},\n\t{\n\t\tvalue: \"openai/gpt-5.2-chat\",\n\t\tlabel: \"GPT-5.2\",\n\t\tprovider: \"OpenAI\",\n\t\ticon: \"star\",\n\t\trequiresPaid: true,\n\t},\n\t{\n\t\tvalue: \"openai/gpt-5.1-chat\",\n\t\tlabel: \"GPT-5.1\",\n\t\tprovider: \"OpenAI\",\n\t\ticon: \"star\",\n\t\trequiresPaid: true,\n\t},\n\t{\n\t\tvalue: \"openai/gpt-5-mini\",\n\t\tlabel: \"GPT-5 Mini\",\n\t\tprovider: \"OpenAI\",\n\t\ticon: \"star\",\n\t\trequiresPaid: true,\n\t},\n\t{\n\t\tvalue: \"google/gemini-3-flash-preview\",\n\t\tlabel: \"Gemini 3 Flash\",\n\t\tprovider: \"Google\",\n\t\ticon: \"dashboard\",\n\t\trequiresPaid: true,\n\t},\n] as const;\n\nexport type AIModel = (typeof AI_MODELS)[number][\"value\"];\nexport type AIModelConfig = (typeof AI_MODELS)[number];\n\n/**\n * Available AI agent goals/intents\n */\nexport const AI_AGENT_GOALS = [\n\t{ value: \"sales\", label: \"Increase sales conversions\" },\n\t{ value: \"support\", label: \"Provide customer support\" },\n\t{ value: \"product_qa\", label: \"Answer product questions\" },\n\t{ value: \"lead_qualification\", label: \"Qualify leads\" },\n\t{ value: \"scheduling\", label: \"Schedule appointments\" },\n\t{ value: \"feedback\", label: \"Collect customer feedback\" },\n] as const;\n\nexport type AIAgentGoal = (typeof AI_AGENT_GOALS)[number][\"value\"];\n\nexport const AI_AGENT_CORE_PROMPT_DOCUMENT_NAMES = [\n\t\"agent.md\",\n\t\"security.md\",\n\t\"behaviour.md\",\n\t\"participation.md\",\n\t\"grounding.md\",\n\t\"capabilities.md\",\n] as const;\nexport type AiAgentCorePromptDocumentName =\n\t(typeof AI_AGENT_CORE_PROMPT_DOCUMENT_NAMES)[number];\n\nexport const aiAgentPromptDocumentKindSchema = z.enum([\"core\", \"skill\"]);\nexport const aiAgentCorePromptDocumentNameSchema = z.enum(\n\tAI_AGENT_CORE_PROMPT_DOCUMENT_NAMES\n);\n\nexport const aiAgentSkillPromptDocumentNameSchema = z\n\t.string()\n\t.regex(/^[a-z0-9][a-z0-9-]{1,62}\\.md$/, {\n\t\tmessage: \"Skill name must match ^[a-z0-9][a-z0-9-]{1,62}\\\\.md$\",\n\t})\n\t.refine(\n\t\t(value) => !AI_AGENT_CORE_PROMPT_DOCUMENT_NAMES.includes(value as never),\n\t\t{\n\t\t\tmessage: \"Skill name cannot use reserved core document names.\",\n\t\t}\n\t);\n\nexport const aiAgentPromptDocumentResponseSchema = z.object({\n\tid: z.ulid(),\n\torganizationId: z.ulid(),\n\twebsiteId: z.ulid(),\n\taiAgentId: z.ulid(),\n\tkind: aiAgentPromptDocumentKindSchema,\n\tname: z.string(),\n\tcontent: z.string(),\n\tenabled: z.boolean(),\n\tpriority: z.number().int(),\n\tcreatedByUserId: z.ulid().nullable(),\n\tupdatedByUserId: z.ulid().nullable(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n});\n\n/**\n * AI Agent response schema\n */\nexport const aiAgentResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The AI agent's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The AI agent's display name.\",\n\t\texample: \"Support Assistant\",\n\t}),\n\tdescription: z.string().nullable().openapi({\n\t\tdescription: \"A brief description of the AI agent's purpose.\",\n\t\texample: \"Helps users with common support questions.\",\n\t}),\n\tbasePrompt: z.string().openapi({\n\t\tdescription: \"The system prompt that defines the AI agent's behavior.\",\n\t\texample: \"You are a helpful support assistant...\",\n\t}),\n\tmodel: z.string().openapi({\n\t\tdescription: \"The OpenRouter model identifier.\",\n\t\texample: \"anthropic/claude-sonnet-4-20250514\",\n\t}),\n\ttemperature: z.number().nullable().openapi({\n\t\tdescription: \"The temperature setting for response generation (0-2).\",\n\t\texample: 0.7,\n\t}),\n\tmaxOutputTokens: z.number().nullable().openapi({\n\t\tdescription: \"Maximum tokens for response generation.\",\n\t\texample: 1024,\n\t}),\n\tisActive: z.boolean().openapi({\n\t\tdescription: \"Whether the AI agent is currently active.\",\n\t\texample: true,\n\t}),\n\tlastUsedAt: z.string().nullable().openapi({\n\t\tdescription: \"When the AI agent was last used.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n\tusageCount: z.number().openapi({\n\t\tdescription: \"Total number of times the AI agent has been used.\",\n\t\texample: 42,\n\t}),\n\tgoals: z\n\t\t.array(z.string())\n\t\t.nullable()\n\t\t.openapi({\n\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\texample: [\"support\", \"product_qa\"],\n\t\t}),\n\tcreatedAt: z.string().openapi({\n\t\tdescription: \"When the AI agent was created.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n\tupdatedAt: z.string().openapi({\n\t\tdescription: \"When the AI agent was last updated.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n\tonboardingCompletedAt: z.string().nullable().openapi({\n\t\tdescription:\n\t\t\t\"When onboarding was completed. Null if still in onboarding flow.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n});\n\n/**\n * Create AI Agent request schema\n */\nexport const createAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug to create the AI agent for.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tname: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Name is required.\" })\n\t\t\t.max(100, { message: \"Name must be 100 characters or fewer.\" })\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The AI agent's display name.\",\n\t\t\t\texample: \"Support Assistant\",\n\t\t\t}),\n\t\tdescription: z\n\t\t\t.string()\n\t\t\t.max(500, { message: \"Description must be 500 characters or fewer.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"A brief description of the AI agent's purpose.\",\n\t\t\t\texample: \"Helps users with common support questions.\",\n\t\t\t}),\n\t\tbasePrompt: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Base prompt is required.\" })\n\t\t\t.max(10_000, {\n\t\t\t\tmessage: \"Base prompt must be 10,000 characters or fewer.\",\n\t\t\t})\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The system prompt that defines the AI agent's behavior.\",\n\t\t\t\texample: \"You are a helpful support assistant...\",\n\t\t\t}),\n\t\tmodel: z.string().min(1, { message: \"Model is required.\" }).openapi({\n\t\t\tdescription: \"The OpenRouter model identifier.\",\n\t\t\texample: \"anthropic/claude-sonnet-4-20250514\",\n\t\t}),\n\t\ttemperature: z\n\t\t\t.number()\n\t\t\t.min(0, { message: \"Temperature must be at least 0.\" })\n\t\t\t.max(2, { message: \"Temperature must be at most 2.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The temperature setting for response generation (0-2).\",\n\t\t\t\texample: 0.7,\n\t\t\t}),\n\t\tmaxOutputTokens: z\n\t\t\t.number()\n\t\t\t.min(100, { message: \"Max tokens must be at least 100.\" })\n\t\t\t.max(16_000, { message: \"Max tokens must be at most 16,000.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Maximum tokens for response generation.\",\n\t\t\t\texample: 1024,\n\t\t\t}),\n\t\tgoals: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\t\texample: [\"support\", \"product_qa\"],\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to create a new AI agent.\",\n\t});\n\n/**\n * Update AI Agent request schema\n */\nexport const updateAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Name is required.\" })\n\t\t\t.max(100, { message: \"Name must be 100 characters or fewer.\" })\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The AI agent's display name.\",\n\t\t\t\texample: \"Support Assistant\",\n\t\t\t}),\n\t\tdescription: z\n\t\t\t.string()\n\t\t\t.max(500, { message: \"Description must be 500 characters or fewer.\" })\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"A brief description of the AI agent's purpose.\",\n\t\t\t\texample: \"Helps users with common support questions.\",\n\t\t\t}),\n\t\tbasePrompt: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Base prompt is required.\" })\n\t\t\t.max(10_000, {\n\t\t\t\tmessage: \"Base prompt must be 10,000 characters or fewer.\",\n\t\t\t})\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The system prompt that defines the AI agent's behavior.\",\n\t\t\t\texample: \"You are a helpful support assistant...\",\n\t\t\t}),\n\t\tmodel: z.string().min(1, { message: \"Model is required.\" }).openapi({\n\t\t\tdescription: \"The OpenRouter model identifier.\",\n\t\t\texample: \"anthropic/claude-sonnet-4-20250514\",\n\t\t}),\n\t\ttemperature: z\n\t\t\t.number()\n\t\t\t.min(0, { message: \"Temperature must be at least 0.\" })\n\t\t\t.max(2, { message: \"Temperature must be at most 2.\" })\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The temperature setting for response generation (0-2).\",\n\t\t\t\texample: 0.7,\n\t\t\t}),\n\t\tmaxOutputTokens: z\n\t\t\t.number()\n\t\t\t.min(100, { message: \"Max tokens must be at least 100.\" })\n\t\t\t.max(16_000, { message: \"Max tokens must be at most 16,000.\" })\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Maximum tokens for response generation.\",\n\t\t\t\texample: 1024,\n\t\t\t}),\n\t\tgoals: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\t\texample: [\"support\", \"product_qa\"],\n\t\t\t}),\n\t\tonboardingCompletedAt: z.string().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Mark onboarding as complete by setting this timestamp. Set to current ISO timestamp to complete onboarding.\",\n\t\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to update an existing AI agent.\",\n\t});\n\n/**\n * Toggle AI Agent active status request schema\n */\nexport const toggleAiAgentActiveRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tisActive: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI agent should be active.\",\n\t\t\texample: true,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to toggle an AI agent's active status.\",\n\t});\n\n/**\n * Delete AI Agent request schema\n */\nexport const deleteAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to permanently delete an AI agent.\",\n\t});\n\n/**\n * Get AI Agent request schema\n */\nexport const getAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get the AI agent for a website.\",\n\t});\n\n/**\n * Generate Base Prompt request schema\n * Used to scrape a website and generate a tailored base prompt for the AI agent\n */\nexport const generateBasePromptRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tsourceUrl: z\n\t\t\t.string()\n\t\t\t.url({ message: \"Please enter a valid URL.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"The URL to scrape for content and brand information. Optional - if not provided, manualDescription should be used.\",\n\t\t\t\texample: \"https://example.com\",\n\t\t\t}),\n\t\tagentName: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Agent name is required.\" })\n\t\t\t.max(100, { message: \"Agent name must be 100 characters or fewer.\" })\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The name for the AI agent.\",\n\t\t\t\texample: \"Support Assistant\",\n\t\t\t}),\n\t\tgoals: z.array(z.string()).openapi({\n\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\texample: [\"support\", \"product_qa\"],\n\t\t}),\n\t\tmanualDescription: z\n\t\t\t.string()\n\t\t\t.max(1000, {\n\t\t\t\tmessage: \"Description must be 1000 characters or fewer.\",\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Manual description of the business, used when scraping returns no description or no URL is provided.\",\n\t\t\t\texample: \"We help small businesses manage their inventory efficiently.\",\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Request to generate a base prompt by scraping a website and using AI.\",\n\t});\n\n/**\n * Generate Base Prompt response schema\n */\nexport const generateBasePromptResponseSchema = z\n\t.object({\n\t\tbasePrompt: z.string().openapi({\n\t\t\tdescription: \"The generated base prompt for the AI agent.\",\n\t\t\texample: \"You are a helpful support assistant for Acme Corp...\",\n\t\t}),\n\t\tisGenerated: z.boolean().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Whether the prompt was AI-generated (true) or fell back to default (false).\",\n\t\t\texample: true,\n\t\t}),\n\t\tcompanyName: z.string().nullable().openapi({\n\t\t\tdescription: \"The company name extracted from the website.\",\n\t\t\texample: \"Acme Corp\",\n\t\t}),\n\t\twebsiteDescription: z.string().nullable().openapi({\n\t\t\tdescription: \"The description extracted from the website.\",\n\t\t\texample: \"Acme Corp helps businesses grow with innovative solutions.\",\n\t\t}),\n\t\tlogo: z.string().nullable().openapi({\n\t\t\tdescription: \"The logo URL extracted from the website (og:image).\",\n\t\t\texample: \"https://example.com/logo.png\",\n\t\t}),\n\t\tfavicon: z.string().nullable().openapi({\n\t\t\tdescription: \"The favicon URL extracted from the website.\",\n\t\t\texample: \"https://example.com/favicon.ico\",\n\t\t}),\n\t\tdiscoveredLinksCount: z.number().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Number of pages discovered on the website for future knowledge base training.\",\n\t\t\texample: 47,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Response containing the generated base prompt and brand info.\",\n\t});\n\nexport const listPromptDocumentsRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport const listPromptDocumentsResponseSchema = z.object({\n\tcoreDocuments: z.array(aiAgentPromptDocumentResponseSchema),\n\tskillDocuments: z.array(aiAgentPromptDocumentResponseSchema),\n});\n\nexport const upsertCoreDocumentRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: aiAgentCorePromptDocumentNameSchema,\n\tcontent: z.string().max(50_000).openapi({\n\t\tdescription: \"Markdown content for the core document.\",\n\t\texample: \"## Instructions\\\\nFollow these rules.\",\n\t}),\n\tenabled: z.boolean().optional(),\n\tpriority: z.number().int().min(-100).max(100).optional(),\n});\n\nexport const createSkillDocumentRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: aiAgentSkillPromptDocumentNameSchema,\n\tcontent: z.string().max(50_000).openapi({\n\t\tdescription: \"Markdown content for the skill document.\",\n\t\texample: \"## Workflow\\\\nWhen refund appears, collect order ID first.\",\n\t}),\n\tenabled: z.boolean().optional(),\n\tpriority: z.number().int().min(-100).max(100).optional(),\n});\n\nexport const updateSkillDocumentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent ID.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tskillDocumentId: z.ulid().openapi({\n\t\t\tdescription: \"The skill prompt document ID.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: aiAgentSkillPromptDocumentNameSchema.optional(),\n\t\tcontent: z.string().max(50_000).optional(),\n\t\tenabled: z.boolean().optional(),\n\t\tpriority: z.number().int().min(-100).max(100).optional(),\n\t})\n\t.refine(\n\t\t(data) =>\n\t\t\tdata.name !== undefined ||\n\t\t\tdata.content !== undefined ||\n\t\t\tdata.enabled !== undefined ||\n\t\t\tdata.priority !== undefined,\n\t\t{\n\t\t\tmessage: \"At least one field must be provided.\",\n\t\t}\n\t);\n\nexport const deleteSkillDocumentRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tskillDocumentId: z.ulid().openapi({\n\t\tdescription: \"The skill prompt document ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport const toggleSkillDocumentRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tskillDocumentId: z.ulid().openapi({\n\t\tdescription: \"The skill prompt document ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tenabled: z.boolean().openapi({\n\t\tdescription: \"Whether the skill is enabled for runtime selection.\",\n\t\texample: true,\n\t}),\n});\n\nexport const aiAgentToolCategorySchema = z.enum(AI_AGENT_TOOL_CATEGORIES);\nexport const aiAgentToolIdSchema = z.enum(AI_AGENT_TOOL_IDS);\nexport const aiAgentBehaviorSettingKeySchema = z.enum(\n\tAI_AGENT_BEHAVIOR_SETTING_KEYS\n);\n\nexport const aiAgentCapabilitiesToolStateSchema = z.object({\n\tid: aiAgentToolIdSchema,\n\tlabel: z.string(),\n\tdescription: z.string(),\n\tcategory: aiAgentToolCategorySchema,\n\tisSystem: z.boolean(),\n\tisRequired: z.boolean(),\n\tisToggleable: z.boolean(),\n\tbehaviorSettingKey: aiAgentBehaviorSettingKeySchema.nullable(),\n\tdefaultTemplateNames: z.array(aiAgentSkillPromptDocumentNameSchema),\n\tenabled: z.boolean(),\n});\n\nexport const aiAgentDefaultSkillTemplateStateSchema = z.object({\n\tname: aiAgentSkillPromptDocumentNameSchema,\n\tlabel: z.string(),\n\tdescription: z.string(),\n\tcontent: z.string(),\n\tsuggestedToolIds: z.array(aiAgentToolIdSchema),\n\tisEnabled: z.boolean(),\n\thasOverride: z.boolean(),\n\tisCustomized: z.boolean(),\n\tskillDocumentId: z.ulid().nullable(),\n});\n\nexport const aiAgentSystemSkillDocumentSchema = z.object({\n\tname: aiAgentCorePromptDocumentNameSchema,\n\tlabel: z.string(),\n\tdescription: z.string(),\n\tcontent: z.string(),\n\tsource: z.enum([\"db\", \"fallback\"]),\n\tenabled: z.boolean(),\n\tpriority: z.number().int(),\n\tdocumentId: z.ulid().nullable(),\n});\n\nexport const getCapabilitiesStudioRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport const getCapabilitiesStudioResponseSchema = z.object({\n\taiAgentId: z.ulid(),\n\ttools: z.array(aiAgentCapabilitiesToolStateSchema),\n\tdefaultSkillTemplates: z.array(aiAgentDefaultSkillTemplateStateSchema),\n\tsystemSkillDocuments: z.array(aiAgentSystemSkillDocumentSchema),\n\tskillDocuments: z.array(aiAgentPromptDocumentResponseSchema),\n});\n\nexport type AiAgentResponse = z.infer<typeof aiAgentResponseSchema>;\nexport type CreateAiAgentRequest = z.infer<typeof createAiAgentRequestSchema>;\nexport type UpdateAiAgentRequest = z.infer<typeof updateAiAgentRequestSchema>;\nexport type ToggleAiAgentActiveRequest = z.infer<\n\ttypeof toggleAiAgentActiveRequestSchema\n>;\nexport type DeleteAiAgentRequest = z.infer<typeof deleteAiAgentRequestSchema>;\nexport type GetAiAgentRequest = z.infer<typeof getAiAgentRequestSchema>;\nexport type GenerateBasePromptRequest = z.infer<\n\ttypeof generateBasePromptRequestSchema\n>;\nexport type GenerateBasePromptResponse = z.infer<\n\ttypeof generateBasePromptResponseSchema\n>;\nexport type AiAgentPromptDocumentResponse = z.infer<\n\ttypeof aiAgentPromptDocumentResponseSchema\n>;\nexport type ListPromptDocumentsRequest = z.infer<\n\ttypeof listPromptDocumentsRequestSchema\n>;\nexport type ListPromptDocumentsResponse = z.infer<\n\ttypeof listPromptDocumentsResponseSchema\n>;\nexport type UpsertCoreDocumentRequest = z.infer<\n\ttypeof upsertCoreDocumentRequestSchema\n>;\nexport type CreateSkillDocumentRequest = z.infer<\n\ttypeof createSkillDocumentRequestSchema\n>;\nexport type UpdateSkillDocumentRequest = z.infer<\n\ttypeof updateSkillDocumentRequestSchema\n>;\nexport type DeleteSkillDocumentRequest = z.infer<\n\ttypeof deleteSkillDocumentRequestSchema\n>;\nexport type ToggleSkillDocumentRequest = z.infer<\n\ttypeof toggleSkillDocumentRequestSchema\n>;\nexport type GetCapabilitiesStudioRequest = z.infer<\n\ttypeof getCapabilitiesStudioRequestSchema\n>;\nexport type GetCapabilitiesStudioResponse = z.infer<\n\ttypeof getCapabilitiesStudioResponseSchema\n>;\nexport type AiAgentCapabilitiesToolState = z.infer<\n\ttypeof aiAgentCapabilitiesToolStateSchema\n>;\nexport type AiAgentDefaultSkillTemplateState = z.infer<\n\ttypeof aiAgentDefaultSkillTemplateStateSchema\n>;\nexport type AiAgentSystemSkillDocument = z.infer<\n\ttypeof aiAgentSystemSkillDocumentSchema\n>;\n\n/**\n * AI Agent Behavior Settings Schema\n *\n * Controls how the AI agent behaves in conversations.\n * Simplified for MVP - AI responds immediately and decides when to respond\n * based on context, not configuration.\n */\nexport const aiAgentBehaviorSettingsSchema = z\n\t.object({\n\t\t// Capability toggles\n\t\tcanResolve: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can mark conversations as resolved.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanMarkSpam: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can mark conversations as spam.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanAssign: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can assign conversations to team members.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanSetPriority: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can change conversation priority.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanCategorize: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can add conversations to views.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanEscalate: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can escalate conversations to human agents.\",\n\t\t\texample: true,\n\t\t}),\n\n\t\t// Escalation config\n\t\tdefaultEscalationUserId: z.string().nullable().openapi({\n\t\t\tdescription: \"Default user ID to assign escalated conversations to.\",\n\t\t\texample: null,\n\t\t}),\n\n\t\t// Visitor identification\n\t\tvisitorContactPolicy: z\n\t\t\t.enum([\"only_if_needed\", \"ask_early\", \"ask_after_time\"])\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"How aggressively the AI should ask for visitor contact information.\",\n\t\t\t\texample: \"only_if_needed\",\n\t\t\t}),\n\n\t\t// Background analysis\n\t\tautoAnalyzeSentiment: z.boolean().openapi({\n\t\t\tdescription: \"Whether to automatically analyze conversation sentiment.\",\n\t\t\texample: true,\n\t\t}),\n\t\tautoGenerateTitle: z.boolean().openapi({\n\t\t\tdescription: \"Whether to automatically generate conversation titles.\",\n\t\t\texample: true,\n\t\t}),\n\t\tautoCategorize: z.boolean().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Whether to automatically add conversations to matching views.\",\n\t\t\texample: false,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"AI agent behavior settings.\",\n\t});\n\nexport type AiAgentBehaviorSettings = z.infer<\n\ttypeof aiAgentBehaviorSettingsSchema\n>;\n\n/**\n * Get Behavior Settings request schema\n */\nexport const getBehaviorSettingsRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get behavior settings for an AI agent.\",\n\t});\n\n/**\n * Get Behavior Settings response schema\n */\nexport const getBehaviorSettingsResponseSchema = aiAgentBehaviorSettingsSchema\n\t.extend({\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing the AI agent's behavior settings.\",\n\t});\n\n/**\n * Update Behavior Settings request schema\n */\nexport const updateBehaviorSettingsRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tsettings: aiAgentBehaviorSettingsSchema.partial().openapi({\n\t\t\tdescription: \"Partial behavior settings to update.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to update an AI agent's behavior settings.\",\n\t}); /**\n * Update Behavior Settings response schema\n */\nexport const updateBehaviorSettingsResponseSchema =\n\taiAgentBehaviorSettingsSchema.openapi({\n\t\tdescription: \"The updated behavior settings.\",\n\t});\n\nexport type GetBehaviorSettingsRequest = z.infer<\n\ttypeof getBehaviorSettingsRequestSchema\n>;\nexport type GetBehaviorSettingsResponse = z.infer<\n\ttypeof getBehaviorSettingsResponseSchema\n>;\nexport type UpdateBehaviorSettingsRequest = z.infer<\n\ttypeof updateBehaviorSettingsRequestSchema\n>;\nexport type UpdateBehaviorSettingsResponse = z.infer<\n\ttypeof updateBehaviorSettingsResponseSchema\n>;\n"],"mappings":";;;;;;;AAUA,MAAa,YAAY;CACxB;EACC,OAAO;EACP,OAAO;EACP,UAAU;EACV,MAAM;EACN,UAAU;EACV;CACD;EACC,OAAO;EACP,OAAO;EACP,UAAU;EACV,MAAM;EACN,UAAU;EACV;CACD;EACC,OAAO;EACP,OAAO;EACP,UAAU;EACV,MAAM;EACN,cAAc;EACd;CACD;EACC,OAAO;EACP,OAAO;EACP,UAAU;EACV,MAAM;EACN,cAAc;EACd;CACD;EACC,OAAO;EACP,OAAO;EACP,UAAU;EACV,MAAM;EACN,cAAc;EACd;CACD;EACC,OAAO;EACP,OAAO;EACP,UAAU;EACV,MAAM;EACN,cAAc;EACd;CACD;;;;AAQD,MAAa,iBAAiB;CAC7B;EAAE,OAAO;EAAS,OAAO;EAA8B;CACvD;EAAE,OAAO;EAAW,OAAO;EAA4B;CACvD;EAAE,OAAO;EAAc,OAAO;EAA4B;CAC1D;EAAE,OAAO;EAAsB,OAAO;EAAiB;CACvD;EAAE,OAAO;EAAc,OAAO;EAAyB;CACvD;EAAE,OAAO;EAAY,OAAO;EAA6B;CACzD;AAID,MAAa,sCAAsC;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;AAID,MAAa,kCAAkC,EAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC;AACxE,MAAa,sCAAsC,EAAE,KACpD,oCACA;AAED,MAAa,uCAAuC,EAClD,QAAQ,CACR,MAAM,iCAAiC,EACvC,SAAS,wDACT,CAAC,CACD,QACC,UAAU,CAAC,oCAAoC,SAAS,MAAe,EACxE,EACC,SAAS,uDACT,CACD;AAEF,MAAa,sCAAsC,EAAE,OAAO;CAC3D,IAAI,EAAE,MAAM;CACZ,gBAAgB,EAAE,MAAM;CACxB,WAAW,EAAE,MAAM;CACnB,WAAW,EAAE,MAAM;CACnB,MAAM;CACN,MAAM,EAAE,QAAQ;CAChB,SAAS,EAAE,QAAQ;CACnB,SAAS,EAAE,SAAS;CACpB,UAAU,EAAE,QAAQ,CAAC,KAAK;CAC1B,iBAAiB,EAAE,MAAM,CAAC,UAAU;CACpC,iBAAiB,EAAE,MAAM,CAAC,UAAU;CACpC,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACrB,CAAC;;;;AAKF,MAAa,wBAAwB,EAAE,OAAO;CAC7C,IAAI,EAAE,MAAM,CAAC,QAAQ;EACpB,aAAa;EACb,SAAS;EACT,CAAC;CACF,MAAM,EAAE,QAAQ,CAAC,QAAQ;EACxB,aAAa;EACb,SAAS;EACT,CAAC;CACF,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EAC1C,aAAa;EACb,SAAS;EACT,CAAC;CACF,YAAY,EAAE,QAAQ,CAAC,QAAQ;EAC9B,aAAa;EACb,SAAS;EACT,CAAC;CACF,OAAO,EAAE,QAAQ,CAAC,QAAQ;EACzB,aAAa;EACb,SAAS;EACT,CAAC;CACF,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EAC1C,aAAa;EACb,SAAS;EACT,CAAC;CACF,iBAAiB,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EAC9C,aAAa;EACb,SAAS;EACT,CAAC;CACF,UAAU,EAAE,SAAS,CAAC,QAAQ;EAC7B,aAAa;EACb,SAAS;EACT,CAAC;CACF,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EACzC,aAAa;EACb,SAAS;EACT,CAAC;CACF,YAAY,EAAE,QAAQ,CAAC,QAAQ;EAC9B,aAAa;EACb,SAAS;EACT,CAAC;CACF,OAAO,EACL,MAAM,EAAE,QAAQ,CAAC,CACjB,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS,CAAC,WAAW,aAAa;EAClC,CAAC;CACH,WAAW,EAAE,QAAQ,CAAC,QAAQ;EAC7B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,QAAQ,CAAC,QAAQ;EAC7B,aAAa;EACb,SAAS;EACT,CAAC;CACF,uBAAuB,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EACpD,aACC;EACD,SAAS;EACT,CAAC;CACF,CAAC;;;;AAKF,MAAa,6BAA6B,EACxC,OAAO;CACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,MAAM,EACJ,QAAQ,CACR,IAAI,GAAG,EAAE,SAAS,qBAAqB,CAAC,CACxC,IAAI,KAAK,EAAE,SAAS,yCAAyC,CAAC,CAC9D,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,aAAa,EACX,QAAQ,CACR,IAAI,KAAK,EAAE,SAAS,gDAAgD,CAAC,CACrE,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,YAAY,EACV,QAAQ,CACR,IAAI,GAAG,EAAE,SAAS,4BAA4B,CAAC,CAC/C,IAAI,KAAQ,EACZ,SAAS,mDACT,CAAC,CACD,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,OAAO,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,SAAS,sBAAsB,CAAC,CAAC,QAAQ;EACnE,aAAa;EACb,SAAS;EACT,CAAC;CACF,aAAa,EACX,QAAQ,CACR,IAAI,GAAG,EAAE,SAAS,mCAAmC,CAAC,CACtD,IAAI,GAAG,EAAE,SAAS,kCAAkC,CAAC,CACrD,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,iBAAiB,EACf,QAAQ,CACR,IAAI,KAAK,EAAE,SAAS,oCAAoC,CAAC,CACzD,IAAI,MAAQ,EAAE,SAAS,sCAAsC,CAAC,CAC9D,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,OAAO,EACL,MAAM,EAAE,QAAQ,CAAC,CACjB,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS,CAAC,WAAW,aAAa;EAClC,CAAC;CACH,CAAC,CACD,QAAQ,EACR,aAAa,0CACb,CAAC;;;;AAKH,MAAa,6BAA6B,EACxC,OAAO;CACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,MAAM,EACJ,QAAQ,CACR,IAAI,GAAG,EAAE,SAAS,qBAAqB,CAAC,CACxC,IAAI,KAAK,EAAE,SAAS,yCAAyC,CAAC,CAC9D,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,aAAa,EACX,QAAQ,CACR,IAAI,KAAK,EAAE,SAAS,gDAAgD,CAAC,CACrE,UAAU,CACV,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,YAAY,EACV,QAAQ,CACR,IAAI,GAAG,EAAE,SAAS,4BAA4B,CAAC,CAC/C,IAAI,KAAQ,EACZ,SAAS,mDACT,CAAC,CACD,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,OAAO,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,SAAS,sBAAsB,CAAC,CAAC,QAAQ;EACnE,aAAa;EACb,SAAS;EACT,CAAC;CACF,aAAa,EACX,QAAQ,CACR,IAAI,GAAG,EAAE,SAAS,mCAAmC,CAAC,CACtD,IAAI,GAAG,EAAE,SAAS,kCAAkC,CAAC,CACrD,UAAU,CACV,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,iBAAiB,EACf,QAAQ,CACR,IAAI,KAAK,EAAE,SAAS,oCAAoC,CAAC,CACzD,IAAI,MAAQ,EAAE,SAAS,sCAAsC,CAAC,CAC9D,UAAU,CACV,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,OAAO,EACL,MAAM,EAAE,QAAQ,CAAC,CACjB,UAAU,CACV,UAAU,CACV,QAAQ;EACR,aAAa;EACb,SAAS,CAAC,WAAW,aAAa;EAClC,CAAC;CACH,uBAAuB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ;EAC/D,aACC;EACD,SAAS;EACT,CAAC;CACF,CAAC,CACD,QAAQ,EACR,aAAa,gDACb,CAAC;;;;AAKH,MAAa,mCAAmC,EAC9C,OAAO;CACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,UAAU,EAAE,SAAS,CAAC,QAAQ;EAC7B,aAAa;EACb,SAAS;EACT,CAAC;CACF,CAAC,CACD,QAAQ,EACR,aAAa,uDACb,CAAC;;;;AAKH,MAAa,6BAA6B,EACxC,OAAO;CACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,CAAC,CACD,QAAQ,EACR,aAAa,mDACb,CAAC;;;;AAKH,MAAa,0BAA0B,EACrC,OAAO,EACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;CAC/B,aAAa;CACb,SAAS;CACT,CAAC,EACF,CAAC,CACD,QAAQ,EACR,aAAa,8CACb,CAAC;;;;;AAMH,MAAa,kCAAkC,EAC7C,OAAO;CACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EACT,QAAQ,CACR,IAAI,EAAE,SAAS,6BAA6B,CAAC,CAC7C,UAAU,CACV,QAAQ;EACR,aACC;EACD,SAAS;EACT,CAAC;CACH,WAAW,EACT,QAAQ,CACR,IAAI,GAAG,EAAE,SAAS,2BAA2B,CAAC,CAC9C,IAAI,KAAK,EAAE,SAAS,+CAA+C,CAAC,CACpE,QAAQ;EACR,aAAa;EACb,SAAS;EACT,CAAC;CACH,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ;EAClC,aAAa;EACb,SAAS,CAAC,WAAW,aAAa;EAClC,CAAC;CACF,mBAAmB,EACjB,QAAQ,CACR,IAAI,KAAM,EACV,SAAS,iDACT,CAAC,CACD,UAAU,CACV,QAAQ;EACR,aACC;EACD,SAAS;EACT,CAAC;CACH,CAAC,CACD,QAAQ,EACR,aACC,yEACD,CAAC;;;;AAKH,MAAa,mCAAmC,EAC9C,OAAO;CACP,YAAY,EAAE,QAAQ,CAAC,QAAQ;EAC9B,aAAa;EACb,SAAS;EACT,CAAC;CACF,aAAa,EAAE,SAAS,CAAC,QAAQ;EAChC,aACC;EACD,SAAS;EACT,CAAC;CACF,aAAa,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EAC1C,aAAa;EACb,SAAS;EACT,CAAC;CACF,oBAAoB,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EACjD,aAAa;EACb,SAAS;EACT,CAAC;CACF,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EACnC,aAAa;EACb,SAAS;EACT,CAAC;CACF,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EACtC,aAAa;EACb,SAAS;EACT,CAAC;CACF,sBAAsB,EAAE,QAAQ,CAAC,QAAQ;EACxC,aACC;EACD,SAAS;EACT,CAAC;CACF,CAAC,CACD,QAAQ,EACR,aACC,iEACD,CAAC;AAEH,MAAa,mCAAmC,EAAE,OAAO;CACxD,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,CAAC;AAEF,MAAa,oCAAoC,EAAE,OAAO;CACzD,eAAe,EAAE,MAAM,oCAAoC;CAC3D,gBAAgB,EAAE,MAAM,oCAAoC;CAC5D,CAAC;AAEF,MAAa,kCAAkC,EAAE,OAAO;CACvD,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,MAAM;CACN,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAO,CAAC,QAAQ;EACvC,aAAa;EACb,SAAS;EACT,CAAC;CACF,SAAS,EAAE,SAAS,CAAC,UAAU;CAC/B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU;CACxD,CAAC;AAEF,MAAa,mCAAmC,EAAE,OAAO;CACxD,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,MAAM;CACN,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAO,CAAC,QAAQ;EACvC,aAAa;EACb,SAAS;EACT,CAAC;CACF,SAAS,EAAE,SAAS,CAAC,UAAU;CAC/B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU;CACxD,CAAC;AAEF,MAAa,mCAAmC,EAC9C,OAAO;CACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,iBAAiB,EAAE,MAAM,CAAC,QAAQ;EACjC,aAAa;EACb,SAAS;EACT,CAAC;CACF,MAAM,qCAAqC,UAAU;CACrD,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAO,CAAC,UAAU;CAC1C,SAAS,EAAE,SAAS,CAAC,UAAU;CAC/B,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU;CACxD,CAAC,CACD,QACC,SACA,KAAK,SAAS,UACd,KAAK,YAAY,UACjB,KAAK,YAAY,UACjB,KAAK,aAAa,QACnB,EACC,SAAS,wCACT,CACD;AAEF,MAAa,mCAAmC,EAAE,OAAO;CACxD,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,iBAAiB,EAAE,MAAM,CAAC,QAAQ;EACjC,aAAa;EACb,SAAS;EACT,CAAC;CACF,CAAC;AAEF,MAAa,mCAAmC,EAAE,OAAO;CACxD,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,iBAAiB,EAAE,MAAM,CAAC,QAAQ;EACjC,aAAa;EACb,SAAS;EACT,CAAC;CACF,SAAS,EAAE,SAAS,CAAC,QAAQ;EAC5B,aAAa;EACb,SAAS;EACT,CAAC;CACF,CAAC;AAEF,MAAa,4BAA4B,EAAE,KAAK,yBAAyB;AACzE,MAAa,sBAAsB,EAAE,KAAK,kBAAkB;AAC5D,MAAa,kCAAkC,EAAE,KAChD,+BACA;AAED,MAAa,qCAAqC,EAAE,OAAO;CAC1D,IAAI;CACJ,OAAO,EAAE,QAAQ;CACjB,aAAa,EAAE,QAAQ;CACvB,UAAU;CACV,UAAU,EAAE,SAAS;CACrB,YAAY,EAAE,SAAS;CACvB,cAAc,EAAE,SAAS;CACzB,oBAAoB,gCAAgC,UAAU;CAC9D,sBAAsB,EAAE,MAAM,qCAAqC;CACnE,SAAS,EAAE,SAAS;CACpB,CAAC;AAEF,MAAa,yCAAyC,EAAE,OAAO;CAC9D,MAAM;CACN,OAAO,EAAE,QAAQ;CACjB,aAAa,EAAE,QAAQ;CACvB,SAAS,EAAE,QAAQ;CACnB,kBAAkB,EAAE,MAAM,oBAAoB;CAC9C,WAAW,EAAE,SAAS;CACtB,aAAa,EAAE,SAAS;CACxB,cAAc,EAAE,SAAS;CACzB,iBAAiB,EAAE,MAAM,CAAC,UAAU;CACpC,CAAC;AAEF,MAAa,mCAAmC,EAAE,OAAO;CACxD,MAAM;CACN,OAAO,EAAE,QAAQ;CACjB,aAAa,EAAE,QAAQ;CACvB,SAAS,EAAE,QAAQ;CACnB,QAAQ,EAAE,KAAK,CAAC,MAAM,WAAW,CAAC;CAClC,SAAS,EAAE,SAAS;CACpB,UAAU,EAAE,QAAQ,CAAC,KAAK;CAC1B,YAAY,EAAE,MAAM,CAAC,UAAU;CAC/B,CAAC;AAEF,MAAa,qCAAqC,EAAE,OAAO;CAC1D,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,CAAC;AAEF,MAAa,sCAAsC,EAAE,OAAO;CAC3D,WAAW,EAAE,MAAM;CACnB,OAAO,EAAE,MAAM,mCAAmC;CAClD,uBAAuB,EAAE,MAAM,uCAAuC;CACtE,sBAAsB,EAAE,MAAM,iCAAiC;CAC/D,gBAAgB,EAAE,MAAM,oCAAoC;CAC5D,CAAC;;;;;;;;AA+DF,MAAa,gCAAgC,EAC3C,OAAO;CAEP,YAAY,EAAE,SAAS,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,aAAa,EAAE,SAAS,CAAC,QAAQ;EAChC,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,SAAS,CAAC,QAAQ;EAC9B,aAAa;EACb,SAAS;EACT,CAAC;CACF,gBAAgB,EAAE,SAAS,CAAC,QAAQ;EACnC,aAAa;EACb,SAAS;EACT,CAAC;CACF,eAAe,EAAE,SAAS,CAAC,QAAQ;EAClC,aAAa;EACb,SAAS;EACT,CAAC;CACF,aAAa,EAAE,SAAS,CAAC,QAAQ;EAChC,aAAa;EACb,SAAS;EACT,CAAC;CAGF,yBAAyB,EAAE,QAAQ,CAAC,UAAU,CAAC,QAAQ;EACtD,aAAa;EACb,SAAS;EACT,CAAC;CAGF,sBAAsB,EACpB,KAAK;EAAC;EAAkB;EAAa;EAAiB,CAAC,CACvD,QAAQ;EACR,aACC;EACD,SAAS;EACT,CAAC;CAGH,sBAAsB,EAAE,SAAS,CAAC,QAAQ;EACzC,aAAa;EACb,SAAS;EACT,CAAC;CACF,mBAAmB,EAAE,SAAS,CAAC,QAAQ;EACtC,aAAa;EACb,SAAS;EACT,CAAC;CACF,gBAAgB,EAAE,SAAS,CAAC,QAAQ;EACnC,aACC;EACD,SAAS;EACT,CAAC;CACF,CAAC,CACD,QAAQ,EACR,aAAa,+BACb,CAAC;;;;AASH,MAAa,mCAAmC,EAC9C,OAAO,EACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;CAC/B,aAAa;CACb,SAAS;CACT,CAAC,EACF,CAAC,CACD,QAAQ,EACR,aAAa,qDACb,CAAC;;;;AAKH,MAAa,oCAAoC,8BAC/C,OAAO,EACP,WAAW,EAAE,MAAM,CAAC,QAAQ;CAC3B,aAAa;CACb,SAAS;CACT,CAAC,EACF,CAAC,CACD,QAAQ,EACR,aAAa,yDACb,CAAC;;;;AAKH,MAAa,sCAAsC,EACjD,OAAO;CACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;EAC/B,aAAa;EACb,SAAS;EACT,CAAC;CACF,WAAW,EAAE,MAAM,CAAC,QAAQ;EAC3B,aAAa;EACb,SAAS;EACT,CAAC;CACF,UAAU,8BAA8B,SAAS,CAAC,QAAQ,EACzD,aAAa,wCACb,CAAC;CACF,CAAC,CACD,QAAQ,EACR,aAAa,2DACb,CAAC;AAGH,MAAa,uCACZ,8BAA8B,QAAQ,EACrC,aAAa,kCACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"ai-agent.js","names":[],"sources":["../../src/api/ai-agent.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport {\n\tAI_AGENT_BEHAVIOR_SETTING_KEYS,\n\tAI_AGENT_DROPPED_SKILL_TEMPLATE_NAMES,\n\tAI_AGENT_RESERVED_TOOL_SKILL_TEMPLATE_NAMES,\n\tAI_AGENT_TOOL_CATEGORIES,\n\tAI_AGENT_TOOL_GROUPS,\n\tAI_AGENT_TOOL_IDS,\n} from \"./ai-agent-capabilities\";\n\n/**\n * Model selection options are API-canonical and returned by `plan.getPlanInfo.aiModels`.\n * Keep request/response schemas generic to avoid hard-coded frontend model policy drift.\n */\n\n/**\n * Available AI agent goals/intents\n */\nexport const AI_AGENT_GOALS = [\n\t{ value: \"sales\", label: \"Increase sales conversions\" },\n\t{ value: \"support\", label: \"Provide customer support\" },\n\t{ value: \"product_qa\", label: \"Answer product questions\" },\n\t{ value: \"lead_qualification\", label: \"Qualify leads\" },\n\t{ value: \"scheduling\", label: \"Schedule appointments\" },\n\t{ value: \"feedback\", label: \"Collect customer feedback\" },\n] as const;\n\nexport type AIAgentGoal = (typeof AI_AGENT_GOALS)[number][\"value\"];\n\nexport const AI_AGENT_CORE_PROMPT_DOCUMENT_NAMES = [\n\t\"agent.md\",\n\t\"security.md\",\n\t\"behaviour.md\",\n\t\"visitor-contact.md\",\n\t\"participation.md\",\n\t\"decision.md\",\n\t\"grounding.md\",\n\t\"capabilities.md\",\n] as const;\nexport type AiAgentCorePromptDocumentName =\n\t(typeof AI_AGENT_CORE_PROMPT_DOCUMENT_NAMES)[number];\n\nexport const AI_AGENT_EDITABLE_CORE_PROMPT_DOCUMENT_NAMES = [\n\t\"behaviour.md\",\n\t\"participation.md\",\n\t\"grounding.md\",\n\t\"capabilities.md\",\n\t\"visitor-contact.md\",\n\t\"decision.md\",\n] as const;\nexport type AiAgentEditableCorePromptDocumentName =\n\t(typeof AI_AGENT_EDITABLE_CORE_PROMPT_DOCUMENT_NAMES)[number];\n\nexport const AI_AGENT_BEHAVIOR_PROMPT_IDS = [\n\t\"visitor_contact\",\n\t\"smart_decision\",\n] as const;\nexport type AiAgentBehaviorPromptId =\n\t(typeof AI_AGENT_BEHAVIOR_PROMPT_IDS)[number];\n\nexport const AI_AGENT_BEHAVIOR_PROMPT_DOCUMENT_NAMES = [\n\t\"visitor-contact.md\",\n\t\"decision.md\",\n] as const;\nexport type AiAgentBehaviorPromptDocumentName =\n\t(typeof AI_AGENT_BEHAVIOR_PROMPT_DOCUMENT_NAMES)[number];\n\nexport const aiAgentPromptDocumentKindSchema = z.enum([\"core\", \"skill\"]);\n\nexport const aiAgentSkillPromptDocumentNameSchema = z\n\t.string()\n\t.regex(/^[a-z0-9][a-z0-9-]{1,62}\\.md$/, {\n\t\tmessage: \"Skill name must match ^[a-z0-9][a-z0-9-]{1,62}\\\\.md$\",\n\t})\n\t.refine(\n\t\t(value) => !AI_AGENT_CORE_PROMPT_DOCUMENT_NAMES.includes(value as never),\n\t\t{\n\t\t\tmessage: \"Skill name cannot use reserved core document names.\",\n\t\t}\n\t);\n\nexport const aiAgentCustomSkillPromptDocumentNameSchema =\n\taiAgentSkillPromptDocumentNameSchema\n\t\t.refine(\n\t\t\t(value) =>\n\t\t\t\t!AI_AGENT_RESERVED_TOOL_SKILL_TEMPLATE_NAMES.includes(value as never),\n\t\t\t{\n\t\t\t\tmessage: \"Skill name is reserved for a default tool-attached skill.\",\n\t\t\t}\n\t\t)\n\t\t.refine(\n\t\t\t(value) =>\n\t\t\t\t!AI_AGENT_DROPPED_SKILL_TEMPLATE_NAMES.includes(value as never),\n\t\t\t{\n\t\t\t\tmessage: \"Skill name is reserved and cannot be used.\",\n\t\t\t}\n\t\t);\n\nexport const aiAgentPromptDocumentResponseSchema = z.object({\n\tid: z.ulid(),\n\torganizationId: z.ulid(),\n\twebsiteId: z.ulid(),\n\taiAgentId: z.ulid(),\n\tkind: aiAgentPromptDocumentKindSchema,\n\tname: z.string(),\n\tcontent: z.string(),\n\tenabled: z.boolean(),\n\tpriority: z.number().int(),\n\tcreatedByUserId: z.ulid().nullable(),\n\tupdatedByUserId: z.ulid().nullable(),\n\tcreatedAt: z.string(),\n\tupdatedAt: z.string(),\n});\n\n/**\n * AI Agent response schema\n */\nexport const aiAgentResponseSchema = z.object({\n\tid: z.ulid().openapi({\n\t\tdescription: \"The AI agent's unique identifier.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: z.string().openapi({\n\t\tdescription: \"The AI agent's display name.\",\n\t\texample: \"Support Assistant\",\n\t}),\n\tdescription: z.string().nullable().openapi({\n\t\tdescription: \"A brief description of the AI agent's purpose.\",\n\t\texample: \"Helps users with common support questions.\",\n\t}),\n\tbasePrompt: z.string().openapi({\n\t\tdescription: \"The system prompt that defines the AI agent's behavior.\",\n\t\texample: \"You are a helpful support assistant...\",\n\t}),\n\tmodel: z.string().openapi({\n\t\tdescription: \"The OpenRouter model identifier.\",\n\t\texample: \"moonshotai/kimi-k2-0905\",\n\t}),\n\ttemperature: z.number().nullable().openapi({\n\t\tdescription: \"The temperature setting for response generation (0-2).\",\n\t\texample: 0.7,\n\t}),\n\tmaxOutputTokens: z.number().nullable().openapi({\n\t\tdescription: \"Maximum tokens for response generation.\",\n\t\texample: 1024,\n\t}),\n\tisActive: z.boolean().openapi({\n\t\tdescription: \"Whether the AI agent is currently active.\",\n\t\texample: true,\n\t}),\n\tlastUsedAt: z.string().nullable().openapi({\n\t\tdescription: \"When the AI agent was last used.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n\tusageCount: z.number().openapi({\n\t\tdescription: \"Total number of times the AI agent has been used.\",\n\t\texample: 42,\n\t}),\n\tgoals: z\n\t\t.array(z.string())\n\t\t.nullable()\n\t\t.openapi({\n\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\texample: [\"support\", \"product_qa\"],\n\t\t}),\n\tcreatedAt: z.string().openapi({\n\t\tdescription: \"When the AI agent was created.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n\tupdatedAt: z.string().openapi({\n\t\tdescription: \"When the AI agent was last updated.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n\tonboardingCompletedAt: z.string().nullable().openapi({\n\t\tdescription:\n\t\t\t\"When onboarding was completed. Null if still in onboarding flow.\",\n\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t}),\n});\n\n/**\n * Create AI Agent request schema\n */\nexport const createAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug to create the AI agent for.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tname: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Name is required.\" })\n\t\t\t.max(100, { message: \"Name must be 100 characters or fewer.\" })\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The AI agent's display name.\",\n\t\t\t\texample: \"Support Assistant\",\n\t\t\t}),\n\t\tdescription: z\n\t\t\t.string()\n\t\t\t.max(500, { message: \"Description must be 500 characters or fewer.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"A brief description of the AI agent's purpose.\",\n\t\t\t\texample: \"Helps users with common support questions.\",\n\t\t\t}),\n\t\tbasePrompt: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Base prompt is required.\" })\n\t\t\t.max(10_000, {\n\t\t\t\tmessage: \"Base prompt must be 10,000 characters or fewer.\",\n\t\t\t})\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The system prompt that defines the AI agent's behavior.\",\n\t\t\t\texample: \"You are a helpful support assistant...\",\n\t\t\t}),\n\t\tmodel: z.string().min(1, { message: \"Model is required.\" }).openapi({\n\t\t\tdescription: \"The OpenRouter model identifier.\",\n\t\t\texample: \"moonshotai/kimi-k2-0905\",\n\t\t}),\n\t\ttemperature: z\n\t\t\t.number()\n\t\t\t.min(0, { message: \"Temperature must be at least 0.\" })\n\t\t\t.max(2, { message: \"Temperature must be at most 2.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The temperature setting for response generation (0-2).\",\n\t\t\t\texample: 0.7,\n\t\t\t}),\n\t\tmaxOutputTokens: z\n\t\t\t.number()\n\t\t\t.min(100, { message: \"Max tokens must be at least 100.\" })\n\t\t\t.max(16_000, { message: \"Max tokens must be at most 16,000.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Maximum tokens for response generation.\",\n\t\t\t\texample: 1024,\n\t\t\t}),\n\t\tgoals: z\n\t\t\t.array(z.string())\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\t\texample: [\"support\", \"product_qa\"],\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to create a new AI agent.\",\n\t});\n\n/**\n * Update AI Agent request schema\n */\nexport const updateAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Name is required.\" })\n\t\t\t.max(100, { message: \"Name must be 100 characters or fewer.\" })\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The AI agent's display name.\",\n\t\t\t\texample: \"Support Assistant\",\n\t\t\t}),\n\t\tdescription: z\n\t\t\t.string()\n\t\t\t.max(500, { message: \"Description must be 500 characters or fewer.\" })\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"A brief description of the AI agent's purpose.\",\n\t\t\t\texample: \"Helps users with common support questions.\",\n\t\t\t}),\n\t\tbasePrompt: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Base prompt is required.\" })\n\t\t\t.max(10_000, {\n\t\t\t\tmessage: \"Base prompt must be 10,000 characters or fewer.\",\n\t\t\t})\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The system prompt that defines the AI agent's behavior.\",\n\t\t\t\texample: \"You are a helpful support assistant...\",\n\t\t\t}),\n\t\tmodel: z.string().min(1, { message: \"Model is required.\" }).openapi({\n\t\t\tdescription: \"The OpenRouter model identifier.\",\n\t\t\texample: \"moonshotai/kimi-k2-0905\",\n\t\t}),\n\t\ttemperature: z\n\t\t\t.number()\n\t\t\t.min(0, { message: \"Temperature must be at least 0.\" })\n\t\t\t.max(2, { message: \"Temperature must be at most 2.\" })\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The temperature setting for response generation (0-2).\",\n\t\t\t\texample: 0.7,\n\t\t\t}),\n\t\tmaxOutputTokens: z\n\t\t\t.number()\n\t\t\t.min(100, { message: \"Max tokens must be at least 100.\" })\n\t\t\t.max(16_000, { message: \"Max tokens must be at most 16,000.\" })\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"Maximum tokens for response generation.\",\n\t\t\t\texample: 1024,\n\t\t\t}),\n\t\tgoals: z\n\t\t\t.array(z.string())\n\t\t\t.nullable()\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\t\texample: [\"support\", \"product_qa\"],\n\t\t\t}),\n\t\tonboardingCompletedAt: z.string().nullable().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Mark onboarding as complete by setting this timestamp. Set to current ISO timestamp to complete onboarding.\",\n\t\t\texample: \"2024-01-01T00:00:00.000Z\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to update an existing AI agent.\",\n\t});\n\n/**\n * Toggle AI Agent active status request schema\n */\nexport const toggleAiAgentActiveRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tisActive: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI agent should be active.\",\n\t\t\texample: true,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to toggle an AI agent's active status.\",\n\t});\n\n/**\n * Delete AI Agent request schema\n */\nexport const deleteAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to permanently delete an AI agent.\",\n\t});\n\n/**\n * Get AI Agent request schema\n */\nexport const getAiAgentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get the AI agent for a website.\",\n\t});\n\n/**\n * Generate Base Prompt request schema\n * Used to scrape a website and generate a tailored base prompt for the AI agent\n */\nexport const generateBasePromptRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\tsourceUrl: z\n\t\t\t.string()\n\t\t\t.url({ message: \"Please enter a valid URL.\" })\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"The URL to scrape for content and brand information. Optional - if not provided, manualDescription should be used.\",\n\t\t\t\texample: \"https://example.com\",\n\t\t\t}),\n\t\tagentName: z\n\t\t\t.string()\n\t\t\t.min(1, { message: \"Agent name is required.\" })\n\t\t\t.max(100, { message: \"Agent name must be 100 characters or fewer.\" })\n\t\t\t.openapi({\n\t\t\t\tdescription: \"The name for the AI agent.\",\n\t\t\t\texample: \"Support Assistant\",\n\t\t\t}),\n\t\tgoals: z.array(z.string()).openapi({\n\t\t\tdescription: \"The goals/intents for this AI agent.\",\n\t\t\texample: [\"support\", \"product_qa\"],\n\t\t}),\n\t\tmanualDescription: z\n\t\t\t.string()\n\t\t\t.max(1000, {\n\t\t\t\tmessage: \"Description must be 1000 characters or fewer.\",\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.openapi({\n\t\t\t\tdescription:\n\t\t\t\t\t\"Manual description of the business, used when scraping returns no description or no URL is provided.\",\n\t\t\t\texample: \"We help small businesses manage their inventory efficiently.\",\n\t\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Request to generate a base prompt by scraping a website and using AI.\",\n\t});\n\n/**\n * Generate Base Prompt response schema\n */\nexport const generateBasePromptResponseSchema = z\n\t.object({\n\t\tbasePrompt: z.string().openapi({\n\t\t\tdescription: \"The generated base prompt for the AI agent.\",\n\t\t\texample: \"You are a helpful support assistant for Acme Corp...\",\n\t\t}),\n\t\tisGenerated: z.boolean().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Whether the prompt was AI-generated (true) or fell back to default (false).\",\n\t\t\texample: true,\n\t\t}),\n\t\tcompanyName: z.string().nullable().openapi({\n\t\t\tdescription: \"The company name extracted from the website.\",\n\t\t\texample: \"Acme Corp\",\n\t\t}),\n\t\twebsiteDescription: z.string().nullable().openapi({\n\t\t\tdescription: \"The description extracted from the website.\",\n\t\t\texample: \"Acme Corp helps businesses grow with innovative solutions.\",\n\t\t}),\n\t\tlogo: z.string().nullable().openapi({\n\t\t\tdescription: \"The logo URL extracted from the website (og:image).\",\n\t\t\texample: \"https://example.com/logo.png\",\n\t\t}),\n\t\tfavicon: z.string().nullable().openapi({\n\t\t\tdescription: \"The favicon URL extracted from the website.\",\n\t\t\texample: \"https://example.com/favicon.ico\",\n\t\t}),\n\t\tdiscoveredLinksCount: z.number().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Number of pages discovered on the website for future knowledge base training.\",\n\t\t\texample: 47,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Response containing the generated base prompt and brand info.\",\n\t});\n\nexport const createSkillDocumentRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tname: aiAgentCustomSkillPromptDocumentNameSchema,\n\tcontent: z.string().max(50_000).openapi({\n\t\tdescription: \"Markdown content for the skill document.\",\n\t\texample: \"## Workflow\\\\nWhen refund appears, collect order ID first.\",\n\t}),\n\tenabled: z.boolean().optional(),\n\tpriority: z.number().int().min(-100).max(100).optional(),\n});\n\nexport const updateSkillDocumentRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent ID.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tskillDocumentId: z.ulid().openapi({\n\t\t\tdescription: \"The skill prompt document ID.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tname: aiAgentCustomSkillPromptDocumentNameSchema.optional(),\n\t\tcontent: z.string().max(50_000).optional(),\n\t\tenabled: z.boolean().optional(),\n\t\tpriority: z.number().int().min(-100).max(100).optional(),\n\t})\n\t.refine(\n\t\t(data) =>\n\t\t\tdata.name !== undefined ||\n\t\t\tdata.content !== undefined ||\n\t\t\tdata.enabled !== undefined ||\n\t\t\tdata.priority !== undefined,\n\t\t{\n\t\t\tmessage: \"At least one field must be provided.\",\n\t\t}\n\t);\n\nexport const deleteSkillDocumentRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tskillDocumentId: z.ulid().openapi({\n\t\tdescription: \"The skill prompt document ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport const toggleSkillDocumentRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tskillDocumentId: z.ulid().openapi({\n\t\tdescription: \"The skill prompt document ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tenabled: z.boolean().openapi({\n\t\tdescription: \"Whether the skill is enabled for runtime selection.\",\n\t\texample: true,\n\t}),\n});\n\nexport const aiAgentToolCategorySchema = z.enum(AI_AGENT_TOOL_CATEGORIES);\nexport const aiAgentToolGroupSchema = z.enum(AI_AGENT_TOOL_GROUPS);\nexport const aiAgentToolIdSchema = z.enum(AI_AGENT_TOOL_IDS);\nexport const aiAgentBehaviorSettingKeySchema = z.enum(\n\tAI_AGENT_BEHAVIOR_SETTING_KEYS\n);\n\nexport const aiAgentCapabilitiesToolStateSchema = z.object({\n\tid: aiAgentToolIdSchema,\n\tlabel: z.string(),\n\tdescription: z.string(),\n\tcategory: aiAgentToolCategorySchema,\n\tgroup: aiAgentToolGroupSchema,\n\torder: z.number().int(),\n\tisSystem: z.boolean(),\n\tisRequired: z.boolean(),\n\tisToggleable: z.boolean(),\n\tbehaviorSettingKey: aiAgentBehaviorSettingKeySchema.nullable(),\n\tenabled: z.boolean(),\n\tskillName: aiAgentSkillPromptDocumentNameSchema,\n\tskillLabel: z.string(),\n\tskillDescription: z.string(),\n\tskillContent: z.string(),\n\tskillDocumentId: z.ulid().nullable(),\n\tskillHasOverride: z.boolean(),\n\tskillIsCustomized: z.boolean(),\n});\n\nexport const getCapabilitiesStudioRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport const getCapabilitiesStudioResponseSchema = z.object({\n\taiAgentId: z.ulid(),\n\ttools: z.array(aiAgentCapabilitiesToolStateSchema),\n\tcustomSkillDocuments: z.array(aiAgentPromptDocumentResponseSchema),\n});\n\nexport const upsertToolSkillOverrideRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\ttoolId: aiAgentToolIdSchema,\n\tcontent: z.string().max(50_000).openapi({\n\t\tdescription: \"Markdown content for the tool-attached skill override.\",\n\t\texample: \"## Rules\\\\nUse this tool only when confidence is high.\",\n\t}),\n});\n\nexport const resetToolSkillOverrideRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\ttoolId: aiAgentToolIdSchema,\n});\n\nexport const aiAgentBehaviorPromptIdSchema = z.enum(\n\tAI_AGENT_BEHAVIOR_PROMPT_IDS\n);\nexport const aiAgentBehaviorPromptDocumentNameSchema = z.enum(\n\tAI_AGENT_BEHAVIOR_PROMPT_DOCUMENT_NAMES\n);\nexport const aiAgentCorePromptDocumentNameSchema = z.enum(\n\tAI_AGENT_CORE_PROMPT_DOCUMENT_NAMES\n);\nexport const aiAgentEditableCorePromptDocumentNameSchema = z.enum(\n\tAI_AGENT_EDITABLE_CORE_PROMPT_DOCUMENT_NAMES\n);\n\nexport const aiAgentBehaviorPromptPresetSchema = z.object({\n\tid: z.string(),\n\tlabel: z.string(),\n\tdescription: z.string(),\n\tcontent: z.string(),\n});\n\nexport const aiAgentPromptStudioEntrySchema = z.object({\n\tdocumentName: aiAgentEditableCorePromptDocumentNameSchema,\n\tlabel: z.string(),\n\tdescription: z.string(),\n\tcontent: z.string(),\n\tdefaultContent: z.string(),\n\thasOverride: z.boolean(),\n\tdocumentId: z.ulid().nullable(),\n\tpresets: z.array(aiAgentBehaviorPromptPresetSchema),\n});\n\nexport const aiAgentBehaviorStudioEntrySchema = z.object({\n\tid: aiAgentBehaviorPromptIdSchema,\n\tlabel: z.string(),\n\tdescription: z.string(),\n\tdocumentName: aiAgentBehaviorPromptDocumentNameSchema,\n\tcontent: z.string(),\n\tdefaultContent: z.string(),\n\thasOverride: z.boolean(),\n\tdocumentId: z.ulid().nullable(),\n\tpresets: z.array(aiAgentBehaviorPromptPresetSchema),\n});\n\nexport const getBehaviorStudioRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport const getBehaviorStudioResponseSchema = z.object({\n\taiAgentId: z.ulid(),\n\tbehaviors: z.array(aiAgentBehaviorStudioEntrySchema),\n});\n\nexport const getPromptStudioRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n});\n\nexport const getPromptStudioResponseSchema = z.object({\n\taiAgentId: z.ulid(),\n\tcorePrompts: z.array(aiAgentPromptStudioEntrySchema),\n});\n\nexport const upsertBehaviorPromptRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tbehaviorId: aiAgentBehaviorPromptIdSchema,\n\tcontent: z.string().max(50_000).openapi({\n\t\tdescription: \"Prompt content for the selected behavior.\",\n\t\texample: \"## Visitor Identification\\\\nAsk only if needed for account work.\",\n\t}),\n});\n\nexport const upsertCorePromptRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tdocumentName: aiAgentEditableCorePromptDocumentNameSchema,\n\tcontent: z.string().max(50_000).openapi({\n\t\tdescription: \"Prompt content for the selected core policy document.\",\n\t\texample: \"## Participation Policy\\\\nSend one concise public reply per run.\",\n\t}),\n});\n\nexport const upsertBehaviorPromptResponseSchema = z.object({\n\tremoved: z.boolean(),\n\tdocument: aiAgentPromptDocumentResponseSchema.nullable(),\n});\n\nexport const upsertCorePromptResponseSchema =\n\tupsertBehaviorPromptResponseSchema;\n\nexport const resetBehaviorPromptRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tbehaviorId: aiAgentBehaviorPromptIdSchema,\n});\n\nexport const resetCorePromptRequestSchema = z.object({\n\twebsiteSlug: z.string().openapi({\n\t\tdescription: \"The website slug.\",\n\t\texample: \"my-website\",\n\t}),\n\taiAgentId: z.ulid().openapi({\n\t\tdescription: \"The AI agent ID.\",\n\t\texample: \"01JG000000000000000000000\",\n\t}),\n\tdocumentName: aiAgentEditableCorePromptDocumentNameSchema,\n});\n\nexport const resetBehaviorPromptResponseSchema = z.object({\n\tremoved: z.boolean(),\n});\n\nexport const resetCorePromptResponseSchema = resetBehaviorPromptResponseSchema;\n\nexport type AiAgentResponse = z.infer<typeof aiAgentResponseSchema>;\nexport type CreateAiAgentRequest = z.infer<typeof createAiAgentRequestSchema>;\nexport type UpdateAiAgentRequest = z.infer<typeof updateAiAgentRequestSchema>;\nexport type ToggleAiAgentActiveRequest = z.infer<\n\ttypeof toggleAiAgentActiveRequestSchema\n>;\nexport type DeleteAiAgentRequest = z.infer<typeof deleteAiAgentRequestSchema>;\nexport type GetAiAgentRequest = z.infer<typeof getAiAgentRequestSchema>;\nexport type GenerateBasePromptRequest = z.infer<\n\ttypeof generateBasePromptRequestSchema\n>;\nexport type GenerateBasePromptResponse = z.infer<\n\ttypeof generateBasePromptResponseSchema\n>;\nexport type AiAgentPromptDocumentResponse = z.infer<\n\ttypeof aiAgentPromptDocumentResponseSchema\n>;\nexport type CreateSkillDocumentRequest = z.infer<\n\ttypeof createSkillDocumentRequestSchema\n>;\nexport type UpdateSkillDocumentRequest = z.infer<\n\ttypeof updateSkillDocumentRequestSchema\n>;\nexport type DeleteSkillDocumentRequest = z.infer<\n\ttypeof deleteSkillDocumentRequestSchema\n>;\nexport type ToggleSkillDocumentRequest = z.infer<\n\ttypeof toggleSkillDocumentRequestSchema\n>;\nexport type GetCapabilitiesStudioRequest = z.infer<\n\ttypeof getCapabilitiesStudioRequestSchema\n>;\nexport type GetCapabilitiesStudioResponse = z.infer<\n\ttypeof getCapabilitiesStudioResponseSchema\n>;\nexport type AiAgentCapabilitiesToolState = z.infer<\n\ttypeof aiAgentCapabilitiesToolStateSchema\n>;\nexport type UpsertToolSkillOverrideRequest = z.infer<\n\ttypeof upsertToolSkillOverrideRequestSchema\n>;\nexport type ResetToolSkillOverrideRequest = z.infer<\n\ttypeof resetToolSkillOverrideRequestSchema\n>;\nexport type AiAgentBehaviorPromptPreset = z.infer<\n\ttypeof aiAgentBehaviorPromptPresetSchema\n>;\nexport type AiAgentPromptStudioEntry = z.infer<\n\ttypeof aiAgentPromptStudioEntrySchema\n>;\nexport type AiAgentBehaviorStudioEntry = z.infer<\n\ttypeof aiAgentBehaviorStudioEntrySchema\n>;\nexport type GetBehaviorStudioRequest = z.infer<\n\ttypeof getBehaviorStudioRequestSchema\n>;\nexport type GetBehaviorStudioResponse = z.infer<\n\ttypeof getBehaviorStudioResponseSchema\n>;\nexport type GetPromptStudioRequest = z.infer<\n\ttypeof getPromptStudioRequestSchema\n>;\nexport type GetPromptStudioResponse = z.infer<\n\ttypeof getPromptStudioResponseSchema\n>;\nexport type UpsertBehaviorPromptRequest = z.infer<\n\ttypeof upsertBehaviorPromptRequestSchema\n>;\nexport type UpsertBehaviorPromptResponse = z.infer<\n\ttypeof upsertBehaviorPromptResponseSchema\n>;\nexport type UpsertCorePromptRequest = z.infer<\n\ttypeof upsertCorePromptRequestSchema\n>;\nexport type UpsertCorePromptResponse = z.infer<\n\ttypeof upsertCorePromptResponseSchema\n>;\nexport type ResetBehaviorPromptRequest = z.infer<\n\ttypeof resetBehaviorPromptRequestSchema\n>;\nexport type ResetBehaviorPromptResponse = z.infer<\n\ttypeof resetBehaviorPromptResponseSchema\n>;\nexport type ResetCorePromptRequest = z.infer<\n\ttypeof resetCorePromptRequestSchema\n>;\nexport type ResetCorePromptResponse = z.infer<\n\ttypeof resetCorePromptResponseSchema\n>;\n\n/**\n * AI Agent Behavior Settings Schema\n *\n * Controls how the AI agent behaves in conversations.\n * Simplified for MVP - AI responds immediately and decides when to respond\n * based on context, not configuration.\n */\nexport const aiAgentBehaviorSettingsSchema = z\n\t.object({\n\t\t// Capability toggles\n\t\tcanResolve: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can mark conversations as resolved.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanMarkSpam: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can mark conversations as spam.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanAssign: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can assign conversations to team members.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanSetPriority: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can change conversation priority.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanCategorize: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can add conversations to views.\",\n\t\t\texample: true,\n\t\t}),\n\t\tcanEscalate: z.boolean().openapi({\n\t\t\tdescription: \"Whether the AI can escalate conversations to human agents.\",\n\t\t\texample: true,\n\t\t}),\n\n\t\t// Escalation config\n\t\tdefaultEscalationUserId: z.string().nullable().openapi({\n\t\t\tdescription: \"Default user ID to assign escalated conversations to.\",\n\t\t\texample: null,\n\t\t}),\n\t\tmaxToolInvocationsPerRun: z.number().int().min(10).max(50).openapi({\n\t\t\tdescription:\n\t\t\t\t\"Maximum number of non-finish tool invocations allowed per run.\",\n\t\t\texample: 15,\n\t\t}),\n\n\t\t// Background analysis\n\t\tautoAnalyzeSentiment: z.boolean().openapi({\n\t\t\tdescription: \"Whether to automatically analyze conversation sentiment.\",\n\t\t\texample: true,\n\t\t}),\n\t\tautoGenerateTitle: z.boolean().openapi({\n\t\t\tdescription: \"Whether to automatically generate conversation titles.\",\n\t\t\texample: true,\n\t\t}),\n\t\tautoCategorize: z.boolean().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Whether to automatically add conversations to matching views.\",\n\t\t\texample: false,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"AI agent behavior settings.\",\n\t});\n\nexport type AiAgentBehaviorSettings = z.infer<\n\ttypeof aiAgentBehaviorSettingsSchema\n>;\n\n/**\n * Get Behavior Settings request schema\n */\nexport const getBehaviorSettingsRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request to get behavior settings for an AI agent.\",\n\t});\n\n/**\n * Get Behavior Settings response schema\n */\nexport const getBehaviorSettingsResponseSchema = aiAgentBehaviorSettingsSchema\n\t.extend({\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing the AI agent's behavior settings.\",\n\t});\n\n/**\n * Update Behavior Settings request schema\n */\nexport const updateBehaviorSettingsRequestSchema = z\n\t.object({\n\t\twebsiteSlug: z.string().openapi({\n\t\t\tdescription: \"The website slug.\",\n\t\t\texample: \"my-website\",\n\t\t}),\n\t\taiAgentId: z.ulid().openapi({\n\t\t\tdescription: \"The AI agent's unique identifier.\",\n\t\t\texample: \"01JG000000000000000000000\",\n\t\t}),\n\t\tsettings: aiAgentBehaviorSettingsSchema.partial().openapi({\n\t\t\tdescription: \"Partial behavior settings to update.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Payload used to update an AI agent's behavior settings.\",\n\t}); /**\n * Update Behavior Settings response schema\n */\nexport const updateBehaviorSettingsResponseSchema =\n\taiAgentBehaviorSettingsSchema.openapi({\n\t\tdescription: \"The updated behavior settings.\",\n\t});\n\nexport type GetBehaviorSettingsRequest = z.infer<\n\ttypeof getBehaviorSettingsRequestSchema\n>;\nexport type GetBehaviorSettingsResponse = z.infer<\n\ttypeof getBehaviorSettingsResponseSchema\n>;\nexport type UpdateBehaviorSettingsRequest = z.infer<\n\ttypeof updateBehaviorSettingsRequestSchema\n>;\nexport type UpdateBehaviorSettingsResponse = z.infer<\n\ttypeof updateBehaviorSettingsResponseSchema\n>;\n"],"mappings":"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"}
|
package/api/conversation.d.ts
CHANGED
|
@@ -205,6 +205,8 @@ declare const createConversationRequestSchema: z.ZodObject<{
|
|
|
205
205
|
visitor_blocked: "visitor_blocked";
|
|
206
206
|
visitor_unblocked: "visitor_unblocked";
|
|
207
207
|
visitor_identified: "visitor_identified";
|
|
208
|
+
ai_paused: "ai_paused";
|
|
209
|
+
ai_resumed: "ai_resumed";
|
|
208
210
|
}>;
|
|
209
211
|
actorUserId: z.ZodNullable<z.ZodString>;
|
|
210
212
|
actorAiAgentId: z.ZodNullable<z.ZodString>;
|
|
@@ -214,8 +216,8 @@ declare const createConversationRequestSchema: z.ZodObject<{
|
|
|
214
216
|
}, z.core.$strip>, z.ZodObject<{
|
|
215
217
|
type: z.ZodLiteral<"metadata">;
|
|
216
218
|
source: z.ZodEnum<{
|
|
217
|
-
widget: "widget";
|
|
218
219
|
email: "email";
|
|
220
|
+
widget: "widget";
|
|
219
221
|
api: "api";
|
|
220
222
|
}>;
|
|
221
223
|
}, z.core.$strip>]>>;
|
|
@@ -430,6 +432,8 @@ declare const createConversationResponseSchema: z.ZodObject<{
|
|
|
430
432
|
visitor_blocked: "visitor_blocked";
|
|
431
433
|
visitor_unblocked: "visitor_unblocked";
|
|
432
434
|
visitor_identified: "visitor_identified";
|
|
435
|
+
ai_paused: "ai_paused";
|
|
436
|
+
ai_resumed: "ai_resumed";
|
|
433
437
|
}>;
|
|
434
438
|
actorUserId: z.ZodNullable<z.ZodString>;
|
|
435
439
|
actorAiAgentId: z.ZodNullable<z.ZodString>;
|
|
@@ -439,8 +443,8 @@ declare const createConversationResponseSchema: z.ZodObject<{
|
|
|
439
443
|
}, z.core.$strip>, z.ZodObject<{
|
|
440
444
|
type: z.ZodLiteral<"metadata">;
|
|
441
445
|
source: z.ZodEnum<{
|
|
442
|
-
widget: "widget";
|
|
443
446
|
email: "email";
|
|
447
|
+
widget: "widget";
|
|
444
448
|
api: "api";
|
|
445
449
|
}>;
|
|
446
450
|
}, z.core.$strip>]>>;
|
|
@@ -667,6 +671,8 @@ declare const createConversationResponseSchema: z.ZodObject<{
|
|
|
667
671
|
visitor_blocked: "visitor_blocked";
|
|
668
672
|
visitor_unblocked: "visitor_unblocked";
|
|
669
673
|
visitor_identified: "visitor_identified";
|
|
674
|
+
ai_paused: "ai_paused";
|
|
675
|
+
ai_resumed: "ai_resumed";
|
|
670
676
|
}>;
|
|
671
677
|
actorUserId: z.ZodNullable<z.ZodString>;
|
|
672
678
|
actorAiAgentId: z.ZodNullable<z.ZodString>;
|
|
@@ -676,8 +682,8 @@ declare const createConversationResponseSchema: z.ZodObject<{
|
|
|
676
682
|
}, z.core.$strip>, z.ZodObject<{
|
|
677
683
|
type: z.ZodLiteral<"metadata">;
|
|
678
684
|
source: z.ZodEnum<{
|
|
679
|
-
widget: "widget";
|
|
680
685
|
email: "email";
|
|
686
|
+
widget: "widget";
|
|
681
687
|
api: "api";
|
|
682
688
|
}>;
|
|
683
689
|
}, z.core.$strip>]>>;
|
|
@@ -690,6 +696,19 @@ declare const createConversationResponseSchema: z.ZodObject<{
|
|
|
690
696
|
}, z.core.$strip>;
|
|
691
697
|
}, z.core.$strip>;
|
|
692
698
|
type CreateConversationResponseBody = z.infer<typeof createConversationResponseSchema>;
|
|
699
|
+
declare const createConversationConflictCodeSchema: z.ZodEnum<{
|
|
700
|
+
CONVERSATION_ID_CONFLICT: "CONVERSATION_ID_CONFLICT";
|
|
701
|
+
TIMELINE_ITEM_ID_CONFLICT: "TIMELINE_ITEM_ID_CONFLICT";
|
|
702
|
+
}>;
|
|
703
|
+
type CreateConversationConflictCode = z.infer<typeof createConversationConflictCodeSchema>;
|
|
704
|
+
declare const createConversationConflictResponseSchema: z.ZodObject<{
|
|
705
|
+
code: z.ZodEnum<{
|
|
706
|
+
CONVERSATION_ID_CONFLICT: "CONVERSATION_ID_CONFLICT";
|
|
707
|
+
TIMELINE_ITEM_ID_CONFLICT: "TIMELINE_ITEM_ID_CONFLICT";
|
|
708
|
+
}>;
|
|
709
|
+
error: z.ZodString;
|
|
710
|
+
}, z.core.$strip>;
|
|
711
|
+
type CreateConversationConflictResponseBody = z.infer<typeof createConversationConflictResponseSchema>;
|
|
693
712
|
declare const listConversationsRequestSchema: z.ZodObject<{
|
|
694
713
|
visitorId: z.ZodOptional<z.ZodString>;
|
|
695
714
|
page: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
@@ -926,6 +945,8 @@ declare const listConversationsResponseSchema: z.ZodObject<{
|
|
|
926
945
|
visitor_blocked: "visitor_blocked";
|
|
927
946
|
visitor_unblocked: "visitor_unblocked";
|
|
928
947
|
visitor_identified: "visitor_identified";
|
|
948
|
+
ai_paused: "ai_paused";
|
|
949
|
+
ai_resumed: "ai_resumed";
|
|
929
950
|
}>;
|
|
930
951
|
actorUserId: z.ZodNullable<z.ZodString>;
|
|
931
952
|
actorAiAgentId: z.ZodNullable<z.ZodString>;
|
|
@@ -935,8 +956,8 @@ declare const listConversationsResponseSchema: z.ZodObject<{
|
|
|
935
956
|
}, z.core.$strip>, z.ZodObject<{
|
|
936
957
|
type: z.ZodLiteral<"metadata">;
|
|
937
958
|
source: z.ZodEnum<{
|
|
938
|
-
widget: "widget";
|
|
939
959
|
email: "email";
|
|
960
|
+
widget: "widget";
|
|
940
961
|
api: "api";
|
|
941
962
|
}>;
|
|
942
963
|
}, z.core.$strip>]>>;
|
|
@@ -1178,6 +1199,8 @@ declare const getConversationResponseSchema: z.ZodObject<{
|
|
|
1178
1199
|
visitor_blocked: "visitor_blocked";
|
|
1179
1200
|
visitor_unblocked: "visitor_unblocked";
|
|
1180
1201
|
visitor_identified: "visitor_identified";
|
|
1202
|
+
ai_paused: "ai_paused";
|
|
1203
|
+
ai_resumed: "ai_resumed";
|
|
1181
1204
|
}>;
|
|
1182
1205
|
actorUserId: z.ZodNullable<z.ZodString>;
|
|
1183
1206
|
actorAiAgentId: z.ZodNullable<z.ZodString>;
|
|
@@ -1187,8 +1210,8 @@ declare const getConversationResponseSchema: z.ZodObject<{
|
|
|
1187
1210
|
}, z.core.$strip>, z.ZodObject<{
|
|
1188
1211
|
type: z.ZodLiteral<"metadata">;
|
|
1189
1212
|
source: z.ZodEnum<{
|
|
1190
|
-
widget: "widget";
|
|
1191
1213
|
email: "email";
|
|
1214
|
+
widget: "widget";
|
|
1192
1215
|
api: "api";
|
|
1193
1216
|
}>;
|
|
1194
1217
|
}, z.core.$strip>]>>;
|
|
@@ -1250,5 +1273,5 @@ declare const getConversationSeenDataResponseSchema: z.ZodObject<{
|
|
|
1250
1273
|
}, z.core.$strip>;
|
|
1251
1274
|
type GetConversationSeenDataResponse = z.infer<typeof getConversationSeenDataResponseSchema>;
|
|
1252
1275
|
//#endregion
|
|
1253
|
-
export { CreateConversationRequestBody, CreateConversationResponseBody, GetConversationRequest, GetConversationResponse, GetConversationSeenDataResponse, ListConversationsRequest, ListConversationsResponse, MarkConversationSeenRequestBody, MarkConversationSeenResponseBody, SetConversationTypingRequestBody, SetConversationTypingResponseBody, SubmitConversationRatingRequestBody, SubmitConversationRatingResponseBody, createConversationRequestSchema, createConversationResponseSchema, getConversationRequestSchema, getConversationResponseSchema, getConversationSeenDataResponseSchema, listConversationsRequestSchema, listConversationsResponseSchema, markConversationSeenRequestSchema, markConversationSeenResponseSchema, setConversationTypingRequestSchema, setConversationTypingResponseSchema, submitConversationRatingRequestSchema, submitConversationRatingResponseSchema };
|
|
1276
|
+
export { CreateConversationConflictCode, CreateConversationConflictResponseBody, CreateConversationRequestBody, CreateConversationResponseBody, GetConversationRequest, GetConversationResponse, GetConversationSeenDataResponse, ListConversationsRequest, ListConversationsResponse, MarkConversationSeenRequestBody, MarkConversationSeenResponseBody, SetConversationTypingRequestBody, SetConversationTypingResponseBody, SubmitConversationRatingRequestBody, SubmitConversationRatingResponseBody, createConversationConflictCodeSchema, createConversationConflictResponseSchema, createConversationRequestSchema, createConversationResponseSchema, getConversationRequestSchema, getConversationResponseSchema, getConversationSeenDataResponseSchema, listConversationsRequestSchema, listConversationsResponseSchema, markConversationSeenRequestSchema, markConversationSeenResponseSchema, setConversationTypingRequestSchema, setConversationTypingResponseSchema, submitConversationRatingRequestSchema, submitConversationRatingResponseSchema };
|
|
1254
1277
|
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","names":[],"sources":["../../src/api/conversation.ts"],"sourcesContent":[],"mappings":";;;cAIa,iCAA+B,CAAA,CAAA;;EAA/B,cAAA,eAAA,YAoBV,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IApByC,
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","names":[],"sources":["../../src/api/conversation.ts"],"sourcesContent":[],"mappings":"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"}
|
package/api/conversation.js
CHANGED
|
@@ -5,7 +5,7 @@ import { z } from "@hono/zod-openapi";
|
|
|
5
5
|
//#region src/api/conversation.ts
|
|
6
6
|
const createConversationRequestSchema = z.object({
|
|
7
7
|
visitorId: z.string().optional().openapi({ description: "Visitor ID, if not provided you must provide a visitorId in the headers." }),
|
|
8
|
-
conversationId: z.string().optional().openapi({ description: "
|
|
8
|
+
conversationId: z.string().optional().openapi({ description: "Optional idempotency key for conversation creation. If provided, it is scoped to one organization+website+visitor owner tuple; retries with the same tuple reuse the existing conversation." }),
|
|
9
9
|
defaultTimelineItems: z.array(timelineItemSchema).openapi({ description: "Default timeline items to initiate the conversation with" }),
|
|
10
10
|
channel: z.string().default("widget").openapi({
|
|
11
11
|
description: "Which channel the conversation is from",
|
|
@@ -16,6 +16,11 @@ const createConversationResponseSchema = z.object({
|
|
|
16
16
|
initialTimelineItems: z.array(timelineItemSchema),
|
|
17
17
|
conversation: conversationSchema
|
|
18
18
|
}).openapi({ description: "Body including created conversation and default messages" });
|
|
19
|
+
const createConversationConflictCodeSchema = z.enum(["CONVERSATION_ID_CONFLICT", "TIMELINE_ITEM_ID_CONFLICT"]);
|
|
20
|
+
const createConversationConflictResponseSchema = z.object({
|
|
21
|
+
code: createConversationConflictCodeSchema,
|
|
22
|
+
error: z.string()
|
|
23
|
+
}).openapi({ description: "Conflict response when conversationId is already claimed by a different visitor or tenant." });
|
|
19
24
|
const listConversationsRequestSchema = z.object({
|
|
20
25
|
visitorId: z.string().optional().openapi({ description: "Visitor ID to fetch conversations for." }),
|
|
21
26
|
page: z.coerce.number().min(1).default(1).openapi({
|
|
@@ -90,5 +95,5 @@ const getConversationSeenDataResponseSchema = z.object({ seenData: z.array(z.obj
|
|
|
90
95
|
})) }).openapi({ description: "Response containing seen data for a conversation" });
|
|
91
96
|
|
|
92
97
|
//#endregion
|
|
93
|
-
export { createConversationRequestSchema, createConversationResponseSchema, getConversationRequestSchema, getConversationResponseSchema, getConversationSeenDataResponseSchema, listConversationsRequestSchema, listConversationsResponseSchema, markConversationSeenRequestSchema, markConversationSeenResponseSchema, setConversationTypingRequestSchema, setConversationTypingResponseSchema, submitConversationRatingRequestSchema, submitConversationRatingResponseSchema };
|
|
98
|
+
export { createConversationConflictCodeSchema, createConversationConflictResponseSchema, createConversationRequestSchema, createConversationResponseSchema, getConversationRequestSchema, getConversationResponseSchema, getConversationSeenDataResponseSchema, listConversationsRequestSchema, listConversationsResponseSchema, markConversationSeenRequestSchema, markConversationSeenResponseSchema, setConversationTypingRequestSchema, setConversationTypingResponseSchema, submitConversationRatingRequestSchema, submitConversationRatingResponseSchema };
|
|
94
99
|
//# sourceMappingURL=conversation.js.map
|
package/api/conversation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.js","names":[],"sources":["../../src/api/conversation.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport { conversationSchema } from \"../schemas\";\nimport { timelineItemSchema } from \"./timeline-item\";\n\nexport const createConversationRequestSchema = z\n\t.object({\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID, if not provided you must provide a visitorId in the headers.\",\n\t\t}),\n\t\tconversationId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Default conversation ID, if not provided the ID will be automatically generated.\",\n\t\t}),\n\t\tdefaultTimelineItems: z.array(timelineItemSchema).openapi({\n\t\t\tdescription: \"Default timeline items to initiate the conversation with\",\n\t\t}),\n\t\tchannel: z.string().default(\"widget\").openapi({\n\t\t\tdescription: \"Which channel the conversation is from\",\n\t\t\tdefault: \"widget\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Body for creating a conversation.\",\n\t});\n\nexport type CreateConversationRequestBody = z.infer<\n\ttypeof createConversationRequestSchema\n>;\n\nexport const createConversationResponseSchema = z\n\t.object({\n\t\tinitialTimelineItems: z.array(timelineItemSchema),\n\t\tconversation: conversationSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Body including created conversation and default messages\",\n\t});\n\nexport type CreateConversationResponseBody = z.infer<\n\ttypeof createConversationResponseSchema\n>;\n\nexport const listConversationsRequestSchema = z\n\t.object({\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription: \"Visitor ID to fetch conversations for.\",\n\t\t}),\n\t\tpage: z.coerce.number().min(1).default(1).openapi({\n\t\t\tdescription: \"Page number for pagination\",\n\t\t\tdefault: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().min(1).max(100).default(6).openapi({\n\t\t\tdescription: \"Number of conversations per page\",\n\t\t\tdefault: 6,\n\t\t}),\n\t\tstatus: z.enum([\"open\", \"closed\"]).optional().openapi({\n\t\t\tdescription: \"Filter by conversation status\",\n\t\t}),\n\t\torderBy: z.enum([\"createdAt\", \"updatedAt\"]).default(\"updatedAt\").openapi({\n\t\t\tdescription: \"Field to order conversations by\",\n\t\t\tdefault: \"updatedAt\",\n\t\t}),\n\t\torder: z.enum([\"asc\", \"desc\"]).default(\"desc\").openapi({\n\t\t\tdescription: \"Order direction\",\n\t\t\tdefault: \"desc\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Query parameters for listing conversations\",\n\t});\n\nexport type ListConversationsRequest = z.infer<\n\ttypeof listConversationsRequestSchema\n>;\n\nexport const listConversationsResponseSchema = z\n\t.object({\n\t\tconversations: z.array(conversationSchema),\n\t\tpagination: z.object({\n\t\t\tpage: z.number(),\n\t\t\tlimit: z.number(),\n\t\t\ttotal: z.number(),\n\t\t\ttotalPages: z.number(),\n\t\t\thasMore: z.boolean(),\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Paginated list of conversations\",\n\t});\n\nexport type ListConversationsResponse = z.infer<\n\ttypeof listConversationsResponseSchema\n>;\n\nexport const getConversationRequestSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation to retrieve\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Parameters for retrieving a single conversation\",\n\t});\n\nexport type GetConversationRequest = z.infer<\n\ttypeof getConversationRequestSchema\n>;\n\nexport const getConversationResponseSchema = z\n\t.object({\n\t\tconversation: conversationSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing a single conversation\",\n\t});\n\nexport type GetConversationResponse = z.infer<\n\ttypeof getConversationResponseSchema\n>;\n\nexport const markConversationSeenRequestSchema = z\n\t.object({\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID associated with the conversation. Optional if provided via the X-Visitor-Id header.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Body for marking a conversation as seen. Either visitorId must be provided via body or headers.\",\n\t});\n\nexport type MarkConversationSeenRequestBody = z.infer<\n\ttypeof markConversationSeenRequestSchema\n>;\n\nexport const markConversationSeenResponseSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation that was marked as seen\",\n\t\t}),\n\t\tlastSeenAt: z.string().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Timestamp indicating when the visitor last saw the conversation\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response confirming the conversation has been marked as seen\",\n\t});\n\nexport type MarkConversationSeenResponseBody = z.infer<\n\ttypeof markConversationSeenResponseSchema\n>;\n\nexport const setConversationTypingRequestSchema = z\n\t.object({\n\t\tisTyping: z.boolean().openapi({\n\t\t\tdescription: \"Whether the visitor is currently typing\",\n\t\t}),\n\t\tvisitorPreview: z.string().max(2000).optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Optional preview of the visitor's message while typing. Only processed when the visitor is typing.\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID associated with the conversation. Optional if provided via the X-Visitor-Id header.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Body for reporting a visitor typing state. Either visitorId must be provided via body or headers.\",\n\t});\n\nexport type SetConversationTypingRequestBody = z.infer<\n\ttypeof setConversationTypingRequestSchema\n>;\n\nexport const setConversationTypingResponseSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation receiving the typing update\",\n\t\t}),\n\t\tisTyping: z.boolean().openapi({\n\t\t\tdescription: \"Echo of the reported typing state\",\n\t\t}),\n\t\tvisitorPreview: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Preview text that was forwarded with the typing event, or null when none was sent.\",\n\t\t}),\n\t\tsentAt: z.string().openapi({\n\t\t\tdescription: \"Timestamp when the typing event was recorded\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response confirming the visitor typing state was recorded\",\n\t});\n\nexport type SetConversationTypingResponseBody = z.infer<\n\ttypeof setConversationTypingResponseSchema\n>;\n\nexport const submitConversationRatingRequestSchema = z\n\t.object({\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"Visitor rating for the conversation (1-5)\",\n\t\t\texample: 5,\n\t\t}),\n\t\tcomment: z.string().optional().openapi({\n\t\t\tdescription: \"Optional written feedback about the conversation\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID associated with the conversation. Optional if provided via the X-Visitor-Id header.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Body for submitting a visitor rating on a conversation.\",\n\t});\n\nexport type SubmitConversationRatingRequestBody = z.infer<\n\ttypeof submitConversationRatingRequestSchema\n>;\n\nexport const submitConversationRatingResponseSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation that was rated\",\n\t\t}),\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"The rating that was saved\",\n\t\t}),\n\t\tratedAt: z.string().openapi({\n\t\t\tdescription: \"Timestamp when the rating was recorded\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response confirming the conversation rating was recorded\",\n\t});\n\nexport type SubmitConversationRatingResponseBody = z.infer<\n\ttypeof submitConversationRatingResponseSchema\n>;\n\nexport const getConversationSeenDataResponseSchema = z\n\t.object({\n\t\tseenData: z.array(\n\t\t\tz.object({\n\t\t\t\tid: z.string().openapi({\n\t\t\t\t\tdescription: \"The seen record's unique identifier\",\n\t\t\t\t}),\n\t\t\t\tconversationId: z.string().openapi({\n\t\t\t\t\tdescription: \"The conversation ID\",\n\t\t\t\t}),\n\t\t\t\tuserId: z.string().nullable().openapi({\n\t\t\t\t\tdescription: \"The user ID who saw the conversation, if applicable\",\n\t\t\t\t}),\n\t\t\t\tvisitorId: z.string().nullable().openapi({\n\t\t\t\t\tdescription: \"The visitor ID who saw the conversation, if applicable\",\n\t\t\t\t}),\n\t\t\t\taiAgentId: z.string().nullable().openapi({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"The AI agent ID who saw the conversation, if applicable\",\n\t\t\t\t}),\n\t\t\t\tlastSeenAt: z.string().openapi({\n\t\t\t\t\tdescription: \"Timestamp when the conversation was last seen\",\n\t\t\t\t}),\n\t\t\t\tcreatedAt: z.string().openapi({\n\t\t\t\t\tdescription: \"When the seen record was created\",\n\t\t\t\t}),\n\t\t\t\tupdatedAt: z.string().openapi({\n\t\t\t\t\tdescription: \"When the seen record was last updated\",\n\t\t\t\t}),\n\t\t\t\tdeletedAt: z.string().nullable().openapi({\n\t\t\t\t\tdescription: \"When the seen record was deleted, if applicable\",\n\t\t\t\t}),\n\t\t\t})\n\t\t),\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing seen data for a conversation\",\n\t});\n\nexport type GetConversationSeenDataResponse = z.infer<\n\ttypeof getConversationSeenDataResponseSchema\n>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversation.js","names":[],"sources":["../../src/api/conversation.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\nimport { conversationSchema } from \"../schemas\";\nimport { timelineItemSchema } from \"./timeline-item\";\n\nexport const createConversationRequestSchema = z\n\t.object({\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID, if not provided you must provide a visitorId in the headers.\",\n\t\t}),\n\t\tconversationId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Optional idempotency key for conversation creation. If provided, it is scoped to one organization+website+visitor owner tuple; retries with the same tuple reuse the existing conversation.\",\n\t\t}),\n\t\tdefaultTimelineItems: z.array(timelineItemSchema).openapi({\n\t\t\tdescription: \"Default timeline items to initiate the conversation with\",\n\t\t}),\n\t\tchannel: z.string().default(\"widget\").openapi({\n\t\t\tdescription: \"Which channel the conversation is from\",\n\t\t\tdefault: \"widget\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Body for creating a conversation.\",\n\t});\n\nexport type CreateConversationRequestBody = z.infer<\n\ttypeof createConversationRequestSchema\n>;\n\nexport const createConversationResponseSchema = z\n\t.object({\n\t\tinitialTimelineItems: z.array(timelineItemSchema),\n\t\tconversation: conversationSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Body including created conversation and default messages\",\n\t});\n\nexport type CreateConversationResponseBody = z.infer<\n\ttypeof createConversationResponseSchema\n>;\n\nexport const createConversationConflictCodeSchema = z.enum([\n\t\"CONVERSATION_ID_CONFLICT\",\n\t\"TIMELINE_ITEM_ID_CONFLICT\",\n]);\n\nexport type CreateConversationConflictCode = z.infer<\n\ttypeof createConversationConflictCodeSchema\n>;\n\nexport const createConversationConflictResponseSchema = z\n\t.object({\n\t\tcode: createConversationConflictCodeSchema,\n\t\terror: z.string(),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Conflict response when conversationId is already claimed by a different visitor or tenant.\",\n\t});\n\nexport type CreateConversationConflictResponseBody = z.infer<\n\ttypeof createConversationConflictResponseSchema\n>;\n\nexport const listConversationsRequestSchema = z\n\t.object({\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription: \"Visitor ID to fetch conversations for.\",\n\t\t}),\n\t\tpage: z.coerce.number().min(1).default(1).openapi({\n\t\t\tdescription: \"Page number for pagination\",\n\t\t\tdefault: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().min(1).max(100).default(6).openapi({\n\t\t\tdescription: \"Number of conversations per page\",\n\t\t\tdefault: 6,\n\t\t}),\n\t\tstatus: z.enum([\"open\", \"closed\"]).optional().openapi({\n\t\t\tdescription: \"Filter by conversation status\",\n\t\t}),\n\t\torderBy: z.enum([\"createdAt\", \"updatedAt\"]).default(\"updatedAt\").openapi({\n\t\t\tdescription: \"Field to order conversations by\",\n\t\t\tdefault: \"updatedAt\",\n\t\t}),\n\t\torder: z.enum([\"asc\", \"desc\"]).default(\"desc\").openapi({\n\t\t\tdescription: \"Order direction\",\n\t\t\tdefault: \"desc\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Query parameters for listing conversations\",\n\t});\n\nexport type ListConversationsRequest = z.infer<\n\ttypeof listConversationsRequestSchema\n>;\n\nexport const listConversationsResponseSchema = z\n\t.object({\n\t\tconversations: z.array(conversationSchema),\n\t\tpagination: z.object({\n\t\t\tpage: z.number(),\n\t\t\tlimit: z.number(),\n\t\t\ttotal: z.number(),\n\t\t\ttotalPages: z.number(),\n\t\t\thasMore: z.boolean(),\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Paginated list of conversations\",\n\t});\n\nexport type ListConversationsResponse = z.infer<\n\ttypeof listConversationsResponseSchema\n>;\n\nexport const getConversationRequestSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation to retrieve\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Parameters for retrieving a single conversation\",\n\t});\n\nexport type GetConversationRequest = z.infer<\n\ttypeof getConversationRequestSchema\n>;\n\nexport const getConversationResponseSchema = z\n\t.object({\n\t\tconversation: conversationSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing a single conversation\",\n\t});\n\nexport type GetConversationResponse = z.infer<\n\ttypeof getConversationResponseSchema\n>;\n\nexport const markConversationSeenRequestSchema = z\n\t.object({\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID associated with the conversation. Optional if provided via the X-Visitor-Id header.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Body for marking a conversation as seen. Either visitorId must be provided via body or headers.\",\n\t});\n\nexport type MarkConversationSeenRequestBody = z.infer<\n\ttypeof markConversationSeenRequestSchema\n>;\n\nexport const markConversationSeenResponseSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation that was marked as seen\",\n\t\t}),\n\t\tlastSeenAt: z.string().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Timestamp indicating when the visitor last saw the conversation\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response confirming the conversation has been marked as seen\",\n\t});\n\nexport type MarkConversationSeenResponseBody = z.infer<\n\ttypeof markConversationSeenResponseSchema\n>;\n\nexport const setConversationTypingRequestSchema = z\n\t.object({\n\t\tisTyping: z.boolean().openapi({\n\t\t\tdescription: \"Whether the visitor is currently typing\",\n\t\t}),\n\t\tvisitorPreview: z.string().max(2000).optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Optional preview of the visitor's message while typing. Only processed when the visitor is typing.\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID associated with the conversation. Optional if provided via the X-Visitor-Id header.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription:\n\t\t\t\"Body for reporting a visitor typing state. Either visitorId must be provided via body or headers.\",\n\t});\n\nexport type SetConversationTypingRequestBody = z.infer<\n\ttypeof setConversationTypingRequestSchema\n>;\n\nexport const setConversationTypingResponseSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation receiving the typing update\",\n\t\t}),\n\t\tisTyping: z.boolean().openapi({\n\t\t\tdescription: \"Echo of the reported typing state\",\n\t\t}),\n\t\tvisitorPreview: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Preview text that was forwarded with the typing event, or null when none was sent.\",\n\t\t}),\n\t\tsentAt: z.string().openapi({\n\t\t\tdescription: \"Timestamp when the typing event was recorded\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response confirming the visitor typing state was recorded\",\n\t});\n\nexport type SetConversationTypingResponseBody = z.infer<\n\ttypeof setConversationTypingResponseSchema\n>;\n\nexport const submitConversationRatingRequestSchema = z\n\t.object({\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"Visitor rating for the conversation (1-5)\",\n\t\t\texample: 5,\n\t\t}),\n\t\tcomment: z.string().optional().openapi({\n\t\t\tdescription: \"Optional written feedback about the conversation\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"Visitor ID associated with the conversation. Optional if provided via the X-Visitor-Id header.\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Body for submitting a visitor rating on a conversation.\",\n\t});\n\nexport type SubmitConversationRatingRequestBody = z.infer<\n\ttypeof submitConversationRatingRequestSchema\n>;\n\nexport const submitConversationRatingResponseSchema = z\n\t.object({\n\t\tconversationId: z.string().openapi({\n\t\t\tdescription: \"The ID of the conversation that was rated\",\n\t\t}),\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"The rating that was saved\",\n\t\t}),\n\t\tratedAt: z.string().openapi({\n\t\t\tdescription: \"Timestamp when the rating was recorded\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Response confirming the conversation rating was recorded\",\n\t});\n\nexport type SubmitConversationRatingResponseBody = z.infer<\n\ttypeof submitConversationRatingResponseSchema\n>;\n\nexport const getConversationSeenDataResponseSchema = z\n\t.object({\n\t\tseenData: z.array(\n\t\t\tz.object({\n\t\t\t\tid: z.string().openapi({\n\t\t\t\t\tdescription: \"The seen record's unique identifier\",\n\t\t\t\t}),\n\t\t\t\tconversationId: z.string().openapi({\n\t\t\t\t\tdescription: \"The conversation ID\",\n\t\t\t\t}),\n\t\t\t\tuserId: z.string().nullable().openapi({\n\t\t\t\t\tdescription: \"The user ID who saw the conversation, if applicable\",\n\t\t\t\t}),\n\t\t\t\tvisitorId: z.string().nullable().openapi({\n\t\t\t\t\tdescription: \"The visitor ID who saw the conversation, if applicable\",\n\t\t\t\t}),\n\t\t\t\taiAgentId: z.string().nullable().openapi({\n\t\t\t\t\tdescription:\n\t\t\t\t\t\t\"The AI agent ID who saw the conversation, if applicable\",\n\t\t\t\t}),\n\t\t\t\tlastSeenAt: z.string().openapi({\n\t\t\t\t\tdescription: \"Timestamp when the conversation was last seen\",\n\t\t\t\t}),\n\t\t\t\tcreatedAt: z.string().openapi({\n\t\t\t\t\tdescription: \"When the seen record was created\",\n\t\t\t\t}),\n\t\t\t\tupdatedAt: z.string().openapi({\n\t\t\t\t\tdescription: \"When the seen record was last updated\",\n\t\t\t\t}),\n\t\t\t\tdeletedAt: z.string().nullable().openapi({\n\t\t\t\t\tdescription: \"When the seen record was deleted, if applicable\",\n\t\t\t\t}),\n\t\t\t})\n\t\t),\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing seen data for a conversation\",\n\t});\n\nexport type GetConversationSeenDataResponse = z.infer<\n\ttypeof getConversationSeenDataResponseSchema\n>;\n"],"mappings":"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"}
|
package/api/feedback.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ declare const feedbackSchema: z.ZodObject<{
|
|
|
9
9
|
visitorId: z.ZodNullable<z.ZodString>;
|
|
10
10
|
contactId: z.ZodNullable<z.ZodString>;
|
|
11
11
|
rating: z.ZodNumber;
|
|
12
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
12
13
|
comment: z.ZodNullable<z.ZodString>;
|
|
13
14
|
trigger: z.ZodNullable<z.ZodString>;
|
|
14
15
|
source: z.ZodString;
|
|
@@ -18,6 +19,7 @@ declare const feedbackSchema: z.ZodObject<{
|
|
|
18
19
|
type Feedback = z.infer<typeof feedbackSchema>;
|
|
19
20
|
declare const submitFeedbackRequestSchema: z.ZodObject<{
|
|
20
21
|
rating: z.ZodNumber;
|
|
22
|
+
topic: z.ZodOptional<z.ZodString>;
|
|
21
23
|
comment: z.ZodOptional<z.ZodString>;
|
|
22
24
|
trigger: z.ZodOptional<z.ZodString>;
|
|
23
25
|
source: z.ZodDefault<z.ZodString>;
|
|
@@ -35,6 +37,7 @@ declare const submitFeedbackResponseSchema: z.ZodObject<{
|
|
|
35
37
|
visitorId: z.ZodNullable<z.ZodString>;
|
|
36
38
|
contactId: z.ZodNullable<z.ZodString>;
|
|
37
39
|
rating: z.ZodNumber;
|
|
40
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
38
41
|
comment: z.ZodNullable<z.ZodString>;
|
|
39
42
|
trigger: z.ZodNullable<z.ZodString>;
|
|
40
43
|
source: z.ZodString;
|
|
@@ -61,6 +64,7 @@ declare const listFeedbackResponseSchema: z.ZodObject<{
|
|
|
61
64
|
visitorId: z.ZodNullable<z.ZodString>;
|
|
62
65
|
contactId: z.ZodNullable<z.ZodString>;
|
|
63
66
|
rating: z.ZodNumber;
|
|
67
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
64
68
|
comment: z.ZodNullable<z.ZodString>;
|
|
65
69
|
trigger: z.ZodNullable<z.ZodString>;
|
|
66
70
|
source: z.ZodString;
|
|
@@ -85,6 +89,7 @@ declare const getFeedbackResponseSchema: z.ZodObject<{
|
|
|
85
89
|
visitorId: z.ZodNullable<z.ZodString>;
|
|
86
90
|
contactId: z.ZodNullable<z.ZodString>;
|
|
87
91
|
rating: z.ZodNumber;
|
|
92
|
+
topic: z.ZodNullable<z.ZodString>;
|
|
88
93
|
comment: z.ZodNullable<z.ZodString>;
|
|
89
94
|
trigger: z.ZodNullable<z.ZodString>;
|
|
90
95
|
source: z.ZodString;
|
package/api/feedback.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.d.ts","names":[],"sources":["../../src/api/feedback.ts"],"sourcesContent":[],"mappings":";;;cAGa,gBAAc,CAAA,CAAA;;EAAd,cAAA,
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","names":[],"sources":["../../src/api/feedback.ts"],"sourcesContent":[],"mappings":";;;cAGa,gBAAc,CAAA,CAAA;;EAAd,cAAA,aA+CV;;;;;;;;;;;;;KAES,QAAA,GAAW,CAAA,CAAE,aAAa;cAGzB,6BAA2B,CAAA,CAAA;;;;;;;EApDb,SAAA,eAAA,YAAA,CAAA;EAAA,SAAA,eAAA,YAAA,CAAA;AAiD3B,CAAA,eAAoB,CAAA;AAGP,KAkCD,qBAAA,GAAwB,CAAA,CAAE,KAFnC,CAAA,OAEgD,2BAFhD,CAAA;cAIU,8BAA4B,CAAA,CAAA;;;;;;;;;;;;;;;;CApCD,eAAA,CAAA;AAAA,KA4C5B,sBAAA,GAAyB,CAAA,CAAE,KA5CC,CAAA,OA6ChC,4BA7CgC,CAAA;AAkC5B,cAeC,yBAfsC,EAeb,CAAA,CAAA,SAfa,CAAA;EAEtC,OAAA,eAAA,YAMV,CAAA;;;;;;;KAkCS,mBAAA,GAAsB,CAAA,CAAE,aAAa;cAEpC,4BAA0B,CAAA,CAAA;;;;;;;;;;;;;;;EA1CE,CAAA,eAAA,CAAA,CAAA;EAAA,UAAA,aAAA,CAAA;IAQ7B,IAAA,aAAA;IAKC,KAAA,aAAA;;;;;;KA4CD,oBAAA,GAAuB,CAAA,CAAE,aAAa;cAGrC,2BAAyB,CAAA,CAAA;;;;;;;IA/CA,SAAA,eAAA,YAAA,CAAA;IAAA,MAAA,aAAA;IA2B1B,KAAA,eAAmB,YAAkB,CAAA;IAEpC,OAAA,eAAA,YAaV,CAAA;;;;;;;KAaS,mBAAA,GAAsB,CAAA,CAAE,aAAa"}
|
package/api/feedback.js
CHANGED
|
@@ -12,6 +12,7 @@ const feedbackSchema = z.object({
|
|
|
12
12
|
description: "Rating from 1 to 5",
|
|
13
13
|
example: 5
|
|
14
14
|
}),
|
|
15
|
+
topic: z.string().nullable().openapi({ description: "Optional structured topic selected by the visitor" }),
|
|
15
16
|
comment: z.string().nullable().openapi({ description: "Optional written feedback" }),
|
|
16
17
|
trigger: z.string().nullable().openapi({ description: "What triggered this feedback (e.g., 'churn', 'conversation_resolved', 'nps_survey')" }),
|
|
17
18
|
source: z.string().openapi({
|
|
@@ -26,6 +27,7 @@ const submitFeedbackRequestSchema = z.object({
|
|
|
26
27
|
description: "Rating from 1 to 5",
|
|
27
28
|
example: 5
|
|
28
29
|
}),
|
|
30
|
+
topic: z.string().optional().openapi({ description: "Optional structured topic selected by the visitor" }),
|
|
29
31
|
comment: z.string().optional().openapi({ description: "Optional written feedback" }),
|
|
30
32
|
trigger: z.string().optional().openapi({ description: "What triggered this feedback (e.g., 'churn', 'conversation_resolved', 'nps_survey')" }),
|
|
31
33
|
source: z.string().default("widget").openapi({
|
package/api/feedback.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","names":[],"sources":["../../src/api/feedback.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\n\n// Feedback schema for responses\nexport const feedbackSchema = z\n\t.object({\n\t\tid: z.string().openapi({\n\t\t\tdescription: \"Unique identifier for the feedback\",\n\t\t}),\n\t\torganizationId: z.string().openapi({\n\t\t\tdescription: \"Organization ID\",\n\t\t}),\n\t\twebsiteId: z.string().openapi({\n\t\t\tdescription: \"Website ID the feedback belongs to\",\n\t\t}),\n\t\tconversationId: z.string().nullable().openapi({\n\t\t\tdescription: \"Conversation ID if feedback is tied to a conversation\",\n\t\t}),\n\t\tvisitorId: z.string().nullable().openapi({\n\t\t\tdescription: \"Visitor ID who submitted the feedback\",\n\t\t}),\n\t\tcontactId: z.string().nullable().openapi({\n\t\t\tdescription: \"Contact ID if visitor has one\",\n\t\t}),\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"Rating from 1 to 5\",\n\t\t\texample: 5,\n\t\t}),\n\t\tcomment: z.string().nullable().openapi({\n\t\t\tdescription: \"Optional written feedback\",\n\t\t}),\n\t\ttrigger: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"What triggered this feedback (e.g., 'churn', 'conversation_resolved', 'nps_survey')\",\n\t\t}),\n\t\tsource: z.string().openapi({\n\t\t\tdescription: \"Source of the feedback (e.g., 'widget', 'api', 'email')\",\n\t\t\tdefault: \"widget\",\n\t\t}),\n\t\tcreatedAt: z.string().openapi({\n\t\t\tdescription: \"When the feedback was submitted\",\n\t\t}),\n\t\tupdatedAt: z.string().openapi({\n\t\t\tdescription: \"When the feedback was last updated\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Feedback record\",\n\t});\n\nexport type Feedback = z.infer<typeof feedbackSchema>;\n\n// Submit feedback request\nexport const submitFeedbackRequestSchema = z\n\t.object({\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"Rating from 1 to 5\",\n\t\t\texample: 5,\n\t\t}),\n\t\tcomment: z.string().optional().openapi({\n\t\t\tdescription: \"Optional written feedback\",\n\t\t}),\n\t\ttrigger: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"What triggered this feedback (e.g., 'churn', 'conversation_resolved', 'nps_survey')\",\n\t\t}),\n\t\tsource: z.string().default(\"widget\").openapi({\n\t\t\tdescription: \"Source of the feedback (e.g., 'widget', 'api', 'email')\",\n\t\t\tdefault: \"widget\",\n\t\t}),\n\t\tconversationId: z.string().optional().openapi({\n\t\t\tdescription: \"Conversation ID if feedback is tied to a conversation\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription: \"Visitor ID who submitted the feedback\",\n\t\t}),\n\t\tcontactId: z.string().optional().openapi({\n\t\t\tdescription: \"Contact ID if visitor has one\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request body for submitting feedback\",\n\t});\n\nexport type SubmitFeedbackRequest = z.infer<typeof submitFeedbackRequestSchema>;\n\nexport const submitFeedbackResponseSchema = z\n\t.object({\n\t\tfeedback: feedbackSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing the created feedback\",\n\t});\n\nexport type SubmitFeedbackResponse = z.infer<\n\ttypeof submitFeedbackResponseSchema\n>;\n\n// List feedback request\nexport const listFeedbackRequestSchema = z\n\t.object({\n\t\ttrigger: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by trigger type\",\n\t\t}),\n\t\tsource: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by source\",\n\t\t}),\n\t\tconversationId: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by conversation ID\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by visitor ID\",\n\t\t}),\n\t\tpage: z.coerce.number().min(1).default(1).openapi({\n\t\t\tdescription: \"Page number for pagination\",\n\t\t\tdefault: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().min(1).max(100).default(20).openapi({\n\t\t\tdescription: \"Number of items per page\",\n\t\t\tdefault: 20,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Query parameters for listing feedback\",\n\t});\n\nexport type ListFeedbackRequest = z.infer<typeof listFeedbackRequestSchema>;\n\nexport const listFeedbackResponseSchema = z\n\t.object({\n\t\tfeedback: z.array(feedbackSchema),\n\t\tpagination: z.object({\n\t\t\tpage: z.number(),\n\t\t\tlimit: z.number(),\n\t\t\ttotal: z.number(),\n\t\t\ttotalPages: z.number(),\n\t\t\thasMore: z.boolean(),\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Paginated list of feedback\",\n\t});\n\nexport type ListFeedbackResponse = z.infer<typeof listFeedbackResponseSchema>;\n\n// Get feedback by ID\nexport const getFeedbackResponseSchema = z\n\t.object({\n\t\tfeedback: feedbackSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing a single feedback record\",\n\t});\n\nexport type GetFeedbackResponse = z.infer<typeof getFeedbackResponseSchema>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"feedback.js","names":[],"sources":["../../src/api/feedback.ts"],"sourcesContent":["import { z } from \"@hono/zod-openapi\";\n\n// Feedback schema for responses\nexport const feedbackSchema = z\n\t.object({\n\t\tid: z.string().openapi({\n\t\t\tdescription: \"Unique identifier for the feedback\",\n\t\t}),\n\t\torganizationId: z.string().openapi({\n\t\t\tdescription: \"Organization ID\",\n\t\t}),\n\t\twebsiteId: z.string().openapi({\n\t\t\tdescription: \"Website ID the feedback belongs to\",\n\t\t}),\n\t\tconversationId: z.string().nullable().openapi({\n\t\t\tdescription: \"Conversation ID if feedback is tied to a conversation\",\n\t\t}),\n\t\tvisitorId: z.string().nullable().openapi({\n\t\t\tdescription: \"Visitor ID who submitted the feedback\",\n\t\t}),\n\t\tcontactId: z.string().nullable().openapi({\n\t\t\tdescription: \"Contact ID if visitor has one\",\n\t\t}),\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"Rating from 1 to 5\",\n\t\t\texample: 5,\n\t\t}),\n\t\ttopic: z.string().nullable().openapi({\n\t\t\tdescription: \"Optional structured topic selected by the visitor\",\n\t\t}),\n\t\tcomment: z.string().nullable().openapi({\n\t\t\tdescription: \"Optional written feedback\",\n\t\t}),\n\t\ttrigger: z.string().nullable().openapi({\n\t\t\tdescription:\n\t\t\t\t\"What triggered this feedback (e.g., 'churn', 'conversation_resolved', 'nps_survey')\",\n\t\t}),\n\t\tsource: z.string().openapi({\n\t\t\tdescription: \"Source of the feedback (e.g., 'widget', 'api', 'email')\",\n\t\t\tdefault: \"widget\",\n\t\t}),\n\t\tcreatedAt: z.string().openapi({\n\t\t\tdescription: \"When the feedback was submitted\",\n\t\t}),\n\t\tupdatedAt: z.string().openapi({\n\t\t\tdescription: \"When the feedback was last updated\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Feedback record\",\n\t});\n\nexport type Feedback = z.infer<typeof feedbackSchema>;\n\n// Submit feedback request\nexport const submitFeedbackRequestSchema = z\n\t.object({\n\t\trating: z.number().int().min(1).max(5).openapi({\n\t\t\tdescription: \"Rating from 1 to 5\",\n\t\t\texample: 5,\n\t\t}),\n\t\ttopic: z.string().optional().openapi({\n\t\t\tdescription: \"Optional structured topic selected by the visitor\",\n\t\t}),\n\t\tcomment: z.string().optional().openapi({\n\t\t\tdescription: \"Optional written feedback\",\n\t\t}),\n\t\ttrigger: z.string().optional().openapi({\n\t\t\tdescription:\n\t\t\t\t\"What triggered this feedback (e.g., 'churn', 'conversation_resolved', 'nps_survey')\",\n\t\t}),\n\t\tsource: z.string().default(\"widget\").openapi({\n\t\t\tdescription: \"Source of the feedback (e.g., 'widget', 'api', 'email')\",\n\t\t\tdefault: \"widget\",\n\t\t}),\n\t\tconversationId: z.string().optional().openapi({\n\t\t\tdescription: \"Conversation ID if feedback is tied to a conversation\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription: \"Visitor ID who submitted the feedback\",\n\t\t}),\n\t\tcontactId: z.string().optional().openapi({\n\t\t\tdescription: \"Contact ID if visitor has one\",\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Request body for submitting feedback\",\n\t});\n\nexport type SubmitFeedbackRequest = z.infer<typeof submitFeedbackRequestSchema>;\n\nexport const submitFeedbackResponseSchema = z\n\t.object({\n\t\tfeedback: feedbackSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing the created feedback\",\n\t});\n\nexport type SubmitFeedbackResponse = z.infer<\n\ttypeof submitFeedbackResponseSchema\n>;\n\n// List feedback request\nexport const listFeedbackRequestSchema = z\n\t.object({\n\t\ttrigger: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by trigger type\",\n\t\t}),\n\t\tsource: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by source\",\n\t\t}),\n\t\tconversationId: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by conversation ID\",\n\t\t}),\n\t\tvisitorId: z.string().optional().openapi({\n\t\t\tdescription: \"Filter by visitor ID\",\n\t\t}),\n\t\tpage: z.coerce.number().min(1).default(1).openapi({\n\t\t\tdescription: \"Page number for pagination\",\n\t\t\tdefault: 1,\n\t\t}),\n\t\tlimit: z.coerce.number().min(1).max(100).default(20).openapi({\n\t\t\tdescription: \"Number of items per page\",\n\t\t\tdefault: 20,\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Query parameters for listing feedback\",\n\t});\n\nexport type ListFeedbackRequest = z.infer<typeof listFeedbackRequestSchema>;\n\nexport const listFeedbackResponseSchema = z\n\t.object({\n\t\tfeedback: z.array(feedbackSchema),\n\t\tpagination: z.object({\n\t\t\tpage: z.number(),\n\t\t\tlimit: z.number(),\n\t\t\ttotal: z.number(),\n\t\t\ttotalPages: z.number(),\n\t\t\thasMore: z.boolean(),\n\t\t}),\n\t})\n\t.openapi({\n\t\tdescription: \"Paginated list of feedback\",\n\t});\n\nexport type ListFeedbackResponse = z.infer<typeof listFeedbackResponseSchema>;\n\n// Get feedback by ID\nexport const getFeedbackResponseSchema = z\n\t.object({\n\t\tfeedback: feedbackSchema,\n\t})\n\t.openapi({\n\t\tdescription: \"Response containing a single feedback record\",\n\t});\n\nexport type GetFeedbackResponse = z.infer<typeof getFeedbackResponseSchema>;\n"],"mappings":"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"}
|