@metad/contracts 3.6.7 → 3.7.0

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 (291) hide show
  1. package/README.md +2 -2
  2. package/index.cjs.d.ts +1 -0
  3. package/index.cjs.js +4029 -5
  4. package/index.esm.d.ts +1 -0
  5. package/index.esm.js +3909 -0
  6. package/package.json +1 -1
  7. package/src/agent/{ai-model.ts → ai-model.d.ts} +2 -2
  8. package/src/agent/graph.d.ts +151 -0
  9. package/src/agent/index.d.ts +5 -0
  10. package/src/agent/token.d.ts +21 -0
  11. package/src/agent/utils.d.ts +19 -0
  12. package/src/agent/variables.d.ts +16 -0
  13. package/src/ai/ai-model.model.d.ts +198 -0
  14. package/src/ai/ai-provider.model.d.ts +43 -0
  15. package/src/ai/ai.model.d.ts +82 -0
  16. package/src/ai/chat-message-feedback.model.d.ts +24 -0
  17. package/src/ai/chat-message.model.d.ts +222 -0
  18. package/src/ai/chat.model.d.ts +189 -0
  19. package/src/ai/copilot-checkpoint.model.d.ts +23 -0
  20. package/src/ai/copilot-example.model.d.ts +19 -0
  21. package/src/ai/copilot-model.model.d.ts +26 -0
  22. package/src/ai/copilot-organization.model.d.ts +17 -0
  23. package/src/ai/copilot-provider.model.d.ts +31 -0
  24. package/src/ai/copilot-role.model.d.ts +43 -0
  25. package/src/ai/copilot-store.model.d.ts +29 -0
  26. package/src/ai/copilot-user.model.d.ts +20 -0
  27. package/src/ai/copilot.model.d.ts +36 -0
  28. package/src/ai/{environment.model.ts → environment.model.d.ts} +10 -12
  29. package/src/ai/feature.model.d.ts +6 -0
  30. package/src/ai/index.d.ts +42 -0
  31. package/src/ai/knowledge-doc-chunk.model.d.ts +61 -0
  32. package/src/ai/knowledge-doc-page.model.d.ts +15 -0
  33. package/src/ai/knowledge-doc.model.d.ts +222 -0
  34. package/src/ai/knowledge-pipeline.d.ts +107 -0
  35. package/src/ai/knowledge-retrieval-log.model.d.ts +10 -0
  36. package/src/ai/knowledgebase-task.model.d.ts +39 -0
  37. package/src/ai/knowledgebase.model.d.ts +174 -0
  38. package/src/ai/middleware.model.d.ts +18 -0
  39. package/src/ai/rag-web.d.ts +26 -0
  40. package/src/ai/rag.d.ts +24 -0
  41. package/src/ai/role-permissions.d.ts +13 -0
  42. package/src/ai/skill.model.d.ts +181 -0
  43. package/src/ai/types.d.ts +71 -0
  44. package/src/ai/xpert-agent-execution.model.d.ts +96 -0
  45. package/src/ai/xpert-agent.model.d.ts +204 -0
  46. package/src/ai/xpert-project.model.d.ts +86 -0
  47. package/src/ai/xpert-table.model.d.ts +84 -0
  48. package/src/ai/xpert-task.model.d.ts +26 -0
  49. package/src/ai/xpert-template.model.d.ts +47 -0
  50. package/src/ai/xpert-tool-mcp.model.d.ts +72 -0
  51. package/src/ai/xpert-tool.model.d.ts +154 -0
  52. package/src/ai/xpert-toolset.model.d.ts +200 -0
  53. package/src/ai/xpert-workflow-task.prompt.d.ts +2 -0
  54. package/src/ai/xpert-workflow.model.d.ts +401 -0
  55. package/src/ai/xpert-workspace.model.d.ts +32 -0
  56. package/src/ai/xpert.model.d.ts +551 -0
  57. package/src/ai/xpert.utils.d.ts +77 -0
  58. package/src/analytics/ai.d.ts +73 -0
  59. package/src/analytics/approval-policy.model.d.ts +30 -0
  60. package/src/analytics/business-area-user.model.d.ts +35 -0
  61. package/src/analytics/business-area.d.ts +17 -0
  62. package/src/analytics/certification.model.d.ts +11 -0
  63. package/src/analytics/chatbi-conversation.model.d.ts +15 -0
  64. package/src/analytics/chatbi-model.model.d.ts +18 -0
  65. package/src/analytics/collection.model.d.ts +6 -0
  66. package/src/analytics/comment.model.d.ts +10 -0
  67. package/src/analytics/data-source-type.d.ts +16 -0
  68. package/src/analytics/data-source.d.ts +62 -0
  69. package/src/analytics/favorite.d.ts +14 -0
  70. package/src/analytics/features.d.ts +19 -0
  71. package/src/analytics/feed-model.d.ts +13 -0
  72. package/src/analytics/gateway.d.ts +28 -0
  73. package/src/analytics/index.d.ts +38 -0
  74. package/src/analytics/indicator-app.d.ts +44 -0
  75. package/src/analytics/{indicator-market.ts → indicator-market.d.ts} +2 -6
  76. package/src/analytics/indicator.d.ts +105 -0
  77. package/src/analytics/model-query-log.model.d.ts +41 -0
  78. package/src/analytics/model-query.d.ts +21 -0
  79. package/src/analytics/{notification-destination.ts → notification-destination.d.ts} +5 -9
  80. package/src/analytics/{permission-approval-user.model.ts → permission-approval-user.model.d.ts} +8 -10
  81. package/src/analytics/permission-approval.model.d.ts +47 -0
  82. package/src/analytics/project.model.d.ts +50 -0
  83. package/src/analytics/role-permissions.d.ts +25 -0
  84. package/src/analytics/schema.d.ts +262 -0
  85. package/src/analytics/screenshot.model.d.ts +25 -0
  86. package/src/analytics/semantic-model-entity.d.ts +38 -0
  87. package/src/analytics/semantic-model-member.d.ts +27 -0
  88. package/src/analytics/semantic-model.d.ts +183 -0
  89. package/src/analytics/{story-point.ts → story-point.d.ts} +6 -11
  90. package/src/analytics/story-template.model.d.ts +28 -0
  91. package/src/analytics/story-widget.d.ts +12 -0
  92. package/src/analytics/story.d.ts +93 -0
  93. package/src/analytics/subscription.d.ts +38 -0
  94. package/src/analytics/visit.model.d.ts +34 -0
  95. package/src/analytics/webSocket.d.ts +48 -0
  96. package/src/api-key.model.d.ts +10 -0
  97. package/src/base-entity.model.d.ts +27 -0
  98. package/src/contact.model.d.ts +41 -0
  99. package/src/core.model.d.ts +97 -0
  100. package/src/{country.model.ts → country.model.d.ts} +2 -3
  101. package/src/currency.model.d.ts +579 -0
  102. package/src/{custom-smtp.model.ts → custom-smtp.model.d.ts} +17 -21
  103. package/src/date-picker.model.d.ts +5 -0
  104. package/src/email-template.model.d.ts +39 -0
  105. package/src/email.model.d.ts +36 -0
  106. package/src/employee.model.d.ts +128 -0
  107. package/src/entity-with-members.model.d.ts +13 -0
  108. package/src/feature.model.d.ts +93 -0
  109. package/src/file-provider.d.ts +33 -0
  110. package/src/help-center-article.model.d.ts +0 -0
  111. package/src/help-center.model.d.ts +0 -0
  112. package/src/http-status.enum.d.ts +57 -0
  113. package/src/import-export.model.d.ts +36 -0
  114. package/src/index.d.ts +48 -0
  115. package/src/integration/dify.d.ts +0 -0
  116. package/src/integration/dingtalk.d.ts +2 -0
  117. package/src/integration/fastgpt.d.ts +0 -0
  118. package/src/integration/firecrawl.d.ts +2 -0
  119. package/src/integration/github.d.ts +69 -0
  120. package/src/integration/index.d.ts +4 -0
  121. package/src/integration/lark.d.ts +11 -0
  122. package/src/integration/wecom.d.ts +2 -0
  123. package/src/integration.model.d.ts +90 -0
  124. package/src/invite.model.d.ts +123 -0
  125. package/src/language.model.d.ts +19 -0
  126. package/src/organization-contact.model.d.ts +73 -0
  127. package/src/{organization-department.model.ts → organization-department.model.d.ts} +10 -16
  128. package/src/organization-language.model.d.ts +18 -0
  129. package/src/organization-projects.model.d.ts +80 -0
  130. package/src/organization-team-employee-model.d.ts +12 -0
  131. package/src/organization-team-model.d.ts +19 -0
  132. package/src/organization.model.d.ts +239 -0
  133. package/src/{password-reset.model.ts → password-reset.model.d.ts} +10 -14
  134. package/src/{plain-object.model.ts → plain-object.model.d.ts} +1 -1
  135. package/src/plugin.d.ts +13 -0
  136. package/src/role-permission.model.d.ts +61 -0
  137. package/src/role.model.d.ts +26 -0
  138. package/src/schedule.d.ts +27 -0
  139. package/src/secret-token.model.d.ts +11 -0
  140. package/src/seed.model.d.ts +37 -0
  141. package/src/storage-file.model.d.ts +40 -0
  142. package/src/tag-entity.model.d.ts +20 -0
  143. package/src/tenant.model.d.ts +40 -0
  144. package/src/tools/index.d.ts +1 -0
  145. package/src/tools/sandbox.d.ts +5 -0
  146. package/src/translation.model.d.ts +26 -0
  147. package/src/types.d.ts +245 -0
  148. package/src/user-organization.model.d.ts +24 -0
  149. package/src/user.model.d.ts +131 -0
  150. package/src/visibility.model.d.ts +6 -0
  151. package/.babelrc +0 -5
  152. package/.eslintrc.json +0 -18
  153. package/babel.config.json +0 -1
  154. package/jest.config.ts +0 -16
  155. package/project.json +0 -53
  156. package/src/agent/graph.ts +0 -275
  157. package/src/agent/index.ts +0 -5
  158. package/src/agent/token.ts +0 -23
  159. package/src/agent/utils.spec.ts +0 -283
  160. package/src/agent/utils.ts +0 -122
  161. package/src/agent/variables.ts +0 -66
  162. package/src/ai/ai-model.model.ts +0 -232
  163. package/src/ai/ai-provider.model.ts +0 -53
  164. package/src/ai/ai.model.ts +0 -87
  165. package/src/ai/chat-message-feedback.model.ts +0 -31
  166. package/src/ai/chat-message.model.ts +0 -277
  167. package/src/ai/chat.model.ts +0 -207
  168. package/src/ai/copilot-checkpoint.model.ts +0 -25
  169. package/src/ai/copilot-example.model.ts +0 -23
  170. package/src/ai/copilot-model.model.ts +0 -31
  171. package/src/ai/copilot-organization.model.ts +0 -21
  172. package/src/ai/copilot-provider.model.ts +0 -46
  173. package/src/ai/copilot-role.model.ts +0 -48
  174. package/src/ai/copilot-store.model.ts +0 -34
  175. package/src/ai/copilot-user.model.ts +0 -24
  176. package/src/ai/copilot.model.ts +0 -47
  177. package/src/ai/feature.model.ts +0 -6
  178. package/src/ai/index.ts +0 -40
  179. package/src/ai/knowledge-doc-chunk.model.ts +0 -123
  180. package/src/ai/knowledge-doc-chunk.spec.ts +0 -47
  181. package/src/ai/knowledge-doc-page.model.ts +0 -20
  182. package/src/ai/knowledge-doc.model.ts +0 -364
  183. package/src/ai/knowledge-pipeline.ts +0 -138
  184. package/src/ai/knowledge-retrieval-log.model.ts +0 -19
  185. package/src/ai/knowledgebase-task.model.ts +0 -46
  186. package/src/ai/knowledgebase.model.ts +0 -205
  187. package/src/ai/rag-web.ts +0 -54
  188. package/src/ai/rag.ts +0 -24
  189. package/src/ai/role-permissions.ts +0 -13
  190. package/src/ai/types.ts +0 -83
  191. package/src/ai/xpert-agent-execution.model.ts +0 -115
  192. package/src/ai/xpert-agent.model.ts +0 -264
  193. package/src/ai/xpert-project.model.ts +0 -103
  194. package/src/ai/xpert-table.model.ts +0 -100
  195. package/src/ai/xpert-task.model.ts +0 -32
  196. package/src/ai/xpert-template.model.ts +0 -53
  197. package/src/ai/xpert-tool-mcp.model.ts +0 -77
  198. package/src/ai/xpert-tool.model.ts +0 -216
  199. package/src/ai/xpert-toolset.model.ts +0 -220
  200. package/src/ai/xpert-workflow-task.prompt.ts +0 -71
  201. package/src/ai/xpert-workflow.model.ts +0 -502
  202. package/src/ai/xpert-workspace.model.ts +0 -42
  203. package/src/ai/xpert.model.ts +0 -637
  204. package/src/ai/xpert.utils.ts +0 -214
  205. package/src/analytics/ai.ts +0 -79
  206. package/src/analytics/approval-policy.model.ts +0 -40
  207. package/src/analytics/business-area-user.model.ts +0 -43
  208. package/src/analytics/business-area.ts +0 -20
  209. package/src/analytics/certification.model.ts +0 -12
  210. package/src/analytics/chatbi-conversation.model.ts +0 -16
  211. package/src/analytics/chatbi-model.model.ts +0 -22
  212. package/src/analytics/collection.model.ts +0 -8
  213. package/src/analytics/comment.model.ts +0 -14
  214. package/src/analytics/data-source-type.ts +0 -19
  215. package/src/analytics/data-source.ts +0 -72
  216. package/src/analytics/favorite.ts +0 -18
  217. package/src/analytics/features.ts +0 -19
  218. package/src/analytics/feed-model.ts +0 -15
  219. package/src/analytics/gateway.ts +0 -31
  220. package/src/analytics/index.ts +0 -39
  221. package/src/analytics/indicator-app.ts +0 -49
  222. package/src/analytics/indicator.ts +0 -143
  223. package/src/analytics/model-query-log.model.ts +0 -45
  224. package/src/analytics/model-query.ts +0 -22
  225. package/src/analytics/permission-approval.model.ts +0 -58
  226. package/src/analytics/project.model.ts +0 -56
  227. package/src/analytics/role-permissions.ts +0 -36
  228. package/src/analytics/schema.ts +0 -300
  229. package/src/analytics/screenshot.model.ts +0 -28
  230. package/src/analytics/semantic-model-entity.ts +0 -50
  231. package/src/analytics/semantic-model-member.ts +0 -49
  232. package/src/analytics/semantic-model.ts +0 -237
  233. package/src/analytics/story-template.model.ts +0 -34
  234. package/src/analytics/story-widget.ts +0 -15
  235. package/src/analytics/story.ts +0 -109
  236. package/src/analytics/subscription.ts +0 -43
  237. package/src/analytics/visit.model.ts +0 -39
  238. package/src/analytics/webSocket.ts +0 -53
  239. package/src/api-key.model.ts +0 -11
  240. package/src/base-entity.model.ts +0 -34
  241. package/src/contact.model.ts +0 -45
  242. package/src/core.model.ts +0 -103
  243. package/src/currency.model.ts +0 -582
  244. package/src/date-picker.model.ts +0 -5
  245. package/src/email-template.model.ts +0 -50
  246. package/src/email.model.ts +0 -46
  247. package/src/employee.model.ts +0 -199
  248. package/src/entity-with-members.model.ts +0 -16
  249. package/src/feature.model.ts +0 -108
  250. package/src/file-provider.ts +0 -37
  251. package/src/help-center-article.model.ts +0 -35
  252. package/src/help-center.model.ts +0 -33
  253. package/src/http-status.enum.ts +0 -58
  254. package/src/import-export.model.ts +0 -42
  255. package/src/index.ts +0 -60
  256. package/src/integration/dify.ts +0 -31
  257. package/src/integration/dingtalk.ts +0 -16
  258. package/src/integration/fastgpt.ts +0 -32
  259. package/src/integration/firecrawl.ts +0 -46
  260. package/src/integration/github.ts +0 -149
  261. package/src/integration/index.ts +0 -15
  262. package/src/integration/lark.ts +0 -79
  263. package/src/integration/wecom.ts +0 -16
  264. package/src/integration.model.ts +0 -119
  265. package/src/invite.model.ts +0 -144
  266. package/src/language.model.ts +0 -22
  267. package/src/organization-contact.model.ts +0 -84
  268. package/src/organization-language.model.ts +0 -24
  269. package/src/organization-projects.model.ts +0 -99
  270. package/src/organization-team-employee-model.ts +0 -14
  271. package/src/organization-team-model.ts +0 -25
  272. package/src/organization.model.ts +0 -266
  273. package/src/plugin.ts +0 -15
  274. package/src/role-permission.model.ts +0 -123
  275. package/src/role.model.ts +0 -31
  276. package/src/schedule.ts +0 -71
  277. package/src/secret-token.model.ts +0 -15
  278. package/src/seed.model.ts +0 -50
  279. package/src/storage-file.model.ts +0 -46
  280. package/src/tag-entity.model.ts +0 -23
  281. package/src/tenant.model.ts +0 -52
  282. package/src/tools/index.ts +0 -1
  283. package/src/tools/sandbox.ts +0 -5
  284. package/src/translation.model.ts +0 -37
  285. package/src/types.ts +0 -277
  286. package/src/user-organization.model.ts +0 -31
  287. package/src/user.model.ts +0 -151
  288. package/src/visibility.model.ts +0 -6
  289. package/tsconfig.json +0 -22
  290. package/tsconfig.lib.json +0 -10
  291. package/tsconfig.spec.json +0 -9
@@ -1,283 +0,0 @@
1
- import { TXpertGraph } from '../ai/xpert.model'
2
- import { DeepPartial } from '../types'
3
- import { allChannels, findStartNodes, getCurrentGraph } from './utils'
4
-
5
- describe('findStartNodes', () => {
6
- it('should return the correct start nodes for a given key', () => {
7
- const graph: DeepPartial<TXpertGraph> = {
8
- connections: [
9
- { from: 'A', to: 'B' },
10
- { from: 'B', to: 'C' },
11
- { from: 'D', to: 'C' },
12
- { from: 'C', to: 'E' },
13
- { from: 'E', to: 'F' }
14
- ]
15
- }
16
-
17
- const startNodes = findStartNodes(graph, 'C')
18
- expect(startNodes).toEqual(expect.arrayContaining(['A', 'D']))
19
- })
20
-
21
- it('should return the node itself if it has no upstream nodes', () => {
22
- const graph: DeepPartial<TXpertGraph> = {
23
- connections: [
24
- { from: 'A', to: 'B' },
25
- { from: 'B', to: 'C' }
26
- ]
27
- }
28
-
29
- const startNodes = findStartNodes(graph, 'A')
30
- expect(startNodes).toEqual(['A'])
31
- })
32
-
33
- it('should return an empty array if the key is not in the graph', () => {
34
- const graph: DeepPartial<TXpertGraph> = {
35
- connections: [
36
- { from: 'A', to: 'B' },
37
- { from: 'B', to: 'C' }
38
- ]
39
- }
40
-
41
- const startNodes = findStartNodes(graph, 'Z')
42
- expect(startNodes).toEqual(['Z'])
43
- })
44
-
45
- it('should use start part of from key', () => {
46
- const graph: DeepPartial<TXpertGraph> = {
47
- connections: [
48
- {
49
- type: "edge",
50
- // key: "Knowledge_XlSM1H1rCb/Router_zBkMXfqpXk",
51
- from: "Knowledge_XlSM1H1rCb",
52
- to: "Router_zBkMXfqpXk",
53
- },
54
- {
55
- type: "edge",
56
- // key: "Router_zBkMXfqpXk/oUluRQoFdV/Agent_cPnbaxekWd",
57
- from: "Router_zBkMXfqpXk/oUluRQoFdV",
58
- to: "Agent_cPnbaxekWd",
59
- },
60
- {
61
- type: "edge",
62
- // key: "Router_zBkMXfqpXk/else/Answer_Pb7cYUvTJU",
63
- from: "Router_zBkMXfqpXk/else",
64
- to: "Answer_Pb7cYUvTJU",
65
- },
66
- ]
67
- }
68
-
69
- const startNodes = findStartNodes(graph, 'Agent_cPnbaxekWd')
70
- expect(startNodes).toEqual(['Knowledge_XlSM1H1rCb'])
71
- })
72
-
73
- it('only edge connections', () => {
74
- const graph: DeepPartial<TXpertGraph> = {
75
- connections: [
76
- {
77
- type: 'edge',
78
- key: 'Agent_UMVcdTL9w1/Iterating_jsCXACz4wh',
79
- from: 'Agent_UMVcdTL9w1',
80
- to: 'Iterating_jsCXACz4wh'
81
- },
82
- {
83
- type: 'agent',
84
- key: 'Iterating_jsCXACz4wh/Agent_albUSvIcdF',
85
- from: 'Iterating_jsCXACz4wh',
86
- to: 'Agent_albUSvIcdF'
87
- },
88
- {
89
- type: 'edge',
90
- key: 'Agent_albUSvIcdF/Http_T9uLo1NJUV',
91
- from: 'Agent_albUSvIcdF',
92
- to: 'Http_T9uLo1NJUV'
93
- },
94
- {
95
- type: 'edge',
96
- key: 'Iterating_jsCXACz4wh/Code_27ERnJwa2t',
97
- from: 'Iterating_jsCXACz4wh',
98
- to: 'Code_27ERnJwa2t'
99
- },
100
- {
101
- type: 'edge',
102
- key: 'Code_27ERnJwa2t/Agent_M2Wa9MQVpM',
103
- from: 'Code_27ERnJwa2t',
104
- to: 'Agent_M2Wa9MQVpM'
105
- },
106
- {
107
- type: 'edge',
108
- key: 'Agent_M2Wa9MQVpM/Answer_uzsdBtAqPq',
109
- from: 'Agent_M2Wa9MQVpM',
110
- to: 'Answer_uzsdBtAqPq'
111
- }
112
- ]
113
- }
114
-
115
- const startNodes = findStartNodes(graph, 'Agent_albUSvIcdF')
116
- expect(startNodes).toEqual(['Agent_albUSvIcdF'])
117
- })
118
-
119
- it('only edge connections', () => {
120
- const graph: DeepPartial<TXpertGraph> = {
121
- nodes: [],
122
- connections: [
123
- {
124
- type: 'edge',
125
- key: 'Agent_UMVcdTL9w1/Iterating_jsCXACz4wh',
126
- from: 'Agent_UMVcdTL9w1',
127
- to: 'Iterating_jsCXACz4wh'
128
- },
129
- {
130
- type: 'agent',
131
- key: 'Iterating_jsCXACz4wh/Agent_albUSvIcdF',
132
- from: 'Iterating_jsCXACz4wh',
133
- to: 'Agent_albUSvIcdF'
134
- },
135
- {
136
- type: 'edge',
137
- key: 'Agent_albUSvIcdF/Http_T9uLo1NJUV',
138
- from: 'Agent_albUSvIcdF',
139
- to: 'Http_T9uLo1NJUV'
140
- },
141
- {
142
- type: 'edge',
143
- key: 'Iterating_jsCXACz4wh/Code_27ERnJwa2t',
144
- from: 'Iterating_jsCXACz4wh',
145
- to: 'Code_27ERnJwa2t'
146
- },
147
- {
148
- type: 'edge',
149
- key: 'Code_27ERnJwa2t/Agent_M2Wa9MQVpM',
150
- from: 'Code_27ERnJwa2t',
151
- to: 'Agent_M2Wa9MQVpM'
152
- },
153
- {
154
- type: 'edge',
155
- key: 'Agent_M2Wa9MQVpM/Answer_uzsdBtAqPq',
156
- from: 'Agent_M2Wa9MQVpM',
157
- to: 'Answer_uzsdBtAqPq'
158
- }
159
- ]
160
- }
161
-
162
- const startNodes = getCurrentGraph(graph as TXpertGraph, 'Agent_albUSvIcdF')
163
- expect(startNodes).toEqual(['Agent_albUSvIcdF'])
164
- })
165
-
166
- })
167
-
168
- describe('allChannels', () => {
169
- it('should return the correct start nodes for a given key', () => {
170
- const graph: DeepPartial<TXpertGraph> = {
171
- nodes: [
172
- {
173
- type: "agent",
174
- key: "Agent_xv0UeM91O6",
175
- },
176
- {
177
- type: "agent",
178
- key: "Agent_DiQbU6FKZ6",
179
- },
180
- {
181
- type: "workflow",
182
- key: "Router_Q1uTcWa1rZ",
183
- },
184
- {
185
- type: "workflow",
186
- key: "Code_MlXFPNEphR",
187
- },
188
- {
189
- type: "workflow",
190
- key: "Knowledge_PJ2H5EObqJ",
191
- },
192
- {
193
- type: "workflow",
194
- key: "Router_A1Na6n49Ri",
195
- },
196
- {
197
- type: "workflow",
198
- key: "Code_1uEOTXgBNQ",
199
- },
200
- {
201
- type: "workflow",
202
- key: "Answer_za0cCTiayv",
203
- },
204
- {
205
- type: "workflow",
206
- key: "Iterating_CsvbR5teUm",
207
- },
208
- {
209
- type: "workflow",
210
- key: "Answer_SowVtmiosK",
211
- },
212
- ],
213
- connections: [
214
- {
215
- type: "edge",
216
- key: "Router_Q1uTcWa1rZ/TT9sQAeTa2/Agent_DiQbU6FKZ6",
217
- from: "Router_Q1uTcWa1rZ/TT9sQAeTa2",
218
- to: "Agent_DiQbU6FKZ6",
219
- },
220
- {
221
- type: "edge",
222
- key: "Knowledge_PJ2H5EObqJ/Router_A1Na6n49Ri",
223
- from: "Knowledge_PJ2H5EObqJ",
224
- to: "Router_A1Na6n49Ri",
225
- },
226
- {
227
- type: "edge",
228
- key: "Router_A1Na6n49Ri/2syn8OhkzH/Agent_xv0UeM91O6",
229
- from: "Router_A1Na6n49Ri/2syn8OhkzH",
230
- to: "Agent_xv0UeM91O6",
231
- },
232
- {
233
- type: "edge",
234
- key: "Router_A1Na6n49Ri/else/Code_1uEOTXgBNQ",
235
- from: "Router_A1Na6n49Ri/else",
236
- to: "Code_1uEOTXgBNQ",
237
- },
238
- {
239
- type: "edge",
240
- key: "Router_Q1uTcWa1rZ/else/Answer_za0cCTiayv",
241
- from: "Router_Q1uTcWa1rZ/else",
242
- to: "Answer_za0cCTiayv",
243
- },
244
- {
245
- type: "edge",
246
- key: "Code_MlXFPNEphR/Router_Q1uTcWa1rZ",
247
- from: "Code_MlXFPNEphR",
248
- to: "Router_Q1uTcWa1rZ",
249
- },
250
- {
251
- type: "edge",
252
- key: "Code_1uEOTXgBNQ/Iterating_CsvbR5teUm",
253
- from: "Code_1uEOTXgBNQ",
254
- to: "Iterating_CsvbR5teUm",
255
- },
256
- {
257
- type: "agent",
258
- key: "Iterating_CsvbR5teUm/Agent_DiQbU6FKZ6",
259
- from: "Iterating_CsvbR5teUm",
260
- to: "Agent_DiQbU6FKZ6",
261
- },
262
- {
263
- type: "edge",
264
- key: "Iterating_CsvbR5teUm/Answer_SowVtmiosK",
265
- from: "Iterating_CsvbR5teUm",
266
- to: "Answer_SowVtmiosK",
267
- },
268
- ],
269
- }
270
-
271
- const key = 'Agent_xv0UeM91O6'
272
- const workflowNodes = allChannels(graph as TXpertGraph, key)
273
- expect(workflowNodes).toEqual(expect.arrayContaining([
274
- 'Agent_xv0UeM91O6',
275
- 'Knowledge_PJ2H5EObqJ',
276
- 'Code_1uEOTXgBNQ',
277
- 'Iterating_CsvbR5teUm',
278
- 'Answer_SowVtmiosK',
279
- ]))
280
-
281
- expect(workflowNodes).toEqual(expect.not.arrayContaining(['Router_Q1uTcWa1rZ']))
282
- })
283
- })
@@ -1,122 +0,0 @@
1
- import { isRouterKey } from '../ai'
2
- import { TXpertGraph } from '../ai/xpert.model'
3
- import { DeepPartial } from '../types'
4
-
5
- /**
6
- * Channels of all upstream and downstream nodes relative to the starting point startKey.
7
- *
8
- * @param graph
9
- * @param startKey
10
- */
11
- export function allChannels(graph: TXpertGraph, startKey: string) {
12
- graph = getCurrentGraph(graph, startKey)
13
- return graph.nodes.filter((node) => !(node.type === 'workflow' && isRouterKey(node.key))).map((node) => node.key)
14
- }
15
-
16
- export function findStartNodes(graph: DeepPartial<TXpertGraph>, key: string): string[] {
17
- const toMap = new Map<string, string[]>()
18
- // Consider only horizontal processes
19
- const connections = graph.connections.filter((_) => _.type === 'edge')
20
- // Construct toMap: record all upstream nodes of each node
21
- for (const conn of connections) {
22
- if (!toMap.has(conn.to)) toMap.set(conn.to, [])
23
- const [fromKey] = conn.from.split('/')
24
- if (conn.type === 'edge') {
25
- toMap.get(conn.to).push(fromKey)
26
- }
27
- }
28
-
29
- const result = new Set<string>()
30
-
31
- const checked = []
32
- // Recursively search upstream until you reach the starting point
33
- function dfsUp(nodeKey: string) {
34
- checked.push(nodeKey)
35
- const parents = toMap.get(nodeKey)
36
-
37
- // There is no upstream, this is the starting point
38
- if (!parents || parents.length === 0) {
39
- result.add(nodeKey)
40
- return
41
- }
42
-
43
- for (const parent of parents) {
44
- // There is a cycle
45
- if (checked.includes(parent)) {
46
- return
47
- }
48
- dfsUp(parent)
49
- }
50
- }
51
-
52
- dfsUp(key)
53
-
54
- return Array.from(result)
55
- }
56
-
57
- /**
58
- * Keep the content in the same graph as the key node (including the node, its connected nodes, and the 'edge' type connections between them)
59
- *
60
- * @param graph
61
- * @param key
62
- * @returns
63
- */
64
- export function getCurrentGraph(graph: TXpertGraph, key: string): TXpertGraph {
65
- const validConnections = graph.connections.filter(conn => conn.type === 'edge')
66
-
67
- // Extract the primary key (remove the / suffix)
68
- const normalize = (k: string) => k.split('/')[0]
69
-
70
- // Adjacency list: bidirectional (because you want to traverse the current graph)
71
- const adjacency = new Map<string, Set<string>>()
72
-
73
- for (const conn of validConnections) {
74
- const from = normalize(conn.from)
75
- const to = normalize(conn.to)
76
-
77
- if (!adjacency.has(from)) adjacency.set(from, new Set())
78
- if (!adjacency.has(to)) adjacency.set(to, new Set())
79
-
80
- adjacency.get(from).add(to)
81
- adjacency.get(to).add(from)
82
- }
83
-
84
- const visited = new Set<string>()
85
- const queue: string[] = key ? [normalize(key)] : []
86
-
87
- // BFS/DFS collects all nodes in the same graph
88
- while (queue.length > 0) {
89
- const current = queue.pop()
90
- if (visited.has(current)) continue
91
- visited.add(current)
92
-
93
- const neighbors = adjacency.get(current) || new Set()
94
- for (const neighbor of neighbors) {
95
- if (!visited.has(neighbor)) {
96
- queue.push(neighbor)
97
- }
98
- }
99
- }
100
-
101
- const nodeSet = new Set(graph.nodes.map(n => n.key))
102
- const keptNodes = graph.nodes.filter(n => visited.has(normalize(n.key)))
103
- const keptNodeKeys = new Set(keptNodes.map(n => n.key))
104
-
105
- const keptConnections = validConnections.filter(conn => {
106
- const from = normalize(conn.from)
107
- const to = normalize(conn.to)
108
- return visited.has(from) && visited.has(to)
109
- })
110
-
111
- return {
112
- nodes: keptNodes,
113
- connections: keptConnections
114
- }
115
- }
116
-
117
- export function shortTitle(input: string) {
118
- if (input) {
119
- return input.length <= 50 ? input : input.slice(0, 50) + '...'
120
- }
121
- return null
122
- }
@@ -1,66 +0,0 @@
1
- import { TWorkflowVarGroup } from "../ai/xpert-workflow.model"
2
- import { TXpertParameter, XpertParameterTypeEnum } from "../ai/xpert.model"
3
-
4
- /**
5
- *
6
- * Returns the variable schema for a given variable name.
7
- * The variable name can be in the format of 'groupName.variableName' or just 'variableName'.
8
- *
9
- * @param variables
10
- * @param variable
11
- * @returns
12
- */
13
- export function getVariableSchema(variables: TWorkflowVarGroup[], variable: string) {
14
- const [groupName, ...rest] = variable?.split('.') ?? []
15
-
16
- const group = variables?.find((_) => (rest.length ? _.group?.name === groupName : !_.group?.name))
17
-
18
- return {
19
- group,
20
- variable: group?.variables.find((_) => _.name === (rest.join('.') || groupName))
21
- }
22
- }
23
-
24
- export const FILE_VARIABLES: TXpertParameter[] = [
25
- {
26
- name: 'filePath',
27
- type: XpertParameterTypeEnum.STRING,
28
- description: {
29
- en_US: 'The path to the file',
30
- zh_Hans: '文件的路径'
31
- },
32
-
33
- },
34
- {
35
- name: 'fileName',
36
- type: XpertParameterTypeEnum.STRING,
37
- description: {
38
- en_US: 'The name of the file',
39
- zh_Hans: '文件的名称'
40
- },
41
- },
42
- {
43
- name: 'fileUrl',
44
- type: XpertParameterTypeEnum.STRING,
45
- description: {
46
- en_US: 'The URL of the file',
47
- zh_Hans: '文件的URL地址'
48
- },
49
- },
50
- {
51
- name: 'fileSize',
52
- type: XpertParameterTypeEnum.NUMBER,
53
- description: {
54
- en_US: 'The size of the file in bytes',
55
- zh_Hans: '文件的大小,单位为字节'
56
- },
57
- },
58
- {
59
- name: 'mimeType',
60
- type: XpertParameterTypeEnum.STRING,
61
- description: {
62
- en_US: 'The MIME type of the file',
63
- zh_Hans: '文件的MIME类型'
64
- },
65
- }
66
- ]
@@ -1,232 +0,0 @@
1
- import { AiModelTypeEnum } from '../agent/'
2
- import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
3
- import { I18nObject } from '../types'
4
- import { ICopilot } from './copilot.model'
5
-
6
-
7
- export interface IAiModel extends IBasePerTenantAndOrganizationEntityModel {
8
- /**
9
- * Model name
10
- */
11
- name: string
12
-
13
- /**
14
- * Model display name
15
- */
16
- label: string
17
-
18
- /**
19
- * Model type
20
- */
21
- modelType: string
22
-
23
- /**
24
- * Model features
25
- */
26
- features: string[]
27
-
28
- /**
29
- * Model properties
30
- */
31
- modelProperties: Record<string, any>
32
-
33
- /**
34
- * Parameter rules
35
- */
36
- parameterRules: Record<string, any>[]
37
-
38
- /**
39
- * Pricing information
40
- */
41
- pricing: {
42
- input: string
43
- output: string
44
- unit: string
45
- currency: string
46
- }
47
-
48
- /**
49
- * Deprecated
50
- */
51
- deprecated: boolean
52
- }
53
-
54
- export enum ProviderType {
55
- CUSTOM = 'custom',
56
- SYSTEM = 'system'
57
- }
58
-
59
- export interface ICopilotWithProvider extends ICopilot {
60
- providerWithModels: Partial<IAiProviderEntity>
61
- }
62
-
63
- export interface IAiProviderEntity {
64
- provider: string;
65
- label: I18nObject;
66
- description: I18nObject;
67
- icon_small: I18nObject;
68
- icon_large: I18nObject;
69
- background: string;
70
- help: ProviderHelpInfo;
71
- supported_model_types: AiModelTypeEnum[];
72
- configurate_methods: ConfigurateMethod[];
73
- model_credential_schema: ModelCredentialSchema;
74
- provider_credential_schema: ProviderCredentialSchema;
75
- models: ProviderModel[]
76
- /**
77
- * Not yet implemented, your contribution is needed
78
- */
79
- not_implemented?: boolean
80
- }
81
-
82
- export interface ProviderHelpInfo {
83
- title: I18nObject;
84
- url: I18nObject;
85
- }
86
-
87
- export interface ProviderModel {
88
- model: string;
89
- label: I18nObject;
90
- model_type: AiModelTypeEnum;
91
- features?: ModelFeature[];
92
- fetch_from: FetchFrom;
93
- model_properties: Partial<Record<ModelPropertyKey, any>>;
94
- deprecated?: boolean;
95
- modelConfig?: any;
96
- }
97
-
98
- export interface ProviderCredentialSchema {
99
- credential_form_schemas: CredentialFormSchema[];
100
- }
101
-
102
- /**
103
- * @todo Use JSON Schema to implement
104
- */
105
- export enum CredentialFormTypeEnum {
106
- TEXT_INPUT = "text-input",
107
- SECRET_INPUT = "secret-input",
108
- SELECT = "select",
109
- RADIO = "radio",
110
- // SWITCH = "switch", // use ParameterType.BOOLEAN
111
- }
112
-
113
- export interface CredentialFormSchema {
114
- variable: string;
115
- label: I18nObject;
116
- type: CredentialFormTypeEnum | ParameterType
117
- required: boolean;
118
- default?: number | string | boolean
119
- options?: {
120
- label: I18nObject
121
- value: number | string | boolean
122
- show_on?: FormShowOnObject[]
123
- }[]
124
- placeholder: I18nObject;
125
-
126
- max_length?: number
127
- show_on?: FormShowOnObject[]
128
- }
129
-
130
- export interface FormShowOnObject {
131
- variable: string
132
- value: string
133
- }
134
-
135
- export enum FetchFrom {
136
- PREDEFINED_MODEL = "predefined-model",
137
- CUSTOMIZABLE_MODEL = "customizable-model"
138
- }
139
-
140
- export enum ModelFeature {
141
- TOOL_CALL = "tool-call",
142
- MULTI_TOOL_CALL = "multi-tool-call",
143
- AGENT_THOUGHT = "agent-thought",
144
- VISION = "vision",
145
- STREAM_TOOL_CALL = "stream-tool-call",
146
- VIDEO = "video",
147
- STRUCTURED_OUTPUT = "structured-output"
148
- }
149
-
150
- export enum ModelPropertyKey {
151
- MODE = "mode",
152
- CONTEXT_SIZE = "context_size",
153
- MAX_CHUNKS = "max_chunks",
154
- FILE_UPLOAD_LIMIT = "file_upload_limit",
155
- SUPPORTED_FILE_EXTENSIONS = "supported_file_extensions",
156
- MAX_CHARACTERS_PER_CHUNK = "max_characters_per_chunk",
157
- DEFAULT_VOICE = "default_voice",
158
- VOICES = "voices",
159
- WORD_LIMIT = "word_limit",
160
- AUDIO_TYPE = "audio_type",
161
- MAX_WORKERS = "max_workers"
162
- }
163
-
164
- export enum ConfigurateMethod {
165
- PREDEFINED_MODEL = 'predefined-model',
166
- CUSTOMIZABLE_MODEL = 'customizable-model'
167
- }
168
-
169
- /**
170
- * @todo Use JSON Schema to implement
171
- */
172
- export enum ParameterType {
173
- FLOAT = "float",
174
- INT = "int",
175
- STRING = "string",
176
- BOOLEAN = "boolean",
177
- TEXT = "text"
178
- }
179
-
180
- /**
181
- * @todo Use JSON Schema to implement
182
- */
183
- export interface ParameterRule {
184
- name?: string;
185
- useTemplate?: string;
186
- label: I18nObject;
187
- type: ParameterType;
188
- help?: I18nObject;
189
- required?: boolean;
190
- default?: any;
191
- min?: number;
192
- max?: number;
193
- precision?: number;
194
- options?: string[];
195
- }
196
-
197
- export interface PriceConfig {
198
- input: number;
199
- output?: number;
200
- unit: number;
201
- currency: string;
202
- }
203
-
204
- export interface AIModelEntity extends ProviderModel {
205
- parameter_rules?: ParameterRule[]
206
- pricing?: PriceConfig
207
- }
208
-
209
- export interface FieldModelSchema {
210
- label: I18nObject
211
- placeholder?: I18nObject
212
- }
213
-
214
-
215
- export interface ModelCredentialSchema {
216
- model: FieldModelSchema
217
- credential_form_schemas: CredentialFormSchema[]
218
- }
219
-
220
- export const AI_MODEL_TYPE_VARIABLE = "__model_type"
221
-
222
- export enum PriceType {
223
- INPUT = "input",
224
- OUTPUT = "output"
225
- }
226
-
227
- export interface PriceInfo {
228
- unitPrice: number;
229
- unit: number;
230
- totalAmount: number;
231
- currency: string;
232
- }