mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-22 04:06:18 +00:00
Check debug (#4384)
* feat : Added support for interactive nodes in the debugging interface (#4339)
* feat: add VSCode launch configuration and enhance debug API handler
* feat: refactor debug API handler to streamline workflow processing and enhance interactive chat features
* feat: enhance debug API handler with structured input forms and improved query handling
* feat: enhance debug API handler to support optional query and histories parameters
* feat: simplify query and histories initialization in debug API handler
* feat: add realmode parameter to workflow dispatch and update interactive handling
* feat: add optional query parameter to PostWorkflowDebugProps and remove realmode from ModuleDispatchProps
* feat: add history parameter to PostWorkflowDebugProps and update related components
* feat: remove realmode
* feat: simplify handler parameter destructuring in debug.ts
* feat: remove unused interactive prop from WholeResponseContent component
* feat: refactor onNextNodeDebug to use parameter object for better readability
* feat: Merge selections and next actions to remove unused state management
* feat: 添加 NodeDebugResponse 组件以增强调试功能
* feat: Simplify the import statements in InteractiveComponents.tsx
* feat: Update the handler function to use default parameters to simplify the code
* feat: Add optional workflowInteractiveResponse field to PostWorkflowDebugResponse type
* feat: Add the workflowInteractiveResponse field in the debugging handler to enhance response capabilities
* feat: Added workflowInteractiveResponse field in FlowNodeItemType to enhance responsiveness
* feat: Refactor NodeDebugResponse to utilize workflowInteractiveResponse for improved interactivity
* feat: Extend UserSelectInteractive and UserInputInteractive types to inherit from InteractiveBasicType
* feat: Refactor NodeDebugResponse to streamline interactive handling and improve code clarity
* feat: 重构交互式调试逻辑,创建共用 Hook 以简化用户选择和输入处理
* fix: type error
* feat: 重构 AIResponseBox 组件,简化用户交互逻辑并引入共用表单组件
* feat: 清理 AIResponseBox 和表单组件代码,移除冗余注释和未使用的导入
* fix: type error
* feat: 重构 AIResponseBox 组件,简化类型定义并优化代码结构
* refactor: 将 FormItem 接口更改为类型定义,优化代码结构
* refactor: 将 NodeDebugResponseProps 接口更改为类型定义,优化代码结构
* refactor: 移除不必要的入口节点检查,简化调试处理逻辑
* feat: 移动调试交互组件位置
* refactor: 将 InteractiveBasicType 中的属性设为可选,简化数据结构
* refactor: 优化类型定义
* refactor: 移除未使用的 ChatItemType 和 UserChatItemValueItemType 导入
* refactor: 将接口定义更改为类型别名,简化代码结构
* refactor: 更新类型定义,使用类型别名简化代码结构
* refactor: 使用类型导入简化代码结构,重构 AIResponseBox 组件
* refactor: 提取描述框和表单项标签组件,简化代码结构
* refactor: 移除多余的空行
* refactor: 移除多余的空行和注释
* refactor: 移除多余的空行,简化 AIResponseBox 组件代码
* refactor: 重构组件,移动 FormComponents 到 InteractiveComponents,简化代码结构
* refactor: 移除多余的空行,简化 NodeDebugResponse 组件代码
* refactor: 更新导入语句,使用 type 关键字优化类型导入
* refactor: 在 tsconfig.json 中启用 verbatimModuleSyntax 选项
* Revert "refactor: 在 tsconfig.json 中启用 verbatimModuleSyntax 选项"
This reverts commit 2b335a9938
.
* revert: rendertool
* refactor: Remove unused imports and functions to simplify code
* perf: debug interactive
---------
Co-authored-by: Theresa <63280168+sd0ric4@users.noreply.github.com>
This commit is contained in:
@@ -44,14 +44,14 @@ import {
|
||||
textAdaptGptResponse,
|
||||
replaceEditorVariable
|
||||
} from '@fastgpt/global/core/workflow/runtime/utils';
|
||||
import { ChatNodeUsageType } from '@fastgpt/global/support/wallet/bill/type';
|
||||
import type { ChatNodeUsageType } from '@fastgpt/global/support/wallet/bill/type';
|
||||
import { dispatchRunTools } from './agent/runTool/index';
|
||||
import { ChatItemValueTypeEnum } from '@fastgpt/global/core/chat/constants';
|
||||
import { DispatchFlowResponse } from './type';
|
||||
import type { DispatchFlowResponse } from './type';
|
||||
import { dispatchStopToolCall } from './agent/runTool/stopTool';
|
||||
import { dispatchLafRequest } from './tools/runLaf';
|
||||
import { dispatchIfElse } from './tools/runIfElse';
|
||||
import { RuntimeEdgeItemType } from '@fastgpt/global/core/workflow/type/edge';
|
||||
import type { RuntimeEdgeItemType } from '@fastgpt/global/core/workflow/type/edge';
|
||||
import { getReferenceVariableValue } from '@fastgpt/global/core/workflow/runtime/utils';
|
||||
import { dispatchSystemConfig } from './init/systemConfig';
|
||||
import { dispatchUpdateVariable } from './tools/runUpdateVar';
|
||||
@@ -62,7 +62,7 @@ import { dispatchTextEditor } from './tools/textEditor';
|
||||
import { dispatchCustomFeedback } from './tools/customFeedback';
|
||||
import { dispatchReadFiles } from './tools/readFiles';
|
||||
import { dispatchUserSelect } from './interactive/userSelect';
|
||||
import {
|
||||
import type {
|
||||
WorkflowInteractiveResponseType,
|
||||
InteractiveNodeResponseType
|
||||
} from '@fastgpt/global/core/workflow/template/system/interactive/type';
|
||||
@@ -451,6 +451,11 @@ export async function dispatchWorkFlow(data: Props): Promise<DispatchFlowRespons
|
||||
const interactiveResponse = nodeRunResult.result?.[DispatchNodeResponseKeyEnum.interactive];
|
||||
if (interactiveResponse) {
|
||||
pushStore(nodeRunResult.node, nodeRunResult.result);
|
||||
|
||||
if (props.mode === 'debug') {
|
||||
debugNextStepRunNodes = debugNextStepRunNodes.concat([nodeRunResult.node]);
|
||||
}
|
||||
|
||||
nodeInteractiveResponse = {
|
||||
entryNodeIds: [nodeRunResult.node.nodeId],
|
||||
interactiveResponse
|
||||
|
@@ -1,11 +1,11 @@
|
||||
import { chatValue2RuntimePrompt } from '@fastgpt/global/core/chat/adapt';
|
||||
import { NodeInputKeyEnum, NodeOutputKeyEnum } from '@fastgpt/global/core/workflow/constants';
|
||||
import { DispatchNodeResponseKeyEnum } from '@fastgpt/global/core/workflow/runtime/constants';
|
||||
import {
|
||||
import type {
|
||||
DispatchNodeResultType,
|
||||
ModuleDispatchProps
|
||||
} from '@fastgpt/global/core/workflow/runtime/type';
|
||||
import {
|
||||
import type {
|
||||
UserInputFormItemType,
|
||||
UserInputInteractive
|
||||
} from '@fastgpt/global/core/workflow/template/system/interactive/type';
|
||||
@@ -32,7 +32,6 @@ export const dispatchFormInput = async (props: Props): Promise<FormInputResponse
|
||||
query
|
||||
} = props;
|
||||
const { isEntry } = node;
|
||||
|
||||
const interactive = getLastInteractiveValue(histories);
|
||||
|
||||
// Interactive node is not the entry node, return interactive result
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { DispatchNodeResponseKeyEnum } from '@fastgpt/global/core/workflow/runtime/constants';
|
||||
import {
|
||||
import type {
|
||||
DispatchNodeResultType,
|
||||
ModuleDispatchProps
|
||||
} from '@fastgpt/global/core/workflow/runtime/type';
|
||||
@@ -30,7 +30,6 @@ export const dispatchUserSelect = async (props: Props): Promise<UserSelectRespon
|
||||
query
|
||||
} = props;
|
||||
const { nodeId, isEntry } = node;
|
||||
|
||||
const interactive = getLastInteractiveValue(histories);
|
||||
|
||||
// Interactive node is not the entry node, return interactive result
|
||||
|
@@ -106,7 +106,7 @@ export const getHistories = (history?: ChatItemType[] | number, histories: ChatI
|
||||
/* value type format */
|
||||
export const valueTypeFormat = (value: any, type?: WorkflowIOValueTypeEnum) => {
|
||||
if (value === undefined) return;
|
||||
if (!type) return value;
|
||||
if (!type || type === WorkflowIOValueTypeEnum.any) return value;
|
||||
|
||||
if (type === 'string') {
|
||||
if (typeof value !== 'object') return String(value);
|
||||
@@ -118,7 +118,7 @@ export const valueTypeFormat = (value: any, type?: WorkflowIOValueTypeEnum) => {
|
||||
return Boolean(value);
|
||||
}
|
||||
try {
|
||||
if (WorkflowIOValueTypeEnum.arrayString && typeof value === 'string') {
|
||||
if (type === WorkflowIOValueTypeEnum.arrayString && typeof value === 'string') {
|
||||
return [value];
|
||||
}
|
||||
if (
|
||||
|
Reference in New Issue
Block a user