| @@ -124,7 +124,7 @@ const ConfigPopup: FC<PopupProps> = ({ | |||
| ) | |||
| const configuredProviderPanel = () => { | |||
| const configuredPanels: any[] = [] | |||
| const configuredPanels: JSX.Element[] = [] | |||
| if (langSmithConfig) | |||
| configuredPanels.push(langSmithPanel) | |||
| @@ -139,7 +139,7 @@ const ConfigPopup: FC<PopupProps> = ({ | |||
| } | |||
| const moreProviderPanel = () => { | |||
| const notConfiguredPanels: any[] = [] | |||
| const notConfiguredPanels: JSX.Element[] = [] | |||
| if (!langSmithConfig) | |||
| notConfiguredPanels.push(langSmithPanel) | |||
| @@ -73,7 +73,7 @@ const AgentTools: FC = () => { | |||
| formattingChangedDispatcher() | |||
| } | |||
| const handleToolAuthSetting = (value: any) => { | |||
| const handleToolAuthSetting = (value: AgentToolWithMoreInfo) => { | |||
| const newModelConfig = produce(modelConfig, (draft) => { | |||
| const tool = (draft.agentConfig.tools).find((item: any) => item.provider_id === value?.collection?.id && item.tool_name === value?.tool_name) | |||
| if (tool) | |||
| @@ -121,7 +121,7 @@ const AgentTools: FC = () => { | |||
| } | |||
| headerRight={ | |||
| <div className='flex items-center'> | |||
| <div className='text-xs font-normal leading-[18px] text-text-tertiary'>{tools.filter((item: any) => !!item.enabled).length}/{tools.length} {t('appDebug.agent.tools.enabled')}</div> | |||
| <div className='text-xs font-normal leading-[18px] text-text-tertiary'>{tools.filter(item => !!item.enabled).length}/{tools.length} {t('appDebug.agent.tools.enabled')}</div> | |||
| {tools.length < MAX_TOOLS_NUM && ( | |||
| <> | |||
| <div className='ml-3 mr-1 h-3.5 w-px bg-divider-regular'></div> | |||
| @@ -273,7 +273,7 @@ const AgentTools: FC = () => { | |||
| {isShowSettingTool && ( | |||
| <SettingBuiltInTool | |||
| toolName={currentTool?.tool_name as string} | |||
| setting={currentTool?.tool_parameters as any} | |||
| setting={currentTool?.tool_parameters} | |||
| collection={currentTool?.collection as Collection} | |||
| isBuiltIn={currentTool?.collection?.type === CollectionType.builtIn} | |||
| isModel={currentTool?.collection?.type === CollectionType.model} | |||
| @@ -291,7 +291,7 @@ const AgentTools: FC = () => { | |||
| type: 'success', | |||
| message: t('common.api.actionSuccess'), | |||
| }) | |||
| handleToolAuthSetting(currentTool as any) | |||
| handleToolAuthSetting(currentTool) | |||
| setShowSettingAuth(false) | |||
| }} | |||
| /> | |||
| @@ -56,8 +56,8 @@ const SettingBuiltInTool: FC<Props> = ({ | |||
| const [tools, setTools] = useState<Tool[]>([]) | |||
| const currTool = tools.find(tool => tool.name === toolName) | |||
| const formSchemas = currTool ? toolParametersToFormSchemas(currTool.parameters) : [] | |||
| const infoSchemas = formSchemas.filter((item: any) => item.form === 'llm') | |||
| const settingSchemas = formSchemas.filter((item: any) => item.form !== 'llm') | |||
| const infoSchemas = formSchemas.filter(item => item.form === 'llm') | |||
| const settingSchemas = formSchemas.filter(item => item.form !== 'llm') | |||
| const hasSetting = settingSchemas.length > 0 | |||
| const [tempSetting, setTempSetting] = useState(setting) | |||
| const [currType, setCurrType] = useState('info') | |||
| @@ -99,7 +99,7 @@ const SettingBuiltInTool: FC<Props> = ({ | |||
| const isValid = (() => { | |||
| let valid = true | |||
| settingSchemas.forEach((item: any) => { | |||
| settingSchemas.forEach((item) => { | |||
| if (item.required && !tempSetting[item.name]) | |||
| valid = false | |||
| }) | |||
| @@ -120,7 +120,7 @@ const SettingBuiltInTool: FC<Props> = ({ | |||
| <div className=''> | |||
| {infoSchemas.length > 0 && ( | |||
| <div className='space-y-1 py-2'> | |||
| {infoSchemas.map((item: any, index) => ( | |||
| {infoSchemas.map((item, index) => ( | |||
| <div key={index} className='py-1'> | |||
| <div className='flex items-center gap-2'> | |||
| <div className='code-sm-semibold text-text-secondary'>{item.label[language]}</div> | |||
| @@ -147,7 +147,7 @@ const SettingBuiltInTool: FC<Props> = ({ | |||
| <Form | |||
| value={tempSetting} | |||
| onChange={setTempSetting} | |||
| formSchemas={settingSchemas as any} | |||
| formSchemas={settingSchemas} | |||
| isEditMode={false} | |||
| showOnVariableMap={{}} | |||
| validating={false} | |||
| @@ -368,8 +368,8 @@ const ConfigContent: FC<Props> = ({ | |||
| provider={model?.provider} | |||
| completionParams={model?.completion_params} | |||
| modelId={model?.name} | |||
| setModel={onSingleRetrievalModelChange as any} | |||
| onCompletionParamsChange={onSingleRetrievalModelParamsChange as any} | |||
| setModel={onSingleRetrievalModelChange} | |||
| onCompletionParamsChange={onSingleRetrievalModelParamsChange} | |||
| hideDebugWithMultipleModel | |||
| debugWithMultipleModel={false} | |||
| /> | |||
| @@ -8,6 +8,7 @@ import ModelParameterModal from '@/app/components/header/account-setting/model-p | |||
| import ModelIcon from '@/app/components/header/account-setting/model-provider-page/model-icon' | |||
| import ModelName from '@/app/components/header/account-setting/model-provider-page/model-name' | |||
| import { | |||
| type FormValue, | |||
| MODEL_STATUS_TEXT, | |||
| ModelStatusEnum, | |||
| } from '@/app/components/header/account-setting/model-provider-page/declarations' | |||
| @@ -45,7 +46,7 @@ const ModelParameterTrigger: FC<ModelParameterTriggerProps> = ({ | |||
| } | |||
| onMultipleModelConfigsChange(true, newModelConfigs) | |||
| } | |||
| const handleParamsChange = (params: any) => { | |||
| const handleParamsChange = (params: FormValue) => { | |||
| const newModelConfigs = [...multipleModelConfigs] | |||
| newModelConfigs[index] = { | |||
| ...newModelConfigs[index], | |||
| @@ -227,7 +227,7 @@ const Configuration: FC = () => { | |||
| }, [modelModeType]) | |||
| const [dataSets, setDataSets] = useState<DataSet[]>([]) | |||
| const contextVar = modelConfig.configs.prompt_variables.find((item: any) => item.is_context_var)?.key | |||
| const contextVar = modelConfig.configs.prompt_variables.find(item => item.is_context_var)?.key | |||
| const hasSetContextVar = !!contextVar | |||
| const [isShowSelectDataSet, { setTrue: showSelectDataSet, setFalse: hideSelectDataSet }] = useBoolean(false) | |||
| const selectedIds = dataSets.map(item => item.id) | |||
| @@ -245,7 +245,7 @@ const Configuration: FC = () => { | |||
| formattingChangedDispatcher() | |||
| let newDatasets = data | |||
| if (data.find(item => !item.name)) { // has not loaded selected dataset | |||
| const newSelected = produce(data, (draft: any) => { | |||
| const newSelected = produce(data, (draft) => { | |||
| data.forEach((item, index) => { | |||
| if (!item.name) { // not fetched database | |||
| const newItem = dataSets.find(i => i.id === item.id) | |||
| @@ -513,7 +513,7 @@ const Configuration: FC = () => { | |||
| if (modelConfig.chat_prompt_config && modelConfig.chat_prompt_config.prompt.length > 0) | |||
| setChatPromptConfig(modelConfig.chat_prompt_config) | |||
| else | |||
| setChatPromptConfig(clone(DEFAULT_CHAT_PROMPT_CONFIG) as any) | |||
| setChatPromptConfig(clone(DEFAULT_CHAT_PROMPT_CONFIG)) | |||
| setCompletionPromptConfig(modelConfig.completion_prompt_config || clone(DEFAULT_COMPLETION_PROMPT_CONFIG) as any) | |||
| setCanReturnToSimpleMode(false) | |||
| } | |||
| @@ -79,7 +79,7 @@ const PromptValuePanel: FC<IPromptValuePanelProps> = ({ | |||
| } | |||
| const onClear = () => { | |||
| const newInputs: Record<string, any> = {} | |||
| const newInputs: Inputs = {} | |||
| promptVariables.forEach((item) => { | |||
| newInputs[item.key] = '' | |||
| }) | |||
| @@ -36,7 +36,7 @@ const AgentLogDetail: FC<AgentLogDetailProps> = ({ | |||
| const [list, setList] = useState<AgentIteration[]>([]) | |||
| const tools = useMemo(() => { | |||
| const res = uniq(flatten(runDetail?.iterations.map((iteration: any) => { | |||
| const res = uniq(flatten(runDetail?.iterations.map((iteration) => { | |||
| return iteration.tool_calls.map((tool: any) => tool.tool_name).filter(Boolean) | |||
| })).filter(Boolean)) | |||
| return res | |||
| @@ -29,7 +29,7 @@ const AudioBtn = ({ | |||
| const params = useParams() | |||
| const pathname = usePathname() | |||
| const audio_finished_call = (event: string): any => { | |||
| const audio_finished_call = (event: string): void => { | |||
| switch (event) { | |||
| case 'ended': | |||
| setAudioState('ended') | |||
| @@ -512,7 +512,7 @@ export const useChat = ( | |||
| responseItem.workflowProcess!.tracing!.push({ | |||
| ...iterationStartedData, | |||
| status: WorkflowRunningStatus.Running, | |||
| } as any) | |||
| }) | |||
| updateCurrentQAOnTree({ | |||
| placeholderQuestionId, | |||
| questionItem, | |||
| @@ -528,7 +528,7 @@ export const useChat = ( | |||
| ...tracing[iterationIndex], | |||
| ...iterationFinishedData, | |||
| status: WorkflowRunningStatus.Succeeded, | |||
| } as any | |||
| } | |||
| updateCurrentQAOnTree({ | |||
| placeholderQuestionId, | |||
| @@ -547,7 +547,7 @@ export const useChat = ( | |||
| responseItem.workflowProcess!.tracing!.push({ | |||
| ...nodeStartedData, | |||
| status: WorkflowRunningStatus.Running, | |||
| } as any) | |||
| }) | |||
| updateCurrentQAOnTree({ | |||
| placeholderQuestionId, | |||
| questionItem, | |||
| @@ -590,7 +590,7 @@ export const useChat = ( | |||
| responseItem.workflowProcess!.tracing!.push({ | |||
| ...loopStartedData, | |||
| status: WorkflowRunningStatus.Running, | |||
| } as any) | |||
| }) | |||
| updateCurrentQAOnTree({ | |||
| placeholderQuestionId, | |||
| questionItem, | |||
| @@ -606,7 +606,7 @@ export const useChat = ( | |||
| ...tracing[loopIndex], | |||
| ...loopFinishedData, | |||
| status: WorkflowRunningStatus.Succeeded, | |||
| } as any | |||
| } | |||
| updateCurrentQAOnTree({ | |||
| placeholderQuestionId, | |||
| @@ -12,6 +12,7 @@ import useAnnotationConfig from '@/app/components/base/features/new-feature-pane | |||
| import ConfigParamModal from '@/app/components/base/features/new-feature-panel/annotation-reply/config-param-modal' | |||
| import AnnotationFullModal from '@/app/components/billing/annotation-full/modal' | |||
| import { ANNOTATION_DEFAULT } from '@/config' | |||
| import type { AnnotationReplyConfig } from '@/models/debug' | |||
| type Props = { | |||
| disabled?: boolean | |||
| @@ -30,7 +31,7 @@ const AnnotationReply = ({ | |||
| const featuresStore = useFeaturesStore() | |||
| const annotationReply = useFeatures(s => s.features.annotationReply) | |||
| const updateAnnotationReply = useCallback((newConfig: any) => { | |||
| const updateAnnotationReply = useCallback((newConfig: AnnotationReplyConfig) => { | |||
| const { | |||
| features, | |||
| setFeatures, | |||
| @@ -47,7 +47,7 @@ const WorkflowVariableBlockReplacementBlock = ({ | |||
| } | |||
| }, []) | |||
| const transformListener = useCallback((textNode: any) => { | |||
| const transformListener = useCallback((textNode: CustomTextNode) => { | |||
| resetReg() | |||
| return decoratorTransform(textNode, getMatch, createWorkflowVariableBlockNode) | |||
| }, [createWorkflowVariableBlockNode, getMatch]) | |||
| @@ -1,3 +1,4 @@ | |||
| import type { ReactNode } from 'react' | |||
| import React from 'react' | |||
| import { act, render, screen, waitFor } from '@testing-library/react' | |||
| import Toast, { ToastProvider, useToastContext } from '.' | |||
| @@ -80,7 +81,7 @@ describe('Toast', () => { | |||
| const CustomToastContext = React.createContext({ notify: noop, close: undefined }) | |||
| // Create a wrapper component using the custom context | |||
| const Wrapper = ({ children }: any) => ( | |||
| const Wrapper = ({ children }: { children: ReactNode }) => ( | |||
| <CustomToastContext.Provider value={{ notify: noop, close: undefined }}> | |||
| {children} | |||
| </CustomToastContext.Provider> | |||
| @@ -15,6 +15,7 @@ import { RETRIEVE_METHOD } from '@/types/app' | |||
| import cn from '@/utils/classnames' | |||
| import Divider from '@/app/components/base/divider' | |||
| import { ToastContext } from '@/app/components/base/toast' | |||
| import type { IndexingStatusResponse } from '@/models/datasets' | |||
| import { ProcessMode, type ProcessRuleResponse } from '@/models/datasets' | |||
| import type { CommonResponse } from '@/models/common' | |||
| import { asyncRunSafe, sleep } from '@/utils' | |||
| @@ -166,7 +167,7 @@ const EmbeddingDetail: FC<IEmbeddingDetailProps> = ({ | |||
| const localDatasetId = dstId ?? datasetId | |||
| const localDocumentId = docId ?? documentId | |||
| const [indexingStatusDetail, setIndexingStatusDetail] = useState<any>(null) | |||
| const [indexingStatusDetail, setIndexingStatusDetail] = useState<IndexingStatusResponse | null>(null) | |||
| const fetchIndexingStatus = async () => { | |||
| const status = await doFetchIndexingStatus({ datasetId: localDatasetId, documentId: localDocumentId }) | |||
| setIndexingStatusDetail(status) | |||
| @@ -1,3 +1,4 @@ | |||
| import type { ChangeEvent } from 'react' | |||
| import React, { useState } from 'react' | |||
| import { useTranslation } from 'react-i18next' | |||
| import { | |||
| @@ -58,7 +59,7 @@ const TextAreaWithButton = ({ | |||
| setIsSettingsOpen(false) | |||
| } | |||
| function handleTextChange(event: any) { | |||
| function handleTextChange(event: ChangeEvent<HTMLTextAreaElement>) { | |||
| setText(event.target.value) | |||
| } | |||
| @@ -67,7 +67,7 @@ const CardWrapper = ({ | |||
| { | |||
| isShowInstallFromMarketplace && ( | |||
| <InstallFromMarketplace | |||
| manifest={plugin as any} | |||
| manifest={plugin} | |||
| uniqueIdentifier={plugin.latest_package_identifier} | |||
| onClose={hideInstallFromMarketplace} | |||
| onSuccess={hideInstallFromMarketplace} | |||
| @@ -108,7 +108,7 @@ const EndpointCard = ({ | |||
| Toast.notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) | |||
| }, | |||
| }) | |||
| const handleUpdate = (state: any) => updateEndpoint({ | |||
| const handleUpdate = (state: Record<string, any>) => updateEndpoint({ | |||
| endpointID, | |||
| state, | |||
| }) | |||
| @@ -55,7 +55,7 @@ const EndpointList = ({ detail }: Props) => { | |||
| }, | |||
| }) | |||
| const handleCreate = (state: any) => createEndpoint({ | |||
| const handleCreate = (state: Record<string, any>) => createEndpoint({ | |||
| pluginUniqueID, | |||
| state, | |||
| }) | |||
| @@ -245,7 +245,7 @@ const ReasoningConfigForm: React.FC<Props> = ({ | |||
| popupClassName='!w-[387px]' | |||
| isAdvancedMode | |||
| isInWorkflow | |||
| value={varInput as any} | |||
| value={varInput} | |||
| setModel={handleModelChange(variable)} | |||
| scope={scope} | |||
| /> | |||
| @@ -83,7 +83,7 @@ const ProviderCard: FC<Props> = ({ | |||
| { | |||
| isShowInstallFromMarketplace && ( | |||
| <InstallFromMarketplace | |||
| manifest={payload as any} | |||
| manifest={payload} | |||
| uniqueIdentifier={payload.latest_package_identifier} | |||
| onClose={hideInstallFromMarketplace} | |||
| onSuccess={() => hideInstallFromMarketplace()} | |||
| @@ -218,7 +218,7 @@ const Result: FC<IResultProps> = ({ | |||
| ...data, | |||
| status: NodeRunningStatus.Running, | |||
| expand: true, | |||
| } as any) | |||
| }) | |||
| })) | |||
| }, | |||
| onIterationNext: () => { | |||
| @@ -237,7 +237,7 @@ const Result: FC<IResultProps> = ({ | |||
| draft.tracing[iterationsIndex] = { | |||
| ...data, | |||
| expand: !!data.error, | |||
| } as any | |||
| } | |||
| })) | |||
| }, | |||
| onLoopStart: ({ data }) => { | |||
| @@ -247,7 +247,7 @@ const Result: FC<IResultProps> = ({ | |||
| ...data, | |||
| status: NodeRunningStatus.Running, | |||
| expand: true, | |||
| } as any) | |||
| }) | |||
| })) | |||
| }, | |||
| onLoopNext: () => { | |||
| @@ -266,7 +266,7 @@ const Result: FC<IResultProps> = ({ | |||
| draft.tracing[loopsIndex] = { | |||
| ...data, | |||
| expand: !!data.error, | |||
| } as any | |||
| } | |||
| })) | |||
| }, | |||
| onNodeStarted: ({ data }) => { | |||
| @@ -282,7 +282,7 @@ const Result: FC<IResultProps> = ({ | |||
| ...data, | |||
| status: NodeRunningStatus.Running, | |||
| expand: true, | |||
| } as any) | |||
| }) | |||
| })) | |||
| }, | |||
| onNodeFinished: ({ data }) => { | |||
| @@ -302,7 +302,7 @@ const Result: FC<IResultProps> = ({ | |||
| : {}), | |||
| ...data, | |||
| expand: !!data.error, | |||
| } as any | |||
| } | |||
| } | |||
| })) | |||
| }, | |||
| @@ -78,7 +78,7 @@ export const generateFormValue = (value: Record<string, any>, formSchemas: { var | |||
| } | |||
| export const getPlainValue = (value: Record<string, any>) => { | |||
| const plainValue = { ...value } as any | |||
| const plainValue = { ...value } | |||
| Object.keys(plainValue).forEach((key) => { | |||
| plainValue[key] = value[key].value | |||
| }) | |||
| @@ -55,7 +55,7 @@ const Blocks = ({ | |||
| } | |||
| } | |||
| */ | |||
| const { letters, groups: withLetterAndGroupViewToolsData } = groupItems(tools, tool => (tool as any).label[language][0]) | |||
| const { letters, groups: withLetterAndGroupViewToolsData } = groupItems(tools, tool => tool.label[language][0]) | |||
| const treeViewToolsData = useMemo(() => { | |||
| const result: Record<string, ToolWithProvider[]> = {} | |||
| Object.keys(withLetterAndGroupViewToolsData).forEach((letter) => { | |||
| @@ -59,7 +59,7 @@ export const useWorkflowNodeFinished = () => { | |||
| incomeEdges.forEach((edge) => { | |||
| edge.data = { | |||
| ...edge.data, | |||
| _targetRunningStatus: data.status as any, | |||
| _targetRunningStatus: data.status, | |||
| } | |||
| }) | |||
| }) | |||
| @@ -47,7 +47,7 @@ export const useWorkflowNodeIterationFinished = () => { | |||
| incomeEdges.forEach((edge) => { | |||
| edge.data = { | |||
| ...edge.data, | |||
| _targetRunningStatus: data.status as any, | |||
| _targetRunningStatus: data.status, | |||
| } | |||
| }) | |||
| }) | |||
| @@ -44,7 +44,7 @@ export const useWorkflowNodeLoopFinished = () => { | |||
| incomeEdges.forEach((edge) => { | |||
| edge.data = { | |||
| ...edge.data, | |||
| _targetRunningStatus: data.status as any, | |||
| _targetRunningStatus: data.status, | |||
| } | |||
| }) | |||
| }) | |||
| @@ -106,7 +106,7 @@ const Panel: FC<NodePanelProps<DocExtractorNodeType>> = ({ | |||
| required: true, | |||
| }], | |||
| values: { files }, | |||
| onChange: keyValue => setFiles((keyValue as any).files), | |||
| onChange: keyValue => setFiles(keyValue.files), | |||
| }, | |||
| ]} | |||
| runningStatus={runningStatus} | |||
| @@ -155,7 +155,7 @@ const Panel: FC<NodePanelProps<IterationNodeType>> = ({ | |||
| required: false, | |||
| }], | |||
| values: { [iteratorInputKey]: iterator }, | |||
| onChange: keyValue => setIterator((keyValue as any)[iteratorInputKey]), | |||
| onChange: keyValue => setIterator(keyValue[iteratorInputKey]), | |||
| }, | |||
| ]} | |||
| runningStatus={runningStatus} | |||
| @@ -84,7 +84,7 @@ const RetrievalConfig: FC<Props> = ({ | |||
| model: configs.reranking_model?.reranking_model_name, | |||
| }), | |||
| reranking_mode: configs.reranking_mode, | |||
| weights: configs.weights as any, | |||
| weights: configs.weights, | |||
| reranking_enable: configs.reranking_enable, | |||
| }) | |||
| }, [onMultipleRetrievalConfigChange, payload.retrieval_mode, validRerankDefaultProvider, validRerankDefaultModel, onRetrievalModeChange]) | |||
| @@ -202,7 +202,7 @@ const Panel: FC<NodePanelProps<KnowledgeRetrievalNodeType>> = ({ | |||
| required: true, | |||
| }], | |||
| values: { query }, | |||
| onChange: keyValue => setQuery((keyValue as any).query), | |||
| onChange: keyValue => setQuery(keyValue.query), | |||
| }, | |||
| ]} | |||
| runningStatus={runningStatus} | |||
| @@ -98,7 +98,7 @@ const Panel: FC<NodePanelProps<LLMNodeType>> = ({ | |||
| required: false, | |||
| }], | |||
| values: { '#context#': contexts }, | |||
| onChange: keyValue => setContexts((keyValue as any)['#context#']), | |||
| onChange: keyValue => setContexts(keyValue['#context#']), | |||
| }, | |||
| ) | |||
| } | |||
| @@ -59,7 +59,7 @@ const ImportFromTool: FC<Props> = ({ | |||
| })() | |||
| const currCollection = currentTools.find(item => canFindTool(item.id, provider_id)) | |||
| const currTool = currCollection?.tools.find(tool => tool.name === tool_name) | |||
| const toExactParams = (currTool?.parameters || []).filter((item: any) => item.form === 'llm') | |||
| const toExactParams = (currTool?.parameters || []).filter(item => item.form === 'llm') | |||
| const formattedParams = toParmExactParams(toExactParams, language) | |||
| onImport(formattedParams) | |||
| }, [buildInTools, customTools, language, onImport, workflowTools]) | |||
| @@ -90,7 +90,7 @@ const Panel: FC<NodePanelProps<QuestionClassifierNodeType>> = ({ | |||
| required: false, | |||
| }], | |||
| values: { '#files#': visionFiles }, | |||
| onChange: keyValue => setVisionFiles((keyValue as any)['#files#']), | |||
| onChange: keyValue => setVisionFiles(keyValue['#files#']), | |||
| }, | |||
| ) | |||
| } | |||
| @@ -117,7 +117,7 @@ const WorkflowPreview = () => { | |||
| <ResultText | |||
| isRunning={workflowRunningData?.result?.status === WorkflowRunningStatus.Running || !workflowRunningData?.result} | |||
| outputs={workflowRunningData?.resultText} | |||
| allFiles={workflowRunningData?.result?.files as any} | |||
| allFiles={workflowRunningData?.result?.files} | |||
| error={workflowRunningData?.result?.error} | |||
| onClick={() => switchTab('DETAIL')} | |||
| /> | |||
| @@ -7,10 +7,10 @@ describe('loop', () => { | |||
| const [startNode, loopNode, ...loops] = list | |||
| const result = format(list as any, noop) | |||
| test('result should have no nodes in loop node', () => { | |||
| expect((result as any).find((item: any) => !!item.execution_metadata?.loop_id)).toBeUndefined() | |||
| expect(result.find(item => !!item.execution_metadata?.loop_id)).toBeUndefined() | |||
| }) | |||
| test('loop should put nodes in details', () => { | |||
| expect(result as any).toEqual([ | |||
| expect(result).toEqual([ | |||
| startNode, | |||
| { | |||
| ...loopNode, | |||
| @@ -7,7 +7,7 @@ describe('retry', () => { | |||
| const [startNode, retryNode, ...retryDetail] = steps | |||
| const result = format(steps as any) | |||
| test('should have no retry status nodes', () => { | |||
| expect(result.find(item => (item as any).status === 'retry')).toBeUndefined() | |||
| expect(result.find(item => item.status === 'retry')).toBeUndefined() | |||
| }) | |||
| test('should put retry nodes in retryDetail', () => { | |||
| expect(result).toEqual([ | |||
| @@ -20,8 +20,8 @@ export const getToolCheckParams = ( | |||
| const currCollection = currentTools.find(item => canFindTool(item.id, provider_id)) | |||
| const currTool = currCollection?.tools.find(tool => tool.name === tool_name) | |||
| const formSchemas = currTool ? toolParametersToFormSchemas(currTool.parameters) : [] | |||
| const toolInputVarSchema = formSchemas.filter((item: any) => item.form === 'llm') | |||
| const toolSettingSchema = formSchemas.filter((item: any) => item.form !== 'llm') | |||
| const toolInputVarSchema = formSchemas.filter(item => item.form === 'llm') | |||
| const toolSettingSchema = formSchemas.filter(item => item.form !== 'llm') | |||
| return { | |||
| toolInputsSchema: (() => { | |||
| @@ -1,3 +1,4 @@ | |||
| import type { ChangeEventHandler } from 'react' | |||
| import { | |||
| useCallback, | |||
| useRef, | |||
| @@ -49,7 +50,7 @@ const SearchInput = ({ | |||
| }) | |||
| }, [querySchoolsWithDebounced, handleUpdateSchools]) | |||
| const handleValueChange = useCallback((e: any) => { | |||
| const handleValueChange: ChangeEventHandler<HTMLInputElement> = useCallback((e) => { | |||
| setOpen(true) | |||
| setSchools([]) | |||
| pageRef.current = 0 | |||
| @@ -43,7 +43,7 @@ describe('asyncRunSafe', () => { | |||
| }) | |||
| describe('getTextWidthWithCanvas', () => { | |||
| let originalCreateElement: any | |||
| let originalCreateElement: typeof document.createElement | |||
| beforeEach(() => { | |||
| // Store original implementation | |||
| @@ -231,8 +231,8 @@ describe('canFindTool', () => { | |||
| }) | |||
| describe('removeSpecificQueryParam', () => { | |||
| let originalLocation: any | |||
| let originalReplaceState: any | |||
| let originalLocation: Location | |||
| let originalReplaceState: typeof window.history.replaceState | |||
| beforeEach(() => { | |||
| originalLocation = window.location | |||