@digitalsee-ai/rcs 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/components/digitalsee/workflow/Canvas/FlowVersionManager.d.ts +15 -0
  2. package/dist/components/digitalsee/workflow/Canvas/WorkflowCanvas.test.d.ts +1 -0
  3. package/dist/components/digitalsee/workflow/Canvas/WorkflowCanvasHeader.d.ts +3 -1
  4. package/dist/components/digitalsee/workflow/Canvas/actionItemToNodeData.d.ts +14 -0
  5. package/dist/components/digitalsee/workflow/Canvas/constants.d.ts +4 -20
  6. package/dist/components/digitalsee/workflow/Canvas/constants.test.d.ts +1 -0
  7. package/dist/components/digitalsee/workflow/Canvas/flowPayload.d.ts +4 -0
  8. package/dist/components/digitalsee/workflow/Canvas/hooks/classicNodeAddConnection.d.ts +31 -0
  9. package/dist/components/digitalsee/workflow/Canvas/hooks/classicNodeAddConnection.test.d.ts +1 -0
  10. package/dist/components/digitalsee/workflow/Canvas/hooks/createNodeAddHandlerNext.d.ts +1 -16
  11. package/dist/components/digitalsee/workflow/Canvas/hooks/useCanvasApi.d.ts +1 -1
  12. package/dist/components/digitalsee/workflow/Canvas/hooks/useNodeAddCallback.d.ts +4 -17
  13. package/dist/components/digitalsee/workflow/Canvas/hooks/useSaveFlowAfterNodeAdd.d.ts +9 -0
  14. package/dist/components/digitalsee/workflow/Canvas/hooks/useWorkflowCanvasState.d.ts +4 -2
  15. package/dist/components/digitalsee/workflow/Canvas/types.d.ts +8 -1
  16. package/dist/components/digitalsee/workflow/Handles/CustomHandle.d.ts +3 -0
  17. package/dist/components/digitalsee/workflow/Handles/customHandleConnectable.d.ts +35 -0
  18. package/dist/components/digitalsee/workflow/Handles/customHandleConnectable.test.d.ts +1 -0
  19. package/dist/components/digitalsee/workflow/Nodes/ConditionNode.d.ts +1 -1
  20. package/dist/components/digitalsee/workflow/Nodes/SuperBaseNode.d.ts +6 -1
  21. package/dist/components/digitalsee/workflow/Nodes/SwitchNode.d.ts +2 -2
  22. package/dist/components/digitalsee/workflow/Nodes/classicNodePackageNodes.test.d.ts +1 -0
  23. package/dist/components/digitalsee/workflow/Nodes/classicNodePackagePortLayout.d.ts +23 -0
  24. package/dist/components/digitalsee/workflow/Nodes/classicNodePackagePortLayout.test.d.ts +1 -0
  25. package/dist/components/digitalsee/workflow/Nodes/useClassicNodePackagePorts.d.ts +27 -0
  26. package/dist/components/digitalsee/workflow/Nodes/useClassicNodePackagePorts.test.d.ts +1 -0
  27. package/dist/components/digitalsee/workflow/NodesConfig/ActionNodeConfig/index.d.ts +1 -0
  28. package/dist/components/digitalsee/workflow/NodesConfig/NextNodeConfig/WorkflowNodeSchemaFieldProvider.d.ts +3 -0
  29. package/dist/components/digitalsee/workflow/NodesConfig/NextNodeConfig/fields/WorkflowCodeField.d.ts +1 -0
  30. package/dist/components/digitalsee/workflow/NodesConfig/NextNodeConfig/fields/WorkflowCodeField.test.d.ts +1 -0
  31. package/dist/components/digitalsee/workflow/NodesConfig/NextNodeConfig/fields/WorkflowProxyField.d.ts +1 -0
  32. package/dist/components/digitalsee/workflow/NodesConfig/NextNodeConfig/proxyField.d.ts +18 -0
  33. package/dist/components/digitalsee/workflow/NodesConfig/NextNodeConfig/proxyField.test.d.ts +1 -0
  34. package/dist/components/digitalsee/workflow/NodesConfig/components/EditInOnlineIDE/index.d.ts +2 -0
  35. package/dist/components/digitalsee/workflow/NodesConfig/components/FormFieldRenderer/index.d.ts +1 -0
  36. package/dist/components/digitalsee/workflow/NodesConfig/components/online-ide/components/title/index.d.ts +5 -1
  37. package/dist/components/digitalsee/workflow/NodesConfig/components/online-ide/index.d.ts +2 -0
  38. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/components/EntryTypeSelector.d.ts +8 -0
  39. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/components/NodeCardList.d.ts +19 -0
  40. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useCategories.d.ts +6 -2
  41. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useCategories.test.d.ts +1 -0
  42. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useConnectableNodeSelector.d.ts +40 -0
  43. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useNavigation.d.ts +4 -2
  44. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useNavigation.test.d.ts +1 -0
  45. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useNodeActionState.d.ts +30 -0
  46. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useNodeSelectorPresentation.d.ts +25 -0
  47. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/hooks/useNodeSelectorPresentation.test.d.ts +1 -0
  48. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/types.d.ts +19 -1
  49. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableActionLoader.d.ts +16 -0
  50. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableActionLoader.test.d.ts +1 -0
  51. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableDataSource.d.ts +15 -0
  52. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableDataSource.test.d.ts +1 -0
  53. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableFallback.d.ts +2 -0
  54. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableFallback.test.d.ts +1 -0
  55. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableQuery.d.ts +40 -0
  56. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableQuery.test.d.ts +1 -0
  57. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableResponse.d.ts +35 -0
  58. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/connectableResponse.test.d.ts +1 -0
  59. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/dataTransformers.d.ts +13 -2
  60. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/filterEdgeInsertActions.d.ts +62 -0
  61. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/filterEdgeInsertActions.test.d.ts +1 -0
  62. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/nodeAddContext.d.ts +26 -0
  63. package/dist/components/digitalsee/workflow/Panels/ModernNodeSelectorPanel/utils/nodeAddContext.test.d.ts +1 -0
  64. package/dist/components/digitalsee/workflow/api/connectable.test.d.ts +1 -0
  65. package/dist/components/digitalsee/workflow/api/connectable.types.d.ts +75 -0
  66. package/dist/components/digitalsee/workflow/api/dip.types.d.ts +43 -3
  67. package/dist/components/digitalsee/workflow/api/index.d.ts +28 -1
  68. package/dist/components/digitalsee/workflow/config/defaultCanvasEngineConfig.test.d.ts +1 -0
  69. package/dist/components/digitalsee/workflow/config/defaultNodeSelectorConfig.d.ts +9 -0
  70. package/dist/components/digitalsee/workflow/events/eventBus.d.ts +2 -12
  71. package/dist/components/digitalsee/workflow/hooks/usePanel.d.ts +3 -17
  72. package/dist/components/digitalsee/workflow/index.d.ts +3 -1
  73. package/dist/components/digitalsee/workflow/store/panelSlice.d.ts +118 -41
  74. package/dist/components/digitalsee/workflow/store/workflowSlice.d.ts +2 -1
  75. package/dist/components/digitalsee/workflow/types/Node.d.ts +3 -3
  76. package/dist/components/digitalsee/workflow/types/NodeAddContext.d.ts +31 -0
  77. package/dist/components/digitalsee/workflow/types/engine.d.ts +21 -1
  78. package/dist/components/digitalsee/workflow/types/flowVersion.d.ts +53 -0
  79. package/dist/components/digitalsee/workflow/utils/classicNodeActionIdentity.d.ts +7 -0
  80. package/dist/components/digitalsee/workflow/utils/classicNodeActionIdentity.test.d.ts +1 -0
  81. package/dist/components/digitalsee/workflow/utils/classicNodePackageConnection.d.ts +28 -0
  82. package/dist/components/digitalsee/workflow/utils/classicNodePackageConnection.test.d.ts +1 -0
  83. package/dist/components/digitalsee/workflow/utils/classicNodePackageGraphValidation.d.ts +29 -0
  84. package/dist/components/digitalsee/workflow/utils/classicNodePackageGraphValidation.test.d.ts +1 -0
  85. package/dist/components/digitalsee/workflow/utils/compatiblePortSelection.d.ts +79 -0
  86. package/dist/components/digitalsee/workflow/utils/compatiblePortSelection.test.d.ts +1 -0
  87. package/dist/components/digitalsee/workflow/utils/nextNodeSchemaCache.d.ts +8 -0
  88. package/dist/components/digitalsee/workflow/utils/nodeDataFormatter.test.d.ts +1 -0
  89. package/dist/components/digitalsee/workflow/utils/portConnectionValidationMessages.d.ts +48 -0
  90. package/dist/components/digitalsee/workflow/utils/portConnectionValidationMessages.test.d.ts +1 -0
  91. package/dist/components/digitalsee/workflow/utils/portConnectionValidator.d.ts +66 -0
  92. package/dist/components/digitalsee/workflow/utils/portConnectionValidator.test.d.ts +1 -0
  93. package/dist/components/digitalsee/workflow/utils/switchNodePackage.d.ts +43 -0
  94. package/dist/components/digitalsee/workflow/utils/switchNodePackage.test.d.ts +1 -0
  95. package/dist/components/digitalsee/workflow/utils/workflowConnectionValidator.d.ts +20 -0
  96. package/dist/components/digitalsee/workflow/utils/workflowConnectionValidator.test.d.ts +1 -0
  97. package/dist/components/dynamic-form/DynamicForm.d.ts +7 -1
  98. package/dist/components/dynamic-form/components/ValueModeWrapper/ValueModePolicy.test.d.ts +1 -0
  99. package/dist/components/dynamic-form/components/ValueModeWrapper/index.d.ts +23 -3
  100. package/dist/components/dynamic-form/registry/createFieldComponent.d.ts +4 -4
  101. package/dist/components/dynamic-form/types/field-component.d.ts +1 -1
  102. package/dist/components/dynamic-form/types/form-schema.d.ts +10 -1
  103. package/dist/index-DVB8Tfvb.mjs +63909 -0
  104. package/dist/index-DVB8Tfvb.mjs.map +1 -0
  105. package/dist/index-DuXBchhk.mjs +312 -0
  106. package/dist/index-DuXBchhk.mjs.map +1 -0
  107. package/dist/locales/en-US/common.d.ts +52 -0
  108. package/dist/locales/en-US/link/flow.d.ts +25 -0
  109. package/dist/locales/en-US.d.ts +77 -0
  110. package/dist/locales/zh-CN/common.d.ts +52 -0
  111. package/dist/locales/zh-CN/link/flow.d.ts +25 -0
  112. package/dist/locales/zh-CN.d.ts +77 -0
  113. package/dist/locales/zh-TW/common.d.ts +52 -0
  114. package/dist/locales/zh-TW/link/flow.d.ts +25 -0
  115. package/dist/locales/zh-TW.d.ts +77 -0
  116. package/dist/rcs.css +1 -1
  117. package/dist/rcs.es.js +60 -61089
  118. package/dist/rcs.es.js.map +1 -1
  119. package/dist/rcs.umd.js +65 -65
  120. package/dist/rcs.umd.js.map +1 -1
  121. package/package.json +1 -1
@@ -1,23 +1,9 @@
1
1
  import { ActionItem } from '../Panels/ModernNodeSelectorPanel/types';
2
- export interface NodeAddInfo {
3
- sourceNodeId?: string;
4
- sourceHandle?: string;
5
- targetNodeId?: string;
6
- targetHandle?: string;
7
- position?: {
8
- x: number;
9
- y: number;
10
- };
11
- edge?: any;
12
- sourceNode?: any;
13
- targetNode?: any;
14
- trigger?: boolean;
15
- protocol?: string;
16
- refresh?: boolean;
17
- }
2
+ import { NodeAddInfo } from '../types/NodeAddContext';
3
+ export type { NodeAddInfo } from '../types/NodeAddContext';
18
4
  export declare function usePanel(): {
19
5
  nodeSelectorVisible: boolean;
20
- nodeAddInfo: import('../store/panelSlice').NodeAddInfo;
6
+ nodeAddInfo: NodeAddInfo;
21
7
  openNodeSelector: (info: NodeAddInfo) => void;
22
8
  closeNodeSelector: () => void;
23
9
  handleNodeSelect: (nodeType: ActionItem) => void;
@@ -2,6 +2,7 @@ import { default as defaultCanvasEngineConfig } from './config/defaultCanvasEngi
2
2
  import { CanvasEngineConfig, DeepPartial, CanvasAPI, HistoryNavigator, HttpClient } from './types/engine';
3
3
  import { mergeConfig } from './utils/mergeConfig';
4
4
  import { EngineMode } from './enums/workflow';
5
+ import { FlowDraftPayload } from './types/flowVersion';
5
6
  import { LocaleType } from '../../../locales';
6
7
  /**
7
8
  * DigitalseeWorkFlow 组件对外暴露的属性定义
@@ -44,7 +45,7 @@ export interface DigitalseeWorkFlowProps {
44
45
  *
45
46
  * @param workflow 当前工作流数据
46
47
  */
47
- onSave?: (workflow: any) => void;
48
+ onSave?: (workflow: FlowDraftPayload) => void | Promise<void>;
48
49
  /**
49
50
  * 画布初始化回调
50
51
  *
@@ -117,6 +118,7 @@ export { useWorkflow } from './hooks/useWorkflow';
117
118
  export { default as NodeFactory } from './Nodes/NodeFactory';
118
119
  export * from './types/Edge';
119
120
  export type { CanvasAPI, CanvasEngineConfig, DeepPartial, HistoryNavigator, HttpClient, } from './types/engine';
121
+ export * from './types/flowVersion';
120
122
  export * from './types/Node';
121
123
  export * from './types/Workflow';
122
124
  export type { LocaleType as WorkflowLocale, TranslateFn as WorkflowTranslateFn, } from '../../../locales';
@@ -1,21 +1,6 @@
1
1
  import { PayloadAction } from '@reduxjs/toolkit';
2
2
  import { ActionItem, NodeTypeItem } from '../Panels/ModernNodeSelectorPanel/types';
3
- export interface NodeAddInfo {
4
- sourceNodeId: string;
5
- sourceHandle: string;
6
- targetNodeId?: string;
7
- targetHandle?: string;
8
- position: {
9
- x: number;
10
- y: number;
11
- };
12
- edge?: any;
13
- sourceNode?: any;
14
- targetNode?: any;
15
- trigger?: boolean;
16
- protocol?: string;
17
- refresh?: boolean;
18
- }
3
+ import { NodeAddInfo } from '../types/NodeAddContext';
19
4
  type NodeAddCallback = ((info: NodeAddInfo, nodeType: ActionItem) => void) | null;
20
5
  export interface PanelState {
21
6
  nodeSelectorVisible: boolean;
@@ -26,17 +11,40 @@ export declare const panelSlice: import('@reduxjs/toolkit').Slice<PanelState, {
26
11
  openNodeSelector: (state: {
27
12
  nodeSelectorVisible: boolean;
28
13
  nodeAddInfo: {
29
- sourceNodeId: string;
30
- sourceHandle: string;
14
+ sourceNodeId?: string;
15
+ sourceHandle?: string;
31
16
  targetNodeId?: string;
32
17
  targetHandle?: string;
33
- position: {
18
+ position?: {
34
19
  x: number;
35
20
  y: number;
36
21
  };
37
- edge?: any;
38
- sourceNode?: any;
39
- targetNode?: any;
22
+ edge?: {
23
+ id: string;
24
+ source: string;
25
+ target: string;
26
+ sourceHandle?: string | null;
27
+ sourceHandleId?: string | null;
28
+ targetHandle?: string | null;
29
+ targetHandleId?: string | null;
30
+ data?: {
31
+ [x: string]: unknown;
32
+ };
33
+ };
34
+ sourceNode?: {
35
+ data: {
36
+ [x: string]: unknown;
37
+ };
38
+ id: string;
39
+ type?: string;
40
+ };
41
+ targetNode?: {
42
+ data: {
43
+ [x: string]: unknown;
44
+ };
45
+ id: string;
46
+ type?: string;
47
+ };
40
48
  trigger?: boolean;
41
49
  protocol?: string;
42
50
  refresh?: boolean;
@@ -46,17 +54,40 @@ export declare const panelSlice: import('@reduxjs/toolkit').Slice<PanelState, {
46
54
  closeNodeSelector: (state: {
47
55
  nodeSelectorVisible: boolean;
48
56
  nodeAddInfo: {
49
- sourceNodeId: string;
50
- sourceHandle: string;
57
+ sourceNodeId?: string;
58
+ sourceHandle?: string;
51
59
  targetNodeId?: string;
52
60
  targetHandle?: string;
53
- position: {
61
+ position?: {
54
62
  x: number;
55
63
  y: number;
56
64
  };
57
- edge?: any;
58
- sourceNode?: any;
59
- targetNode?: any;
65
+ edge?: {
66
+ id: string;
67
+ source: string;
68
+ target: string;
69
+ sourceHandle?: string | null;
70
+ sourceHandleId?: string | null;
71
+ targetHandle?: string | null;
72
+ targetHandleId?: string | null;
73
+ data?: {
74
+ [x: string]: unknown;
75
+ };
76
+ };
77
+ sourceNode?: {
78
+ data: {
79
+ [x: string]: unknown;
80
+ };
81
+ id: string;
82
+ type?: string;
83
+ };
84
+ targetNode?: {
85
+ data: {
86
+ [x: string]: unknown;
87
+ };
88
+ id: string;
89
+ type?: string;
90
+ };
60
91
  trigger?: boolean;
61
92
  protocol?: string;
62
93
  refresh?: boolean;
@@ -66,17 +97,40 @@ export declare const panelSlice: import('@reduxjs/toolkit').Slice<PanelState, {
66
97
  setNodeAddCallback: (state: {
67
98
  nodeSelectorVisible: boolean;
68
99
  nodeAddInfo: {
69
- sourceNodeId: string;
70
- sourceHandle: string;
100
+ sourceNodeId?: string;
101
+ sourceHandle?: string;
71
102
  targetNodeId?: string;
72
103
  targetHandle?: string;
73
- position: {
104
+ position?: {
74
105
  x: number;
75
106
  y: number;
76
107
  };
77
- edge?: any;
78
- sourceNode?: any;
79
- targetNode?: any;
108
+ edge?: {
109
+ id: string;
110
+ source: string;
111
+ target: string;
112
+ sourceHandle?: string | null;
113
+ sourceHandleId?: string | null;
114
+ targetHandle?: string | null;
115
+ targetHandleId?: string | null;
116
+ data?: {
117
+ [x: string]: unknown;
118
+ };
119
+ };
120
+ sourceNode?: {
121
+ data: {
122
+ [x: string]: unknown;
123
+ };
124
+ id: string;
125
+ type?: string;
126
+ };
127
+ targetNode?: {
128
+ data: {
129
+ [x: string]: unknown;
130
+ };
131
+ id: string;
132
+ type?: string;
133
+ };
80
134
  trigger?: boolean;
81
135
  protocol?: string;
82
136
  refresh?: boolean;
@@ -86,17 +140,40 @@ export declare const panelSlice: import('@reduxjs/toolkit').Slice<PanelState, {
86
140
  executeNodeAddCallback: (state: {
87
141
  nodeSelectorVisible: boolean;
88
142
  nodeAddInfo: {
89
- sourceNodeId: string;
90
- sourceHandle: string;
143
+ sourceNodeId?: string;
144
+ sourceHandle?: string;
91
145
  targetNodeId?: string;
92
146
  targetHandle?: string;
93
- position: {
147
+ position?: {
94
148
  x: number;
95
149
  y: number;
96
150
  };
97
- edge?: any;
98
- sourceNode?: any;
99
- targetNode?: any;
151
+ edge?: {
152
+ id: string;
153
+ source: string;
154
+ target: string;
155
+ sourceHandle?: string | null;
156
+ sourceHandleId?: string | null;
157
+ targetHandle?: string | null;
158
+ targetHandleId?: string | null;
159
+ data?: {
160
+ [x: string]: unknown;
161
+ };
162
+ };
163
+ sourceNode?: {
164
+ data: {
165
+ [x: string]: unknown;
166
+ };
167
+ id: string;
168
+ type?: string;
169
+ };
170
+ targetNode?: {
171
+ data: {
172
+ [x: string]: unknown;
173
+ };
174
+ id: string;
175
+ type?: string;
176
+ };
100
177
  trigger?: boolean;
101
178
  protocol?: string;
102
179
  refresh?: boolean;
@@ -104,6 +181,6 @@ export declare const panelSlice: import('@reduxjs/toolkit').Slice<PanelState, {
104
181
  nodeAddCallback: NodeAddCallback;
105
182
  }, action: PayloadAction<NodeTypeItem>) => void;
106
183
  }, "panel", "panel", import('@reduxjs/toolkit').SliceSelectors<PanelState>>;
107
- export declare const openNodeSelector: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<NodeAddInfo, "panel/openNodeSelector">, closeNodeSelector: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"panel/closeNodeSelector">, setNodeAddCallback: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<(info: NodeAddInfo, nodeType: ActionItem) => void, "panel/setNodeAddCallback">, executeNodeAddCallback: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<NodeTypeItem, "panel/executeNodeAddCallback">;
184
+ export declare const openNodeSelector: import('@reduxjs/toolkit').ActionCreatorWithNonInferrablePayload<"panel/openNodeSelector">, closeNodeSelector: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"panel/closeNodeSelector">, setNodeAddCallback: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<(info: NodeAddInfo, nodeType: ActionItem) => void, "panel/setNodeAddCallback">, executeNodeAddCallback: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<NodeTypeItem, "panel/executeNodeAddCallback">;
108
185
  declare const _default: import('@reduxjs/toolkit').Reducer<PanelState>;
109
186
  export default _default;
@@ -22,6 +22,7 @@ export interface WorkflowState {
22
22
  currentNodeConfigVisibleId: string | null;
23
23
  isLocked: boolean;
24
24
  executionControl: ExecutionControlState | null;
25
+ flowMetadata: Record<string, unknown>;
25
26
  }
26
27
  export declare const setWorkflowId: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<string, "workflow/setWorkflowId">, setWorkflowName: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<string, "workflow/setWorkflowName">, applyNodesChanges: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<NodeChange[], "workflow/applyNodesChanges">, applyEdgesChanges: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<EdgeChange[], "workflow/applyEdgesChanges">, addConnection: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<Connection, "workflow/addConnection">, addNode: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
27
28
  type: NodeType;
@@ -39,6 +40,6 @@ export declare const setWorkflowId: import('@reduxjs/toolkit').ActionCreatorWith
39
40
  }, "workflow/updateEdge">, setNodes: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<Node<NodeData>[], "workflow/setNodes">, setEdges: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<Edge<EdgeData>[], "workflow/setEdges">, updateNode: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<{
40
41
  id: string;
41
42
  data: Partial<NodeData>;
42
- }, "workflow/updateNode">, setFlowOpStatus: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<FlowStatus, "workflow/setFlowOpStatus">, refreshFlow: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"workflow/refreshFlow">, setCurrentNodeConfigVisibleId: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<string, "workflow/setCurrentNodeConfigVisibleId">, setLocked: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<boolean, "workflow/setLocked">, setExecutionControl: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<ExecutionControlState, "workflow/setExecutionControl">, resetFlow: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"workflow/resetFlow">, executeAutoSave: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"workflow/executeAutoSave">;
43
+ }, "workflow/updateNode">, setFlowOpStatus: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<FlowStatus, "workflow/setFlowOpStatus">, refreshFlow: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"workflow/refreshFlow">, setCurrentNodeConfigVisibleId: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<string, "workflow/setCurrentNodeConfigVisibleId">, setLocked: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<boolean, "workflow/setLocked">, setExecutionControl: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<ExecutionControlState, "workflow/setExecutionControl">, setFlowMetadata: import('@reduxjs/toolkit').ActionCreatorWithOptionalPayload<Record<string, unknown>, "workflow/setFlowMetadata">, resetFlow: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"workflow/resetFlow">, executeAutoSave: import('@reduxjs/toolkit').ActionCreatorWithoutPayload<"workflow/executeAutoSave">;
43
44
  declare const _default: import('@reduxjs/toolkit').Reducer<WorkflowState>;
44
45
  export default _default;
@@ -1,7 +1,7 @@
1
- import { Node as ReactFlowNode } from '@xyflow/react';
2
1
  import { ActionItem } from '../Panels/ModernNodeSelectorPanel/types';
2
+ import { Node as ReactFlowNode } from '@xyflow/react';
3
3
  import { NodeStatus } from '../enums/node';
4
- export { NodeType, NodeStatus } from '../enums/node';
4
+ export { NodeStatus, NodeType } from '../enums/node';
5
5
  export type NodeData = ActionItem & {
6
6
  connector_name: string;
7
7
  description: string;
@@ -22,7 +22,7 @@ export type NodeData = ActionItem & {
22
22
  /** 动作 ID */
23
23
  action_id?: string;
24
24
  /** 连接器 ID */
25
- connector_id?: string;
25
+ connector_id?: string | null;
26
26
  /** 后端节点 ID */
27
27
  n_id?: string;
28
28
  /** 账号 ID */
@@ -0,0 +1,31 @@
1
+ import { Node } from '@xyflow/react';
2
+ /** 节点选择器只需保留 MCP 判定需要的轻量锚点信息,避免 Redux 声明泄漏 ReactFlow 样式类型。 */
3
+ export type NodeAddAnchorNode = Pick<Node, 'id' | 'type' | 'data'>;
4
+ /** 边上插入节点时保留的原边上下文。 */
5
+ export interface NodeAddEdgeContext {
6
+ id: string;
7
+ source: string;
8
+ target: string;
9
+ sourceHandle?: string | null;
10
+ sourceHandleId?: string | null;
11
+ targetHandle?: string | null;
12
+ targetHandleId?: string | null;
13
+ data?: Record<string, unknown>;
14
+ }
15
+ /** 节点选择器与节点创建回调共享的唯一新增上下文。 */
16
+ export interface NodeAddInfo {
17
+ sourceNodeId?: string;
18
+ sourceHandle?: string;
19
+ targetNodeId?: string;
20
+ targetHandle?: string;
21
+ position?: {
22
+ x: number;
23
+ y: number;
24
+ };
25
+ edge?: NodeAddEdgeContext;
26
+ sourceNode?: NodeAddAnchorNode;
27
+ targetNode?: NodeAddAnchorNode;
28
+ trigger?: boolean;
29
+ protocol?: string;
30
+ refresh?: boolean;
31
+ }
@@ -18,6 +18,7 @@ export interface CanvasEngineConfig {
18
18
  flowId: string;
19
19
  engineMode?: EngineMode;
20
20
  canvas: CanvasCoreConfig;
21
+ nodeSelector: NodeSelectorConfig;
21
22
  nodeTypes: NodeTypesRegistryConfig;
22
23
  edgeRules: EdgeRulesConfig;
23
24
  toolbar: ToolbarConfig;
@@ -25,6 +26,20 @@ export interface CanvasEngineConfig {
25
26
  httpClient?: HttpClient;
26
27
  history?: HistoryNavigator;
27
28
  }
29
+ /**
30
+ * NodePackage 可连线候选能力配置。
31
+ *
32
+ * 默认关闭,由 CLASSIC/ACM 宿主显式启用,便于在接口联调异常时快速回退旧候选链路。
33
+ */
34
+ export interface NodeSelectorConnectableConfig {
35
+ enabled: boolean;
36
+ scene: string;
37
+ fallbackToLegacy: boolean;
38
+ debug: boolean;
39
+ }
40
+ export interface NodeSelectorConfig {
41
+ connectable: NodeSelectorConnectableConfig;
42
+ }
28
43
  type NativeReactFLowProps = ComponentProps<typeof ReactFlow>;
29
44
  export interface RegisterComponents {
30
45
  form: {
@@ -151,6 +166,11 @@ export interface ToolbarConfig {
151
166
  * 自定义下线API,用于自定义MFA流程下线
152
167
  */
153
168
  customOfflineApi?: (workflowId: string) => Promise<void>;
169
+ /** 连接流版本管理,仅 CLASSIC/ACM 画布支持。 */
170
+ versionManagement?: {
171
+ enabled?: boolean;
172
+ canManage?: boolean;
173
+ };
154
174
  }
155
175
  export interface ToolbarButtonConfig {
156
176
  id: string;
@@ -256,6 +276,6 @@ export interface CanvasAPI {
256
276
  * @param handler 事件处理器
257
277
  */
258
278
  once<T = any>(event: CanvasEventType, handler: CanvasEventHandler<T>): void;
259
- saveFlow(): Promise<void>;
279
+ saveFlow(): Promise<import('./flowVersion').FlowDraftPayload | undefined>;
260
280
  }
261
281
  export {};
@@ -0,0 +1,53 @@
1
+ /** 连接流草稿发布所需的完整数据。 */
2
+ export interface FlowDraftPayload {
3
+ id: string;
4
+ name: string;
5
+ description?: string;
6
+ business_type?: number;
7
+ flow_type?: number;
8
+ op_status?: string;
9
+ status?: string;
10
+ connections: unknown[];
11
+ nodes: unknown[];
12
+ execution_control?: unknown;
13
+ [key: string]: unknown;
14
+ }
15
+ /** 发布版本概要。 */
16
+ export interface FlowVersionVO {
17
+ id: string;
18
+ version_group_id: string;
19
+ version_no: number;
20
+ version_name?: string;
21
+ remark?: string;
22
+ effective: boolean;
23
+ publish_by?: string;
24
+ publish_time?: string;
25
+ }
26
+ /** 版本历史分页结果。 */
27
+ export interface FlowVersionPage {
28
+ items: FlowVersionVO[];
29
+ total: number;
30
+ page: number;
31
+ size: number;
32
+ }
33
+ /** 当前草稿与线上版本状态。 */
34
+ export interface FlowVersionStatusVO {
35
+ version_group_id: string;
36
+ published: boolean;
37
+ effective_version_id?: string | null;
38
+ effective_version_no?: number | null;
39
+ has_unpublished_changes: boolean;
40
+ draft_version_no: 0;
41
+ }
42
+ /** 历史版本详情。 */
43
+ export interface FlowVersionDetailVO {
44
+ version: FlowVersionVO;
45
+ flow: FlowDraftPayload;
46
+ }
47
+ /** 发布请求。 */
48
+ export interface FlowVersionPublishRequest {
49
+ flow: FlowDraftPayload;
50
+ version_name?: string;
51
+ remark?: string;
52
+ force: boolean;
53
+ }
@@ -0,0 +1,7 @@
1
+ import { ActionItem } from '../Panels/ModernNodeSelectorPanel/types';
2
+ /**
3
+ * 解析 CLASSIC create-node API 使用的原始 Long action_id。
4
+ *
5
+ * NodePackage 的 UI key 通常是 actionKey,而后端 action id 可能为 0/负数;两者不可混用。
6
+ */
7
+ export declare function resolveClassicCreateActionId(action: Pick<ActionItem, 'id' | 'backendActionId' | 'action_id'>): string;
@@ -0,0 +1,28 @@
1
+ import { DipNodeSchema } from '../api/dip';
2
+ import { PortConnectionEdge, PortConnectionValidationCode } from './portConnectionValidator';
3
+ import { Node } from '@xyflow/react';
4
+ export type ClassicNodePackageConnectionCode = PortConnectionValidationCode | 'NOT_APPLICABLE' | 'SCHEMA_NOT_READY';
5
+ export interface ClassicNodePackageConnectionResult {
6
+ applicable: boolean;
7
+ valid: boolean;
8
+ code: ClassicNodePackageConnectionCode;
9
+ reason: string;
10
+ missingSchemaNodeIds?: string[];
11
+ }
12
+ export interface ValidateClassicNodePackageConnectionInput {
13
+ sourceNode?: Node | null;
14
+ targetNode?: Node | null;
15
+ sourceHandle?: string | null;
16
+ targetHandle?: string | null;
17
+ edges?: readonly PortConnectionEdge[];
18
+ }
19
+ /** 同步解析节点内联或已预加载的 CLASSIC nodepackage Schema。 */
20
+ export declare function resolveClassicNodePackageSchema(node?: Node | null): DipNodeSchema | null;
21
+ export declare function isClassicNodePackageNode(node?: Node | null): boolean;
22
+ /**
23
+ * 校验两个 CLASSIC nodepackage 节点之间的端口连接。
24
+ *
25
+ * 混合 legacy/nodepackage 连接保留前端当前精确 handle 名称,并按后端虚拟端口契约
26
+ * 将 legacy 端口能力类型统一映射为 main。
27
+ */
28
+ export declare function validateClassicNodePackageConnection({ sourceNode, targetNode, sourceHandle, targetHandle, edges, }: ValidateClassicNodePackageConnectionInput): ClassicNodePackageConnectionResult;
@@ -0,0 +1,29 @@
1
+ import { PortConnectionValidationCode } from './portConnectionValidator';
2
+ import { Edge, Node } from '@xyflow/react';
3
+ export type ClassicNodePackageGraphIssueCode = PortConnectionValidationCode | 'REQUIRED_INPUT_MISSING' | 'SCHEMA_NOT_READY';
4
+ export interface ClassicNodePackageGraphIssue {
5
+ code: ClassicNodePackageGraphIssueCode;
6
+ reason: string;
7
+ blocking: boolean;
8
+ nodeId?: string;
9
+ portName?: string;
10
+ edgeId?: string;
11
+ sourceNodeId?: string;
12
+ targetNodeId?: string;
13
+ }
14
+ export interface ClassicNodePackageGraphValidationResult {
15
+ valid: boolean;
16
+ issues: ClassicNodePackageGraphIssue[];
17
+ blockingIssues: ClassicNodePackageGraphIssue[];
18
+ missingSchemaNodeIds: string[];
19
+ }
20
+ interface ValidateClassicNodePackageGraphInput {
21
+ nodes: readonly Node[];
22
+ edges: readonly Edge[];
23
+ }
24
+ /**
25
+ * 保存前检查当前已知的 CLASSIC nodepackage 端口约束。
26
+ * Schema 尚未加载属于非阻塞 warning,最终交给 ACM 后端兜底;已知非法端口则阻止保存。
27
+ */
28
+ export declare function validateClassicNodePackageGraph({ nodes, edges, }: ValidateClassicNodePackageGraphInput): ClassicNodePackageGraphValidationResult;
29
+ export {};
@@ -0,0 +1,79 @@
1
+ import { DipNodeSchema } from '../api/dip.types';
2
+ import { PortConnectionEdge, PortConnectionNode, PortConnectionValidationCode } from './portConnectionValidator';
3
+ type SourceNodeSchema = Pick<DipNodeSchema, 'outputs'>;
4
+ type TargetNodeSchema = Pick<DipNodeSchema, 'inputs'>;
5
+ type InsertedNodeSchema = Pick<DipNodeSchema, 'inputs' | 'outputs'>;
6
+ export type CompatiblePortSelectionCode = 'COMPATIBLE_PORT_PAIR_FOUND' | 'SOURCE_PORTS_EMPTY' | 'TARGET_PORTS_EMPTY' | 'SOURCE_HANDLE_NOT_FOUND' | 'TARGET_HANDLE_NOT_FOUND' | 'NO_COMPATIBLE_PORT_PAIR';
7
+ /** 自动选端口的结构化结果;compatibleCount 大于 1 时调用方可记录歧义日志。 */
8
+ export interface CompatiblePortSelectionResult {
9
+ valid: boolean;
10
+ code: CompatiblePortSelectionCode;
11
+ reason: string;
12
+ sourceHandle: string | null;
13
+ targetHandle: string | null;
14
+ compatibleCount: number;
15
+ /** 未找到组合时记录首个候选的底层校验码,便于 UI 映射文案。 */
16
+ validationCode: PortConnectionValidationCode | null;
17
+ }
18
+ export interface SelectCompatiblePortPairInput {
19
+ sourceNode: PortConnectionNode;
20
+ targetNode: PortConnectionNode;
21
+ sourceSchema: SourceNodeSchema;
22
+ targetSchema: TargetNodeSchema;
23
+ edges?: readonly PortConnectionEdge[];
24
+ /** 已存在的源 handle;缺失时按 sourceSchema.outputs 顺序枚举。 */
25
+ sourceHandle?: string | null;
26
+ /** 已存在的目标 handle;缺失时按 targetSchema.inputs 顺序枚举。 */
27
+ targetHandle?: string | null;
28
+ }
29
+ export interface SelectSourceToNewCompatiblePortInput {
30
+ sourceNode: PortConnectionNode;
31
+ newNode: PortConnectionNode;
32
+ sourceSchema: SourceNodeSchema;
33
+ newNodeSchema: TargetNodeSchema;
34
+ sourceHandle: string | null | undefined;
35
+ edges?: readonly PortConnectionEdge[];
36
+ }
37
+ export interface SelectNewToTargetCompatiblePortInput {
38
+ newNode: PortConnectionNode;
39
+ targetNode: PortConnectionNode;
40
+ newNodeSchema: SourceNodeSchema;
41
+ targetSchema: TargetNodeSchema;
42
+ targetHandle: string | null | undefined;
43
+ edges?: readonly PortConnectionEdge[];
44
+ }
45
+ export type EdgeInsertPortSelectionCode = 'EDGE_INSERT_PORTS_FOUND' | 'SOURCE_TO_NEW_INCOMPATIBLE' | 'NEW_TO_TARGET_INCOMPATIBLE';
46
+ export interface EdgeInsertPortSelectionResult {
47
+ valid: boolean;
48
+ code: EdgeInsertPortSelectionCode;
49
+ reason: string;
50
+ /** 两段可选组合数的乘积。 */
51
+ compatibleCount: number;
52
+ sourceToNew: CompatiblePortSelectionResult;
53
+ newToTarget: CompatiblePortSelectionResult | null;
54
+ }
55
+ export interface SelectCompatiblePortsForEdgeInsertInput {
56
+ sourceNode: PortConnectionNode;
57
+ newNode: PortConnectionNode;
58
+ targetNode: PortConnectionNode;
59
+ sourceSchema: SourceNodeSchema;
60
+ newNodeSchema: InsertedNodeSchema;
61
+ targetSchema: TargetNodeSchema;
62
+ sourceHandle: string | null | undefined;
63
+ targetHandle: string | null | undefined;
64
+ edges?: readonly PortConnectionEdge[];
65
+ /** 插边成功后会替换的旧边;校验连接数时必须先排除。 */
66
+ replacedEdgeId?: string;
67
+ }
68
+ /**
69
+ * 按 source outputs → target inputs 的 Schema 顺序枚举所有组合。
70
+ * 会继续扫描首个成功组合之后的候选,以便返回准确的 compatibleCount。
71
+ */
72
+ export declare const selectCompatiblePortPair: ({ sourceNode, targetNode, sourceSchema, targetSchema, sourceHandle, targetHandle, edges, }: SelectCompatiblePortPairInput) => CompatiblePortSelectionResult;
73
+ /** 从已有输出端口增加新节点:仅枚举新节点 inputs。 */
74
+ export declare const selectSourceToNewCompatiblePort: ({ sourceNode, newNode, sourceSchema, newNodeSchema, sourceHandle, edges, }: SelectSourceToNewCompatiblePortInput) => CompatiblePortSelectionResult;
75
+ /** 从已有输入端口增加前置节点:仅枚举新节点 outputs。 */
76
+ export declare const selectNewToTargetCompatiblePort: ({ newNode, targetNode, newNodeSchema, targetSchema, targetHandle, edges, }: SelectNewToTargetCompatiblePortInput) => CompatiblePortSelectionResult;
77
+ /** 插边时同时选择 source→new 与 new→target 两段端口。 */
78
+ export declare const selectCompatiblePortsForEdgeInsert: ({ sourceNode, newNode, targetNode, sourceSchema, newNodeSchema, targetSchema, sourceHandle, targetHandle, edges, replacedEdgeId, }: SelectCompatiblePortsForEdgeInsertInput) => EdgeInsertPortSelectionResult;
79
+ export {};
@@ -2,5 +2,13 @@ import { DipNodeSchema } from '../api/dip';
2
2
  export declare function clearNextNodeSchemaCache(): void;
3
3
  export declare function setCachedNextNodeSchema(nodeKey: string, nodeVersion: number | undefined, schema: DipNodeSchema): void;
4
4
  export declare function setCachedClassicNextNodeSchema(nodeKey: string, nodeVersion: number | undefined, schema: DipNodeSchema): void;
5
+ /**
6
+ * 同步读取已预加载的 CLASSIC nodepackage Schema,不触发网络请求。
7
+ *
8
+ * 手动拖线发生在 ReactFlow 的同步校验阶段,无法等待异步 Schema 请求;
9
+ * 因此画布加载/选择器转换阶段会先预热缓存,再由这里读取。缺失版本时与
10
+ * `getCachedClassicNextNodeSchema` 保持一致,按 ACM 版本 1 兜底。
11
+ */
12
+ export declare function peekCachedClassicNextNodeSchema(nodeKey: string, nodeVersion?: number): DipNodeSchema | null;
5
13
  export declare function getCachedClassicNextNodeSchema(nodeKey: string, nodeVersion?: number): Promise<DipNodeSchema | null>;
6
14
  export declare function getCachedNextNodeSchema(nodeKey: string, nodeVersion?: number): Promise<DipNodeSchema | null>;