* feat(agentflow): optional cavasActions to allow additional buttons next to validate
- Updated Agentflow component to support canvasActions prop for rendering additional action buttons in the canvas overlay.
- Enhanced type definitions to include canvasActions in AgentflowProps.
- Added tests to verify the rendering of canvasActions in the Agentflow component.
- Added a new example demonstrating custom FABs alongside the validation button.
* update jsdoc to match actual implementation
* feat: turn chatflow into MCP server
- Added '@modelcontextprotocol/sdk' version 1.12.0
- Added 'zod' version 3.25.32
- Added migrations for MCP server config
- Added MCP endpoints (Streamable HTTP and SSE)
- Added MCP server configuration tab
- Added unit tests for MCP endpoints and services
* feat: Implement MCP endpoint service with SSE support
- Added a new MCP endpoint service to handle requests for chatflows, including support for SSE (Server-Sent Events) and stateless transport.
- Introduced functions for handling MCP requests, SSE connections, and message routing.
- Implemented error handling for service errors and session management for SSE.
- Created unit tests for the MCP server service, covering configuration CRUD operations and token management.
- Updated the MCP server configuration logic to ensure proper validation and error handling.
- Refactored the UI component to utilize a new API hook for fetching MCP server configuration.
* chore: handle error when get mcp server config
* - Introduced a new chat type 'MCP' in the ChatType enum, including UI filters and backend processing.
- Updated the zod dependency version specification to support both ^3.25.76 and ^4.
- Fix setHasExistingConfig
* fix: update chatflowCallback to enable chatflow building with active state for MCP
* refactor: remove deprecated SSE transport endpoints and related logic
- Removed handleGet and handleSseMessage methods from MCP endpoint controller.
- Updated MCP endpoint routes to eliminate SSE-related routes.
- Refactored service layer to remove SSE session management and related methods.
- Updated tests to remove references to deprecated SSE functionality.
- Adjusted UI component to remove SSE endpoint URL handling.
* chore: update MCP endpoint routes and references to align with new API structure
* chore: remove abortChatMessage when mcp request closed
* optimize mcpserver dialog for dark mode
* feat: implement form input schema generation for agentflow chatflows
---------
Co-authored-by: Henry <[email protected]>
- Enhanced Start node to include a client property for the form input option, allowing differentiation between 'agentflowv2' and 'agentflowsdk'.
- Added tests to verify that the 'formInput' option is correctly filtered based on the client type.
* fix(agentflow): add onFlowChange notifications for deleteNode, deleteEdge, and duplicateNode actions
- Updated context state management to include viewport information during flow changes.
- Improved test coverage for flow change notifications to ensure correct behavior on node and edge modifications.
* address gemini comment
- Implemented auto-add functionality for Start node in Agentflow when creating a new canvas.
- Updated default values for number and options types to return empty strings instead of zero or first option name.
- Adjusted MessagesInput and ArrayInput tests to reflect changes in default values.
* 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