import React, { useEffect, useState } from "react"; import { X } from "@phosphor-icons/react"; import Workspace from "@/models/workspace"; import { TagsInput } from "react-tag-input-component"; import Embed from "@/models/embed"; export function enforceSubmissionSchema(form) { const data = {}; for (var [key, value] of form.entries()) { if (!value || value === null) continue; data[key] = value; if (value === "on") data[key] = true; } // Always set value on nullable keys since empty or off will not send anything from form element. if (!data.hasOwnProperty("allowlist_domains")) data.allowlist_domains = null; if (!data.hasOwnProperty("allow_model_override")) data.allow_model_override = false; if (!data.hasOwnProperty("allow_temperature_override")) data.allow_temperature_override = false; if (!data.hasOwnProperty("allow_prompt_override")) data.allow_prompt_override = false; if (!data.hasOwnProperty("message_limit")) data.message_limit = 20; return data; } export default function NewEmbedModal({ closeModal }) { const [error, setError] = useState(null); const handleCreate = async (e) => { setError(null); e.preventDefault(); const form = new FormData(e.target); const data = enforceSubmissionSchema(form); const { embed, error } = await Embed.newEmbed(data); if (!!embed) window.location.reload(); setError(error); }; return (
This is the workspace your chat window will be based on. All defaults will be inherited from the workspace unless overridden by this config.
Set how your chatbot should operate. Query means it will only respond
if a document helps answer the query.
Chat opens the chat to even general questions and can answer totally
unrelated queries to your workspace.
This filter will block any requests that come from a domain other than
the list below.
Leaving this empty means anyone can use your embed on any site.
{hint}
{hint}