Compare commits

...

1 Commits

Author SHA1 Message Date
pablodanswer
1f41f130cd rename danswer -> onyx 2024-12-11 17:15:01 -08:00
75 changed files with 375 additions and 305 deletions

View File

@@ -13,19 +13,19 @@ import Text from "@/components/ui/text";
import { USER_ROLE_LABELS, UserRole } from "@/lib/types";
import { APIKey } from "./types";
interface DanswerApiKeyFormProps {
interface OnyxApiKeyFormProps {
onClose: () => void;
setPopup: (popupSpec: PopupSpec | null) => void;
onCreateApiKey: (apiKey: APIKey) => void;
apiKey?: APIKey;
}
export const DanswerApiKeyForm = ({
export const OnyxApiKeyForm = ({
onClose,
setPopup,
onCreateApiKey,
apiKey,
}: DanswerApiKeyFormProps) => {
}: OnyxApiKeyFormProps) => {
const isUpdate = apiKey !== undefined;
return (

View File

@@ -26,10 +26,10 @@ import { FiCopy, FiEdit2, FiRefreshCw, FiX } from "react-icons/fi";
import { Modal } from "@/components/Modal";
import { Spinner } from "@/components/Spinner";
import { deleteApiKey, regenerateApiKey } from "./lib";
import { DanswerApiKeyForm } from "./DanswerApiKeyForm";
import { OnyxApiKeyForm } from "./OnyxApiKeyForm";
import { APIKey } from "./types";
const API_KEY_TEXT = `API Keys allow you to access Danswer APIs programmatically. Click the button below to generate a new API Key.`;
const API_KEY_TEXT = `API Keys allow you to access Onyx APIs programmatically. Click the button below to generate a new API Key.`;
function NewApiKeyModal({
apiKey,
@@ -129,7 +129,7 @@ function Main() {
{newApiKeyButton}
{showCreateUpdateForm && (
<DanswerApiKeyForm
<OnyxApiKeyForm
onCreateApiKey={(apiKey) => {
setFullApiKey(apiKey.api_key);
}}
@@ -257,7 +257,7 @@ function Main() {
</Table>
{showCreateUpdateForm && (
<DanswerApiKeyForm
<OnyxApiKeyForm
onCreateApiKey={(apiKey) => {
setFullApiKey(apiKey.api_key);
}}

View File

@@ -885,8 +885,8 @@ export function AssistantEditor({
{user?.role !== "admin" && (
<>
If this functionality would be useful,
reach out to the administrators of
Danswer for assistance.
reach out to the administrators of Onyx
for assistance.
</>
)}
</p>
@@ -1185,7 +1185,7 @@ export function AssistantEditor({
setFieldValue("task_prompt", e.target.value);
}}
explanationText="Learn about prompting in our docs!"
explanationLink="https://docs.danswer.dev/guides/assistants"
explanationLink="https://docs.onyx.app/guides/assistants"
/>
</>
)}

View File

@@ -93,7 +93,7 @@ export const SlackTokensForm = ({
Please refer to our{" "}
<a
className="text-blue-500 hover:underline"
href="https://docs.danswer.dev/slack_bot_setup"
href="https://docs.onyx.app/slack_bot_setup"
target="_blank"
rel="noopener noreferrer"
>

View File

@@ -139,7 +139,7 @@ export function SlackChannelConfigsTable({
className="text-center text-muted-foreground"
>
Please add a New Slack Bot Configuration to begin chatting
with Danswer!
with Onyx!
</TableCell>
</TableRow>
)}

View File

@@ -170,8 +170,8 @@ export const SlackChannelConfigCreationForm = ({
const errorMsg = responseJson.detail || responseJson.message;
setPopup({
message: isUpdate
? `Error updating DanswerBot config - ${errorMsg}`
: `Error creating DanswerBot config - ${errorMsg}`,
? `Error updating OnyxBot config - ${errorMsg}`
: `Error creating OnyxBot config - ${errorMsg}`,
type: "error",
});
}
@@ -188,7 +188,7 @@ export const SlackChannelConfigCreationForm = ({
<div className="mt-6">
<Label>Knowledge Sources</Label>
<SubLabel>
Controls which information DanswerBot will pull from when
Controls which information OnyxBot will pull from when
answering questions.
</SubLabel>
@@ -209,7 +209,7 @@ export const SlackChannelConfigCreationForm = ({
<TabsContent value="assistants">
<SubLabel>
Select the assistant DanswerBot will use while answering
Select the assistant OnyxBot will use while answering
questions in Slack.
</SubLabel>
<SelectorFormField
@@ -225,11 +225,11 @@ export const SlackChannelConfigCreationForm = ({
<TabsContent value="document_sets">
<SubLabel>
Select the document sets DanswerBot will use while
Select the document sets OnyxBot will use while
answering questions in Slack.
</SubLabel>
<SubLabel>
Note: If No Document Sets are selected, DanswerBot will
Note: If No Document Sets are selected, OnyxBot will
search through all connected documents.
</SubLabel>
<FieldArray
@@ -280,7 +280,7 @@ export const SlackChannelConfigCreationForm = ({
<SelectorFormField
name="response_type"
label="Answer Type"
tooltip="Controls the format of DanswerBot's responses."
tooltip="Controls the format of OnyxBot's responses."
options={[
{ name: "Standard", value: "citations" },
{ name: "Detailed", value: "quotes" },
@@ -292,14 +292,14 @@ export const SlackChannelConfigCreationForm = ({
name="show_continue_in_web_ui"
removeIndent
label="Show Continue in Web UI button"
tooltip="If set, will show a button at the bottom of the response that allows the user to continue the conversation in the Danswer Web UI"
tooltip="If set, will show a button at the bottom of the response that allows the user to continue the conversation in the Onyx Web UI"
/>
<div className="flex flex-col space-y-3 mt-2">
<BooleanFormField
name="still_need_help_enabled"
removeIndent
label={'Give a "Still need help?" button'}
tooltip={`DanswerBot's response will include a button at the bottom
tooltip={`OnyxBot's response will include a button at the bottom
of the response that asks the user if they still need help.`}
/>
{values.still_need_help_enabled && (
@@ -337,14 +337,14 @@ export const SlackChannelConfigCreationForm = ({
<BooleanFormField
name="respond_tag_only"
removeIndent
label="Respond to @DanswerBot Only"
tooltip="If set, DanswerBot will only respond when directly tagged"
label="Respond to @OnyxBot Only"
tooltip="If set, OnyxBot will only respond when directly tagged"
/>
<BooleanFormField
name="respond_to_bots"
removeIndent
label="Respond to Bot messages"
tooltip="If not set, DanswerBot will always ignore messages from Bots"
tooltip="If not set, OnyxBot will always ignore messages from Bots"
/>
<BooleanFormField
name="enable_auto_filters"
@@ -358,7 +358,7 @@ export const SlackChannelConfigCreationForm = ({
name="respond_member_group_list"
label="(Optional) Respond to Certain Users / Groups"
subtext={
"If specified, DanswerBot responses will only " +
"If specified, OnyxBot responses will only " +
"be visible to the members or groups in this list."
}
values={values}

View File

@@ -60,7 +60,7 @@ async function NewChannelConfigPage(props: {
<BackButton />
<AdminPageTitle
icon={<SourceIcon iconSize={32} sourceType={ValidSources.Slack} />}
title="Configure DanswerBot for Slack Channel"
title="Configure OnyxBot for Slack Channel"
/>
<SlackChannelConfigCreationForm

View File

@@ -39,23 +39,21 @@ const Main = () => {
{/* {popup} */}
<p className="mb-2 text-sm text-muted-foreground">
Setup Slack bots that connect to Danswer. Once setup, you will be able
to ask questions to Danswer directly from Slack. Additionally, you can:
Setup Slack bots that connect to Onyx. Once setup, you will be able to
ask questions to Onyx directly from Slack. Additionally, you can:
</p>
<div className="mb-2">
<ul className="list-disc mt-2 ml-4 text-sm text-muted-foreground">
<li>
Setup DanswerBot to automatically answer questions in certain
channels.
Setup OnyxBot to automatically answer questions in certain channels.
</li>
<li>
Choose which document sets DanswerBot should answer from, depending
on the channel the question is being asked.
Choose which document sets OnyxBot should answer from, depending on
the channel the question is being asked.
</li>
<li>
Directly message DanswerBot to search just as you would in the web
UI.
Directly message OnyxBot to search just as you would in the web UI.
</li>
</ul>
</div>
@@ -64,13 +62,13 @@ const Main = () => {
Follow the{" "}
<a
className="text-blue-500 hover:underline"
href="https://docs.danswer.dev/slack_bot_setup"
href="https://docs.onyx.app/slack_bot_setup"
target="_blank"
rel="noopener noreferrer"
>
guide{" "}
</a>
found in the Danswer documentation to get started!
found in the Onyx documentation to get started!
</p>
<Link

View File

@@ -62,9 +62,8 @@ function Main() {
<div className="space-y-4">
<p className="text-text-600">
Unstructured extracts and transforms complex data from formats like
.pdf, .docx, .png, .pptx, etc. into clean text for Danswer to
ingest. Provide an API key to enable Unstructured document
processing.
.pdf, .docx, .png, .pptx, etc. into clean text for Onyx to ingest.
Provide an API key to enable Unstructured document processing.
<br />
<br /> <strong>Note:</strong> this will send documents to
Unstructured servers for processing.

View File

@@ -158,7 +158,7 @@ export function LLMConfiguration() {
</>
) : (
<Callout type="warning" title="No LLM providers configured yet">
Please set one up below in order to start using Danswer!
Please set one up below in order to start using Onyx!
</Callout>
)}

View File

@@ -85,7 +85,7 @@ export default function Sidebar() {
{enterpriseSettings && enterpriseSettings.application_name ? (
<HeaderTitle>{enterpriseSettings.application_name}</HeaderTitle>
) : (
<HeaderTitle>Danswer</HeaderTitle>
<HeaderTitle>Onyx</HeaderTitle>
)}
</div>
</div>

View File

@@ -285,7 +285,7 @@ export const DriveJsonUploadSection = ({
<a
className="text-link"
target="_blank"
href="https://docs.danswer.dev/connectors/google_drive#authorization"
href="https://docs.onyx.app/connectors/google_drive#authorization"
rel="noreferrer"
>
here

View File

@@ -133,7 +133,7 @@ const GDriveMain = ({}: {}) => {
{isAdmin && (
<>
<Title className="mb-2 mt-6 ml-auto mr-auto">
Step 2: Authenticate with Danswer
Step 2: Authenticate with Onyx
</Title>
<DriveAuthSection
setPopup={setPopup}

View File

@@ -271,7 +271,7 @@ export const GmailJsonUploadSection = ({
<a
className="text-link"
target="_blank"
href="https://docs.danswer.dev/connectors/gmail#authorization"
href="https://docs.onyx.app/connectors/gmail#authorization"
rel="noreferrer"
>
here

View File

@@ -140,7 +140,7 @@ export const GmailMain = () => {
{isAdmin && (
<>
<Title className="mb-2 mt-6 ml-auto mr-auto">
Step 2: Authenticate with Danswer
Step 2: Authenticate with Onyx
</Title>
<GmailAuthSection
setPopup={setPopup}

View File

@@ -3,7 +3,7 @@
import { adminSearch } from "./lib";
import { MagnifyingGlass } from "@phosphor-icons/react";
import { useState, useEffect, useCallback } from "react";
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { buildDocumentSummaryDisplay } from "@/components/search/DocumentDisplay";
import { CustomCheckbox } from "@/components/CustomCheckbox";
import { updateHiddenStatus } from "../lib";
@@ -24,7 +24,7 @@ const DocumentDisplay = ({
refresh,
setPopup,
}: {
document: DanswerDocument;
document: OnyxDocument;
refresh: () => void;
setPopup: (popupSpec: PopupSpec | null) => void;
}) => {
@@ -117,7 +117,7 @@ export function Explorer({
const [query, setQuery] = useState(initialSearchValue || "");
const [timeoutId, setTimeoutId] = useState<number | null>(null);
const [results, setResults] = useState<DanswerDocument[]>([]);
const [results, setResults] = useState<OnyxDocument[]>([]);
const filterManager = useFilters();

View File

@@ -314,7 +314,7 @@ const Main = () => {
<Text className="mb-3">
<b>Document Sets</b> allow you to group logically connected documents
into a single bundle. These can then be used as a filter when performing
searches to control the scope of information Danswer searches over.
searches to control the scope of information Onyx searches over.
</Text>
<div className="mb-3"></div>

View File

@@ -29,14 +29,14 @@ export function ModelSelectionConfirmationModal({
</Text>
<Text className="text-lg mb-2">
We will re-index all your documents in the background so you will be
able to continue to use Danswer as normal with the old model in the
able to continue to use Onyx as normal with the old model in the
meantime. Depending on how many documents you have indexed, this may
take a while.
</Text>
<Text className="text-lg mb-2">
<i>NOTE:</i> this re-indexing process will consume more resources
than normal. If you are self-hosting, we recommend that you allocate
at least 16GB of RAM to Danswer during this process.
at least 16GB of RAM to Onyx during this process.
</Text>
{isCustom && (

View File

@@ -57,9 +57,9 @@ export default function OpenEmbeddingPage({
</a>
.
<br />
<b>NOTE:</b> not all models listed will work with Danswer, since some
have unique interfaces or special requirements. If in doubt, reach out
to the Danswer team.
<b>NOTE:</b> not all models listed will work with Onyx, since some have
unique interfaces or special requirements. If in doubt, reach out to the
Onyx team.
</Text>
{!configureModel && (
<Button

View File

@@ -211,7 +211,7 @@ export function SettingsForm() {
<Title className="mb-4">Chat Settings</Title>
<IntegerInput
label="Chat Retention"
sublabel="Enter the maximum number of days you would like Danswer to retain chat messages. Leaving this field empty will cause Danswer to never delete chat messages."
sublabel="Enter the maximum number of days you would like Onyx to retain chat messages. Leaving this field empty will cause Onyx to never delete chat messages."
value={chatRetention === "" ? null : Number(chatRetention)}
onChange={(e) => {
const numValue = parseInt(e.target.value, 10);

View File

@@ -13,8 +13,7 @@ export default async function Page() {
/>
<Text className="mb-8">
Manage general Danswer settings applicable to all users in the
workspace.
Manage general Onyx settings applicable to all users in the workspace.
</Text>
<SettingsForm />

View File

@@ -154,7 +154,7 @@ function ToolForm({
/>
<div className="mt-4 text-sm bg-blue-50 p-4 rounded-md border border-blue-200">
<Link
href="https://docs.danswer.dev/tools/custom"
href="https://docs.onyx.app/tools/custom"
className="text-link hover:underline flex items-center"
target="_blank"
rel="noopener noreferrer"

View File

@@ -106,7 +106,7 @@ const UsersTables = ({
<TabsList>
<TabsTrigger value="invited">Invited Users</TabsTrigger>
<TabsTrigger value="current">Current Users</TabsTrigger>
<TabsTrigger value="danswerbot">DanswerBot Users</TabsTrigger>
<TabsTrigger value="onyxbot">OnyxBot Users</TabsTrigger>
</TabsList>
<TabsContent value="invited">
@@ -153,10 +153,10 @@ const UsersTables = ({
</Card>
</TabsContent>
<TabsContent value="danswerbot">
<TabsContent value="onyxbot">
<Card>
<CardHeader>
<CardTitle>DanswerBot Users</CardTitle>
<CardTitle>OnyxBot Users</CardTitle>
</CardHeader>
<CardContent>
{slack_users.length > 0 ? (

View File

@@ -146,7 +146,7 @@ export function AssistantGalleryCard({
</div>
<p className="text-sm mt-2">{assistant.description}</p>
<p className="text-subtle text-sm my-2">
Author: {assistant.owner?.email || "Danswer"}
Author: {assistant.owner?.email || "Onyx"}
</p>
{assistant.tools.length > 0 && (
<AssistantTools list assistant={assistant} />

View File

@@ -14,12 +14,12 @@ const Page = () => {
Account Not Found
</h2>
<p className="text-text-700 max-w-md text-center">
We couldn&apos;t find your account in our records. To access Danswer,
you need to either:
We couldn&apos;t find your account in our records. To access Onyx, you
need to either:
</p>
<ul className="list-disc text-left text-text-600 w-full pl-6 mx-auto">
<li>Be invited to an existing Danswer organization</li>
<li>Create a new Danswer organization</li>
<li>Be invited to an existing Onyx organization</li>
<li>Create a new Onyx organization</li>
</ul>
<div className="flex justify-center">
<Link

View File

@@ -120,7 +120,7 @@ export default function ImpersonatePage() {
</Formik>
<div className="text-sm text-text-500 mt-4 text-center px-4 rounded-md">
Note: This feature is only available for @danswer.ai administrators
Note: This feature is only available for @onyx.app administrators
</div>
</div>
</AuthFlowContainer>

View File

@@ -8,8 +8,7 @@ export const LoginText = () => {
return (
<>
Log In to{" "}
{(settings && settings?.enterpriseSettings?.application_name) ||
"Danswer"}
{(settings && settings?.enterpriseSettings?.application_name) || "Onyx"}
</>
);
};

View File

@@ -69,7 +69,7 @@ const Page = async (props: {
<div className="absolute top-10x w-full"></div>
<div className="flex w-full flex-col justify-center">
<h2 className="text-center text-xl text-strong font-bold">
{cloud ? "Complete your sign up" : "Sign Up for Danswer"}
{cloud ? "Complete your sign up" : "Sign Up for Onyx"}
</h2>
{cloud && (
<>

View File

@@ -33,7 +33,7 @@ export function ChatPopup() {
enterpriseSettings?.custom_popup_header ||
(isConsentScreen
? "Terms of Use"
: `Welcome to ${enterpriseSettings?.application_name || "Danswer"}!`);
: `Welcome to ${enterpriseSettings?.application_name || "Onyx"}!`);
const popupContent =
enterpriseSettings?.custom_popup_content ||

View File

@@ -1,5 +1,5 @@
import { SourceIcon } from "@/components/SourceIcon";
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { FiTag } from "react-icons/fi";
import { DocumentSelector } from "./DocumentSelector";
import { buildDocumentSummaryDisplay } from "@/components/search/DocumentDisplay";
@@ -11,12 +11,12 @@ import { ValidSources } from "@/lib/types";
interface DocumentDisplayProps {
closeSidebar: () => void;
document: DanswerDocument;
document: OnyxDocument;
modal?: boolean;
isSelected: boolean;
handleSelect: (documentId: string) => void;
tokenLimitReached: boolean;
setPresentingDocument: Dispatch<SetStateAction<DanswerDocument | null>>;
setPresentingDocument: Dispatch<SetStateAction<OnyxDocument | null>>;
}
export function DocumentMetadataBlock({
@@ -24,7 +24,7 @@ export function DocumentMetadataBlock({
document,
}: {
modal?: boolean;
document: DanswerDocument;
document: OnyxDocument;
}) {
const MAX_METADATA_ITEMS = 3;
const metadataEntries = Object.entries(document.metadata);

View File

@@ -1,4 +1,4 @@
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { ChatDocumentDisplay } from "./ChatDocumentDisplay";
import { usePopup } from "@/components/admin/connectors/Popup";
import { removeDuplicateDocs } from "@/lib/documentUtils";
@@ -20,8 +20,8 @@ interface ChatFiltersProps {
filterManager: FilterManager;
closeSidebar: () => void;
selectedMessage: Message | null;
selectedDocuments: DanswerDocument[] | null;
toggleDocumentSelection: (document: DanswerDocument) => void;
selectedDocuments: OnyxDocument[] | null;
toggleDocumentSelection: (document: OnyxDocument) => void;
clearSelectedDocuments: () => void;
selectedDocumentTokens: number;
maxTokens: number;
@@ -32,7 +32,7 @@ interface ChatFiltersProps {
tags: Tag[];
documentSets: DocumentSet[];
showFilters: boolean;
setPresentingDocument: Dispatch<SetStateAction<DanswerDocument | null>>;
setPresentingDocument: Dispatch<SetStateAction<OnyxDocument | null>>;
}
export const ChatFilters = forwardRef<HTMLDivElement, ChatFiltersProps>(
@@ -84,7 +84,7 @@ export const ChatFilters = forwardRef<HTMLDivElement, ChatFiltersProps>(
return (
<div
id="danswer-chat-sidebar"
id="onyx-chat-sidebar"
className={`relative max-w-full ${
!modal ? "border-l h-full border-sidebar-border" : ""
}`}

View File

@@ -1,12 +1,12 @@
import { SourceIcon } from "@/components/SourceIcon";
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { DocumentSelector } from "./DocumentSelector";
export function SelectedDocumentDisplay({
document,
handleDeselect,
}: {
document: DanswerDocument;
document: OnyxDocument;
handleDeselect: (documentId: string) => void;
}) {
return (

View File

@@ -18,7 +18,7 @@ import {
SendIcon,
StopGeneratingIcon,
} from "@/components/icons/icons";
import { DanswerDocument, SourceMetadata } from "@/lib/search/interfaces";
import { OnyxDocument, SourceMetadata } from "@/lib/search/interfaces";
import { AssistantIcon } from "@/components/assistants/AssistantIcon";
import {
Tooltip,
@@ -49,7 +49,7 @@ interface ChatInputBarProps {
openModelSettings: () => void;
showDocs: () => void;
showConfigureAPIKey: () => void;
selectedDocuments: DanswerDocument[];
selectedDocuments: OnyxDocument[];
message: string;
setMessage: (message: string) => void;
stopGenerating: () => void;
@@ -234,7 +234,7 @@ export function ChatInputBar({
};
return (
<div id="danswer-chat-input">
<div id="onyx-chat-input">
<div className="flex justify-center mx-auto">
<div
className="

View File

@@ -1,7 +1,7 @@
import {
DanswerDocument,
OnyxDocument,
Filters,
SearchDanswerDocument,
SearchOnyxDocument,
StreamStopReason,
} from "@/lib/search/interfaces";
@@ -72,7 +72,7 @@ export interface ChatSession {
export interface SearchSession {
search_session_id: string;
documents: SearchDanswerDocument[];
documents: SearchOnyxDocument[];
messages: BackendMessage[];
description: string;
}
@@ -83,7 +83,7 @@ export interface Message {
type: "user" | "assistant" | "system" | "error";
retrievalType?: RetrievalType;
query?: string | null;
documents?: DanswerDocument[] | null;
documents?: OnyxDocument[] | null;
citations?: CitationMap;
files: FileDescriptor[];
toolCall: ToolCallMetadata | null;
@@ -116,7 +116,7 @@ export interface BackendMessage {
latest_child_message: number | null;
message: string;
rephrased_query: string | null;
context_docs: { top_documents: DanswerDocument[] } | null;
context_docs: { top_documents: OnyxDocument[] } | null;
message_type: "user" | "assistant" | "system";
time_sent: string;
citations: CitationMap;
@@ -132,7 +132,7 @@ export interface MessageResponseIDInfo {
}
export interface DocumentsResponse {
top_documents: DanswerDocument[];
top_documents: OnyxDocument[];
rephrased_query: string | null;
}

View File

@@ -1,6 +1,6 @@
import {
AnswerPiecePacket,
DanswerDocument,
OnyxDocument,
Filters,
DocumentInfoPacket,
StreamStopInfo,
@@ -334,7 +334,7 @@ export function getCitedDocumentsFromMessage(message: Message) {
return [];
}
const documentsWithCitationKey: [string, DanswerDocument][] = [];
const documentsWithCitationKey: [string, OnyxDocument][] = [];
Object.entries(message.citations).forEach(([citationKey, documentDbId]) => {
const matchingDocument = message.documents!.find(
(document) => document.db_doc_id === documentDbId

View File

@@ -1,6 +1,6 @@
import { Citation } from "@/components/search/results/Citation";
import { WebResultIcon } from "@/components/WebResultIcon";
import { LoadedDanswerDocument } from "@/lib/search/interfaces";
import { LoadedOnyxDocument } from "@/lib/search/interfaces";
import { getSourceMetadata, SOURCE_METADATA_MAP } from "@/lib/sources";
import { ValidSources } from "@/lib/types";
import React, { memo } from "react";
@@ -57,7 +57,7 @@ export const MemoizedLink = memo((props: any) => {
url={document?.url}
icon={document?.icon as React.ReactNode}
link={rest?.href}
document={document as LoadedDanswerDocument}
document={document as LoadedOnyxDocument}
updatePresentingDocument={updatePresentingDocument}
>
{rest.children}

View File

@@ -20,9 +20,9 @@ import React, {
} from "react";
import ReactMarkdown from "react-markdown";
import {
DanswerDocument,
FilteredDanswerDocument,
LoadedDanswerDocument,
OnyxDocument,
FilteredOnyxDocument,
LoadedOnyxDocument,
} from "@/lib/search/interfaces";
import { SearchSummary } from "./SearchSummary";
@@ -98,7 +98,7 @@ function FileDisplay({
<>
{nonImgFiles && nonImgFiles.length > 0 && (
<div
id="danswer-file"
id="onyx-file"
className={` ${alignBubble && "ml-auto"} mt-2 auto mb-4`}
>
<div className="flex flex-col gap-2">
@@ -119,7 +119,7 @@ function FileDisplay({
{imageFiles && imageFiles.length > 0 && (
<div
id="danswer-image"
id="onyx-image"
className={` ${alignBubble && "ml-auto"} mt-2 auto mb-4`}
>
<div className="flex flex-col gap-2">
@@ -200,9 +200,9 @@ export const AIMessage = ({
continueGenerating?: () => void;
otherMessagesCanSwitchTo?: number[];
onMessageSelection?: (messageId: number) => void;
selectedDocuments?: DanswerDocument[] | null;
selectedDocuments?: OnyxDocument[] | null;
toggleDocumentSelection?: () => void;
docs?: DanswerDocument[] | null;
docs?: OnyxDocument[] | null;
alternativeAssistant?: Persona | null;
currentPersona: Persona;
messageId: number | null;
@@ -210,7 +210,7 @@ export const AIMessage = ({
documentSelectionToggled?: boolean;
files?: FileDescriptor[];
query?: string;
citedDocuments?: [string, DanswerDocument][] | null;
citedDocuments?: [string, OnyxDocument][] | null;
toolCall?: ToolCallMetadata | null;
isComplete?: boolean;
hasDocs?: boolean;
@@ -221,7 +221,7 @@ export const AIMessage = ({
retrievalDisabled?: boolean;
overriddenModel?: string;
regenerate?: (modelOverRide: LlmOverride) => Promise<void>;
setPresentingDocument?: (document: DanswerDocument) => void;
setPresentingDocument?: (document: OnyxDocument) => void;
}) => {
const toolCallGenerating = toolCall && !toolCall.tool_result;
const processContent = (content: string | JSX.Element) => {
@@ -284,7 +284,7 @@ export const AIMessage = ({
content = trimIncompleteCodeSection(content);
}
let filteredDocs: FilteredDanswerDocument[] = [];
let filteredDocs: FilteredOnyxDocument[] = [];
if (docs) {
filteredDocs = docs
@@ -297,7 +297,7 @@ export const AIMessage = ({
.filter((doc) => {
return citedDocumentIds.includes(doc.document_id);
})
.map((doc: DanswerDocument, ind: number) => {
.map((doc: OnyxDocument, ind: number) => {
return {
...doc,
included: selectedDocumentIds.includes(doc.document_id),
@@ -371,7 +371,7 @@ export const AIMessage = ({
otherMessagesCanSwitchTo.length > 1;
return (
<div
id="danswer-ai-message"
id="onyx-ai-message"
ref={trackedElementRef}
className={`py-5 ml-4 px-5 relative flex `}
>
@@ -762,7 +762,7 @@ export const HumanMessage = ({
return (
<div
id="danswer-human-message"
id="onyx-human-message"
className="pt-5 pb-1 px-2 lg:px-5 flex -mr-6 relative"
onMouseEnter={() => setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}

View File

@@ -1,11 +1,11 @@
import { BasicClickable } from "@/components/BasicClickable";
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { FiBook } from "react-icons/fi";
export function SelectedDocuments({
selectedDocuments,
}: {
selectedDocuments: DanswerDocument[];
selectedDocuments: OnyxDocument[];
}) {
if (selectedDocuments.length === 0) {
return null;

View File

@@ -14,13 +14,13 @@ import { Separator } from "@/components/ui/separator";
import { useRouter } from "next/navigation";
import { useContext, useEffect, useState } from "react";
import { SettingsContext } from "@/components/settings/SettingsProvider";
import { DanswerInitializingLoader } from "@/components/DanswerInitializingLoader";
import { OnyxInitializingLoader } from "@/components/OnyxInitializingLoader";
import { Persona } from "@/app/admin/assistants/interfaces";
import { Button } from "@/components/ui/button";
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import TextView from "@/components/chat_search/TextView";
function BackToDanswerButton() {
function BackToOnyxButton() {
const router = useRouter();
const enterpriseSettings = useContext(SettingsContext)?.enterpriseSettings;
@@ -28,7 +28,7 @@ function BackToDanswerButton() {
<div className="absolute bottom-0 bg-background w-full flex border-t border-border py-4">
<div className="mx-auto">
<Button onClick={() => router.push("/chat")}>
Back to {enterpriseSettings?.application_name || "Danswer Chat"}
Back to {enterpriseSettings?.application_name || "Onyx Chat"}
</Button>
</div>
</div>
@@ -44,7 +44,7 @@ export function SharedChatDisplay({
}) {
const [isReady, setIsReady] = useState(false);
const [presentingDocument, setPresentingDocument] =
useState<DanswerDocument | null>(null);
useState<OnyxDocument | null>(null);
useEffect(() => {
Prism.highlightAll();
@@ -58,7 +58,7 @@ export function SharedChatDisplay({
Did not find a shared chat with the specified ID.
</Callout>
</div>
<BackToDanswerButton />
<BackToOnyxButton />
</div>
);
}
@@ -122,7 +122,7 @@ export function SharedChatDisplay({
) : (
<div className="grow flex-0 h-screen w-full flex items-center justify-center">
<div className="mb-[33vh]">
<DanswerInitializingLoader />
<OnyxInitializingLoader />
</div>
</div>
)}
@@ -130,7 +130,7 @@ export function SharedChatDisplay({
</div>
</div>
<BackToDanswerButton />
<BackToOnyxButton />
</div>
</>
);

View File

@@ -35,12 +35,12 @@ export default function FixedLogo({
{enterpriseSettings.application_name}
</HeaderTitle>
{!NEXT_PUBLIC_DO_NOT_USE_TOGGLE_OFF_DANSWER_POWERED && (
<p className="text-xs text-subtle">Powered by Danswer</p>
<p className="text-xs text-subtle">Powered by Onyx</p>
)}
</div>
) : (
<HeaderTitle backgroundToggled={backgroundToggled}>
Danswer
Onyx
</HeaderTitle>
)}
</div>

View File

@@ -1,4 +1,4 @@
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { useState } from "react";
interface DocumentInfo {
@@ -18,12 +18,12 @@ async function fetchDocumentLength(documentId: string) {
}
export function useDocumentSelection(): [
DanswerDocument[],
(document: DanswerDocument) => void,
OnyxDocument[],
(document: OnyxDocument) => void,
() => void,
number,
] {
const [selectedDocuments, setSelectedDocuments] = useState<DanswerDocument[]>(
const [selectedDocuments, setSelectedDocuments] = useState<OnyxDocument[]>(
[]
);
const [totalTokens, setTotalTokens] = useState(0);
@@ -32,7 +32,7 @@ export function useDocumentSelection(): [
);
const documentIdToLength = new Map<string, number>();
function toggleDocumentSelection(document: DanswerDocument) {
function toggleDocumentSelection(document: OnyxDocument) {
const documentId = document.document_id;
const isAdding = !selectedDocumentIds.includes(documentId);
if (!isAdding) {

View File

@@ -1,23 +1,23 @@
The DanswerAI Enterprise license (the “Enterprise License”)
Copyright (c) 2023-present DanswerAI, Inc.
The OnyxAI Enterprise license (the “Enterprise License”)
Copyright (c) 2023-present OnyxAI, Inc.
With regard to the Danswer Software:
With regard to the Onyx Software:
This software and associated documentation files (the "Software") may only be
used in production, if you (and any entity that you represent) have agreed to,
and are in compliance with, the DanswerAI Subscription Terms of Service, available
at https://danswer.ai/terms (the “Enterprise Terms”), or other
agreement governing the use of the Software, as agreed by you and DanswerAI,
and otherwise have a valid Danswer Enterprise license for the
and are in compliance with, the OnyxAI Subscription Terms of Service, available
at https://onyx.app/terms (the “Enterprise Terms”), or other
agreement governing the use of the Software, as agreed by you and OnyxAI,
and otherwise have a valid Onyx Enterprise license for the
correct number of user seats. Subject to the foregoing sentence, you are free to
modify this Software and publish patches to the Software. You agree that DanswerAI
modify this Software and publish patches to the Software. You agree that OnyxAI
and/or its licensors (as applicable) retain all right, title and interest in and
to all such modifications and/or patches, and all such modifications and/or
patches may only be used, copied, modified, displayed, distributed, or otherwise
exploited with a valid Danswer Enterprise license for the correct
exploited with a valid Onyx Enterprise license for the correct
number of user seats. Notwithstanding the foregoing, you may copy and modify
the Software for development and testing purposes, without requiring a
subscription. You agree that DanswerAI and/or its licensors (as applicable) retain
subscription. You agree that OnyxAI and/or its licensors (as applicable) retain
all right, title and interest in and to all such modifications. You are not
granted any other rights beyond what is expressly stated herein. Subject to the
foregoing, it is forbidden to copy, merge, publish, distribute, sublicense,
@@ -31,6 +31,6 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
For all third party components incorporated into the Danswer Software, those
For all third party components incorporated into the Onyx Software, those
components are licensed under the original license provided by the owner of the
applicable component.

View File

@@ -91,7 +91,7 @@ export function CustomAnalyticsUpdateForm() {
For security reasons, you must provide a secret key to update this
script. This should be the value of the{" "}
<i>CUSTOM_ANALYTICS_SECRET_KEY</i> environment variable set when
initially setting up Danswer.
initially setting up Onyx.
</>
</SubLabel>
<input

View File

@@ -12,7 +12,7 @@ function Main() {
<div className="mt-4">
<Callout type="danger" title="Custom Analytics is not enabled.">
To set up custom analytics scripts, please work with the team who
setup Danswer in your organization to set the{" "}
setup Onyx in your organization to set the{" "}
<i>CUSTOM_ANALYTICS_SECRET_KEY</i> environment variable.
</Callout>
</div>
@@ -23,9 +23,9 @@ function Main() {
return (
<div>
<Text className="mb-8">
This allows you to bring your own analytics tool to Danswer! Copy the
Web snippet from your analytics provider into the box below, and
we&apos;ll start sending usage events.
This allows you to bring your own analytics tool to Onyx! Copy the Web
snippet from your analytics provider into the box below, and we&apos;ll
start sending usage events.
</Text>
<CustomAnalyticsUpdateForm />

View File

@@ -2,7 +2,7 @@ import { errorHandlingFetcher } from "@/lib/fetcher";
import useSWR, { mutate } from "swr";
import {
ChatSessionMinimal,
DanswerBotAnalytics,
OnyxBotAnalytics,
QueryAnalytics,
UserAnalytics,
} from "./usage/types";
@@ -52,16 +52,16 @@ export const useUserAnalytics = (timeRange: DateRangePickerValue) => {
};
};
export const useDanswerBotAnalytics = (timeRange: DateRangePickerValue) => {
const url = buildApiPath("/api/analytics/admin/danswerbot", {
export const useOnyxBotAnalytics = (timeRange: DateRangePickerValue) => {
const url = buildApiPath("/api/analytics/admin/onyxbot", {
start: convertDateToStartOfDay(timeRange.from)?.toISOString(),
end: convertDateToEndOfDay(timeRange.to)?.toISOString(),
});
const swrResponse = useSWR<DanswerBotAnalytics[]>(url, errorHandlingFetcher); // TODO
const swrResponse = useSWR<OnyxBotAnalytics[]>(url, errorHandlingFetcher); // TODO
return {
...swrResponse,
refreshDanswerBotAnalytics: () => mutate(url),
refreshOnyxBotAnalytics: () => mutate(url),
};
};

View File

@@ -1,30 +1,30 @@
import { ThreeDotsLoader } from "@/components/Loading";
import { getDatesList, useDanswerBotAnalytics } from "../lib";
import { getDatesList, useOnyxBotAnalytics } from "../lib";
import { DateRangePickerValue } from "@/app/ee/admin/performance/DateRangeSelector";
import Text from "@/components/ui/text";
import Title from "@/components/ui/title";
import CardSection from "@/components/admin/CardSection";
import { AreaChartDisplay } from "@/components/ui/areaChart";
export function DanswerBotChart({
export function OnyxBotChart({
timeRange,
}: {
timeRange: DateRangePickerValue;
}) {
const {
data: danswerBotAnalyticsData,
isLoading: isDanswerBotAnalyticsLoading,
error: danswerBotAnalyticsError,
} = useDanswerBotAnalytics(timeRange);
data: onyxBotAnalyticsData,
isLoading: isOnyxBotAnalyticsLoading,
error: onyxBotAnalyticsError,
} = useOnyxBotAnalytics(timeRange);
let chart;
if (isDanswerBotAnalyticsLoading) {
if (isOnyxBotAnalyticsLoading) {
chart = (
<div className="h-80 flex flex-col">
<ThreeDotsLoader />
</div>
);
} else if (!danswerBotAnalyticsData || danswerBotAnalyticsError) {
} else if (!onyxBotAnalyticsData || onyxBotAnalyticsError) {
chart = (
<div className="h-80 text-red-600 text-bold flex flex-col">
<p className="m-auto">Failed to fetch feedback data...</p>
@@ -32,13 +32,13 @@ export function DanswerBotChart({
);
} else {
const initialDate =
timeRange.from || new Date(danswerBotAnalyticsData[0].date);
timeRange.from || new Date(onyxBotAnalyticsData[0].date);
const dateRange = getDatesList(initialDate);
const dateToDanswerBotAnalytics = new Map(
danswerBotAnalyticsData.map((danswerBotAnalyticsEntry) => [
danswerBotAnalyticsEntry.date,
danswerBotAnalyticsEntry,
const dateToOnyxBotAnalytics = new Map(
onyxBotAnalyticsData.map((onyxBotAnalyticsEntry) => [
onyxBotAnalyticsEntry.date,
onyxBotAnalyticsEntry,
])
);
@@ -46,13 +46,12 @@ export function DanswerBotChart({
<AreaChartDisplay
className="mt-4"
data={dateRange.map((dateStr) => {
const danswerBotAnalyticsForDate =
dateToDanswerBotAnalytics.get(dateStr);
const onyxBotAnalyticsForDate = dateToOnyxBotAnalytics.get(dateStr);
return {
Day: dateStr,
"Total Queries": danswerBotAnalyticsForDate?.total_queries || 0,
"Total Queries": onyxBotAnalyticsForDate?.total_queries || 0,
"Automatically Resolved":
danswerBotAnalyticsForDate?.auto_resolved || 0,
onyxBotAnalyticsForDate?.auto_resolved || 0,
};
})}
categories={["Total Queries", "Automatically Resolved"]}

View File

@@ -1,7 +1,7 @@
"use client";
import { DateRangeSelector } from "../DateRangeSelector";
import { DanswerBotChart } from "./DanswerBotChart";
import { OnyxBotChart } from "./OnyxBotChart";
import { FeedbackChart } from "./FeedbackChart";
import { QueryPerformanceChart } from "./QueryPerformanceChart";
import { PersonaMessagesChart } from "./PersonaMessagesChart";
@@ -26,7 +26,7 @@ export default function AnalyticsPage() {
/>
<QueryPerformanceChart timeRange={timeRange} />
<FeedbackChart timeRange={timeRange} />
<DanswerBotChart timeRange={timeRange} />
<OnyxBotChart timeRange={timeRange} />
<PersonaMessagesChart timeRange={timeRange} />
<Separator />
<UsageReports />

View File

@@ -12,7 +12,7 @@ export interface UserAnalytics {
date: string;
}
export interface DanswerBotAnalytics {
export interface OnyxBotAnalytics {
total_queries: number;
auto_resolved: number;
date: string;

View File

@@ -137,8 +137,8 @@ export function WhitelabelingForm() {
<TextFormField
label="Application Name"
name="application_name"
subtext={`The custom name you are giving Danswer for your organization. This will replace 'Danswer' everywhere in the UI.`}
placeholder="Custom name which will replace 'Danswer'"
subtext={`The custom name you are giving Onyx for your organization. This will replace 'Onyx' everywhere in the UI.`}
placeholder="Custom name which will replace 'Onyx'"
disabled={isSubmitting}
/>
@@ -178,7 +178,7 @@ export function WhitelabelingForm() {
</div>
) : (
<SubLabel>
Specify your own logo to replace the standard Danswer logo.
Specify your own logo to replace the standard Onyx logo.
</SubLabel>
)}
@@ -199,7 +199,7 @@ export function WhitelabelingForm() {
<Text>
Read{" "}
<Link
href={"https://docs.danswer.dev/enterprise_edition/theming"}
href={"https://docs.onyx.app/enterprise_edition/theming"}
className="text-link cursor-pointer"
>
the docs
@@ -234,7 +234,7 @@ export function WhitelabelingForm() {
values.enable_consent_screen
? `The title for the consent screen that will be displayed for each user on their initial visit to the application. If left blank, title will default to "Terms of Use".`
: `The title for the popup that will be displayed for each user on their initial visit to the application. If left blank AND Custom Popup Content is specified, will use "Welcome to ${
values.application_name || "Danswer"
values.application_name || "Onyx"
}!".`
}
placeholder={

View File

@@ -31,18 +31,18 @@ const inter = Inter({
});
export async function generateMetadata(): Promise<Metadata> {
let logoLocation = buildClientUrl("/danswer.ico");
let logoLocation = buildClientUrl("/onyx.ico");
let enterpriseSettings: EnterpriseSettings | null = null;
if (SERVER_SIDE_ONLY__PAID_ENTERPRISE_FEATURES_ENABLED) {
enterpriseSettings = await (await fetchEnterpriseSettingsSS()).json();
logoLocation =
enterpriseSettings && enterpriseSettings.use_custom_logo
? "/api/enterprise-settings/logo"
: buildClientUrl("/danswer.ico");
: buildClientUrl("/onyx.ico");
}
return {
title: enterpriseSettings?.application_name ?? "Danswer",
title: enterpriseSettings?.application_name ?? "Onyx",
description: "Question answering for your documents",
icons: {
icon: logoLocation,
@@ -115,14 +115,14 @@ export default async function RootLayout({
return getPageContent(
<div className="flex flex-col items-center justify-center min-h-screen">
<div className="mb-2 flex items-center max-w-[175px]">
<HeaderTitle>Danswer</HeaderTitle>
<HeaderTitle>Onyx</HeaderTitle>
<Logo height={40} width={40} />
</div>
<CardSection className="max-w-md">
<h1 className="text-2xl font-bold mb-4 text-error">Error</h1>
<p className="text-text-500">
Your Danswer instance was not configured properly and your settings
Your Onyx instance was not configured properly and your settings
could not be loaded. This could be due to an admin configuration
issue or an incomplete setup.
</p>
@@ -130,21 +130,21 @@ export default async function RootLayout({
If you&apos;re an admin, please check{" "}
<a
className="text-link"
href="https://docs.danswer.dev/introduction?utm_source=app&utm_medium=error_page&utm_campaign=config_error"
href="https://docs.onyx.app/introduction?utm_source=app&utm_medium=error_page&utm_campaign=config_error"
target="_blank"
rel="noopener noreferrer"
>
our docs
</a>{" "}
to see how to configure Danswer properly. If you&apos;re a user,
please contact your admin to fix this error.
to see how to configure Onyx properly. If you&apos;re a user, please
contact your admin to fix this error.
</p>
<p className="mt-4">
For additional support and guidance, you can reach out to our
community on{" "}
<a
className="text-link"
href="https://danswer.ai?utm_source=app&utm_medium=error_page&utm_campaign=config_error"
href="https://onyx.app?utm_source=app&utm_medium=error_page&utm_campaign=config_error"
target="_blank"
rel="noopener noreferrer"
>
@@ -160,7 +160,7 @@ export default async function RootLayout({
return getPageContent(
<div className="flex flex-col items-center justify-center min-h-screen">
<div className="mb-2 flex items-center max-w-[175px]">
<HeaderTitle>Danswer</HeaderTitle>
<HeaderTitle>Onyx</HeaderTitle>
<Logo height={40} width={40} />
</div>
<CardSection className="w-full max-w-md">
@@ -168,11 +168,11 @@ export default async function RootLayout({
Access Restricted
</h1>
<p className="text-text-500 mb-4">
We regret to inform you that your access to Danswer has been
We regret to inform you that your access to Onyx has been
temporarily suspended due to a lapse in your subscription.
</p>
<p className="text-text-500 mb-4">
To reinstate your access and continue benefiting from Danswer&apos;s
To reinstate your access and continue benefiting from Onyx&apos;s
powerful features, please update your payment information.
</p>
<p className="text-text-500">

View File

@@ -2,15 +2,14 @@ import { Logo } from "./Logo";
import { useContext } from "react";
import { SettingsContext } from "./settings/SettingsProvider";
export function DanswerInitializingLoader() {
export function OnyxInitializingLoader() {
const settings = useContext(SettingsContext);
return (
<div className="mx-auto my-auto animate-pulse">
<Logo height={96} width={96} className="mx-auto mb-3" />
<p className="text-lg font-bold">
Initializing{" "}
{settings?.enterpriseSettings?.application_name ?? "Danswer"}
Initializing {settings?.enterpriseSettings?.application_name ?? "Onyx"}
</p>
</div>
);

View File

@@ -25,7 +25,7 @@ export function SwitchModelModal({
<br />
Please click the button below to choose a new model. Don&apos;t worry,
the re-indexing necessary for the switch will happen in the background
- your use of Danswer will not be interrupted.
- your use of Onyx will not be interrupted.
</Text>
<div className="flex mt-4">

View File

@@ -3,7 +3,7 @@ import { SourceIcon } from "./SourceIcon";
export function WebResultIcon({ url }: { url: string }) {
const hostname = new URL(url).hostname;
return hostname == "https://docs.danswer.dev" ? (
return hostname == "https://docs.onyx.app" ? (
<img
className="my-0 py-0"
src={`https://www.google.com/s2/favicons?domain=${hostname}`}

View File

@@ -58,7 +58,7 @@ export function AccessTypeForm({
name: "Public",
value: "public",
description:
"Everyone with an account on Danswer can access the documents pulled in by this connector",
"Everyone with an account on Onyx can access the documents pulled in by this connector",
});
}
@@ -67,7 +67,7 @@ export function AccessTypeForm({
name: "Auto Sync Permissions",
value: "sync",
description:
"We will automatically sync permissions from the source. A document will be searchable in Danswer if and only if the user performing the search has permission to access the document in the source.",
"We will automatically sync permissions from the source. A document will be searchable in Onyx if and only if the user performing the search has permission to access the document in the source.",
});
}

View File

@@ -50,11 +50,11 @@ export function AdminSidebar({ collections }: { collections: Collection[] }) {
{enterpriseSettings.application_name}
</HeaderTitle>
{!NEXT_PUBLIC_DO_NOT_USE_TOGGLE_OFF_DANSWER_POWERED && (
<p className="text-xs text-subtle">Powered by Danswer</p>
<p className="text-xs text-subtle">Powered by Onyx</p>
)}
</div>
) : (
<HeaderTitle>Danswer</HeaderTitle>
<HeaderTitle>Onyx</HeaderTitle>
)}
</div>
</div>
@@ -104,10 +104,10 @@ export function AdminSidebar({ collections }: { collections: Collection[] }) {
{combinedSettings.webVersion && (
<div
className="flex flex-col mt-6 items-center justify-center w-full"
key={"danswerVersion"}
key={"onyxVersion"}
>
<h2 className="text-xs text-text w-52 font-medium pb-2">
Danswer version: {combinedSettings.webVersion}
Onyx version: {combinedSettings.webVersion}
</h2>
</div>
)}

View File

@@ -9,11 +9,11 @@ import {
DialogTitle,
} from "@/components/ui/dialog";
import { Download, XIcon, ZoomIn, ZoomOut } from "lucide-react";
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { MinimalMarkdown } from "./MinimalMarkdown";
interface TextViewProps {
presentingDocument: DanswerDocument;
presentingDocument: OnyxDocument;
onClose: () => void;
}
export default function TextView({

View File

@@ -1,6 +1,6 @@
import { WebResultIcon } from "@/components/WebResultIcon";
import { SourceIcon } from "@/components/SourceIcon";
import { DanswerDocument } from "@/lib/search/interfaces";
import { OnyxDocument } from "@/lib/search/interfaces";
import { truncateString } from "@/lib/utils";
import { SetStateAction } from "react";
import { Dispatch } from "react";
@@ -10,8 +10,8 @@ export default function SourceCard({
doc,
setPresentingDocument,
}: {
doc: DanswerDocument;
setPresentingDocument?: (document: DanswerDocument) => void;
doc: OnyxDocument;
setPresentingDocument?: (document: OnyxDocument) => void;
}) {
return (
<div
@@ -44,7 +44,7 @@ export default function SourceCard({
interface SeeMoreBlockProps {
documentSelectionToggled: boolean;
toggleDocumentSelection?: () => void;
uniqueSources: DanswerDocument["source_type"][];
uniqueSources: OnyxDocument["source_type"][];
}
export function SeeMoreBlock({

View File

@@ -41,7 +41,7 @@ export default function EmbeddingSidebar() {
{enterpriseSettings && enterpriseSettings.application_name ? (
<HeaderTitle>{enterpriseSettings.application_name}</HeaderTitle>
) : (
<HeaderTitle>Danswer</HeaderTitle>
<HeaderTitle>Onyx</HeaderTitle>
)}
</div>
</div>
@@ -79,7 +79,9 @@ export default function EmbeddingSidebar() {
</div>
</div>
<div
className={`${index <= formStep ? "text-gray-800" : "text-gray-500"}`}
className={`${
index <= formStep ? "text-gray-800" : "text-gray-500"
}`}
>
{step}
</div>

View File

@@ -110,7 +110,7 @@ export const AVAILABLE_MODELS: HostedEmbeddingModel[] = [
model_dim: 384,
normalize: true,
description:
"The smallest and fastest version of the E5 line of models. If you're running Danswer on a resource constrained system, then this may be a good choice.",
"The smallest and fastest version of the E5 line of models. If you're running Onyx on a resource constrained system, then this may be a good choice.",
link: "https://huggingface.co/intfloat/e5-small-v2",
query_prefix: "query: ",
passage_prefix: "passage: ",
@@ -177,8 +177,7 @@ export const AVAILABLE_CLOUD_PROVIDERS: CloudEmbeddingProvider[] = [
provider_type: EmbeddingProvider.COHERE,
website: "https://cohere.ai",
icon: CohereIcon,
docsLink:
"https://docs.danswer.dev/guides/embedding_providers#cohere-models",
docsLink: "https://docs.onyx.app/guides/embedding_providers#cohere-models",
description:
"AI company specializing in NLP models for various text-based tasks",
apiLink: "https://dashboard.cohere.ai/api-keys",
@@ -220,8 +219,7 @@ export const AVAILABLE_CLOUD_PROVIDERS: CloudEmbeddingProvider[] = [
icon: OpenAIIcon,
description: "AI industry leader known for ChatGPT and DALL-E",
apiLink: "https://platform.openai.com/api-keys",
docsLink:
"https://docs.danswer.dev/guides/embedding_providers#openai-models",
docsLink: "https://docs.onyx.app/guides/embedding_providers#openai-models",
costslink: "https://openai.com/pricing",
embedding_models: [
{
@@ -260,7 +258,7 @@ export const AVAILABLE_CLOUD_PROVIDERS: CloudEmbeddingProvider[] = [
website: "https://ai.google",
icon: GoogleIcon,
docsLink:
"https://docs.danswer.dev/guides/embedding_providers#vertex-ai-google-model",
"https://docs.onyx.app/guides/embedding_providers#vertex-ai-google-model",
description:
"Offers a wide range of AI services including language and vision models",
apiLink: "https://console.cloud.google.com/apis/credentials",
@@ -299,8 +297,7 @@ export const AVAILABLE_CLOUD_PROVIDERS: CloudEmbeddingProvider[] = [
website: "https://www.voyageai.com",
icon: VoyageIcon,
description: "Advanced NLP research startup born from Stanford AI Labs",
docsLink:
"https://docs.danswer.dev/guides/embedding_providers#voyage-models",
docsLink: "https://docs.onyx.app/guides/embedding_providers#voyage-models",
apiLink: "https://www.voyageai.com/dashboard",
costslink: "https://www.voyageai.com/pricing",
embedding_models: [

View File

@@ -80,7 +80,7 @@ export function AnnouncementBanner() {
) : notification.notif_type == "two_day_trial_ending" ? (
<p className="text-center">
Your trial is ending soon - submit your billing information to
continue using Danswer.{" "}
continue using Onyx.{" "}
<Link
href="/admin/cloud-settings"
className="ml-2 underline cursor-pointer"

View File

@@ -73,11 +73,11 @@ export default function LogoType({
{enterpriseSettings.application_name}
</HeaderTitle>
{!NEXT_PUBLIC_DO_NOT_USE_TOGGLE_OFF_DANSWER_POWERED && (
<p className="text-xs text-subtle">Powered by Danswer</p>
<p className="text-xs text-subtle">Powered by Onyx</p>
)}
</div>
) : (
<HeaderTitle backgroundToggled={toggled}>Danswer</HeaderTitle>
<HeaderTitle backgroundToggled={toggled}>Onyx</HeaderTitle>
)}
</div>
</div>

View File

@@ -157,7 +157,7 @@ export const HealthCheckBanner = () => {
<p className="font-bold pb-1">The backend is currently unavailable.</p>
<p className="px-1">
If this is your initial setup or you just updated your Danswer
If this is your initial setup or you just updated your Onyx
deployment, this is likely because the backend is still starting up.
Give it a minute or two, and then refresh the page. If that does not
work, make sure the backend is setup and/or contact an administrator.

View File

@@ -34,7 +34,7 @@ export function mockedRefreshToken(): CustomRefreshTokenResponse {
givenName: "Mock name",
fullName: "Mock name",
userId: "Mock User ID",
email: "email@danswer.ai",
email: "email@onyx.app",
},
};
return data;

View File

@@ -62,18 +62,18 @@ export function _WelcomeModal({ user }: { user: User | null }) {
setWelcomeFlowComplete();
router.refresh();
}}
title={"Welcome to Danswer!"}
title={"Welcome to Onyx!"}
width="w-full max-h-[900px] overflow-y-scroll max-w-3xl"
>
<div>
<Text className="mb-4">
Danswer brings all your company&apos;s knowledge to your fingertips,
Onyx brings all your company&apos;s knowledge to your fingertips,
ready to be accessed instantly.
</Text>
<Text className="mb-4">
To get started, we need to set up an API key for the Language Model
(LLM) provider. This key allows Danswer to interact with the AI
model, enabling intelligent responses to your queries.
(LLM) provider. This key allows Onyx to interact with the AI model,
enabling intelligent responses to your queries.
</Text>
<div className="max-h-[900px] overflow-y-scroll">

View File

@@ -1,10 +1,10 @@
"use client";
import React from "react";
import {
DanswerDocument,
OnyxDocument,
DocumentRelevance,
LoadedDanswerDocument,
SearchDanswerDocument,
LoadedOnyxDocument,
SearchOnyxDocument,
} from "@/lib/search/interfaces";
import { DocumentFeedbackBlock } from "./DocumentFeedbackBlock";
import { useContext, useState } from "react";
@@ -127,7 +127,7 @@ export const buildDocumentSummaryDisplay = (
export function DocumentMetadataBlock({
document,
}: {
document: DanswerDocument;
document: OnyxDocument;
}) {
// don't display super long tags, as they are ugly
const MAXIMUM_TAG_LENGTH = 40;
@@ -163,7 +163,7 @@ export function DocumentMetadataBlock({
}
interface DocumentDisplayProps {
document: SearchDanswerDocument;
document: SearchOnyxDocument;
messageId: number | null;
documentRank: number;
isSelected: boolean;
@@ -191,7 +191,7 @@ export const DocumentDisplay = ({
document.relevance_explanation ?? additional_relevance?.content;
const settings = useContext(SettingsContext);
const [presentingDocument, setPresentingDocument] =
useState<DanswerDocument | null>(null);
useState<OnyxDocument | null>(null);
const handleViewFile = async () => {
setPresentingDocument(document);
@@ -316,7 +316,7 @@ export const AgenticDocumentDisplay = ({
}: DocumentDisplayProps) => {
const [isHovered, setIsHovered] = useState(false);
const [presentingDocument, setPresentingDocument] =
useState<DanswerDocument | null>(null);
useState<OnyxDocument | null>(null);
const [alternativeToggled, setAlternativeToggled] = useState(false);
@@ -428,10 +428,10 @@ export function CompactDocumentCard({
url,
updatePresentingDocument,
}: {
document: LoadedDanswerDocument;
document: LoadedOnyxDocument;
icon?: React.ReactNode;
url?: string;
updatePresentingDocument: (documentIndex: LoadedDanswerDocument) => void;
updatePresentingDocument: (documentIndex: LoadedOnyxDocument) => void;
}) {
return (
<div

View File

@@ -1,6 +1,6 @@
import { ReactNode } from "react";
import { CompactDocumentCard } from "../DocumentDisplay";
import { LoadedDanswerDocument } from "@/lib/search/interfaces";
import { LoadedOnyxDocument } from "@/lib/search/interfaces";
import {
Tooltip,
TooltipContent,
@@ -21,8 +21,8 @@ export function Citation({
link?: string;
children?: JSX.Element | string | null | ReactNode;
index?: number;
updatePresentingDocument: (documentIndex: LoadedDanswerDocument) => void;
document: LoadedDanswerDocument;
updatePresentingDocument: (documentIndex: LoadedOnyxDocument) => void;
document: LoadedOnyxDocument;
icon?: React.ReactNode;
url?: string;
}) {

73
web/src/i.ipynb Normal file
View File

@@ -0,0 +1,73 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import os\n",
"\n",
"def rename_files(directory):\n",
" for root, dirs, files in os.walk(directory):\n",
" for filename in files:\n",
" new_filename = filename.replace(\"danswer\", \"onyx\").replace(\"Danswer\", \"Onyx\")\n",
" if new_filename != filename:\n",
" old_path = os.path.join(root, filename)\n",
" new_path = os.path.join(root, new_filename)\n",
" os.rename(old_path, new_path)\n",
" print(f\"Renamed: {old_path} -> {new_path}\")\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"File renaming complete.\n"
]
}
],
"source": [
"# Specify the directory path here\n",
"directory_path = \".\"\n",
"\n",
"rename_files(directory_path)\n",
"print(\"File renaming complete.\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

View File

@@ -135,8 +135,7 @@ export const connectorConfigs: Record<
values: [
{
type: "text",
query:
"Enter the website URL to scrape e.g. https://docs.danswer.dev/:",
query: "Enter the website URL to scrape e.g. https://docs.onyx.app/:",
label: "Base URL",
name: "base_url",
optional: false,
@@ -246,8 +245,8 @@ export const connectorConfigs: Record<
label: "Include shared drives?",
description: (currentCredential) => {
return currentCredential?.credential_json?.google_tokens
? "This will allow Danswer to index everything in the shared drives you have access to."
: "This will allow Danswer to index everything in your Organization's shared drives.";
? "This will allow Onyx to index everything in the shared drives you have access to."
: "This will allow Onyx to index everything in your Organization's shared drives.";
},
name: "include_shared_drives",
default: false,
@@ -261,8 +260,8 @@ export const connectorConfigs: Record<
},
description: (currentCredential) => {
return currentCredential?.credential_json?.google_tokens
? "This will allow Danswer to index everything in your My Drive."
: "This will allow Danswer to index everything in everyone's My Drives.";
? "This will allow Onyx to index everything in your My Drive."
: "This will allow Onyx to index everything in everyone's My Drives.";
},
name: "include_my_drives",
default: false,
@@ -270,7 +269,7 @@ export const connectorConfigs: Record<
{
type: "checkbox",
description:
"This will allow Danswer to index all files shared with you.",
"This will allow Onyx to index all files shared with you.",
label: "Include All Files Shared With You?",
name: "include_files_shared_with_me",
visibleCondition: (values, currentCredential) =>
@@ -435,7 +434,7 @@ export const connectorConfigs: Record<
},
jira: {
description: "Configure Jira connector",
subtext: `Specify any link to a Jira page below and click "Index" to Index. Based on the provided link, we will index the ENTIRE PROJECT, not just the specified page. For example, entering https://danswer.atlassian.net/jira/software/projects/DAN/boards/1 and clicking the Index button will index the whole DAN Jira project.`,
subtext: `Specify any link to a Jira page below and click "Index" to Index. Based on the provided link, we will index the ENTIRE PROJECT, not just the specified page. For example, entering https://onyx.atlassian.net/jira/software/projects/DAN/boards/1 and clicking the Index button will index the whole DAN Jira project.`,
values: [
{
type: "text",
@@ -465,7 +464,7 @@ export const connectorConfigs: Record<
label: "Requested Objects",
name: "requested_objects",
optional: true,
description: `Specify the Salesforce object types you want us to index. If unsure, don't specify any objects and Danswer will default to indexing by 'Account'.
description: `Specify the Salesforce object types you want us to index. If unsure, don't specify any objects and Onyx will default to indexing by 'Account'.
Hint: Use the singular form of the object name (e.g., 'Opportunity' instead of 'Opportunities').`,
},
@@ -482,8 +481,8 @@ Hint: Use the singular form of the object name (e.g., 'Opportunity' instead of '
name: "sites",
optional: true,
description: `• If no sites are specified, all sites in your organization will be indexed (Sites.Read.All permission required).
• Specifying 'https://danswerai.sharepoint.com/sites/support' for example will only index documents within this site.
• Specifying 'https://danswerai.sharepoint.com/sites/support/subfolder' for example will only index documents within this folder.
• Specifying 'https://onyxai.sharepoint.com/sites/support' for example will only index documents within this site.
• Specifying 'https://onyxai.sharepoint.com/sites/support/subfolder' for example will only index documents within this folder.
`,
},
],
@@ -498,7 +497,7 @@ Hint: Use the singular form of the object name (e.g., 'Opportunity' instead of '
label: "Teams",
name: "teams",
optional: true,
description: `Specify 0 or more Teams to index. For example, specifying the Team 'Support' for the 'danswerai' Org will cause us to only index messages sent in channels belonging to the 'Support' Team. If no Teams are specified, all Teams in your organization will be indexed.`,
description: `Specify 0 or more Teams to index. For example, specifying the Team 'Support' for the 'onyxai' Org will cause us to only index messages sent in channels belonging to the 'Support' Team. If no Teams are specified, all Teams in your organization will be indexed.`,
},
],
advanced_values: [],
@@ -586,7 +585,7 @@ For example, specifying .*-support.* as a "channel" will cause the connector to
label: "Base URL",
name: "base_url",
optional: false,
description: `Specify the base URL for your Slab team. This will look something like: https://danswer.slab.com/`,
description: `Specify the base URL for your Slab team. This will look something like: https://onyx.slab.com/`,
},
],
advanced_values: [],

View File

@@ -1,12 +1,12 @@
import { DanswerDocument } from "./search/interfaces";
import { OnyxDocument } from "./search/interfaces";
export function removeDuplicateDocs(
documents: DanswerDocument[],
documents: OnyxDocument[],
agentic?: boolean,
relevance?: any
) {
const seen = new Set<string>();
const output: DanswerDocument[] = [];
const output: OnyxDocument[] = [];
documents.forEach((document) => {
if (
document.document_id &&

View File

@@ -45,7 +45,7 @@ export interface QuotesInfoPacket {
quotes: Quote[];
}
export interface DanswerDocument {
export interface OnyxDocument {
document_id: string;
link: string;
source_type: ValidSources;
@@ -62,20 +62,20 @@ export interface DanswerDocument {
is_internet: boolean;
validationState?: null | "good" | "bad";
}
export interface LoadedDanswerDocument extends DanswerDocument {
export interface LoadedOnyxDocument extends OnyxDocument {
icon: React.FC<{ size?: number; className?: string }>;
}
export interface SearchDanswerDocument extends DanswerDocument {
export interface SearchOnyxDocument extends OnyxDocument {
is_relevant: boolean;
relevance_explanation: string;
}
export interface FilteredDanswerDocument extends DanswerDocument {
export interface FilteredOnyxDocument extends OnyxDocument {
included: boolean;
}
export interface DocumentInfoPacket {
top_documents: DanswerDocument[];
top_documents: OnyxDocument[];
predicted_flow: FlowType | null;
predicted_search: SearchType | null;
time_cutoff: string | null;
@@ -100,7 +100,7 @@ export interface SearchResponse {
suggestedFlowType: FlowType | null;
answer: string | null;
quotes: Quote[] | null;
documents: SearchDanswerDocument[] | null;
documents: SearchOnyxDocument[] | null;
selectedDocIndices: number[] | null;
error: string | null;
messageId: number | null;
@@ -149,7 +149,7 @@ export interface SearchRequestArgs {
updateDocumentRelevance: (relevance: any) => void;
updateCurrentAnswer: (val: string) => void;
updateQuotes: (quotes: Quote[]) => void;
updateDocs: (documents: DanswerDocument[]) => void;
updateDocs: (documents: OnyxDocument[]) => void;
updateSelectedDocIndices: (docIndices: number[]) => void;
updateSuggestedSearchType: (searchType: SearchType) => void;
updateSuggestedFlowType: (flowType: FlowType) => void;

View File

@@ -1,8 +1,8 @@
import { DanswerDocument, SearchRequestArgs } from "./interfaces";
import { OnyxDocument, SearchRequestArgs } from "./interfaces";
interface KeywordResponse {
top_ranked_docs: DanswerDocument[];
lower_ranked_docs: DanswerDocument[];
top_ranked_docs: OnyxDocument[];
lower_ranked_docs: OnyxDocument[];
}
export const keywordSearch = async ({
@@ -14,7 +14,7 @@ export const keywordSearch = async ({
method: "POST",
body: JSON.stringify({
query,
collection: "danswer_index",
collection: "onyx_index",
...(sources.length > 0
? {
filters: [

View File

@@ -4,7 +4,7 @@ import {
} from "@/app/chat/interfaces";
import {
AnswerPiecePacket,
DanswerDocument,
OnyxDocument,
ErrorMessagePacket,
DocumentInfoPacket,
Quote,
@@ -37,7 +37,7 @@ export const searchRequestStreamed = async ({
}: SearchRequestArgs) => {
let answer = "";
let quotes: Quote[] | null = null;
let relevantDocuments: DanswerDocument[] | null = null;
let relevantDocuments: OnyxDocument[] | null = null;
try {
const filters = buildFilters(sources, documentSets, timeRange, tags);
@@ -137,7 +137,7 @@ export const searchRequestStreamed = async ({
// These all come together
if (Object.hasOwn(chunk, "top_documents")) {
chunk = chunk as DocumentInfoPacket;
const topDocuments = chunk.top_documents as DanswerDocument[] | null;
const topDocuments = chunk.top_documents as OnyxDocument[] | null;
if (topDocuments) {
relevantDocuments = topDocuments;
updateDocs(relevantDocuments);

View File

@@ -42,7 +42,7 @@ import {
} from "@/components/icons/icons";
import { ValidSources } from "./types";
import {
DanswerDocument,
OnyxDocument,
SourceCategory,
SourceMetadata,
} from "./search/interfaces";
@@ -64,128 +64,128 @@ export const SOURCE_METADATA_MAP: SourceMap = {
icon: GlobeIcon,
displayName: "Web",
category: SourceCategory.Other,
docs: "https://docs.danswer.dev/connectors/web",
docs: "https://docs.onyx.app/connectors/web",
},
file: {
icon: FileIcon,
displayName: "File",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/file",
docs: "https://docs.onyx.app/connectors/file",
},
slack: {
icon: ColorSlackIcon,
displayName: "Slack",
category: SourceCategory.Messaging,
docs: "https://docs.danswer.dev/connectors/slack",
docs: "https://docs.onyx.app/connectors/slack",
oauthSupported: true,
},
gmail: {
icon: GmailIcon,
displayName: "Gmail",
category: SourceCategory.Messaging,
docs: "https://docs.danswer.dev/connectors/gmail/overview",
docs: "https://docs.onyx.app/connectors/gmail/overview",
},
google_drive: {
icon: GoogleDriveIcon,
displayName: "Google Drive",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/google_drive/overview",
docs: "https://docs.onyx.app/connectors/google_drive/overview",
},
github: {
icon: GithubIcon,
displayName: "Github",
category: SourceCategory.CodeRepository,
docs: "https://docs.danswer.dev/connectors/github",
docs: "https://docs.onyx.app/connectors/github",
},
gitlab: {
icon: GitlabIcon,
displayName: "Gitlab",
category: SourceCategory.CodeRepository,
docs: "https://docs.danswer.dev/connectors/gitlab",
docs: "https://docs.onyx.app/connectors/gitlab",
},
confluence: {
icon: ConfluenceIcon,
displayName: "Confluence",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/confluence",
docs: "https://docs.onyx.app/connectors/confluence",
},
jira: {
icon: JiraIcon,
displayName: "Jira",
category: SourceCategory.ProjectManagement,
docs: "https://docs.danswer.dev/connectors/jira",
docs: "https://docs.onyx.app/connectors/jira",
},
notion: {
icon: NotionIcon,
displayName: "Notion",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/notion",
docs: "https://docs.onyx.app/connectors/notion",
},
zendesk: {
icon: ZendeskIcon,
displayName: "Zendesk",
category: SourceCategory.CustomerSupport,
docs: "https://docs.danswer.dev/connectors/zendesk",
docs: "https://docs.onyx.app/connectors/zendesk",
},
gong: {
icon: GongIcon,
displayName: "Gong",
category: SourceCategory.Other,
docs: "https://docs.danswer.dev/connectors/gong",
docs: "https://docs.onyx.app/connectors/gong",
},
linear: {
icon: LinearIcon,
displayName: "Linear",
category: SourceCategory.ProjectManagement,
docs: "https://docs.danswer.dev/connectors/linear",
docs: "https://docs.onyx.app/connectors/linear",
},
productboard: {
icon: ProductboardIcon,
displayName: "Productboard",
category: SourceCategory.ProjectManagement,
docs: "https://docs.danswer.dev/connectors/productboard",
docs: "https://docs.onyx.app/connectors/productboard",
},
slab: {
icon: SlabIcon,
displayName: "Slab",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/slab",
docs: "https://docs.onyx.app/connectors/slab",
},
zulip: {
icon: ZulipIcon,
displayName: "Zulip",
category: SourceCategory.Messaging,
docs: "https://docs.danswer.dev/connectors/zulip",
docs: "https://docs.onyx.app/connectors/zulip",
},
guru: {
icon: GuruIcon,
displayName: "Guru",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/guru",
docs: "https://docs.onyx.app/connectors/guru",
},
hubspot: {
icon: HubSpotIcon,
displayName: "HubSpot",
category: SourceCategory.CustomerSupport,
docs: "https://docs.danswer.dev/connectors/hubspot",
docs: "https://docs.onyx.app/connectors/hubspot",
},
document360: {
icon: Document360Icon,
displayName: "Document360",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/document360",
docs: "https://docs.onyx.app/connectors/document360",
},
bookstack: {
icon: BookstackIcon,
displayName: "BookStack",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/bookstack",
docs: "https://docs.onyx.app/connectors/bookstack",
},
google_sites: {
icon: GoogleSitesIcon,
displayName: "Google Sites",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/google_sites",
docs: "https://docs.onyx.app/connectors/google_sites",
},
loopio: {
icon: LoopioIcon,
@@ -196,85 +196,85 @@ export const SOURCE_METADATA_MAP: SourceMap = {
icon: DropboxIcon,
displayName: "Dropbox",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/dropbox",
docs: "https://docs.onyx.app/connectors/dropbox",
},
salesforce: {
icon: SalesforceIcon,
displayName: "Salesforce",
category: SourceCategory.CustomerSupport,
docs: "https://docs.danswer.dev/connectors/salesforce",
docs: "https://docs.onyx.app/connectors/salesforce",
},
sharepoint: {
icon: SharepointIcon,
displayName: "Sharepoint",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/sharepoint",
docs: "https://docs.onyx.app/connectors/sharepoint",
},
teams: {
icon: TeamsIcon,
displayName: "Teams",
category: SourceCategory.Messaging,
docs: "https://docs.danswer.dev/connectors/teams",
docs: "https://docs.onyx.app/connectors/teams",
},
discourse: {
icon: DiscourseIcon,
displayName: "Discourse",
category: SourceCategory.Messaging,
docs: "https://docs.danswer.dev/connectors/discourse",
docs: "https://docs.onyx.app/connectors/discourse",
},
axero: {
icon: AxeroIcon,
displayName: "Axero",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/axero",
docs: "https://docs.onyx.app/connectors/axero",
},
wikipedia: {
icon: WikipediaIcon,
displayName: "Wikipedia",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/wikipedia",
docs: "https://docs.onyx.app/connectors/wikipedia",
},
asana: {
icon: AsanaIcon,
displayName: "Asana",
category: SourceCategory.ProjectManagement,
docs: "https://docs.danswer.dev/connectors/asana",
docs: "https://docs.onyx.app/connectors/asana",
},
mediawiki: {
icon: MediaWikiIcon,
displayName: "MediaWiki",
category: SourceCategory.Wiki,
docs: "https://docs.danswer.dev/connectors/mediawiki",
docs: "https://docs.onyx.app/connectors/mediawiki",
},
clickup: {
icon: ClickupIcon,
displayName: "Clickup",
category: SourceCategory.ProjectManagement,
docs: "https://docs.danswer.dev/connectors/clickup",
docs: "https://docs.onyx.app/connectors/clickup",
},
s3: {
icon: S3Icon,
displayName: "S3",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/s3",
docs: "https://docs.onyx.app/connectors/s3",
},
r2: {
icon: R2Icon,
displayName: "R2",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/r2",
docs: "https://docs.onyx.app/connectors/r2",
},
oci_storage: {
icon: OCIStorageIcon,
displayName: "Oracle Storage",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/oci_storage",
docs: "https://docs.onyx.app/connectors/oci_storage",
},
google_cloud_storage: {
icon: GoogleStorageIcon,
displayName: "Google Storage",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/google_storage",
docs: "https://docs.onyx.app/connectors/google_storage",
},
xenforo: {
icon: XenforoIcon,
@@ -290,13 +290,13 @@ export const SOURCE_METADATA_MAP: SourceMap = {
icon: FreshdeskIcon,
displayName: "Freshdesk",
category: SourceCategory.CustomerSupport,
docs: "https://docs.danswer.dev/connectors/freshdesk",
docs: "https://docs.onyx.app/connectors/freshdesk",
},
fireflies: {
icon: FirefliesIcon,
displayName: "Fireflies",
category: SourceCategory.Other,
docs: "https://docs.danswer.dev/connectors/fireflies",
docs: "https://docs.onyx.app/connectors/fireflies",
},
// currently used for the Internet Search tool docs, which is why
// a globe is used
@@ -309,7 +309,7 @@ export const SOURCE_METADATA_MAP: SourceMap = {
icon: EgnyteIcon,
displayName: "Egnyte",
category: SourceCategory.Storage,
docs: "https://docs.danswer.dev/connectors/egnyte",
docs: "https://docs.onyx.app/connectors/egnyte",
},
} as SourceMap;

View File

@@ -45,7 +45,7 @@ export const INVALID_ROLE_HOVER_TEXT: Partial<Record<UserRole, string>> = {
"Global Curator users can perform admin actions for all groups they are a member of",
[UserRole.CURATOR]: "Curator role must be assigned in the Groups tab",
[UserRole.SLACK_USER]:
"This role is automatically assigned to users who only use Danswer via Slack",
"This role is automatically assigned to users who only use Onyx via Slack",
};
export interface User {

View File

@@ -29,7 +29,7 @@ export const getAuthTypeMetadataSS = async (): Promise<AuthTypeMetadata> => {
}
// for SAML / OIDC, we auto-redirect the user to the IdP when the user visits
// Danswer in an un-authenticated state
// Onyx in an un-authenticated state
if (authType === "oidc" || authType === "saml") {
return {
authType,
@@ -51,7 +51,9 @@ export const getAuthDisabledSS = async (): Promise<boolean> => {
const getOIDCAuthUrlSS = async (nextUrl: string | null): Promise<string> => {
const res = await fetch(
buildUrl(
`/auth/oidc/authorize${nextUrl ? `?next=${encodeURIComponent(nextUrl)}` : ""}`
`/auth/oidc/authorize${
nextUrl ? `?next=${encodeURIComponent(nextUrl)}` : ""
}`
)
);
if (!res.ok) {
@@ -65,7 +67,9 @@ const getOIDCAuthUrlSS = async (nextUrl: string | null): Promise<string> => {
const getGoogleOAuthUrlSS = async (nextUrl: string | null): Promise<string> => {
const res = await fetch(
buildUrl(
`/auth/oauth/authorize${nextUrl ? `?next=${encodeURIComponent(nextUrl)}` : ""}`
`/auth/oauth/authorize${
nextUrl ? `?next=${encodeURIComponent(nextUrl)}` : ""
}`
),
{
headers: {
@@ -84,7 +88,9 @@ const getGoogleOAuthUrlSS = async (nextUrl: string | null): Promise<string> => {
const getSAMLAuthUrlSS = async (nextUrl: string | null): Promise<string> => {
const res = await fetch(
buildUrl(
`/auth/saml/authorize${nextUrl ? `?next=${encodeURIComponent(nextUrl)}` : ""}`
`/auth/saml/authorize${
nextUrl ? `?next=${encodeURIComponent(nextUrl)}` : ""
}`
)
);
if (!res.ok) {