Skip to content

4000#4776

Merged
ivicac merged 10 commits intomasterfrom
4000
Apr 16, 2026
Merged

4000#4776
ivicac merged 10 commits intomasterfrom
4000

Conversation

@ivicac
Copy link
Copy Markdown
Contributor

@ivicac ivicac commented Apr 16, 2026

  • 4000 Remove EMBEDDING cluster element from Knowledge Base component
  • 4000 Handle null component connection in AI Agent and QuestionAnswerRag
  • 4000 client - Fix footer padding in Edit Chunk dialog
  • 4000 client - Respect empty cluster-element-type lists
  • 4000 Resolve cluster element types by key and across nested roots
  • 4000 Declare empty search cluster element types for Knowledge Base
  • 797 Declare Embedding as child slot for vector-store search tools
  • 797 client - Filter nested cluster element slots by element's own name
  • 4000 Expose Knowledge Base and Tags on the vector-store and search-tool
  • 4000 Initialize missing metadata map for cluster elements

ivicac and others added 10 commits April 16, 2026 08:24
Knowledge Base shares a single pgvector index across all knowledge bases
with fixed dimensions, so the embedding model must be globally configured
(bytechef.ai.knowledge-base.embedding.*) rather than user-selectable per
workflow. Drop the EMBEDDING slot from the component definition and its
load/search/vectorStore cluster elements so the UI no longer offers it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use the ComponentConnection-accepting ParametersFactory.create overload so
a missing connection no longer requires a null-check or Map.of() fallback
at each call site.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Drop the redundant py-4 wrapper (DialogContent already applies gap-4), add
resize-none on the textarea so it can't be dragged past the footer, and
give DialogFooter a small top padding for clearer separation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
An explicit empty list in actionClusterElementTypes or
clusterElementClusterElementTypes now means "no child slots" instead of
falling back to "show all". The unset (missing key) fallback is
preserved for legacy components that don't populate these maps.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
getClusterElementType now matches against both the type name and key
case-insensitively (so compound names like VECTOR_STORE resolve from the
client's camelCase key), and falls back to scanning all registered
cluster root components so types owned by a nested cluster root resolve
even when the request targets an outer root.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Knowledge Base's search tool should expose no child slots — the
embedding model is globally configured, not user-selected per workflow.
Add SEARCH -> [] alongside the existing VECTOR_STORE -> [] in the
cluster-element-cluster-element-types override.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add SEARCH -> [EMBEDDING] to VectorStoreComponentDefinition's
clusterElementClusterElementTypes so that when a vector-store component
is wired as a search tool under an AI Agent, the editor only exposes the
Embedding child slot instead of falling back to showing every type
declared on the component (Document Reader / Document Transformer).
Regenerate snapshots for all affected vector-store components.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The clusterElementClusterElementTypes map is keyed by the cluster
element's own name (the third segment of its type, e.g. 'search',
'vectorStore'), not by the parent slot key (e.g. 'tools'). Both the
placeholder-creation recursion and the handle renderer were passing the
parent slot key and falling back to showing every type. Forward the
element's own name so slot filtering actually applies.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add knowledgeBaseId (required) and tagIds (optional, scoped to the
selected knowledge base via optionsLookupDependsOn) as properties on
both the Knowledge Base vector-store cluster element (RAG path) and the
Knowledge Base search tool cluster element. Tag options come from
KnowledgeBaseTagService so only tags actually assigned to a knowledge
base surface — per-KB when one is selected, across all KBs otherwise.
Route tagIds through a 3-arg KnowledgeBaseVectorStoreWrapper which
AND-s an OR-joined tag filter on top of the knowledge-base filter.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates vector-store/Knowledge Base cluster-element behavior across server + client, including removing EMBEDDING requirements from the Knowledge Base component, expanding/searching cluster-element type resolution, and improving UI/editor handling of cluster-element types and null connections.

Changes:

  • Server: remove/relax Knowledge Base dependency on EMBEDDING cluster elements; add Knowledge Base + tag filtering support for KB-backed vector-store/search usage.
  • Server: improve cluster-element-type resolution (by key/name and across nested roots) and harden metadata initialization + null component-connection handling.
  • Client: fix cluster-element-type filtering/selection (including empty lists and nested roots) and adjust dialog layout padding.

Reviewed changes

Copilot reviewed 28 out of 28 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
server/libs/platform/platform-configuration/platform-configuration-service/src/main/java/com/bytechef/platform/configuration/facade/WorkflowNodeParameterFacadeImpl.java Initializes missing metadata maps for cluster elements to avoid null handling issues.
server/libs/platform/platform-component/platform-component-service/src/main/java/com/bytechef/platform/component/service/ClusterElementDefinitionServiceImpl.java Resolves cluster element types by name/key and searches across nested root component definitions.
server/libs/platform/platform-component/platform-component-api/src/main/java/com/bytechef/platform/component/definition/VectorStoreComponentDefinition.java Declares EMBEDDING child slot for both vectorStore and search cluster elements.
server/libs/modules/components/ai/vectorstore/weaviate/src/test/resources/definition/weaviate_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/typesense/src/test/resources/definition/typesense_v1.json Updates expected definition JSON ordering and adds search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/s3/src/test/resources/definition/s3_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/redis/src/test/resources/definition/redis_v1.json Updates expected definition JSON ordering and adds search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/qdrant/src/test/resources/definition/qdrant_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/pinecone/src/test/resources/definition/pinecone_v1.json Updates expected definition JSON ordering and adds search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/pgvector/src/test/resources/definition/pgVector_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/oracle/src/test/resources/definition/oracle_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/neo4j/src/test/resources/definition/neo4j_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/milvus/src/test/resources/definition/milvus_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/mariaDB/src/test/resources/definition/mariaDbVectorStore_v1.json Updates expected definition JSON to include search clusterElementClusterElementTypes.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/test/resources/definition/knowledgeBase_v1.json Removes EMBEDDING cluster element from Knowledge Base, declares empty cluster-element-type lists, and adds KB/tag selection properties for search/vector-store elements.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/test/java/com/bytechef/component/ai/vectorstore/knowledgebase/KnowledgeBaseComponentHandlerTest.java Updates handler constructor usage to match new dependency list.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/cluster/KnowledgeBaseVectorStoreWrapper.java Adds optional tag filtering to similarity search via metadata-based OR tag filter combined with KB filter.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/cluster/KnowledgeBaseVectorStore.java Reworks Knowledge Base vector-store cluster element definition, adds KB/tag option sources, and wires tagIds into wrapper usage.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/cluster/KnowledgeBaseSearchTool.java Reworks KB search tool definition, adds KB/tag properties, and handles missing component connection parameters.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/action/KnowledgeBaseLoadAction.java Replaces generic load action with Knowledge Base-specific load implementation and removes embedding cluster element dependency.
server/libs/modules/components/ai/vectorstore/knowledgebase/src/main/java/com/bytechef/component/ai/vectorstore/knowledgebase/KnowledgeBaseComponentHandler.java Wires new KnowledgeBaseTagService, declares cluster element types, and sets empty cluster-element-type mappings for KB vector-store/search slots.
server/libs/modules/components/ai/vectorstore/couchbase/src/test/resources/definition/couchbase_v1.json Updates expected definition JSON ordering and adds search clusterElementClusterElementTypes.
server/libs/modules/components/ai/agent/src/main/java/com/bytechef/component/ai/agent/action/AbstractAiAgentChatAction.java Uses ParametersFactory.create(componentConnection) to handle null component connections safely.
server/libs/modules/components/ai/agent/rag/rag-questionanswer/src/main/java/com/bytechef/component/ai/rag/questionanswer/cluster/QuestionAnswerRag.java Uses ParametersFactory.create(componentConnection) for null-safe connection parameter handling.
client/src/pages/platform/workflow-editor/nodes/WorkflowNode.tsx Uses cluster element name when filtering cluster element types and updates hook deps accordingly.
client/src/pages/platform/cluster-element-editor/utils/createClusterElementsNodes.ts Derives nested root element type from the element’s own type string to improve nested resolution.
client/src/pages/platform/cluster-element-editor/utils/clusterElementsUtils.ts Changes filtering logic to treat empty allowed-type lists as restrictive (instead of “allow all”).
client/src/pages/automation/knowledge-base/components/knowledge-base-document-list/KnowledgeBaseDocumentChunkEditDialog.tsx Fixes textarea/dialog spacing (footer padding + non-resizable textarea).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@sonarqubecloud
Copy link
Copy Markdown

@ivicac ivicac merged commit 4468e10 into master Apr 16, 2026
12 checks passed
@ivicac ivicac deleted the 4000 branch April 16, 2026 07:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants