Skip to content

Commit

Permalink
[Security Solution] Security Assistant: Moves the assistant to the @k…
Browse files Browse the repository at this point in the history
…bn/elastic-assistant package #12

## [Security Solution] Security Assistant: Moves the assistant to the `@kbn/elastic-assistant` package

- moves most assistant code to `x-pack/packages/kbn-elastic-assistant`
  • Loading branch information
andrew-goldstein committed May 23, 2023
1 parent f8577a0 commit a5be762
Show file tree
Hide file tree
Showing 67 changed files with 1,231 additions and 1,019 deletions.
1 change: 1 addition & 0 deletions x-pack/.i18nrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"xpack.dashboard": "plugins/dashboard_enhanced",
"xpack.discover": "plugins/discover_enhanced",
"xpack.crossClusterReplication": "plugins/cross_cluster_replication",
"xpack.elasticAssistant": "packages/kbn-elastic-assistant",
"xpack.embeddableEnhanced": "plugins/embeddable_enhanced",
"xpack.endpoint": "plugins/endpoint",
"xpack.enterpriseSearch": "plugins/enterprise_search",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
*/

import axios from 'axios';
import type { Message } from './security_assistant_context/types';

import type { Message } from '../assistant_context/types';

export const fetchOpenAlerts = async () => {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@ import { EuiModal } from '@elastic/eui';

import useEvent from 'react-use/lib/useEvent';
import styled from 'styled-components';
import { SecurityAssistant } from '../security_assistant';
import type { ShowAssistantOverlayProps } from '../security_assistant_context';
import { useSecurityAssistantContext } from '../security_assistant_context';
import { ShowAssistantOverlayProps, useAssistantContext } from '../../assistant_context';
import { Assistant } from '..';

const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0;

Expand All @@ -30,7 +29,7 @@ export const AssistantOverlay: React.FC = React.memo(() => {
const [isModalVisible, setIsModalVisible] = useState(false);
const [conversationId, setConversationId] = useState<string | undefined>('default');
const [promptContextId, setPromptContextId] = useState<string | undefined>();
const { setShowAssistantOverlay } = useSecurityAssistantContext();
const { setShowAssistantOverlay } = useAssistantContext();

// Bind `showAssistantOverlay` in SecurityAssistantContext to this modal instance
const showOverlay = useCallback(
Expand Down Expand Up @@ -77,10 +76,11 @@ export const AssistantOverlay: React.FC = React.memo(() => {
<>
{isModalVisible && (
<StyledEuiModal onClose={handleCloseModal}>
<SecurityAssistant conversationId={conversationId} promptContextId={promptContextId} />
<Assistant conversationId={conversationId} promptContextId={promptContextId} />
</StyledEuiModal>
)}
</>
);
});

AssistantOverlay.displayName = 'AssistantOverlay';
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import { i18n } from '@kbn/i18n';

export const CANCEL_BUTTON = i18n.translate(
'xpack.securitySolution.securityAssistant.overlay.CancelButton',
'xpack.elasticAssistant.assistant.overlay.CancelButton',
{
defaultMessage: 'Cancel',
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@
*/

import { EuiButtonIcon, EuiFormRow, EuiSuperSelect, EuiToolTip } from '@elastic/eui';

import React, { useCallback, useEffect, useMemo, useState } from 'react';

import useEvent from 'react-use/lib/useEvent';
import { css } from '@emotion/react';
import { useSecurityAssistantContext } from '../security_assistant_context';

import { useAssistantContext } from '../../assistant_context';

const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0;

Expand Down Expand Up @@ -41,7 +40,7 @@ export const ConversationSelector: React.FC<Props> = React.memo(
}) => {
const [selectedConversationId, setSelectedConversationId] = useState<string>(conversationId);

const { conversations } = useSecurityAssistantContext();
const { conversations } = useAssistantContext();
const conversationIds = useMemo(() => Object.keys(conversations), [conversations]);
const conversationOptions = conversationIds.map((id) => ({ value: id, inputDisplay: id }));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
import crypto from 'crypto';

import { fetchOpenAlerts, fetchVirusTotalAnalysis, sendFileToVirusTotal } from './api';
import { SYSTEM_PROMPT_CONTEXT_NON_I18N } from './content/prompts/system/translations';
import { SYSTEM_PROMPT_CONTEXT_NON_I18N } from '../content/prompts/system/translations';
import type { PromptContext } from './prompt_context/types';
import type { Message } from './security_assistant_context/types';
import type { Message } from '../assistant_context/types';
import type { Prompt } from './types';

/**
Expand All @@ -26,19 +26,19 @@ import type { Prompt } from './types';
* apiKey: ""
* baseUrl: ""
*/
export interface SecurityAssistantUiSettings {
virusTotal: {
apiKey: string;
baseUrl: string;
};

export interface AssistantUiSettings {
openAI: {
apiKey: string;
baseUrl: string;
model?: string;
prompt?: string;
temperature?: number;
};

virusTotal: {
apiKey: string;
baseUrl: string;
};
}

// Here beloweth lie past functions from the original security assistant
Expand All @@ -48,7 +48,7 @@ export async function fetchVirusTotalReport({
settings: { virusTotal, openAI },
}: {
hash: string;
settings: SecurityAssistantUiSettings;
settings: AssistantUiSettings;
}): Promise<unknown> {
const url = `${virusTotal.baseUrl}/files/${hash}`;

Expand Down Expand Up @@ -110,7 +110,7 @@ interface HandleFileHashProps {
promptText: string;
chatHistory: Message[];
setChatHistory: (value: Message[]) => void;
settings: SecurityAssistantUiSettings;
settings: AssistantUiSettings;
}
export const handleFileHash = async ({
promptText,
Expand Down Expand Up @@ -200,7 +200,7 @@ export const formatOpenAlertsResponse = (response: any): string => {

export interface HandleFileUploadProps {
files: FileList | null;
virusTotal: SecurityAssistantUiSettings['virusTotal'];
virusTotal: AssistantUiSettings['virusTotal'];
chatHistory: Message[];
setChatHistory: (value: Message[]) => void;
setFilePickerKey: React.Dispatch<React.SetStateAction<number>>;
Expand Down

0 comments on commit a5be762

Please sign in to comment.