Conversation
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
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>
|
There was a problem hiding this comment.
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.
|


