metadata-filter-conditions.tsx


Overview

The metadata-filter-conditions.tsx file defines the MetadataFilterConditions React functional component, which provides a dynamic UI for creating and managing filter conditions based on metadata keys retrieved from specified knowledge base IDs (kbIds). This component integrates with a form context (using react-hook-form) and allows users to:

This component is primarily used within an agent or chatbot context where filtering based on knowledge metadata is required.


Detailed Explanation

Component: MetadataFilterConditions

export function MetadataFilterConditions({
  kbIds,
  prefix = '',
}: {
  kbIds: string[];
  prefix?: string;
})

Purpose

Renders a section of dynamic filter condition inputs for metadata properties fetched from knowledge bases identified by kbIds. It manages the state of filter conditions within a form via react-hook-form.

Props

Name

Type

Default

Description

kbIds

string[]

Array of knowledge base IDs used to fetch metadata keys for filtering.

prefix

string

''

Optional string prefix for form field namespacing to prevent name collisions in forms.

Internal State and Hooks

Key Variables

Functional Behavior

Return / JSX Structure


Usage Example

import { useForm, FormProvider } from 'react-hook-form';

function FilterForm() {
  const methods = useForm({
    defaultValues: {
      meta_data_filter: { manual: [] },
    },
  });

  const kbIds = ['kb1', 'kb2'];

  return (
    <FormProvider {...methods}>
      <form onSubmit={methods.handleSubmit(data => console.log(data))}>
        <MetadataFilterConditions kbIds={kbIds} />
        <button type="submit">Submit</button>
      </form>
    </FormProvider>
  );
}

This example sets up a form context, provides knowledge base IDs, and renders the filter conditions component with form submission.


Important Implementation Details


Interaction with Other System Parts


Mermaid Component Diagram

componentDiagram
    component MetadataFilterConditions {
        +kbIds: string[]
        +prefix?: string
        +add(key: string): void
        +remove(index: number): void
    }
    component useFetchKnowledgeMetadata
    component useBuildSwitchOperatorOptions
    component react-hook-form (useFormContext, useFieldArray)
    component i18next (useTranslation)
    component UIComponents (SelectWithSearch, Button, DropdownMenu, Input, Form*)

    MetadataFilterConditions --> useFetchKnowledgeMetadata : fetch metadata keys
    MetadataFilterConditions --> useBuildSwitchOperatorOptions : get operator options
    MetadataFilterConditions --> react-hook-form : form state & dynamic fields
    MetadataFilterConditions --> i18next : translations
    MetadataFilterConditions --> UIComponents : renders inputs, buttons, dropdowns

Summary

metadata-filter-conditions.tsx is a reusable React component that enables users to create complex metadata-based filter conditions dynamically within a form. It efficiently coordinates form state management, asynchronous data fetching, and UI rendering while supporting internationalization and modular UI components. This component fits within a larger system dealing with knowledge bases and agent configuration forms.