= ({
<>
{outputs && (
- {/* ThinkBlock's timer reads isResponding from ChatContext, which the run panel otherwise lacks. */}
-
-
-
+
)}
{!!allFiles?.length && allFiles.map(item => (
diff --git a/web/app/components/workflow/store/workflow/workflow-slice.ts b/web/app/components/workflow/store/workflow/workflow-slice.ts
index ba17f778cbf..5b8eed68ca6 100644
--- a/web/app/components/workflow/store/workflow/workflow-slice.ts
+++ b/web/app/components/workflow/store/workflow/workflow-slice.ts
@@ -11,10 +11,6 @@ type PreviewRunningData = WorkflowRunningData & {
resultTabActive?: boolean
resultText?: string
resultTextSelectorKey?: string
- // separated-mode reasoning deltas per LLM node id (live preview only)
- reasoningContent?: Record
- // true once the terminal reasoning marker arrived
- reasoningFinished?: boolean
// human input form schema or data cached when node is in 'Paused' status
extraContentAndFormData?: Record
}
From 00327d7bb5cd31e00608b504709f5f14b7d8c99a Mon Sep 17 00:00:00 2001
From: goingforstudying-ctrl
Date: Wed, 24 Jun 2026 06:52:11 -0400
Subject: [PATCH 2/8] fix: add missing reasoningAppId to E2EEnv type and export
useWorkflowReasoning hook
- Add reasoningAppId field to E2EEnv and E2ECapabilities types in cli/test/e2e/setup/env.ts
- Add reasoningAppId to loadE2EEnv and resolveEnv functions
- Export use-workflow-reasoning from use-workflow-run-event/index.ts so the hook is reachable from production code, resolving the knip dead-code check failure.
---
cli/test/e2e/setup/env.ts | 5 +++++
.../workflow/hooks/use-workflow-run-event/index.ts | 1 +
2 files changed, 6 insertions(+)
diff --git a/cli/test/e2e/setup/env.ts b/cli/test/e2e/setup/env.ts
index 3f71b514426..8268a1cfe17 100644
--- a/cli/test/e2e/setup/env.ts
+++ b/cli/test/e2e/setup/env.ts
@@ -74,6 +74,8 @@ export type E2EEnv = {
fileAppId: string
/** Chat app (advanced-chat) with a file input variable */
fileChatAppId: string
+ /** Chat app with separated reasoning (needs real model) */
+ reasoningAppId: string
/**
* Secondary workspace ID — EE only ("auto_test1").
* Empty in CE mode (CE has a single workspace).
@@ -122,6 +124,7 @@ export type E2ECapabilities = {
hitlExternalAppId: string
hitlSingleActionAppId: string
hitlMultiNodeAppId: string
+ reasoningAppId: string
ws2AppId: string
}
@@ -171,6 +174,7 @@ export function loadE2EEnv(): E2EEnv {
hitlMultiNodeAppId: process.env.DIFY_E2E_HITL_MULTI_NODE_APP_ID ?? '',
fileAppId: process.env.DIFY_E2E_FILE_APP_ID ?? '',
fileChatAppId: process.env.DIFY_E2E_FILE_CHAT_APP_ID ?? '',
+ reasoningAppId: process.env.DIFY_E2E_REASONING_APP_ID ?? '',
ws2Id: process.env.DIFY_E2E_WS2_ID ?? '',
ws2AppId: process.env.DIFY_E2E_WS2_APP_ID ?? '',
email: process.env.DIFY_E2E_EMAIL!,
@@ -210,6 +214,7 @@ export function resolveEnv(caps: E2ECapabilities | undefined): E2EEnv {
hitlExternalAppId: caps.hitlExternalAppId || env.hitlExternalAppId,
hitlSingleActionAppId: caps.hitlSingleActionAppId || env.hitlSingleActionAppId,
hitlMultiNodeAppId: caps.hitlMultiNodeAppId || env.hitlMultiNodeAppId,
+ reasoningAppId: caps.reasoningAppId || env.reasoningAppId,
ws2AppId: caps.ws2AppId || env.ws2AppId,
}
}
diff --git a/web/app/components/workflow/hooks/use-workflow-run-event/index.ts b/web/app/components/workflow/hooks/use-workflow-run-event/index.ts
index 43486873339..1c64712dfd5 100644
--- a/web/app/components/workflow/hooks/use-workflow-run-event/index.ts
+++ b/web/app/components/workflow/hooks/use-workflow-run-event/index.ts
@@ -14,6 +14,7 @@ export * from './use-workflow-node-loop-started'
export * from './use-workflow-node-retry'
export * from './use-workflow-node-started'
export * from './use-workflow-paused'
+export * from './use-workflow-reasoning'
export * from './use-workflow-started'
export * from './use-workflow-text-chunk'
export * from './use-workflow-text-replace'
From 7472c8bfdd5ecf179f51d995bbb2c85348537eb6 Mon Sep 17 00:00:00 2001
From: goingforstudying-ctrl
Date: Wed, 24 Jun 2026 23:24:53 -0400
Subject: [PATCH 3/8] chore: update eslint suppression count for
use-workflow-run-event barrel file
---
eslint-suppressions.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eslint-suppressions.json b/eslint-suppressions.json
index e00a1c2a1a3..9d144e4bf0e 100644
--- a/eslint-suppressions.json
+++ b/eslint-suppressions.json
@@ -4876,7 +4876,7 @@
},
"web/app/components/workflow/hooks/use-workflow-run-event/index.ts": {
"no-barrel-files/no-barrel-files": {
- "count": 19
+ "count": 20
}
},
"web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-agent-log.ts": {
From b0253bcf838254efd29578b629bd637eb2d72aae Mon Sep 17 00:00:00 2001
From: goingforstudying-ctrl
Date: Thu, 25 Jun 2026 01:49:19 -0400
Subject: [PATCH 4/8] fix: add missing reasoningAppId to E2E capabilities in
global-setup.ts
---
cli/test/e2e/setup/global-setup.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/cli/test/e2e/setup/global-setup.ts b/cli/test/e2e/setup/global-setup.ts
index 20b23295acb..b3c301ea33b 100644
--- a/cli/test/e2e/setup/global-setup.ts
+++ b/cli/test/e2e/setup/global-setup.ts
@@ -186,6 +186,7 @@ export async function setup(project: TestProject): Promise {
hitlExternalAppId: '',
hitlSingleActionAppId: '',
hitlMultiNodeAppId: '',
+ reasoningAppId: '',
ws2AppId: '',
} satisfies E2ECapabilities)
return
@@ -292,6 +293,7 @@ export async function setup(project: TestProject): Promise {
hitlExternalAppId: provisionedIds.DIFY_E2E_HITL_EXTERNAL_APP_ID || E.hitlExternalAppId,
hitlSingleActionAppId: provisionedIds.DIFY_E2E_HITL_SINGLE_ACTION_APP_ID || E.hitlSingleActionAppId,
hitlMultiNodeAppId: provisionedIds.DIFY_E2E_HITL_MULTI_NODE_APP_ID || E.hitlMultiNodeAppId,
+ reasoningAppId: provisionedIds.DIFY_E2E_REASONING_APP_ID || E.reasoningAppId,
ws2AppId: provisionedIds.DIFY_E2E_WS2_APP_ID || E.ws2AppId,
}
From 949364a8a4d2e2c1c07534b263f983dd647a39fa Mon Sep 17 00:00:00 2001
From: goingforstudying-ctrl
Date: Thu, 25 Jun 2026 04:08:53 -0400
Subject: [PATCH 5/8] fix: add reasoningContent and reasoningFinished to
PreviewRunningData type
---
web/app/components/workflow/store/workflow/workflow-slice.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/web/app/components/workflow/store/workflow/workflow-slice.ts b/web/app/components/workflow/store/workflow/workflow-slice.ts
index 5b8eed68ca6..7dfeddf87e3 100644
--- a/web/app/components/workflow/store/workflow/workflow-slice.ts
+++ b/web/app/components/workflow/store/workflow/workflow-slice.ts
@@ -11,6 +11,8 @@ type PreviewRunningData = WorkflowRunningData & {
resultTabActive?: boolean
resultText?: string
resultTextSelectorKey?: string
+ reasoningContent?: Record
+ reasoningFinished?: boolean
// human input form schema or data cached when node is in 'Paused' status
extraContentAndFormData?: Record
}
From 8a5a53c4afc3d10841b99962216c69aeb3dce94a Mon Sep 17 00:00:00 2001
From: goingforstudying-ctrl
Date: Thu, 25 Jun 2026 15:14:48 -0400
Subject: [PATCH 6/8] chore: remove unused useWorkflowReasoning from barrel
export
The hook is only referenced in tests, not production code.
Knip --production flags it as an unused export. Remove it
from the index barrel so the style check passes.
---
.../components/workflow/hooks/use-workflow-run-event/index.ts | 1 -
1 file changed, 1 deletion(-)
diff --git a/web/app/components/workflow/hooks/use-workflow-run-event/index.ts b/web/app/components/workflow/hooks/use-workflow-run-event/index.ts
index 1c64712dfd5..43486873339 100644
--- a/web/app/components/workflow/hooks/use-workflow-run-event/index.ts
+++ b/web/app/components/workflow/hooks/use-workflow-run-event/index.ts
@@ -14,7 +14,6 @@ export * from './use-workflow-node-loop-started'
export * from './use-workflow-node-retry'
export * from './use-workflow-node-started'
export * from './use-workflow-paused'
-export * from './use-workflow-reasoning'
export * from './use-workflow-started'
export * from './use-workflow-text-chunk'
export * from './use-workflow-text-replace'
From 4a9f945ffa6f21c071f824847ba6d814cf90a220 Mon Sep 17 00:00:00 2001
From: goingforstudying-ctrl
Date: Thu, 25 Jun 2026 18:12:04 -0400
Subject: [PATCH 7/8] fix: remove unused use-workflow-reasoning.ts to satisfy
knip dead code check
The PR removed all imports and usages of useWorkflowReasoning from
use-workflow-run-event.ts but left the source file behind. knip's
production dead code check flags this as an unused file. Delete it.
---
.../use-workflow-reasoning.ts | 30 -------------------
1 file changed, 30 deletions(-)
delete mode 100644 web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-reasoning.ts
diff --git a/web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-reasoning.ts b/web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-reasoning.ts
deleted file mode 100644
index 9abfeca0383..00000000000
--- a/web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-reasoning.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import type { ReasoningChunkResponse } from '@/types/workflow'
-import { produce } from 'immer'
-import { useCallback } from 'react'
-import { useWorkflowStore } from '@/app/components/workflow/store'
-
-export const useWorkflowReasoning = () => {
- const workflowStore = useWorkflowStore()
-
- const handleWorkflowReasoning = useCallback((params: ReasoningChunkResponse) => {
- const { data: { reasoning, node_id, is_final } } = params
- const {
- workflowRunningData,
- setWorkflowRunningData,
- } = workflowStore.getState()
-
- setWorkflowRunningData(produce(workflowRunningData!, (draft) => {
- const reasoningContent = (draft.reasoningContent ||= {})
- // key by LLM node so multiple nodes' reasoning stays separated
- const key = node_id || '_'
- if (reasoning)
- reasoningContent[key] = (reasoningContent[key] || '') + reasoning
- if (is_final)
- draft.reasoningFinished = true
- }))
- }, [workflowStore])
-
- return {
- handleWorkflowReasoning,
- }
-}
From 0446dc3b1aff678b90bd885f7d9a8d3471c5e40a Mon Sep 17 00:00:00 2001
From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com>
Date: Thu, 25 Jun 2026 22:17:33 +0000
Subject: [PATCH 8/8] [autofix.ci] apply automated fixes
---
eslint-suppressions.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/eslint-suppressions.json b/eslint-suppressions.json
index 9d144e4bf0e..e00a1c2a1a3 100644
--- a/eslint-suppressions.json
+++ b/eslint-suppressions.json
@@ -4876,7 +4876,7 @@
},
"web/app/components/workflow/hooks/use-workflow-run-event/index.ts": {
"no-barrel-files/no-barrel-files": {
- "count": 20
+ "count": 19
}
},
"web/app/components/workflow/hooks/use-workflow-run-event/use-workflow-agent-log.ts": {