* Fix c=incorrect color for edit nodes
* Fix to ensure all input fields have same width
* Fix accordian having an extra line
* Fix gemini comment
* Test fix
* fix(evaluations): correct DoesNotContainAny/All operator logic
DoesNotContainAny was returning Pass when values were found and Fail
when they weren't — the result was inverted.
DoesNotContainAll was using the same logic as DoesNotContainAny instead
of checking whether all values are present. Fixed to only fail when
every specified value exists in the output.
* remove redundant toLowerCase and filter empty split values
value is already lowercased at line 92, so the per-element toLowerCase
is unnecessary. Also filter out empty strings from trailing commas.
* Update EvaluatorRunner.ts
---------
Co-authored-by: Henry Heng <[email protected]>
* fix(evaluations): use correct total_cost property in CostCalculator
The condition on line 28 checked costValues.total_price, but the
property is total_cost everywhere else (models.json, evaluation
runners, etc.). Since total_price is always undefined, the branch
never executed and models that only define a flat total_cost rate
fell through to the input_cost/output_cost path, producing NaN.
* guard against missing totalTokens to prevent NaN
* Fix JSON inout button not appearing
* Fix to display icons for vector embeddings and tools in Agent node
* Add variable syntax support to condition node
* Clear out existing values when operation is changed in Condition node
* Loop node to show ancestral nodes
* Fix position and styling of "See Example"
* Refactor AsyncInput to remove duplicate logic
* Fix gemini comments
* Addressed review comments
* Changes to limit markdown
* Remove extra content
* Test changes
* Add support to escape XML tags
* FIx lint errors
* Revert changes to server file
* Fix Gemini comments
* Fix gemini comments
* Refactor to remove duplicated logic
* feat: add client-scoped filtering to node input params
Adds a `client` field to `INodeParams` and `INodeOptionsValue` so node
authors can restrict params or dropdown options to specific clients
(agentflowv2 canvas or agentflowsdk). The server filters params before
responding based on a `?client=` query param passed by each client.
- Add `ClientType = 'agentflowv2' | 'agentflowsdk'` to Interface.ts
- Add `client?: Array<ClientType>` to INodeParams and INodeOptionsValue
- Server nodes service: add filterNodeByClient() applied to all node fetch paths
- Server nodes controller: read and forward ?client= query param
- packages/agentflow API: pass ?client=agentflowsdk on all node fetches
- packages/ui API: pass ?client=agentflowv2 on all node fetches
- Add tests for filterNodeByClient and update agentflow node API tests
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Made-with: Cursor
* refactor: move filterNodeByClient to bottom of nodes service
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
* fix: address PR review comments on client-scoped node filtering
- Validate ?client= query param against allowlist before casting to ClientType
- Extract VALID_CLIENT_TYPES const to flowise-components Interface.ts as single source of truth
- Make filterNodeByClient pure by returning a new object instead of mutating node.inputs
- Add immutability test to nodes.test.ts
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---------
Co-authored-by: Claude Sonnet 4.6 <[email protected]>
* feat(agentflow): Add refresh button for Available Actions dropdown
- Introduced a refresh button in AsyncInput and AsyncMultiOptionsInput components to allow users to re-fetch options dynamically.
- Updated InputParam interface to include a new `refresh` property.
- Enhanced tests to verify the visibility and functionality of the refresh button based on the `refresh` property.
- Adjusted loadMethodRegistry to ensure proper handling of credential and inputs for the `listActions` method.
This update improves user experience by providing a way to refresh options without needing to reload the entire component.
* wrap tests to a top layer describe
* Update packages/agentflow/src/features/node-editor/AsyncInput.tsx
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* feat(ui): add document store rename/delete actions for cards and table
* refactor(docstore): simplify local rename state update
* refactor(docstore): use DeleteDocStoreDialog in list delete flow and keep safe error fallback
* Initial flow
* Fix markdown import shape
* Add support to check for HTML or markdown
* Fix values not being persisted
* Make implementation similar to v2
* Add vairable syntax support to expandDialog
* Add variable syntax support to messageInput
* Test cases added
* Remove eslint-disable
* Add getHtml as a fallback
* Fixed gemini comments
* Fix test cases and lint warnings
* Fixed editorUtils.test to not have nested structure
* Fix review comments
* feat(agentflow): enhance state management with StateKeyValueInput and variable support
- Added StateKeyValueInput component for managing key-value pairs in flow state updates.
- Integrated VariableInput for value fields to support variable syntax.
- Updated MessagesInput and ExpandTextDialog to utilize variable items for enhanced user experience.
- Introduced new types for state updates in core types.
- Enhanced Jest tests to cover new functionality and ensure reliability.
This update improves the flexibility and usability of state management within the agentflow package.
* fix(agentflow): address PR #6119 review feedback
- Add autoFocus prop to VariableInput, apply in ExpandTextDialog for
consistent focus behavior with RichTextEditor fallback
- Extract duplicated VariableItem→SuggestionItem mapping into shared
toSuggestionItems utility, used by MessagesInput and NodeInputHandler
- Remove redundant default export from StateKeyValueInput
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
* clear selected key and update dropdown when a state key is removed
* cleanup unused type
---------
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
* fix(ui): allow XML tag for rich input
- Introduced utilities for escaping and unescaping non-standard XML/HTML tags to preserve them during markdown processing.
- Updated RichInput and ExpandRichInputDialog components to utilize the new XML tag utilities for handling custom tags.
- Added Jest configuration for the UI package and created tests for the XML tag utilities to ensure functionality.
- Updated package.json to include Jest as a dependency and added a test script.
* address code review comments from Gemini
* allow html tag in markdown editor
* add test case for markdown format
* update dependency in ui
* fix: unsubscribe redis pubsub when connection closes during prediction or after successful response
* update: add heartbeat to keep connection alive and start/stop heartbeat on server start/stop
* refactor: redis pub/sub methods, add unsubscribe, await subscribe
* fix: redundant unsubscribe
* fix: use map to store clients list
* fix: update how thinking event is handled in redis pub/sub and sse
* fix: review feedback
* fix: preserve sourceDocuments and metadata in ExecuteFlow node
The Execute Flow node in AgentFlow V2 was only extracting the text
content from chatflow responses, discarding sourceDocuments, usedTools,
artifacts, and fileAnnotations metadata. This fix preserves all metadata
fields in the return output and streams them via SSE when the node is
the last in the flow.
Fixes#5949
Signed-off-by: majiayu000 <[email protected]>
* fix: address review feedback on PR #5972
- Use object destructuring for response.data metadata extraction
- Extend SSE streaming test to cover artifacts and fileAnnotations
Signed-off-by: majiayu000 <[email protected]>
* Delete packages/components/nodes/agentflow/ExecuteFlow/ExecuteFlow.test.ts
* Update ExecuteFlow.ts
* Update ExecuteFlow.ts
---------
Signed-off-by: majiayu000 <[email protected]>
Co-authored-by: Henry Heng <[email protected]>
* fix: skip empty metadata filter in RetrieverTool to prevent vector store error
When a user adds an "Additional Metadata Filter" then removes it, the
empty filter object {} was still passed to the vector store, causing
Pinecone (and potentially others) to reject it with "You must enter a
filter object with at least one key-value pair." Now checks that the
resolved filter has at least one key before assigning it.
Fixes#4900
Signed-off-by: majiayu000 <[email protected]>
* fix: rename metadatafilter to metadataFilter for camelCase consistency
Signed-off-by: majiayu000 <[email protected]>
* Delete packages/components/nodes/tools/RetrieverTool/RetrieverTool.test.ts
---------
Signed-off-by: majiayu000 <[email protected]>
Co-authored-by: Henry Heng <[email protected]>
* Fix Mass Assignment in Chatflow Endpoints
* Fix Mass Assignment in Tools Endpoint
* Revert "Fix Mass Assignment in Tools Endpoint"
This reverts commit ed42f048eb.
* Fix Mass Assignment in Chatflow Endpoints
* chore(controllers/chatflows): replace explicit field assignment with stripProtectedFields
---------
Co-authored-by: christopherholland-workday <[email protected]>
Co-authored-by: yau-wd <[email protected]>
* Initial flow
* Add tiptap - mention dependency similar to v2
* Add functionalities similiar to V2
* update to tiptap to 3.20.4
* Fix lint error
* Added missiing test cases for new files
* Styling changes
* InputMessage should be visible on initial load
* Fix gemini comment
* Remove outdated SelectVariable
* Add icon support similar to v2
* Fix gemini comments
* Remove input folder and utils folder under atoms
* Fix test error
* Fix initlalDefualts not being set
* Fix after merge with main
* Fixes for review comments
* Fix review comments
* New test cases added for fixes
* Remove additional space