refactor: type improvements that doesn't modify functionality (#17970)

This commit is contained in:
yusheng chen 2025-04-14 16:06:10 +08:00 committed by GitHub
parent 53efb2bad5
commit 4c99e9dc73
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
39 changed files with 69 additions and 63 deletions

View File

@ -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)

View File

@ -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}&nbsp;{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}&nbsp;{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)
}}
/>

View File

@ -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}

View File

@ -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}
/>

View File

@ -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],

View File

@ -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)
}

View File

@ -79,7 +79,7 @@ const PromptValuePanel: FC<IPromptValuePanelProps> = ({
}
const onClear = () => {
const newInputs: Record<string, any> = {}
const newInputs: Inputs = {}
promptVariables.forEach((item) => {
newInputs[item.key] = ''
})

View File

@ -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

View File

@ -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')

View File

@ -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,

View File

@ -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,

View File

@ -47,7 +47,7 @@ const WorkflowVariableBlockReplacementBlock = ({
}
}, [])
const transformListener = useCallback((textNode: any) => {
const transformListener = useCallback((textNode: CustomTextNode) => {
resetReg()
return decoratorTransform(textNode, getMatch, createWorkflowVariableBlockNode)
}, [createWorkflowVariableBlockNode, getMatch])

View File

@ -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>

View File

@ -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)

View File

@ -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)
}

View File

@ -67,7 +67,7 @@ const CardWrapper = ({
{
isShowInstallFromMarketplace && (
<InstallFromMarketplace
manifest={plugin as any}
manifest={plugin}
uniqueIdentifier={plugin.latest_package_identifier}
onClose={hideInstallFromMarketplace}
onSuccess={hideInstallFromMarketplace}

View File

@ -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,
})

View File

@ -55,7 +55,7 @@ const EndpointList = ({ detail }: Props) => {
},
})
const handleCreate = (state: any) => createEndpoint({
const handleCreate = (state: Record<string, any>) => createEndpoint({
pluginUniqueID,
state,
})

View File

@ -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}
/>

View File

@ -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()}

View File

@ -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
}
}
}))
},

View File

@ -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
})

View File

@ -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) => {

View File

@ -59,7 +59,7 @@ export const useWorkflowNodeFinished = () => {
incomeEdges.forEach((edge) => {
edge.data = {
...edge.data,
_targetRunningStatus: data.status as any,
_targetRunningStatus: data.status,
}
})
})

View File

@ -47,7 +47,7 @@ export const useWorkflowNodeIterationFinished = () => {
incomeEdges.forEach((edge) => {
edge.data = {
...edge.data,
_targetRunningStatus: data.status as any,
_targetRunningStatus: data.status,
}
})
})

View File

@ -44,7 +44,7 @@ export const useWorkflowNodeLoopFinished = () => {
incomeEdges.forEach((edge) => {
edge.data = {
...edge.data,
_targetRunningStatus: data.status as any,
_targetRunningStatus: data.status,
}
})
})

View File

@ -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}

View File

@ -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}

View File

@ -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])

View File

@ -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}

View File

@ -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#']),
},
)
}

View File

@ -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])

View File

@ -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#']),
},
)
}

View File

@ -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')}
/>

View File

@ -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,

View File

@ -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([

View File

@ -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: (() => {

View File

@ -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

View File

@ -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