diff --git a/packages/editor-ui/src/components/canvas/elements/buttons/CanvasChatButton.spec.ts b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasChatButton.spec.ts
new file mode 100644
index 0000000000..9513673761
--- /dev/null
+++ b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasChatButton.spec.ts
@@ -0,0 +1,12 @@
+import { createComponentRenderer } from '@/__tests__/render';
+import CanvasChatButton from './CanvasChatButton.vue';
+
+const renderComponent = createComponentRenderer(CanvasChatButton);
+
+describe('CanvasChatButton', () => {
+ it('should render correctly', () => {
+ const wrapper = renderComponent();
+
+ expect(wrapper.html()).toMatchSnapshot();
+ });
+});
diff --git a/packages/editor-ui/src/components/canvas/elements/buttons/CanvasChatButton.vue b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasChatButton.vue
new file mode 100644
index 0000000000..877180cd4e
--- /dev/null
+++ b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasChatButton.vue
@@ -0,0 +1,9 @@
+
+
+
diff --git a/packages/editor-ui/src/components/canvas/elements/buttons/CanvasClearExecutionDataButton.vue b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasClearExecutionDataButton.vue
index 505d179d4f..e4cb86d224 100644
--- a/packages/editor-ui/src/components/canvas/elements/buttons/CanvasClearExecutionDataButton.vue
+++ b/packages/editor-ui/src/components/canvas/elements/buttons/CanvasClearExecutionDataButton.vue
@@ -4,7 +4,7 @@ import { useI18n } from '@/composables/useI18n';
const i18n = useI18n();
-
-
- should render correctly 1`] = `""`;
diff --git a/packages/editor-ui/src/views/NodeView.v2.vue b/packages/editor-ui/src/views/NodeView.v2.vue
index dc2b551e5b..df83466fdd 100644
--- a/packages/editor-ui/src/views/NodeView.v2.vue
+++ b/packages/editor-ui/src/views/NodeView.v2.vue
@@ -50,6 +50,7 @@ import {
STICKY_NODE_TYPE,
VALID_WORKFLOW_IMPORT_URL_REGEX,
VIEWS,
+ WORKFLOW_LM_CHAT_MODAL_KEY,
} from '@/constants';
import { useSourceControlStore } from '@/stores/sourceControl.store';
import { useNodeCreatorStore } from '@/stores/nodeCreator.store';
@@ -1090,6 +1091,17 @@ const chatTriggerNodePinnedData = computed(() => {
return workflowsStore.pinDataByNodeName(chatTriggerNode.value.name);
});
+async function onOpenChat() {
+ uiStore.openModal(WORKFLOW_LM_CHAT_MODAL_KEY);
+
+ const payload = {
+ workflow_id: workflowId.value,
+ };
+
+ void externalHooks.run('nodeView.onOpenChat', payload);
+ telemetry.track('User clicked chat open button', payload);
+}
+
/**
* History events
*/
@@ -1518,6 +1530,7 @@ onBeforeUnmount(() => {
@mouseleave="onRunWorkflowButtonMouseLeave"
@click="onRunWorkflow"
/>
+