diff --git a/public/pages/workflow_detail/workflow_detail.test.tsx b/public/pages/workflow_detail/workflow_detail.test.tsx index 49d7cee4..29489ce0 100644 --- a/public/pages/workflow_detail/workflow_detail.test.tsx +++ b/public/pages/workflow_detail/workflow_detail.test.tsx @@ -39,22 +39,22 @@ const renderWithRouter = ( initialEntries: [`/workflow/${workflowId}`], }); - const needsVersion = [ - WORKFLOW_TYPE.SEMANTIC_SEARCH, - WORKFLOW_TYPE.MULTIMODAL_SEARCH, - WORKFLOW_TYPE.HYBRID_SEARCH, - ].includes(workflowType); + const mockInput = { + id: workflowId, + name: workflowName, + type: workflowType, + version: [ + WORKFLOW_TYPE.SEMANTIC_SEARCH, + WORKFLOW_TYPE.MULTIMODAL_SEARCH, + WORKFLOW_TYPE.HYBRID_SEARCH, + ].includes(workflowType) + ? MINIMUM_FULL_SUPPORTED_VERSION + : undefined, + }; return { ...render( - + { - const workflowType = - workflow.ui_metadata?.type ?? WORKFLOW_TYPE.UNKNOWN; - return allowedPresetsFor217.includes(workflowType as WORKFLOW_TYPE); - }); - } + if (semver.lt(version, MIN_SUPPORTED_VERSION)) { + return []; + } - return workflows; - } catch (error) { + if ( + semver.gte(version, MIN_SUPPORTED_VERSION) && + semver.lt(version, MINIMUM_FULL_SUPPORTED_VERSION) + ) { return workflows.filter((workflow) => { const workflowType = workflow.ui_metadata?.type ?? WORKFLOW_TYPE.UNKNOWN; return allowedPresetsFor217.includes(workflowType as WORKFLOW_TYPE); }); } + + return workflows; }; /** @@ -177,29 +169,20 @@ export function NewWorkflow(props: NewWorkflowProps) { setIsVersionLoading(true); - try { - const version = await getEffectiveVersion(dataSourceId); + const version = await getEffectiveVersion(dataSourceId); - const enrichedWorkflows = presetWorkflows.map((presetWorkflow) => - enrichPresetWorkflowWithUiMetadata(presetWorkflow, version) - ); + const enrichedWorkflows = presetWorkflows.map((presetWorkflow) => + enrichPresetWorkflowWithUiMetadata(presetWorkflow, version) + ); - const versionFilteredWorkflows = await filterPresetsByVersion( - enrichedWorkflows, - dataSourceId - ); + const versionFilteredWorkflows = await filterPresetsByVersion( + enrichedWorkflows, + dataSourceId + ); - setAllWorkflows(versionFilteredWorkflows); - setFilteredWorkflows(versionFilteredWorkflows); - setIsVersionLoading(false); - } catch (error) { - console.error('Error loading workflows:', error); - setAllWorkflows([]); - setFilteredWorkflows([]); - if (dataSourceId) { - setIsVersionLoading(false); - } - } + setAllWorkflows(versionFilteredWorkflows); + setFilteredWorkflows(versionFilteredWorkflows); + setIsVersionLoading(false); }; loadWorkflows(); diff --git a/public/pages/workflows/new_workflow/utils.ts b/public/pages/workflows/new_workflow/utils.ts index 7acbfa0f..308703c5 100644 --- a/public/pages/workflows/new_workflow/utils.ts +++ b/public/pages/workflows/new_workflow/utils.ts @@ -42,22 +42,25 @@ export function enrichPresetWorkflowWithUiMetadata( presetWorkflow: Partial, version: string ): WorkflowTemplate { + const defaultVersion = MINIMUM_FULL_SUPPORTED_VERSION; + const workflowVersion = version ?? defaultVersion; + let uiMetadata = {} as UIState; switch (presetWorkflow.ui_metadata?.type || WORKFLOW_TYPE.CUSTOM) { case WORKFLOW_TYPE.SEMANTIC_SEARCH: { - uiMetadata = fetchSemanticSearchMetadata(version); + uiMetadata = fetchSemanticSearchMetadata(workflowVersion); break; } case WORKFLOW_TYPE.MULTIMODAL_SEARCH: { - uiMetadata = fetchMultimodalSearchMetadata(version); + uiMetadata = fetchMultimodalSearchMetadata(workflowVersion); break; } case WORKFLOW_TYPE.HYBRID_SEARCH: { - uiMetadata = fetchHybridSearchMetadata(version); + uiMetadata = fetchHybridSearchMetadata(workflowVersion); break; } case WORKFLOW_TYPE.RAG: { - uiMetadata = fetchRAGMetadata(version); + uiMetadata = fetchRAGMetadata(workflowVersion); break; } default: { @@ -146,20 +149,12 @@ export function fetchEmptyUIConfig(): WorkflowConfig { } export function fetchSemanticSearchMetadata(version: string): UIState { - if (!version) { - throw new Error( - 'Version parameter is required for fetchSemanticSearchMetadata' - ); - } + const isPreV219 = semver.lt(version, MINIMUM_FULL_SUPPORTED_VERSION); let baseState = fetchEmptyMetadata(); baseState.type = WORKFLOW_TYPE.SEMANTIC_SEARCH; - const isPreV219 = semver.lt(version, MINIMUM_FULL_SUPPORTED_VERSION); baseState.config.ingest.enrich.processors = isPreV219 - ? [ - new TextEmbeddingIngestProcessor().toObj(), - new TextImageEmbeddingIngestProcessor().toObj(), - ] + ? [new TextEmbeddingIngestProcessor().toObj()] : [new MLIngestProcessor().toObj()]; baseState.config.ingest.index.name.value = generateId('knn_index', 6); @@ -184,22 +179,12 @@ export function fetchSemanticSearchMetadata(version: string): UIState { } export function fetchMultimodalSearchMetadata(version: string): UIState { - if (!version) { - throw new Error( - 'Version parameter is required for fetchSemanticSearchMetadata' - ); - } - + const isPreV219 = semver.lt(version, MINIMUM_FULL_SUPPORTED_VERSION); let baseState = fetchEmptyMetadata(); baseState.type = WORKFLOW_TYPE.MULTIMODAL_SEARCH; - const isPreV219 = semver.lt(version, MINIMUM_FULL_SUPPORTED_VERSION); - baseState.config.ingest.enrich.processors = isPreV219 - ? [ - new TextEmbeddingIngestProcessor().toObj(), - new TextImageEmbeddingIngestProcessor().toObj(), - ] + ? [new TextImageEmbeddingIngestProcessor().toObj()] : [new MLIngestProcessor().toObj()]; baseState.config.ingest.index.name.value = generateId('knn_index', 6); @@ -224,21 +209,12 @@ export function fetchMultimodalSearchMetadata(version: string): UIState { } export function fetchHybridSearchMetadata(version: string): UIState { - if (!version) { - throw new Error( - 'Version parameter is required for fetchSemanticSearchMetadata' - ); - } - + const isPreV219 = semver.lt(version, MINIMUM_FULL_SUPPORTED_VERSION); let baseState = fetchEmptyMetadata(); baseState.type = WORKFLOW_TYPE.HYBRID_SEARCH; - const isPreV219 = semver.lt(version, MINIMUM_FULL_SUPPORTED_VERSION); baseState.config.ingest.enrich.processors = isPreV219 - ? [ - new TextEmbeddingIngestProcessor().toObj(), - new TextImageEmbeddingIngestProcessor().toObj(), - ] + ? [new TextEmbeddingIngestProcessor().toObj()] : [new MLIngestProcessor().toObj()]; baseState.config.ingest.index.name.value = generateId('knn_index', 6); @@ -269,12 +245,6 @@ export function fetchHybridSearchMetadata(version: string): UIState { } export function fetchRAGMetadata(version: string): UIState { - if (!version) { - throw new Error( - 'Version parameter is required for fetchSemanticSearchMetadata' - ); - } - let baseState = fetchEmptyMetadata(); baseState.type = WORKFLOW_TYPE.RAG; baseState.config.ingest.index.name.value = generateId('my_index', 6);