mirror of
https://github.com/arc53/DocsGPT.git
synced 2026-02-22 04:11:41 +00:00
* feat: implement WorkflowAgent and GraphExecutor for workflow management and execution * refactor: workflow schemas and introduce WorkflowEngine - Updated schemas in `schemas.py` to include new agent types and configurations. - Created `WorkflowEngine` class in `workflow_engine.py` to manage workflow execution. - Enhanced `StreamProcessor` to handle workflow-related data. - Added new routes and utilities for managing workflows in the user API. - Implemented validation and serialization functions for workflows. - Established MongoDB collections and indexes for workflows and related entities. * refactor: improve WorkflowAgent documentation and update type hints in WorkflowEngine * feat: workflow builder and managing in frontend - Added new endpoints for workflows in `endpoints.ts`. - Implemented `getWorkflow`, `createWorkflow`, and `updateWorkflow` methods in `userService.ts`. - Introduced new UI components for alerts, buttons, commands, dialogs, multi-select, popovers, and selects. - Enhanced styling in `index.css` with new theme variables and animations. - Refactored modal components for better layout and styling. - Configured TypeScript paths and Vite aliases for cleaner imports. * feat: add workflow preview component and related state management - Implemented WorkflowPreview component for displaying workflow execution. - Created WorkflowPreviewSlice for managing workflow preview state, including queries and execution steps. - Added WorkflowMiniMap for visual representation of workflow nodes and their statuses. - Integrated conversation handling with the ability to fetch answers and manage query states. - Introduced reusable Sheet component for UI overlays. - Updated Redux store to include workflowPreview reducer. * feat: enhance workflow execution details and state management in WorkflowEngine and WorkflowPreview * feat: enhance workflow components with improved UI and functionality - Updated WorkflowPreview to allow text truncation for better display of long names. - Enhanced BaseNode with connectable handles and improved styling for better visibility. - Added MobileBlocker component to inform users about desktop requirements for the Workflow Builder. - Introduced PromptTextArea component for improved variable insertion and search functionality, including upstream variable extraction and context addition. * feat(workflow): add owner validation and graph version support * fix: ruff lint --------- Co-authored-by: Alex <a@tushynski.me>
82 lines
2.6 KiB
TypeScript
82 lines
2.6 KiB
TypeScript
import { configureStore } from '@reduxjs/toolkit';
|
|
|
|
import agentPreviewReducer from './agents/agentPreviewSlice';
|
|
import workflowPreviewReducer from './agents/workflow/workflowPreviewSlice';
|
|
import { conversationSlice } from './conversation/conversationSlice';
|
|
import { sharedConversationSlice } from './conversation/sharedConversationSlice';
|
|
import { getStoredRecentDocs } from './preferences/preferenceApi';
|
|
import {
|
|
Preference,
|
|
prefListenerMiddleware,
|
|
prefSlice,
|
|
} from './preferences/preferenceSlice';
|
|
import uploadReducer from './upload/uploadSlice';
|
|
|
|
const key = localStorage.getItem('DocsGPTApiKey');
|
|
const prompt = localStorage.getItem('DocsGPTPrompt');
|
|
const chunks = localStorage.getItem('DocsGPTChunks');
|
|
const selectedModel = localStorage.getItem('DocsGPTSelectedModel');
|
|
|
|
const preloadedState: { preference: Preference } = {
|
|
preference: {
|
|
apiKey: key ?? '',
|
|
token: localStorage.getItem('authToken') ?? null,
|
|
prompt:
|
|
prompt !== null
|
|
? JSON.parse(prompt)
|
|
: { name: 'default', id: 'default', type: 'private' },
|
|
prompts: [
|
|
{ name: 'default', id: 'default', type: 'public' },
|
|
{ name: 'creative', id: 'creative', type: 'public' },
|
|
{ name: 'strict', id: 'strict', type: 'public' },
|
|
],
|
|
chunks: JSON.parse(chunks ?? '2').toString(),
|
|
selectedDocs: getStoredRecentDocs(),
|
|
conversations: {
|
|
data: null,
|
|
loading: false,
|
|
},
|
|
sourceDocs: [
|
|
{
|
|
name: 'default',
|
|
date: '',
|
|
model: '1.0',
|
|
type: 'remote',
|
|
id: 'default',
|
|
retriever: 'clasic',
|
|
},
|
|
],
|
|
modalState: 'INACTIVE',
|
|
paginatedDocuments: null,
|
|
templateAgents: null,
|
|
agents: null,
|
|
sharedAgents: null,
|
|
selectedAgent: null,
|
|
selectedModel: selectedModel ? JSON.parse(selectedModel) : null,
|
|
availableModels: [],
|
|
modelsLoading: false,
|
|
agentFolders: null,
|
|
},
|
|
};
|
|
const store = configureStore({
|
|
preloadedState: preloadedState,
|
|
reducer: {
|
|
preference: prefSlice.reducer,
|
|
conversation: conversationSlice.reducer,
|
|
sharedConversation: sharedConversationSlice.reducer,
|
|
upload: uploadReducer,
|
|
agentPreview: agentPreviewReducer,
|
|
workflowPreview: workflowPreviewReducer,
|
|
},
|
|
middleware: (getDefaultMiddleware) =>
|
|
getDefaultMiddleware().concat(prefListenerMiddleware.middleware),
|
|
});
|
|
|
|
export type RootState = ReturnType<typeof store.getState>;
|
|
export type AppDispatch = typeof store.dispatch;
|
|
export default store;
|
|
|
|
// TODO : use https://redux-toolkit.js.org/tutorials/typescript#define-typed-hooks everywere instead of direct useDispatch
|
|
|
|
// TODO : streamline async state management
|