403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/model/src/copilot/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/model/src/copilot/copilot.js
import { Type } from 'main.core';
import { BuilderModel } from 'ui.vue3.vuex';

import { Core } from 'im.v2.application.core';
import { formatFieldsWithConfig } from 'im.v2.model';

import { copilotFieldsConfig } from './format/field-config';
import { ChatsModel } from './nested-modules/chats/chats';
import { MessagesModel } from './nested-modules/messages/messages';
import { RolesModel } from './nested-modules/roles/roles';

import type { JsonObject } from 'main.core';
import type { CopilotRole } from '../type/copilot';
import type { GetterTree, ActionTree, MutationTree, NestedModuleTree } from 'ui.vue3.vuex';

type CopilotModelState = {
	recommendedRoles: string[],
	aiProvider: string,
};

const RECOMMENDED_ROLES_LIMIT = 4;

/* eslint-disable no-param-reassign */
export class CopilotModel extends BuilderModel
{
	getNestedModules(): NestedModuleTree
	{
		return {
			roles: RolesModel,
			messages: MessagesModel,
			chats: ChatsModel,
		};
	}

	getName(): string
	{
		return 'copilot';
	}

	getState(): CopilotModelState
	{
		return {
			recommendedRoles: [],
			aiProvider: '',
		};
	}

	getGetters(): GetterTree
	{
		return {
			/** @function copilot/getProvider */
			getProvider: (state): string => {
				return state.aiProvider;
			},
			/** @function copilot/getRecommendedRoles */
			getRecommendedRoles: (state) => (): CopilotRole[] => {
				const roles = state.recommendedRoles.map((roleCode) => {
					return Core.getStore().getters['copilot/roles/getByCode'](roleCode);
				});

				return roles.slice(0, RECOMMENDED_ROLES_LIMIT);
			},
		};
	}

	getActions(): ActionTree
	{
		return {
			/** @function copilot/setRecommendedRoles */
			setRecommendedRoles: (store, payload) => {
				if (!Type.isArrayFilled(payload))
				{
					return;
				}

				store.commit('setRecommendedRoles', payload);
			},
			/** @function copilot/setProvider */
			setProvider: (store, payload) => {
				if (!Type.isStringFilled(payload))
				{
					return;
				}

				store.commit('setProvider', payload);
			},
		};
	}

	getMutations(): MutationTree
	{
		return {
			setRecommendedRoles: (state, payload) => {
				state.recommendedRoles = payload;
			},
			setProvider: (state, payload) => {
				state.aiProvider = payload;
			},
		};
	}

	formatFields(fields: JsonObject): JsonObject
	{
		return formatFieldsWithConfig(fields, copilotFieldsConfig);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit