/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Button, Field, Input, MessageBar, MessageBarBody, MessageBarTitle, Spinner, Text } from '@fluentui/react-components'; import { Play16Regular, Stop16Regular } from '@fluentui/react-icons'; import * as mobx from 'mobx'; import * as mobxlite from 'mobx-react-lite'; import * as React from 'react'; import { AdhocRequestOptions } from '../stores/adhocRequestOptions'; import { AdhocRequestSender, AdhocRequestState } from '../stores/adhocRequestSender'; import { AdhocRequestEditor } from './adhocRequestEditor'; type Props = { adhocRequestOptions: AdhocRequestOptions; adhocRequestSender: AdhocRequestSender; }; export const AdhocRequestView = mobxlite.observer(({ adhocRequestOptions, adhocRequestSender }: Props) => { const isRunning = adhocRequestSender.state === AdhocRequestState.Running; const handleModelChange = React.useCallback((e: React.FormEvent) => { mobx.runInAction(() => { adhocRequestOptions.model.value = (e.target as HTMLInputElement).value; }); }, [adhocRequestOptions.model]); const handleSystemChange = React.useCallback((value: string) => { mobx.runInAction(() => { adhocRequestOptions.systemMessage.value = value; }); }, [adhocRequestOptions.systemMessage]); const handleUserChange = React.useCallback((value: string) => { mobx.runInAction(() => { adhocRequestOptions.userMessage.value = value; }); }, [adhocRequestOptions.userMessage]); const handleSendStop = React.useCallback(() => { if (isRunning) { adhocRequestSender.cancel(); } else { adhocRequestSender.send({ system: adhocRequestOptions.systemMessage.value, user: adhocRequestOptions.userMessage.value, model: adhocRequestOptions.model.value, }); } }, [isRunning, adhocRequestSender, adhocRequestOptions]); const canSend = adhocRequestOptions.model.value.trim().length > 0 && adhocRequestOptions.userMessage.value.trim().length > 0; return (
{isRunning && }
Response {adhocRequestSender.state === AdhocRequestState.Error && adhocRequestSender.error !== undefined && ( Request failed
{adhocRequestSender.error}
)}
); });