diff --git a/core/src/browser/extensions/engines/OAIEngine.ts b/core/src/browser/extensions/engines/OAIEngine.ts index 41b08f4598..52acdba20c 100644 --- a/core/src/browser/extensions/engines/OAIEngine.ts +++ b/core/src/browser/extensions/engines/OAIEngine.ts @@ -100,12 +100,20 @@ export abstract class OAIEngine extends AIEngine { events.emit(MessageEvent.OnMessageUpdate, message) }, error: async (err: any) => { + console.error(`Inference error: ${JSON.stringify(err, null, 2)}`) if (this.isCancelled || message.content.length) { message.status = MessageStatus.Stopped events.emit(MessageEvent.OnMessageUpdate, message) return } message.status = MessageStatus.Error + message.content[0] = { + type: ContentType.Text, + text: { + value: err.message, + annotations: [], + }, + } message.error_code = err.code events.emit(MessageEvent.OnMessageUpdate, message) }, diff --git a/core/src/types/message/messageEntity.ts b/core/src/types/message/messageEntity.ts index b7365c6cd8..5444558aa6 100644 --- a/core/src/types/message/messageEntity.ts +++ b/core/src/types/message/messageEntity.ts @@ -83,6 +83,8 @@ export enum MessageStatus { export enum ErrorCode { InvalidApiKey = 'invalid_api_key', + InsufficientQuota = 'insufficient_quota', + Unknown = 'unknown', } diff --git a/web/containers/AutoLink/index.tsx b/web/containers/AutoLink/index.tsx new file mode 100644 index 0000000000..549b05daaa --- /dev/null +++ b/web/containers/AutoLink/index.tsx @@ -0,0 +1,34 @@ +import React from 'react' + +type Props = { + text: string +} + +const AutoLink: React.FC = ({ text }) => { + const delimiter = + /((?:https?:\/\/)?(?:(?:[a-z0-9]?(?:[a-z0-9-]{1,61}[a-z0-9])?\.[^.|\s])+[a-z.]*[a-z]+|(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})(?::\d{1,5})*[a-z0-9.,_/~#&=;%+?\-\\(\\)]*)/gi + + return ( + <> + {text.split(delimiter).map((word) => { + const match = word.match(delimiter) + if (match) { + const url = match[0] + return ( + + {url} + + ) + } + return word + })} + + ) +} + +export default React.memo(AutoLink) diff --git a/web/screens/Chat/ErrorMessage/index.tsx b/web/screens/Chat/ErrorMessage/index.tsx index 2104beb92d..f5be762292 100644 --- a/web/screens/Chat/ErrorMessage/index.tsx +++ b/web/screens/Chat/ErrorMessage/index.tsx @@ -3,6 +3,7 @@ import { Button } from '@janhq/uikit' import { useAtomValue, useSetAtom } from 'jotai' import { RefreshCcw } from 'lucide-react' +import AutoLink from '@/containers/AutoLink' import ModalTroubleShooting, { modalTroubleShootingAtom, } from '@/containers/ModalTroubleShoot' @@ -31,10 +32,11 @@ const ErrorMessage = ({ message }: { message: ThreadMessage }) => { resendChatMessage(message) } - const errorTitle = getErrorTitle( - message.error_code ?? ErrorCode.Unknown, - message.content[0]?.text?.value - ) + const errorTitle = + getErrorTitle( + message.error_code ?? ErrorCode.Unknown, + message.content[0]?.text?.value + ) ?? 'Unknown error occurred.' return (
@@ -95,9 +97,9 @@ const ErrorMessage = ({ message }: { message: ThreadMessage }) => { ) : (
-

{errorTitle}

+

Jan’s in beta. Access