@metad/contracts 3.6.7 → 3.8.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 (293) hide show
  1. package/README.md +2 -2
  2. package/index.cjs.d.ts +1 -0
  3. package/index.cjs.js +4044 -5
  4. package/index.esm.d.ts +1 -0
  5. package/index.esm.js +3911 -0
  6. package/package.json +6 -2
  7. package/src/agent/{ai-model.ts → ai-model.d.ts} +2 -2
  8. package/src/agent/graph.d.ts +167 -0
  9. package/src/agent/index.d.ts +6 -0
  10. package/src/agent/interrupt.d.ts +51 -0
  11. package/src/agent/token.d.ts +21 -0
  12. package/src/agent/utils.d.ts +19 -0
  13. package/src/agent/variables.d.ts +16 -0
  14. package/src/ai/ai-model.model.d.ts +198 -0
  15. package/src/ai/ai-provider.model.d.ts +43 -0
  16. package/src/ai/ai.model.d.ts +82 -0
  17. package/src/ai/chat-message-feedback.model.d.ts +24 -0
  18. package/src/ai/chat-message.model.d.ts +92 -0
  19. package/src/ai/chat.model.d.ts +185 -0
  20. package/src/ai/copilot-checkpoint.model.d.ts +23 -0
  21. package/src/ai/copilot-example.model.d.ts +19 -0
  22. package/src/ai/copilot-model.model.d.ts +30 -0
  23. package/src/ai/copilot-organization.model.d.ts +17 -0
  24. package/src/ai/copilot-provider.model.d.ts +31 -0
  25. package/src/ai/copilot-role.model.d.ts +43 -0
  26. package/src/ai/copilot-store.model.d.ts +29 -0
  27. package/src/ai/copilot-user.model.d.ts +27 -0
  28. package/src/ai/copilot.model.d.ts +36 -0
  29. package/src/ai/{environment.model.ts → environment.model.d.ts} +10 -12
  30. package/src/ai/feature.model.d.ts +6 -0
  31. package/src/ai/index.d.ts +44 -0
  32. package/src/ai/knowledge-doc-chunk.model.d.ts +61 -0
  33. package/src/ai/knowledge-doc-page.model.d.ts +15 -0
  34. package/src/ai/knowledge-doc.model.d.ts +222 -0
  35. package/src/ai/knowledge-pipeline.d.ts +107 -0
  36. package/src/ai/knowledge-retrieval-log.model.d.ts +10 -0
  37. package/src/ai/knowledgebase-task.model.d.ts +39 -0
  38. package/src/ai/knowledgebase.model.d.ts +174 -0
  39. package/src/ai/middleware.model.d.ts +23 -0
  40. package/src/ai/rag-web.d.ts +26 -0
  41. package/src/ai/rag.d.ts +24 -0
  42. package/src/ai/role-permissions.d.ts +13 -0
  43. package/src/ai/sandbox.d.ts +6 -0
  44. package/src/ai/skill.model.d.ts +181 -0
  45. package/src/ai/types.d.ts +77 -0
  46. package/src/ai/xpert-agent-execution.model.d.ts +96 -0
  47. package/src/ai/xpert-agent.model.d.ts +222 -0
  48. package/src/ai/xpert-project.model.d.ts +86 -0
  49. package/src/ai/xpert-table.model.d.ts +84 -0
  50. package/src/ai/xpert-task.model.d.ts +26 -0
  51. package/src/ai/xpert-template.model.d.ts +47 -0
  52. package/src/ai/xpert-tool-mcp.model.d.ts +72 -0
  53. package/src/ai/xpert-tool.model.d.ts +154 -0
  54. package/src/ai/xpert-toolset.model.d.ts +200 -0
  55. package/src/ai/xpert-workflow-task.prompt.d.ts +2 -0
  56. package/src/ai/xpert-workflow.model.d.ts +445 -0
  57. package/src/ai/xpert-workspace.model.d.ts +32 -0
  58. package/src/ai/xpert.model.d.ts +502 -0
  59. package/src/ai/xpert.utils.d.ts +84 -0
  60. package/src/analytics/ai.d.ts +73 -0
  61. package/src/analytics/approval-policy.model.d.ts +30 -0
  62. package/src/analytics/business-area-user.model.d.ts +35 -0
  63. package/src/analytics/business-area.d.ts +17 -0
  64. package/src/analytics/certification.model.d.ts +11 -0
  65. package/src/analytics/chatbi-conversation.model.d.ts +15 -0
  66. package/src/analytics/chatbi-model.model.d.ts +18 -0
  67. package/src/analytics/collection.model.d.ts +6 -0
  68. package/src/analytics/comment.model.d.ts +10 -0
  69. package/src/analytics/data-source-type.d.ts +16 -0
  70. package/src/analytics/data-source.d.ts +62 -0
  71. package/src/analytics/favorite.d.ts +14 -0
  72. package/src/analytics/features.d.ts +19 -0
  73. package/src/analytics/feed-model.d.ts +13 -0
  74. package/src/analytics/gateway.d.ts +28 -0
  75. package/src/analytics/index.d.ts +38 -0
  76. package/src/analytics/indicator-app.d.ts +44 -0
  77. package/src/analytics/{indicator-market.ts → indicator-market.d.ts} +2 -6
  78. package/src/analytics/indicator.d.ts +105 -0
  79. package/src/analytics/model-query-log.model.d.ts +41 -0
  80. package/src/analytics/model-query.d.ts +21 -0
  81. package/src/analytics/{notification-destination.ts → notification-destination.d.ts} +5 -9
  82. package/src/analytics/{permission-approval-user.model.ts → permission-approval-user.model.d.ts} +8 -10
  83. package/src/analytics/permission-approval.model.d.ts +47 -0
  84. package/src/analytics/project.model.d.ts +50 -0
  85. package/src/analytics/role-permissions.d.ts +25 -0
  86. package/src/analytics/schema.d.ts +262 -0
  87. package/src/analytics/screenshot.model.d.ts +25 -0
  88. package/src/analytics/semantic-model-entity.d.ts +38 -0
  89. package/src/analytics/semantic-model-member.d.ts +27 -0
  90. package/src/analytics/semantic-model.d.ts +183 -0
  91. package/src/analytics/{story-point.ts → story-point.d.ts} +6 -11
  92. package/src/analytics/story-template.model.d.ts +28 -0
  93. package/src/analytics/story-widget.d.ts +12 -0
  94. package/src/analytics/story.d.ts +93 -0
  95. package/src/analytics/subscription.d.ts +38 -0
  96. package/src/analytics/visit.model.d.ts +34 -0
  97. package/src/analytics/webSocket.d.ts +48 -0
  98. package/src/api-key.model.d.ts +10 -0
  99. package/src/base-entity.model.d.ts +27 -0
  100. package/src/contact.model.d.ts +41 -0
  101. package/src/core.model.d.ts +97 -0
  102. package/src/{country.model.ts → country.model.d.ts} +2 -3
  103. package/src/currency.model.d.ts +579 -0
  104. package/src/{custom-smtp.model.ts → custom-smtp.model.d.ts} +17 -21
  105. package/src/date-picker.model.d.ts +5 -0
  106. package/src/email-template.model.d.ts +39 -0
  107. package/src/email.model.d.ts +36 -0
  108. package/src/employee.model.d.ts +128 -0
  109. package/src/entity-with-members.model.d.ts +13 -0
  110. package/src/feature.model.d.ts +93 -0
  111. package/src/file-provider.d.ts +33 -0
  112. package/src/help-center-article.model.d.ts +0 -0
  113. package/src/help-center.model.d.ts +0 -0
  114. package/src/http-status.enum.d.ts +57 -0
  115. package/src/import-export.model.d.ts +36 -0
  116. package/src/index.d.ts +48 -0
  117. package/src/integration/dify.d.ts +0 -0
  118. package/src/integration/dingtalk.d.ts +2 -0
  119. package/src/integration/fastgpt.d.ts +0 -0
  120. package/src/integration/firecrawl.d.ts +2 -0
  121. package/src/integration/github.d.ts +69 -0
  122. package/src/integration/index.d.ts +4 -0
  123. package/src/integration/lark.d.ts +5 -0
  124. package/src/integration/wecom.d.ts +2 -0
  125. package/src/integration.model.d.ts +85 -0
  126. package/src/invite.model.d.ts +123 -0
  127. package/src/language.model.d.ts +19 -0
  128. package/src/organization-contact.model.d.ts +72 -0
  129. package/src/{organization-department.model.ts → organization-department.model.d.ts} +10 -16
  130. package/src/organization-language.model.d.ts +18 -0
  131. package/src/organization-projects.model.d.ts +80 -0
  132. package/src/organization-team-employee-model.d.ts +12 -0
  133. package/src/organization-team-model.d.ts +19 -0
  134. package/src/organization.model.d.ts +238 -0
  135. package/src/{password-reset.model.ts → password-reset.model.d.ts} +10 -14
  136. package/src/{plain-object.model.ts → plain-object.model.d.ts} +1 -1
  137. package/src/plugin.d.ts +21 -0
  138. package/src/role-permission.model.d.ts +61 -0
  139. package/src/role.model.d.ts +26 -0
  140. package/src/schedule.d.ts +27 -0
  141. package/src/secret-token.model.d.ts +11 -0
  142. package/src/seed.model.d.ts +37 -0
  143. package/src/storage-file.model.d.ts +40 -0
  144. package/src/tag-entity.model.d.ts +20 -0
  145. package/src/tenant.model.d.ts +40 -0
  146. package/src/tools/index.d.ts +1 -0
  147. package/src/tools/sandbox.d.ts +5 -0
  148. package/src/translation.model.d.ts +26 -0
  149. package/src/types.d.ts +245 -0
  150. package/src/user-organization.model.d.ts +24 -0
  151. package/src/user.model.d.ts +131 -0
  152. package/src/visibility.model.d.ts +6 -0
  153. package/.babelrc +0 -5
  154. package/.eslintrc.json +0 -18
  155. package/babel.config.json +0 -1
  156. package/jest.config.ts +0 -16
  157. package/project.json +0 -53
  158. package/src/agent/graph.ts +0 -275
  159. package/src/agent/index.ts +0 -5
  160. package/src/agent/token.ts +0 -23
  161. package/src/agent/utils.spec.ts +0 -283
  162. package/src/agent/utils.ts +0 -122
  163. package/src/agent/variables.ts +0 -66
  164. package/src/ai/ai-model.model.ts +0 -232
  165. package/src/ai/ai-provider.model.ts +0 -53
  166. package/src/ai/ai.model.ts +0 -87
  167. package/src/ai/chat-message-feedback.model.ts +0 -31
  168. package/src/ai/chat-message.model.ts +0 -277
  169. package/src/ai/chat.model.ts +0 -207
  170. package/src/ai/copilot-checkpoint.model.ts +0 -25
  171. package/src/ai/copilot-example.model.ts +0 -23
  172. package/src/ai/copilot-model.model.ts +0 -31
  173. package/src/ai/copilot-organization.model.ts +0 -21
  174. package/src/ai/copilot-provider.model.ts +0 -46
  175. package/src/ai/copilot-role.model.ts +0 -48
  176. package/src/ai/copilot-store.model.ts +0 -34
  177. package/src/ai/copilot-user.model.ts +0 -24
  178. package/src/ai/copilot.model.ts +0 -47
  179. package/src/ai/feature.model.ts +0 -6
  180. package/src/ai/index.ts +0 -40
  181. package/src/ai/knowledge-doc-chunk.model.ts +0 -123
  182. package/src/ai/knowledge-doc-chunk.spec.ts +0 -47
  183. package/src/ai/knowledge-doc-page.model.ts +0 -20
  184. package/src/ai/knowledge-doc.model.ts +0 -364
  185. package/src/ai/knowledge-pipeline.ts +0 -138
  186. package/src/ai/knowledge-retrieval-log.model.ts +0 -19
  187. package/src/ai/knowledgebase-task.model.ts +0 -46
  188. package/src/ai/knowledgebase.model.ts +0 -205
  189. package/src/ai/rag-web.ts +0 -54
  190. package/src/ai/rag.ts +0 -24
  191. package/src/ai/role-permissions.ts +0 -13
  192. package/src/ai/types.ts +0 -83
  193. package/src/ai/xpert-agent-execution.model.ts +0 -115
  194. package/src/ai/xpert-agent.model.ts +0 -264
  195. package/src/ai/xpert-project.model.ts +0 -103
  196. package/src/ai/xpert-table.model.ts +0 -100
  197. package/src/ai/xpert-task.model.ts +0 -32
  198. package/src/ai/xpert-template.model.ts +0 -53
  199. package/src/ai/xpert-tool-mcp.model.ts +0 -77
  200. package/src/ai/xpert-tool.model.ts +0 -216
  201. package/src/ai/xpert-toolset.model.ts +0 -220
  202. package/src/ai/xpert-workflow-task.prompt.ts +0 -71
  203. package/src/ai/xpert-workflow.model.ts +0 -502
  204. package/src/ai/xpert-workspace.model.ts +0 -42
  205. package/src/ai/xpert.model.ts +0 -637
  206. package/src/ai/xpert.utils.ts +0 -214
  207. package/src/analytics/ai.ts +0 -79
  208. package/src/analytics/approval-policy.model.ts +0 -40
  209. package/src/analytics/business-area-user.model.ts +0 -43
  210. package/src/analytics/business-area.ts +0 -20
  211. package/src/analytics/certification.model.ts +0 -12
  212. package/src/analytics/chatbi-conversation.model.ts +0 -16
  213. package/src/analytics/chatbi-model.model.ts +0 -22
  214. package/src/analytics/collection.model.ts +0 -8
  215. package/src/analytics/comment.model.ts +0 -14
  216. package/src/analytics/data-source-type.ts +0 -19
  217. package/src/analytics/data-source.ts +0 -72
  218. package/src/analytics/favorite.ts +0 -18
  219. package/src/analytics/features.ts +0 -19
  220. package/src/analytics/feed-model.ts +0 -15
  221. package/src/analytics/gateway.ts +0 -31
  222. package/src/analytics/index.ts +0 -39
  223. package/src/analytics/indicator-app.ts +0 -49
  224. package/src/analytics/indicator.ts +0 -143
  225. package/src/analytics/model-query-log.model.ts +0 -45
  226. package/src/analytics/model-query.ts +0 -22
  227. package/src/analytics/permission-approval.model.ts +0 -58
  228. package/src/analytics/project.model.ts +0 -56
  229. package/src/analytics/role-permissions.ts +0 -36
  230. package/src/analytics/schema.ts +0 -300
  231. package/src/analytics/screenshot.model.ts +0 -28
  232. package/src/analytics/semantic-model-entity.ts +0 -50
  233. package/src/analytics/semantic-model-member.ts +0 -49
  234. package/src/analytics/semantic-model.ts +0 -237
  235. package/src/analytics/story-template.model.ts +0 -34
  236. package/src/analytics/story-widget.ts +0 -15
  237. package/src/analytics/story.ts +0 -109
  238. package/src/analytics/subscription.ts +0 -43
  239. package/src/analytics/visit.model.ts +0 -39
  240. package/src/analytics/webSocket.ts +0 -53
  241. package/src/api-key.model.ts +0 -11
  242. package/src/base-entity.model.ts +0 -34
  243. package/src/contact.model.ts +0 -45
  244. package/src/core.model.ts +0 -103
  245. package/src/currency.model.ts +0 -582
  246. package/src/date-picker.model.ts +0 -5
  247. package/src/email-template.model.ts +0 -50
  248. package/src/email.model.ts +0 -46
  249. package/src/employee.model.ts +0 -199
  250. package/src/entity-with-members.model.ts +0 -16
  251. package/src/feature.model.ts +0 -108
  252. package/src/file-provider.ts +0 -37
  253. package/src/help-center-article.model.ts +0 -35
  254. package/src/help-center.model.ts +0 -33
  255. package/src/http-status.enum.ts +0 -58
  256. package/src/import-export.model.ts +0 -42
  257. package/src/index.ts +0 -60
  258. package/src/integration/dify.ts +0 -31
  259. package/src/integration/dingtalk.ts +0 -16
  260. package/src/integration/fastgpt.ts +0 -32
  261. package/src/integration/firecrawl.ts +0 -46
  262. package/src/integration/github.ts +0 -149
  263. package/src/integration/index.ts +0 -15
  264. package/src/integration/lark.ts +0 -79
  265. package/src/integration/wecom.ts +0 -16
  266. package/src/integration.model.ts +0 -119
  267. package/src/invite.model.ts +0 -144
  268. package/src/language.model.ts +0 -22
  269. package/src/organization-contact.model.ts +0 -84
  270. package/src/organization-language.model.ts +0 -24
  271. package/src/organization-projects.model.ts +0 -99
  272. package/src/organization-team-employee-model.ts +0 -14
  273. package/src/organization-team-model.ts +0 -25
  274. package/src/organization.model.ts +0 -266
  275. package/src/plugin.ts +0 -15
  276. package/src/role-permission.model.ts +0 -123
  277. package/src/role.model.ts +0 -31
  278. package/src/schedule.ts +0 -71
  279. package/src/secret-token.model.ts +0 -15
  280. package/src/seed.model.ts +0 -50
  281. package/src/storage-file.model.ts +0 -46
  282. package/src/tag-entity.model.ts +0 -23
  283. package/src/tenant.model.ts +0 -52
  284. package/src/tools/index.ts +0 -1
  285. package/src/tools/sandbox.ts +0 -5
  286. package/src/translation.model.ts +0 -37
  287. package/src/types.ts +0 -277
  288. package/src/user-organization.model.ts +0 -31
  289. package/src/user.model.ts +0 -151
  290. package/src/visibility.model.ts +0 -6
  291. package/tsconfig.json +0 -22
  292. package/tsconfig.lib.json +0 -10
  293. 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
- }