@metad/contracts 3.6.0 → 3.6.1

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 (287) hide show
  1. package/.babelrc +5 -0
  2. package/.eslintrc.json +18 -0
  3. package/babel.config.json +1 -0
  4. package/index.cjs.js +5 -3996
  5. package/jest.config.ts +16 -0
  6. package/package.json +2 -2
  7. package/project.json +53 -0
  8. package/src/agent/{ai-model.d.ts → ai-model.ts} +2 -2
  9. package/src/agent/graph.ts +272 -0
  10. package/src/agent/index.ts +5 -0
  11. package/src/agent/token.ts +23 -0
  12. package/src/agent/utils.spec.ts +283 -0
  13. package/src/agent/utils.ts +122 -0
  14. package/src/agent/variables.ts +21 -0
  15. package/src/ai/ai-model.model.ts +228 -0
  16. package/src/ai/ai-provider.model.ts +53 -0
  17. package/src/ai/ai.model.ts +87 -0
  18. package/src/ai/chat-message-feedback.model.ts +31 -0
  19. package/src/ai/chat-message.model.ts +277 -0
  20. package/src/ai/chat.model.ts +207 -0
  21. package/src/ai/copilot-checkpoint.model.ts +25 -0
  22. package/src/ai/copilot-example.model.ts +23 -0
  23. package/src/ai/copilot-model.model.ts +31 -0
  24. package/src/ai/copilot-organization.model.ts +21 -0
  25. package/src/ai/copilot-provider.model.ts +46 -0
  26. package/src/ai/copilot-role.model.ts +48 -0
  27. package/src/ai/copilot-store.model.ts +34 -0
  28. package/src/ai/copilot-user.model.ts +24 -0
  29. package/src/ai/copilot.model.ts +47 -0
  30. package/src/ai/{environment.model.d.ts → environment.model.ts} +12 -10
  31. package/src/ai/feature.model.ts +6 -0
  32. package/src/ai/index.ts +39 -0
  33. package/src/ai/knowledge-doc-chunk.model.ts +120 -0
  34. package/src/ai/knowledge-doc-chunk.spec.ts +47 -0
  35. package/src/ai/knowledge-doc-page.model.ts +20 -0
  36. package/src/ai/knowledge-doc.model.ts +252 -0
  37. package/src/ai/knowledge-pipeline.ts +138 -0
  38. package/src/ai/knowledge-retrieval-log.model.ts +19 -0
  39. package/src/ai/knowledgebase-task.model.ts +46 -0
  40. package/src/ai/knowledgebase.model.ts +190 -0
  41. package/src/ai/rag-web.ts +54 -0
  42. package/src/ai/rag.ts +24 -0
  43. package/src/ai/role-permissions.ts +13 -0
  44. package/src/ai/types.ts +83 -0
  45. package/src/ai/xpert-agent-execution.model.ts +115 -0
  46. package/src/ai/xpert-agent.model.ts +258 -0
  47. package/src/ai/xpert-project.model.ts +103 -0
  48. package/src/ai/xpert-task.model.ts +32 -0
  49. package/src/ai/xpert-template.model.ts +53 -0
  50. package/src/ai/xpert-tool-mcp.model.ts +72 -0
  51. package/src/ai/xpert-tool.model.ts +211 -0
  52. package/src/ai/xpert-toolset.model.ts +220 -0
  53. package/src/ai/xpert-workflow-task.prompt.ts +71 -0
  54. package/src/ai/xpert-workflow.model.ts +449 -0
  55. package/src/ai/xpert-workspace.model.ts +42 -0
  56. package/src/ai/xpert.model.ts +613 -0
  57. package/src/ai/xpert.utils.ts +214 -0
  58. package/src/analytics/ai.ts +79 -0
  59. package/src/analytics/approval-policy.model.ts +40 -0
  60. package/src/analytics/business-area-user.model.ts +43 -0
  61. package/src/analytics/business-area.ts +20 -0
  62. package/src/analytics/certification.model.ts +12 -0
  63. package/src/analytics/chatbi-conversation.model.ts +16 -0
  64. package/src/analytics/chatbi-model.model.ts +22 -0
  65. package/src/analytics/collection.model.ts +8 -0
  66. package/src/analytics/comment.model.ts +14 -0
  67. package/src/analytics/data-source-type.ts +19 -0
  68. package/src/analytics/data-source.ts +72 -0
  69. package/src/analytics/favorite.ts +18 -0
  70. package/src/analytics/features.ts +19 -0
  71. package/src/analytics/feed-model.ts +15 -0
  72. package/src/analytics/gateway.ts +30 -0
  73. package/src/analytics/index.ts +39 -0
  74. package/src/analytics/indicator-app.ts +49 -0
  75. package/src/analytics/{indicator-market.d.ts → indicator-market.ts} +6 -2
  76. package/src/analytics/indicator.ts +127 -0
  77. package/src/analytics/model-query-log.model.ts +45 -0
  78. package/src/analytics/model-query.ts +22 -0
  79. package/src/analytics/{notification-destination.d.ts → notification-destination.ts} +9 -5
  80. package/src/analytics/{permission-approval-user.model.d.ts → permission-approval-user.model.ts} +10 -8
  81. package/src/analytics/permission-approval.model.ts +58 -0
  82. package/src/analytics/project.model.ts +56 -0
  83. package/src/analytics/role-permissions.ts +36 -0
  84. package/src/analytics/schema.ts +300 -0
  85. package/src/analytics/screenshot.model.ts +28 -0
  86. package/src/analytics/semantic-model-entity.ts +49 -0
  87. package/src/analytics/semantic-model-member.ts +45 -0
  88. package/src/analytics/semantic-model.ts +227 -0
  89. package/src/analytics/{story-point.d.ts → story-point.ts} +11 -6
  90. package/src/analytics/story-template.model.ts +34 -0
  91. package/src/analytics/story-widget.ts +15 -0
  92. package/src/analytics/story.ts +109 -0
  93. package/src/analytics/subscription.ts +43 -0
  94. package/src/analytics/visit.model.ts +39 -0
  95. package/src/analytics/webSocket.ts +53 -0
  96. package/src/api-key.model.ts +11 -0
  97. package/src/base-entity.model.ts +34 -0
  98. package/src/contact.model.ts +45 -0
  99. package/src/core.model.ts +103 -0
  100. package/src/{country.model.d.ts → country.model.ts} +3 -2
  101. package/src/currency.model.ts +582 -0
  102. package/src/{custom-smtp.model.d.ts → custom-smtp.model.ts} +21 -17
  103. package/src/date-picker.model.ts +5 -0
  104. package/src/email-template.model.ts +50 -0
  105. package/src/email.model.ts +46 -0
  106. package/src/employee.model.ts +199 -0
  107. package/src/entity-with-members.model.ts +16 -0
  108. package/src/feature.model.ts +108 -0
  109. package/src/file-provider.ts +37 -0
  110. package/src/help-center-article.model.ts +35 -0
  111. package/src/help-center.model.ts +33 -0
  112. package/src/http-status.enum.ts +58 -0
  113. package/src/import-export.model.ts +42 -0
  114. package/src/index.ts +60 -0
  115. package/src/integration/dify.ts +31 -0
  116. package/src/integration/dingtalk.ts +16 -0
  117. package/src/integration/fastgpt.ts +32 -0
  118. package/src/integration/firecrawl.ts +46 -0
  119. package/src/integration/github.ts +149 -0
  120. package/src/integration/index.ts +15 -0
  121. package/src/integration/lark.ts +79 -0
  122. package/src/integration/wecom.ts +16 -0
  123. package/src/integration.model.ts +119 -0
  124. package/src/invite.model.ts +144 -0
  125. package/src/language.model.ts +22 -0
  126. package/src/organization-contact.model.ts +84 -0
  127. package/src/{organization-department.model.d.ts → organization-department.model.ts} +16 -10
  128. package/src/organization-language.model.ts +24 -0
  129. package/src/organization-projects.model.ts +99 -0
  130. package/src/organization-team-employee-model.ts +14 -0
  131. package/src/organization-team-model.ts +25 -0
  132. package/src/organization.model.ts +266 -0
  133. package/src/password-reset.model.ts +22 -0
  134. package/src/{plain-object.model.d.ts → plain-object.model.ts} +1 -1
  135. package/src/plugin.ts +15 -0
  136. package/src/role-permission.model.ts +123 -0
  137. package/src/role.model.ts +31 -0
  138. package/src/schedule.ts +71 -0
  139. package/src/secret-token.model.ts +15 -0
  140. package/src/seed.model.ts +50 -0
  141. package/src/storage-file.model.ts +46 -0
  142. package/src/tag-entity.model.ts +23 -0
  143. package/src/tenant.model.ts +52 -0
  144. package/src/tools/index.ts +1 -0
  145. package/src/tools/sandbox.ts +5 -0
  146. package/src/translation.model.ts +37 -0
  147. package/src/types.ts +277 -0
  148. package/src/user-organization.model.ts +31 -0
  149. package/src/user.model.ts +151 -0
  150. package/src/visibility.model.ts +6 -0
  151. package/tsconfig.json +22 -0
  152. package/tsconfig.lib.json +10 -0
  153. package/tsconfig.spec.json +9 -0
  154. package/index.cjs.d.ts +0 -1
  155. package/index.esm.d.ts +0 -1
  156. package/index.esm.js +0 -3900
  157. package/src/agent/graph.d.ts +0 -148
  158. package/src/agent/index.d.ts +0 -5
  159. package/src/agent/token.d.ts +0 -21
  160. package/src/agent/utils.d.ts +0 -19
  161. package/src/agent/variables.d.ts +0 -14
  162. package/src/ai/ai-model.model.d.ts +0 -195
  163. package/src/ai/ai-provider.model.d.ts +0 -43
  164. package/src/ai/ai.model.d.ts +0 -82
  165. package/src/ai/chat-message-feedback.model.d.ts +0 -24
  166. package/src/ai/chat-message.model.d.ts +0 -222
  167. package/src/ai/chat.model.d.ts +0 -189
  168. package/src/ai/copilot-checkpoint.model.d.ts +0 -23
  169. package/src/ai/copilot-example.model.d.ts +0 -19
  170. package/src/ai/copilot-model.model.d.ts +0 -26
  171. package/src/ai/copilot-organization.model.d.ts +0 -17
  172. package/src/ai/copilot-provider.model.d.ts +0 -31
  173. package/src/ai/copilot-role.model.d.ts +0 -43
  174. package/src/ai/copilot-store.model.d.ts +0 -29
  175. package/src/ai/copilot-user.model.d.ts +0 -20
  176. package/src/ai/copilot.model.d.ts +0 -36
  177. package/src/ai/feature.model.d.ts +0 -6
  178. package/src/ai/index.d.ts +0 -38
  179. package/src/ai/knowledge-doc-page.model.d.ts +0 -15
  180. package/src/ai/knowledge-doc.model.d.ts +0 -177
  181. package/src/ai/knowledge-pipeline.d.ts +0 -100
  182. package/src/ai/knowledge-retrieval-log.model.d.ts +0 -10
  183. package/src/ai/knowledgebase-task.model.d.ts +0 -36
  184. package/src/ai/knowledgebase.model.d.ts +0 -160
  185. package/src/ai/rag-web.d.ts +0 -26
  186. package/src/ai/rag.d.ts +0 -24
  187. package/src/ai/role-permissions.d.ts +0 -13
  188. package/src/ai/types.d.ts +0 -39
  189. package/src/ai/xpert-agent-execution.model.d.ts +0 -96
  190. package/src/ai/xpert-agent.model.d.ts +0 -192
  191. package/src/ai/xpert-project.model.d.ts +0 -86
  192. package/src/ai/xpert-task.model.d.ts +0 -26
  193. package/src/ai/xpert-template.model.d.ts +0 -47
  194. package/src/ai/xpert-tool-mcp.model.d.ts +0 -67
  195. package/src/ai/xpert-tool.model.d.ts +0 -147
  196. package/src/ai/xpert-toolset.model.d.ts +0 -200
  197. package/src/ai/xpert-workflow-task.prompt.d.ts +0 -2
  198. package/src/ai/xpert-workflow.model.d.ts +0 -365
  199. package/src/ai/xpert-workspace.model.d.ts +0 -32
  200. package/src/ai/xpert.model.d.ts +0 -497
  201. package/src/ai/xpert.utils.d.ts +0 -80
  202. package/src/analytics/ai.d.ts +0 -73
  203. package/src/analytics/approval-policy.model.d.ts +0 -30
  204. package/src/analytics/business-area-user.model.d.ts +0 -35
  205. package/src/analytics/business-area.d.ts +0 -17
  206. package/src/analytics/certification.model.d.ts +0 -11
  207. package/src/analytics/chatbi-conversation.model.d.ts +0 -15
  208. package/src/analytics/chatbi-model.model.d.ts +0 -18
  209. package/src/analytics/collection.model.d.ts +0 -6
  210. package/src/analytics/comment.model.d.ts +0 -10
  211. package/src/analytics/data-source-type.d.ts +0 -16
  212. package/src/analytics/data-source.d.ts +0 -62
  213. package/src/analytics/favorite.d.ts +0 -14
  214. package/src/analytics/features.d.ts +0 -19
  215. package/src/analytics/feed-model.d.ts +0 -13
  216. package/src/analytics/gateway.d.ts +0 -27
  217. package/src/analytics/index.d.ts +0 -38
  218. package/src/analytics/indicator-app.d.ts +0 -44
  219. package/src/analytics/indicator.d.ts +0 -106
  220. package/src/analytics/model-query-log.model.d.ts +0 -41
  221. package/src/analytics/model-query.d.ts +0 -21
  222. package/src/analytics/permission-approval.model.d.ts +0 -47
  223. package/src/analytics/project.model.d.ts +0 -50
  224. package/src/analytics/role-permissions.d.ts +0 -25
  225. package/src/analytics/schema.d.ts +0 -262
  226. package/src/analytics/screenshot.model.d.ts +0 -25
  227. package/src/analytics/semantic-model-entity.d.ts +0 -37
  228. package/src/analytics/semantic-model-member.d.ts +0 -24
  229. package/src/analytics/semantic-model.d.ts +0 -175
  230. package/src/analytics/story-template.model.d.ts +0 -28
  231. package/src/analytics/story-widget.d.ts +0 -12
  232. package/src/analytics/story.d.ts +0 -93
  233. package/src/analytics/subscription.d.ts +0 -38
  234. package/src/analytics/visit.model.d.ts +0 -34
  235. package/src/analytics/webSocket.d.ts +0 -48
  236. package/src/api-key.model.d.ts +0 -10
  237. package/src/base-entity.model.d.ts +0 -27
  238. package/src/contact.model.d.ts +0 -41
  239. package/src/core.model.d.ts +0 -97
  240. package/src/currency.model.d.ts +0 -579
  241. package/src/date-picker.model.d.ts +0 -5
  242. package/src/email-template.model.d.ts +0 -39
  243. package/src/email.model.d.ts +0 -36
  244. package/src/employee.model.d.ts +0 -128
  245. package/src/entity-with-members.model.d.ts +0 -13
  246. package/src/feature.model.d.ts +0 -93
  247. package/src/file-provider.d.ts +0 -33
  248. package/src/help-center-article.model.d.ts +0 -0
  249. package/src/help-center.model.d.ts +0 -0
  250. package/src/http-status.enum.d.ts +0 -57
  251. package/src/import-export.model.d.ts +0 -36
  252. package/src/index.d.ts +0 -48
  253. package/src/integration/dify.d.ts +0 -0
  254. package/src/integration/dingtalk.d.ts +0 -2
  255. package/src/integration/fastgpt.d.ts +0 -0
  256. package/src/integration/firecrawl.d.ts +0 -2
  257. package/src/integration/github.d.ts +0 -69
  258. package/src/integration/index.d.ts +0 -4
  259. package/src/integration/lark.d.ts +0 -11
  260. package/src/integration/ragflow.d.ts +0 -0
  261. package/src/integration/wecom.d.ts +0 -2
  262. package/src/integration.model.d.ts +0 -86
  263. package/src/invite.model.d.ts +0 -123
  264. package/src/language.model.d.ts +0 -19
  265. package/src/organization-contact.model.d.ts +0 -73
  266. package/src/organization-language.model.d.ts +0 -18
  267. package/src/organization-projects.model.d.ts +0 -80
  268. package/src/organization-team-employee-model.d.ts +0 -12
  269. package/src/organization-team-model.d.ts +0 -19
  270. package/src/organization.model.d.ts +0 -239
  271. package/src/password-reset.model.d.ts +0 -18
  272. package/src/plugin.d.ts +0 -13
  273. package/src/role-permission.model.d.ts +0 -61
  274. package/src/role.model.d.ts +0 -26
  275. package/src/schedule.d.ts +0 -27
  276. package/src/secret-token.model.d.ts +0 -11
  277. package/src/seed.model.d.ts +0 -37
  278. package/src/storage-file.model.d.ts +0 -40
  279. package/src/tag-entity.model.d.ts +0 -20
  280. package/src/tenant.model.d.ts +0 -40
  281. package/src/tools/index.d.ts +0 -1
  282. package/src/tools/sandbox.d.ts +0 -5
  283. package/src/translation.model.d.ts +0 -26
  284. package/src/types.d.ts +0 -240
  285. package/src/user-organization.model.d.ts +0 -24
  286. package/src/user.model.d.ts +0 -128
  287. package/src/visibility.model.d.ts +0 -6
@@ -0,0 +1,449 @@
1
+ import { I18nObject, IconDefinition, letterStartSUID } from "../types"
2
+ import { ICopilotModel } from "./copilot-model.model"
3
+ import { TKBRecallParams } from "./knowledgebase.model"
4
+ import { ApiAuthType, TErrorHandling, TXpertRefParameter } from "./types"
5
+ import { TStateVariable, TXpertParameter } from "./xpert.model"
6
+
7
+ export type TWorkflowNodeMeta = {
8
+ name: string
9
+ label: I18nObject
10
+ icon: IconDefinition
11
+ configSchema: any
12
+ }
13
+
14
+ export type TWorkflowTriggerMeta = TWorkflowNodeMeta
15
+
16
+ export enum WorkflowNodeTypeEnum {
17
+ /**
18
+ * Trigger
19
+ */
20
+ TRIGGER = 'trigger',
21
+ /**
22
+ * State Variable Assigner
23
+ */
24
+ ASSIGNER = 'assigner',
25
+ /**
26
+ * Router
27
+ */
28
+ IF_ELSE = 'if-else',
29
+ LIST_OPERATOR = 'list-operator',
30
+ VARIABLE_AGGREGATOR = 'variable-aggregator',
31
+ // SPLITTER = 'splitter',
32
+ ITERATING = 'iterating',
33
+ ANSWER = 'answer',
34
+ CODE = 'code',
35
+ HTTP = 'http',
36
+ KNOWLEDGE = 'knowledge',
37
+ SUBFLOW = 'subflow',
38
+ TEMPLATE = 'template',
39
+ CLASSIFIER = 'classifier',
40
+ TOOL = 'tool',
41
+ AGENT_TOOL = 'agent-tool',
42
+ NOTE = 'note',
43
+ /**
44
+ * Task node, distribute tasks to sub-agents
45
+ */
46
+ TASK = 'task',
47
+
48
+ // Knowledge Pipeline nodes
49
+ SOURCE = 'source',
50
+ PROCESSOR = 'processor',
51
+ CHUNKER = 'chunker',
52
+ UNDERSTANDING = 'understanding',
53
+ KNOWLEDGE_BASE = 'knowledgebase',
54
+ }
55
+
56
+ export interface IWorkflowNode {
57
+ id: string
58
+ key: string
59
+ title?: string
60
+ description?: string | I18nObject
61
+ type: WorkflowNodeTypeEnum
62
+ }
63
+
64
+ export enum VariableOperationEnum {
65
+ APPEND = 'append',
66
+ EXTEND = 'extend',
67
+ OVERWRITE = 'overwrite',
68
+ CLEAR = 'clear'
69
+ }
70
+
71
+ export type TVariableAssigner = {
72
+ id: string
73
+ inputType: 'variable' | 'constant' | 'message'
74
+ /**
75
+ * value from variable
76
+ */
77
+ value?: string
78
+ /**
79
+ * value write to state's variable
80
+ */
81
+ variableSelector: string
82
+ /**
83
+ * How to write value to variable
84
+ */
85
+ operation: VariableOperationEnum
86
+
87
+ /**
88
+ * The message template to write to messages variable
89
+ */
90
+ messages?: {role: string; content: string}[]
91
+ }
92
+
93
+ export interface IWFNAssigner extends IWorkflowNode {
94
+ type: WorkflowNodeTypeEnum.ASSIGNER
95
+ assigners: TVariableAssigner[]
96
+ }
97
+
98
+ export interface IWFNIfElse extends IWorkflowNode {
99
+ type: WorkflowNodeTypeEnum.IF_ELSE
100
+ cases: TWFCase[]
101
+ }
102
+
103
+ /**
104
+ * The list operator can filter and extract attributes such as file format type, file name, and size,
105
+ * passing different format files to corresponding processing nodes to achieve precise control over different file processing flows.
106
+ */
107
+ export interface IWFNListOperator extends IWorkflowNode {
108
+ type: WorkflowNodeTypeEnum.LIST_OPERATOR
109
+ // Input Variable *
110
+ input: string
111
+ // Variable type of items in the input array
112
+ itemVarType: string
113
+ // Filter condition
114
+ filterBy?: {
115
+ enabled: boolean
116
+ conditions: TWFCaseCondition[]
117
+ logicalOperator: WorkflowLogicalOperator
118
+ }
119
+ // Extract the N item
120
+ extractBy?: {
121
+ enabled: boolean
122
+ index: number
123
+ }
124
+ // Sort items by variable
125
+ sortBy?: {
126
+ enabled: boolean
127
+ variable: string
128
+ descending?: boolean
129
+ }
130
+ // Top N items
131
+ topN?: {
132
+ enabled: boolean
133
+ count: number
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Aggregate variables from multiple branches into a single variable to achieve unified configuration for downstream nodes.
139
+ */
140
+ export interface IWFNVariableAggregator extends IWorkflowNode {
141
+ type: WorkflowNodeTypeEnum.VARIABLE_AGGREGATOR
142
+ // Input Variables *
143
+ inputs: string[]
144
+ // Output Variable type
145
+ outputType: string
146
+ // Aggregation method
147
+ // method?: 'concat' | 'merge' | 'custom'
148
+ }
149
+
150
+ // export interface IWFNSplitter extends IWorkflowNode {
151
+ // type: WorkflowNodeTypeEnum.SPLITTER
152
+ // }
153
+
154
+ export interface IWFNIterating extends IWorkflowNode {
155
+ type: WorkflowNodeTypeEnum.ITERATING
156
+ /**
157
+ * Variable name of input array in state
158
+ */
159
+ inputVariable: string
160
+ inputParams?: TXpertRefParameter[]
161
+ outputParams?: TXpertRefParameter[]
162
+ /**
163
+ * Execute in parallel, otherwise execute sequentially
164
+ */
165
+ parallel?: boolean
166
+ /**
167
+ * Maximum number of parallel task
168
+ */
169
+ maximum?: number
170
+
171
+ /**
172
+ * - terminate: terminate on error
173
+ * - ignore: ignore error and continue
174
+ * - remove: remove error output
175
+ */
176
+ errorMode?: 'terminate' | 'ignore' | 'remove'
177
+ }
178
+
179
+ /**
180
+ * The parameter name that represents the entire current element in array
181
+ */
182
+ export const IteratingItemParameterName = '$item'
183
+ export const IteratingIndexParameterName = '$index'
184
+
185
+ export interface IWFNAnswer extends IWorkflowNode {
186
+ type: WorkflowNodeTypeEnum.ANSWER
187
+ promptTemplate: string
188
+ mute?: boolean
189
+ }
190
+
191
+ export enum WorkflowLogicalOperator {
192
+ AND = 'and',
193
+ OR = 'or'
194
+ }
195
+
196
+ export enum WorkflowComparisonOperator {
197
+ CONTAINS = 'contains',
198
+ NOT_CONTAINS = 'not-contains',
199
+ EQUAL = 'equal',
200
+ NOT_EQUAL = 'not-equal',
201
+ GT = 'gt',
202
+ LT = 'lt',
203
+ GE = 'ge',
204
+ LE = 'le',
205
+ STARTS_WITH = 'starts-with',
206
+ ENDS_WITH = 'ends-with',
207
+ EMPTY = 'empty',
208
+ NOT_EMPTY = 'not-empty',
209
+ IS_TRUE = 'is-true',
210
+ IS_FALSE = 'is-false',
211
+ LIKE = 'like',
212
+ NOT_LIKE = 'not-like'
213
+ }
214
+
215
+ /**
216
+ * Comparison condition for if-else and list-operator nodes
217
+ */
218
+ export type TWFCaseCondition = {
219
+ id: string
220
+ comparisonOperator: WorkflowComparisonOperator
221
+ value?: string
222
+ varType?: string
223
+ variableSelector?: string
224
+ }
225
+
226
+ export type TWFCase = {
227
+ caseId: string
228
+ conditions: TWFCaseCondition[]
229
+ logicalOperator: WorkflowLogicalOperator
230
+ }
231
+
232
+ export type TWorkflowVarGroup = {
233
+ // /**
234
+ // * @deprecated use group
235
+ // */
236
+ // agent?: Partial<IXpertAgent>
237
+ group?: {
238
+ name: string
239
+ description: string | I18nObject
240
+ }
241
+ variables: TStateVariable[]
242
+ }
243
+
244
+ export type TWorkflowRetry = {
245
+ enabled?: boolean
246
+ stopAfterAttempt?: number
247
+ retryInterval?: number // second
248
+ }
249
+
250
+ export interface IWFNCode extends IWorkflowNode {
251
+ type: WorkflowNodeTypeEnum.CODE
252
+ language: 'python' | 'javascript'
253
+ code: string
254
+ inputs: {name: string; variable?: string}[]
255
+ outputs: TXpertParameter[]
256
+ /**
257
+ * Retry on failure
258
+ */
259
+ retry?: TWorkflowRetry
260
+ /**
261
+ * Error handling
262
+ */
263
+ errorHandling?: TErrorHandling
264
+ }
265
+
266
+ // Http workflow node
267
+ export type BodyType = 'none' | 'form-data' | 'x-www-form-urlencoded' | 'json' | 'raw' | 'binary';
268
+ interface HttpParam {
269
+ key: string;
270
+ value: string;
271
+ }
272
+ interface HttpHeader {
273
+ name: string;
274
+ value: string;
275
+ }
276
+
277
+ export type TWorkflowAuthorization = {
278
+ auth_type?: ApiAuthType
279
+ api_key_type?: '' | 'bearer' | 'custom'
280
+ api_key_header?: string
281
+ api_key_value?: string
282
+ username?: string
283
+ password?: string
284
+ }
285
+
286
+ export interface IWFNHttp extends IWorkflowNode {
287
+ type: WorkflowNodeTypeEnum.HTTP
288
+ authorization?: TWorkflowAuthorization
289
+ method: 'get' | 'post' | 'put' | 'delete' | 'patch' | 'head'
290
+ url: string
291
+ headers: HttpHeader[]
292
+ params: HttpParam[]
293
+ body: {
294
+ type?: BodyType
295
+ body?: string; // 如果是 JSON 类型
296
+ encodedForm?: HttpParam[]
297
+ }
298
+ connectionTimeout?: number
299
+ readTimeout?: number
300
+ writeTimeout?: number
301
+ /**
302
+ * Retry on failure
303
+ */
304
+ retry?: TWorkflowRetry
305
+ /**
306
+ * Error handling
307
+ */
308
+ errorHandling?: TErrorHandling
309
+ }
310
+
311
+ export interface IWFNKnowledgeRetrieval extends IWorkflowNode {
312
+ queryVariable: string
313
+ knowledgebases: string[]
314
+ recall?: TKBRecallParams
315
+ }
316
+
317
+ export interface IWFNSubflow extends IWorkflowNode {
318
+ inputParams?: TXpertRefParameter[]
319
+ outputParams?: TXpertRefParameter[]
320
+ }
321
+
322
+ export interface IWFNTemplate extends IWorkflowNode {
323
+ type: WorkflowNodeTypeEnum.TEMPLATE,
324
+ inputParams?: TXpertRefParameter[]
325
+ code: string
326
+
327
+ /**
328
+ * Error handling
329
+ */
330
+ errorHandling?: TErrorHandling
331
+ }
332
+
333
+ export interface IWFNClassifier extends IWorkflowNode {
334
+ type: WorkflowNodeTypeEnum.CLASSIFIER
335
+ copilotModel: ICopilotModel
336
+ inputVariables: string[]
337
+ classes: {
338
+ description?: string
339
+ }[]
340
+ instruction?: string
341
+ }
342
+
343
+ export interface IWFNClassifier extends IWorkflowNode {
344
+ type: WorkflowNodeTypeEnum.CLASSIFIER
345
+ copilotModel: ICopilotModel
346
+ inputVariables: string[]
347
+ classes: {
348
+ description?: string
349
+ }[]
350
+ instruction?: string
351
+ }
352
+
353
+ export interface IWFNTemplate extends IWorkflowNode {
354
+ type: WorkflowNodeTypeEnum.TEMPLATE,
355
+ inputParams?: TXpertRefParameter[]
356
+ code: string
357
+
358
+ /**
359
+ * Error handling
360
+ */
361
+ errorHandling?: TErrorHandling
362
+ }
363
+
364
+ export interface IWFNTool extends IWorkflowNode {
365
+ type: WorkflowNodeTypeEnum.TOOL,
366
+ toolsetId: string
367
+ toolName: string
368
+ /**
369
+ * @deprecated Use parameters instead
370
+ */
371
+ parameterVariable: string
372
+ parameters?: any
373
+ omitBlankValues?: boolean
374
+
375
+ /**
376
+ * Error handling
377
+ */
378
+ errorHandling?: TErrorHandling
379
+ }
380
+
381
+ export interface IWFNNote extends IWorkflowNode {
382
+ content: string
383
+ }
384
+
385
+ export interface IWFNAgentTool extends IWorkflowNode {
386
+ type: WorkflowNodeTypeEnum.AGENT_TOOL,
387
+ // Tool name
388
+ toolName: string
389
+ // Tool description
390
+ toolDescription?: string
391
+ // Tool schema
392
+ toolParameters?: TXpertParameter[]
393
+
394
+ /**
395
+ * End point tool
396
+ */
397
+ isEnd?: boolean
398
+
399
+ /**
400
+ * @deprecated Mixed sub-processes are not suitable for catching exceptions unless they are implemented using a separate subgraph
401
+ * Error handling
402
+ */
403
+ errorHandling?: TErrorHandling
404
+ }
405
+
406
+ export interface IWFNTrigger extends IWorkflowNode {
407
+ type: WorkflowNodeTypeEnum.TRIGGER,
408
+ from: 'chat' | 'integration' | 'scheduler'
409
+ parameters?: TXpertParameter[]
410
+ config?: any
411
+ }
412
+
413
+ export interface IWFNTask extends IWorkflowNode {
414
+ type: WorkflowNodeTypeEnum.TASK,
415
+ descriptionPrefix?: string
416
+ descriptionSuffix?: string
417
+ }
418
+
419
+ export function genXpertTriggerKey() {
420
+ return letterStartSUID('Trigger_')
421
+ }
422
+
423
+ export function genListOperatorKey() {
424
+ return letterStartSUID('ListOperator_')
425
+ }
426
+
427
+ export function genVariableAggregatorKey() {
428
+ return letterStartSUID('VariableAggregator_')
429
+ }
430
+
431
+ export function isAgentKey(key: string) {
432
+ return key?.toLowerCase().startsWith('agent_')
433
+ }
434
+
435
+ export function isRouterKey(key: string) {
436
+ return key?.toLowerCase().startsWith('router_')
437
+ }
438
+
439
+ export function isIteratingKey(key: string) {
440
+ return key?.toLowerCase().startsWith('iterating_')
441
+ }
442
+
443
+ export function isWorkflowKey(key: string) {
444
+ return isRouterKey(key) || isIteratingKey(key)
445
+ }
446
+
447
+ export function workflowNodeIdentifier(node: IWorkflowNode) {
448
+ return node.title || node.key
449
+ }
@@ -0,0 +1,42 @@
1
+ import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
2
+ import { IUser } from '../user.model'
3
+ import { IEnvironment } from './environment.model'
4
+ import { IXpert } from './xpert.model'
5
+
6
+ /**
7
+ * Expert Workspace
8
+ */
9
+ export interface IXpertWorkspace extends IBasePerTenantAndOrganizationEntityModel {
10
+ name: string
11
+ description?: string
12
+ status: TXpertWorkspaceStatus
13
+ settings?: TXpertWorkspaceSettings
14
+
15
+ // Many to one
16
+ ownerId: string
17
+ owner?: IUser
18
+
19
+ // One to many
20
+ xperts?: IXpert[]
21
+ environments?: IEnvironment[]
22
+
23
+ members?: IUser[]
24
+ }
25
+
26
+ export type TXpertWorkspaceSettings = {
27
+ //
28
+ }
29
+ export type TXpertWorkspaceStatus = 'active' | 'deprecated' | 'archived'
30
+
31
+ export interface IBasePerWorkspaceEntityModel extends IBasePerTenantAndOrganizationEntityModel {
32
+ workspaceId?: string
33
+ workspace?: IXpertWorkspace
34
+ /**
35
+ * Publish date of latest
36
+ */
37
+ publishAt?: Date
38
+ /**
39
+ * Soft deleted
40
+ */
41
+ deletedAt?: Date
42
+ }