{"version":3,"sources":["../../src/actions/templates.ts"],"sourcesContent":["import type { MordnTemplateManifest } from './types';\n\nexport const docsAssistantTemplate: MordnTemplateManifest = {\n  id: 'docs-assistant',\n  name: 'Docs Assistant',\n  vertical: 'docs',\n  version: '0.1.0',\n  minWidgetVersion: '0.12.0',\n  description: 'Answer documentation questions with citations, page-aware prompts, gap capture, and setup guidance.',\n  starterPrompts: [\n    { title: 'How do I get started?', subtitle: 'Show the setup path for this product' },\n    { title: 'Ask about this page', subtitle: 'Use the current docs page as context' },\n    { title: 'Show related guides', subtitle: 'Find the next docs pages I should read' },\n  ],\n  promptFragment:\n    'You are a docs assistant. Prefer grounded answers with section citations, be honest when retrieval is weak, and offer setup-oriented next actions.',\n  recommendedKnowledge: ['llms.txt', 'sitemap.xml', 'docs markdown', 'OpenAPI references'],\n  cards: [\n    { type: 'summary-card', label: 'Setup checklist', description: 'Show the user the ordered setup steps and progress.' },\n    { type: 'handoff-card', label: 'Open docs page', description: 'Link the user to the exact cited documentation page.' },\n  ],\n  actions: [\n    {\n      type: 'docs.page.open',\n      label: 'Open docs page',\n      description: 'Open a cited documentation page or anchor.',\n      handler: 'client',\n      risk: 'ui',\n      confirmation: 'none',\n      schema: {\n        type: 'object',\n        required: ['href'],\n        additionalProperties: false,\n        properties: {\n          href: { type: 'string', format: 'uri', title: 'URL' },\n          title: { type: 'string', title: 'Title' },\n        },\n      },\n    },\n    {\n      type: 'docs.question.report_gap',\n      label: 'Report unanswered question',\n      description: 'Capture a docs question that retrieval could not answer confidently.',\n      handler: 'server',\n      risk: 'capture',\n      confirmation: 'none',\n      schema: {\n        type: 'object',\n        required: ['question'],\n        additionalProperties: false,\n        properties: {\n          question: { type: 'string', title: 'Question' },\n          pageUrl: { type: 'string', format: 'uri', title: 'Page URL' },\n        },\n      },\n    },\n  ],\n};\n\nexport const leadCaptureTemplate: MordnTemplateManifest = {\n  id: 'lead-capture',\n  name: 'Lead Capture Assistant',\n  vertical: 'lead-capture',\n  version: '0.1.0',\n  minWidgetVersion: '0.12.0',\n  description: 'Qualify visitors, collect contact details, summarize intent, and hand the lead to the developer’s CRM or webhook.',\n  starterPrompts: [\n    { title: 'Help me choose a plan', subtitle: 'Qualify needs and suggest next steps' },\n    { title: 'Book a demo', subtitle: 'Collect the details sales needs' },\n    { title: 'Talk to someone', subtitle: 'Capture a follow-up request' },\n  ],\n  promptFragment:\n    'You are a concise lead qualification assistant. Ask only for what is needed, summarize before submitting, and never invent availability or pricing promises.',\n  recommendedKnowledge: ['pricing page', 'product overview', 'case studies', 'FAQ', 'sales qualification criteria'],\n  cards: [\n    { type: 'selection-group', label: 'Qualification chips', description: 'Let visitors choose role, use case, timeline, and company size.' },\n    { type: 'action-form', label: 'Lead form', description: 'Collect name, email, company, and message.' },\n    { type: 'summary-card', label: 'Lead summary', description: 'Review the captured lead before submission.' },\n    { type: 'handoff-card', label: 'Sales handoff', description: 'Show what happens next after submission.' },\n  ],\n  actions: [\n    {\n      type: 'lead.capture',\n      label: 'Capture lead',\n      description: 'Submit a qualified lead to the host application or hosted webhook.',\n      handler: 'server',\n      risk: 'capture',\n      confirmation: 'required',\n      schema: {\n        type: 'object',\n        required: ['email', 'message'],\n        additionalProperties: false,\n        properties: {\n          name: { type: 'string', title: 'Name' },\n          email: { type: 'string', format: 'email', title: 'Email', redact: true },\n          company: { type: 'string', title: 'Company' },\n          timeline: { type: 'string', title: 'Timeline' },\n          message: { type: 'string', title: 'Message' },\n        },\n      },\n    },\n  ],\n};\n\nexport const servicesBookingTemplate: MordnTemplateManifest = {\n  id: 'services-booking',\n  name: 'Services Booking Assistant',\n  vertical: 'services-booking',\n  version: '0.1.0',\n  minWidgetVersion: '0.12.0',\n  description: 'Help visitors choose a service, provide intake details, and request an appointment without pretending to own live calendar inventory.',\n  starterPrompts: [\n    { title: 'Find the right service', subtitle: 'Compare services and what they include' },\n    { title: 'Request an appointment', subtitle: 'Share preferred times and contact details' },\n    { title: 'Get a rough estimate', subtitle: 'Answer a few questions first' },\n  ],\n  promptFragment:\n    'You are a service booking assistant. Help the visitor choose a service, collect intake details, and submit a request-to-book unless a real availability action confirms a slot.',\n  recommendedKnowledge: ['services page', 'availability policy', 'pricing guide', 'intake FAQ'],\n  cards: [\n    { type: 'entity-card', label: 'Service card', description: 'Describe a service, duration, price range, and fit.' },\n    { type: 'action-form', label: 'Appointment request form', description: 'Collect preferred time, contact details, and intake notes.' },\n    { type: 'summary-card', label: 'Booking request summary', description: 'Review the request before submission.' },\n    { type: 'status-tracker', label: 'Request status', description: 'Show requested, received, confirmed, or needs follow-up.' },\n  ],\n  actions: [\n    {\n      type: 'services.booking.request',\n      label: 'Request appointment',\n      description: 'Send a request-to-book payload to the host application or hosted webhook.',\n      handler: 'server',\n      risk: 'capture',\n      confirmation: 'required',\n      schema: {\n        type: 'object',\n        required: ['service', 'contact'],\n        additionalProperties: false,\n        properties: {\n          service: { type: 'string', title: 'Service' },\n          preferredTime: { type: 'string', title: 'Preferred time' },\n          contact: { type: 'string', title: 'Contact', redact: true },\n          notes: { type: 'string', title: 'Notes' },\n        },\n      },\n    },\n  ],\n  notes: ['Default template submits a request, not a confirmed booking. Only show confirmed language when the action result says confirmed.'],\n};\n\nexport const restaurantAssistantTemplate: MordnTemplateManifest = {\n  id: 'restaurant-assistant',\n  name: 'Restaurant Assistant',\n  vertical: 'restaurant',\n  version: '0.1.0',\n  minWidgetVersion: '0.12.0',\n  description: 'Answer menu questions, recommend dishes, capture dietary needs, and start reservation or catering requests.',\n  starterPrompts: [\n    { title: 'Recommend something', subtitle: 'Ask for preferences and dietary needs' },\n    { title: 'Can I reserve a table?', subtitle: 'Start a request-to-book flow' },\n    { title: 'Do you have vegan options?', subtitle: 'Search menu and allergen info' },\n  ],\n  promptFragment:\n    'You are a restaurant concierge. Be specific about menu facts, ask about dietary restrictions, and use request-to-book language unless a configured action returns a confirmed reservation.',\n  recommendedKnowledge: ['menu', 'hours', 'allergen guide', 'reservation policy', 'private dining page'],\n  cards: [\n    { type: 'entity-card', label: 'Menu item card', description: 'Show dish, price, dietary badges, and action buttons.' },\n    { type: 'entity-carousel', label: 'Recommendations', description: 'Compare recommended dishes.' },\n    { type: 'action-form', label: 'Reservation request', description: 'Collect party size, date, time, and contact.' },\n  ],\n  actions: [\n    {\n      type: 'restaurant.reservation.request',\n      label: 'Request reservation',\n      description: 'Submit a reservation request or hand off to the restaurant booking system.',\n      handler: 'server',\n      risk: 'capture',\n      confirmation: 'required',\n    },\n    {\n      type: 'restaurant.external.open_ordering',\n      label: 'Open ordering',\n      description: 'Open the restaurant’s existing ordering link.',\n      handler: 'client',\n      risk: 'ui',\n      confirmation: 'none',\n    },\n  ],\n};\n\nexport const ecommerceConciergeTemplate: MordnTemplateManifest = {\n  id: 'ecommerce-concierge',\n  name: 'Ecommerce Concierge',\n  vertical: 'ecommerce',\n  version: '0.1.0',\n  minWidgetVersion: '0.12.0',\n  description: 'Help shoppers find, compare, and choose products with client-owned cart and checkout handoff.',\n  starterPrompts: [\n    { title: 'Help me choose', subtitle: 'Compare products for my needs' },\n    { title: 'Find gifts under a budget', subtitle: 'Search by intent and price' },\n    { title: 'Where is my order?', subtitle: 'Start an order lookup flow' },\n  ],\n  promptFragment:\n    'You are a shopping concierge. Recommend from real catalog data, show tradeoffs, and hand cart or checkout mutations to the host storefront unless a server action is configured.',\n  recommendedKnowledge: ['catalog feed', 'shipping policy', 'returns policy', 'warranty information'],\n  cards: [\n    { type: 'entity-card', label: 'Product card', description: 'Show product image, price, badges, attributes, and action buttons.' },\n    { type: 'selection-group', label: 'Variant selector', description: 'Choose size, color, plan, or bundle.' },\n    { type: 'summary-card', label: 'Cart summary', description: 'Review selected items before checkout handoff.' },\n  ],\n  actions: [\n    { type: 'ecommerce.cart.add', label: 'Add to cart', description: 'Ask the host storefront to add a product variant to cart.', handler: 'client', risk: 'mutation', confirmation: 'recommended' },\n    { type: 'ecommerce.checkout.open', label: 'Open checkout', description: 'Open the host storefront checkout.', handler: 'client', risk: 'ui', confirmation: 'none' },\n    { type: 'ecommerce.order.lookup', label: 'Look up order', description: 'Fetch order status from a server-side handler.', handler: 'server', risk: 'read', confirmation: 'none' },\n  ],\n};\n\nexport const travelPlannerTemplate: MordnTemplateManifest = {\n  id: 'travel-planner',\n  name: 'Travel Planner',\n  vertical: 'travel',\n  version: '0.1.0',\n  minWidgetVersion: '0.12.0',\n  description: 'Plan trips, compare destinations or stays, build itineraries, and request quotes without owning live inventory by default.',\n  starterPrompts: [\n    { title: 'Plan a weekend trip', subtitle: 'Build an itinerary from preferences' },\n    { title: 'Compare hotels', subtitle: 'Show options with tradeoffs' },\n    { title: 'Request a quote', subtitle: 'Capture dates, guests, and preferences' },\n  ],\n  promptFragment:\n    'You are a travel planning assistant. Treat live prices and inventory as unavailable unless a configured action returns them, and prefer quote or handoff flows by default.',\n  recommendedKnowledge: ['destination guides', 'packages', 'hotel inventory export', 'travel policy', 'FAQ'],\n  cards: [\n    { type: 'entity-card', label: 'Destination or hotel card', description: 'Show image, price range, location, amenities, and actions.' },\n    { type: 'status-tracker', label: 'Itinerary timeline', description: 'Show trip stages and selected activities.' },\n    { type: 'summary-card', label: 'Trip summary', description: 'Review trip preferences before quote request.' },\n  ],\n  actions: [\n    { type: 'travel.quote.request', label: 'Request quote', description: 'Send the trip request to the host application or agency webhook.', handler: 'server', risk: 'capture', confirmation: 'required' },\n    { type: 'travel.booking.open', label: 'Open booking', description: 'Hand off to the configured booking page.', handler: 'client', risk: 'ui', confirmation: 'none' },\n  ],\n};\n\nexport const defaultMordnTemplates: MordnTemplateManifest[] = [\n  docsAssistantTemplate,\n  leadCaptureTemplate,\n  servicesBookingTemplate,\n  restaurantAssistantTemplate,\n  ecommerceConciergeTemplate,\n  travelPlannerTemplate,\n];\n\nexport function getMordnTemplate(id: string): MordnTemplateManifest | undefined {\n  return defaultMordnTemplates.find((template) => template.id === id);\n}\n"],"mappings":"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","names":[]}