@metad/contracts 3.6.1 → 3.6.2

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 (286) hide show
  1. package/index.cjs.d.ts +1 -0
  2. package/index.cjs.js +4233 -5
  3. package/index.esm.d.ts +1 -0
  4. package/index.esm.js +4129 -0
  5. package/package.json +9 -2
  6. package/src/agent/{ai-model.ts → ai-model.d.ts} +2 -2
  7. package/src/agent/graph.d.ts +148 -0
  8. package/src/agent/index.d.ts +5 -0
  9. package/src/agent/token.d.ts +21 -0
  10. package/src/agent/utils.d.ts +19 -0
  11. package/src/agent/variables.d.ts +14 -0
  12. package/src/ai/ai-model.model.d.ts +198 -0
  13. package/src/ai/ai-provider.model.d.ts +43 -0
  14. package/src/ai/ai.model.d.ts +82 -0
  15. package/src/ai/chat-message-feedback.model.d.ts +24 -0
  16. package/src/ai/chat-message.model.d.ts +222 -0
  17. package/src/ai/chat.model.d.ts +189 -0
  18. package/src/ai/copilot-checkpoint.model.d.ts +23 -0
  19. package/src/ai/copilot-example.model.d.ts +19 -0
  20. package/src/ai/copilot-model.model.d.ts +26 -0
  21. package/src/ai/copilot-organization.model.d.ts +17 -0
  22. package/src/ai/copilot-provider.model.d.ts +31 -0
  23. package/src/ai/copilot-role.model.d.ts +43 -0
  24. package/src/ai/copilot-store.model.d.ts +29 -0
  25. package/src/ai/copilot-user.model.d.ts +20 -0
  26. package/src/ai/copilot.model.d.ts +36 -0
  27. package/src/ai/{environment.model.ts → environment.model.d.ts} +10 -12
  28. package/src/ai/feature.model.d.ts +6 -0
  29. package/src/ai/index.d.ts +39 -0
  30. package/src/ai/knowledge-doc-chunk.model.d.ts +60 -0
  31. package/src/ai/knowledge-doc-page.model.d.ts +15 -0
  32. package/src/ai/knowledge-doc.model.d.ts +192 -0
  33. package/src/ai/knowledge-pipeline.d.ts +107 -0
  34. package/src/ai/knowledge-retrieval-log.model.d.ts +10 -0
  35. package/src/ai/knowledgebase-task.model.d.ts +39 -0
  36. package/src/ai/knowledgebase.model.d.ts +162 -0
  37. package/src/ai/rag-web.d.ts +26 -0
  38. package/src/ai/rag.d.ts +24 -0
  39. package/src/ai/role-permissions.d.ts +13 -0
  40. package/src/ai/types.d.ts +39 -0
  41. package/src/ai/xpert-agent-execution.model.d.ts +96 -0
  42. package/src/ai/xpert-agent.model.d.ts +192 -0
  43. package/src/ai/xpert-project.model.d.ts +86 -0
  44. package/src/ai/xpert-task.model.d.ts +26 -0
  45. package/src/ai/xpert-template.model.d.ts +47 -0
  46. package/src/ai/xpert-tool-mcp.model.d.ts +67 -0
  47. package/src/ai/xpert-tool.model.d.ts +147 -0
  48. package/src/ai/xpert-toolset.model.d.ts +200 -0
  49. package/src/ai/xpert-workflow-task.prompt.d.ts +2 -0
  50. package/src/ai/xpert-workflow.model.d.ts +366 -0
  51. package/src/ai/xpert-workspace.model.d.ts +32 -0
  52. package/src/ai/xpert.model.d.ts +529 -0
  53. package/src/ai/xpert.utils.d.ts +80 -0
  54. package/src/analytics/ai.d.ts +73 -0
  55. package/src/analytics/approval-policy.model.d.ts +30 -0
  56. package/src/analytics/business-area-user.model.d.ts +35 -0
  57. package/src/analytics/business-area.d.ts +17 -0
  58. package/src/analytics/certification.model.d.ts +11 -0
  59. package/src/analytics/chatbi-conversation.model.d.ts +15 -0
  60. package/src/analytics/chatbi-model.model.d.ts +18 -0
  61. package/src/analytics/collection.model.d.ts +6 -0
  62. package/src/analytics/comment.model.d.ts +10 -0
  63. package/src/analytics/data-source-type.d.ts +16 -0
  64. package/src/analytics/data-source.d.ts +62 -0
  65. package/src/analytics/favorite.d.ts +14 -0
  66. package/src/analytics/features.d.ts +19 -0
  67. package/src/analytics/feed-model.d.ts +13 -0
  68. package/src/analytics/gateway.d.ts +27 -0
  69. package/src/analytics/index.d.ts +38 -0
  70. package/src/analytics/indicator-app.d.ts +44 -0
  71. package/src/analytics/{indicator-market.ts → indicator-market.d.ts} +2 -6
  72. package/src/analytics/indicator.d.ts +106 -0
  73. package/src/analytics/model-query-log.model.d.ts +41 -0
  74. package/src/analytics/model-query.d.ts +21 -0
  75. package/src/analytics/{notification-destination.ts → notification-destination.d.ts} +5 -9
  76. package/src/analytics/{permission-approval-user.model.ts → permission-approval-user.model.d.ts} +8 -10
  77. package/src/analytics/permission-approval.model.d.ts +47 -0
  78. package/src/analytics/project.model.d.ts +50 -0
  79. package/src/analytics/role-permissions.d.ts +25 -0
  80. package/src/analytics/schema.d.ts +262 -0
  81. package/src/analytics/screenshot.model.d.ts +25 -0
  82. package/src/analytics/semantic-model-entity.d.ts +37 -0
  83. package/src/analytics/semantic-model-member.d.ts +24 -0
  84. package/src/analytics/semantic-model.d.ts +175 -0
  85. package/src/analytics/{story-point.ts → story-point.d.ts} +6 -11
  86. package/src/analytics/story-template.model.d.ts +28 -0
  87. package/src/analytics/story-widget.d.ts +12 -0
  88. package/src/analytics/story.d.ts +93 -0
  89. package/src/analytics/subscription.d.ts +38 -0
  90. package/src/analytics/visit.model.d.ts +34 -0
  91. package/src/analytics/webSocket.d.ts +48 -0
  92. package/src/api-key.model.d.ts +10 -0
  93. package/src/base-entity.model.d.ts +27 -0
  94. package/src/contact.model.d.ts +41 -0
  95. package/src/core.model.d.ts +97 -0
  96. package/src/{country.model.ts → country.model.d.ts} +2 -3
  97. package/src/currency.model.d.ts +579 -0
  98. package/src/{custom-smtp.model.ts → custom-smtp.model.d.ts} +17 -21
  99. package/src/date-picker.model.d.ts +5 -0
  100. package/src/email-template.model.d.ts +39 -0
  101. package/src/email.model.d.ts +36 -0
  102. package/src/employee.model.d.ts +128 -0
  103. package/src/entity-with-members.model.d.ts +13 -0
  104. package/src/feature.model.d.ts +93 -0
  105. package/src/file-provider.d.ts +33 -0
  106. package/src/help-center-article.model.d.ts +0 -0
  107. package/src/help-center.model.d.ts +0 -0
  108. package/src/http-status.enum.d.ts +57 -0
  109. package/src/import-export.model.d.ts +36 -0
  110. package/src/index.d.ts +48 -0
  111. package/src/integration/dify.d.ts +0 -0
  112. package/src/integration/dingtalk.d.ts +2 -0
  113. package/src/integration/fastgpt.d.ts +0 -0
  114. package/src/integration/firecrawl.d.ts +2 -0
  115. package/src/integration/github.d.ts +69 -0
  116. package/src/integration/index.d.ts +4 -0
  117. package/src/integration/lark.d.ts +11 -0
  118. package/src/integration/wecom.d.ts +2 -0
  119. package/src/integration.model.d.ts +90 -0
  120. package/src/invite.model.d.ts +123 -0
  121. package/src/language.model.d.ts +19 -0
  122. package/src/organization-contact.model.d.ts +73 -0
  123. package/src/{organization-department.model.ts → organization-department.model.d.ts} +10 -16
  124. package/src/organization-language.model.d.ts +18 -0
  125. package/src/organization-projects.model.d.ts +80 -0
  126. package/src/organization-team-employee-model.d.ts +12 -0
  127. package/src/organization-team-model.d.ts +19 -0
  128. package/src/organization.model.d.ts +239 -0
  129. package/src/{password-reset.model.ts → password-reset.model.d.ts} +10 -14
  130. package/src/{plain-object.model.ts → plain-object.model.d.ts} +1 -1
  131. package/src/plugin.d.ts +13 -0
  132. package/src/role-permission.model.d.ts +61 -0
  133. package/src/role.model.d.ts +26 -0
  134. package/src/schedule.d.ts +27 -0
  135. package/src/secret-token.model.d.ts +11 -0
  136. package/src/seed.model.d.ts +37 -0
  137. package/src/storage-file.model.d.ts +40 -0
  138. package/src/tag-entity.model.d.ts +20 -0
  139. package/src/tenant.model.d.ts +40 -0
  140. package/src/tools/index.d.ts +1 -0
  141. package/src/tools/sandbox.d.ts +5 -0
  142. package/src/translation.model.d.ts +26 -0
  143. package/src/types.d.ts +241 -0
  144. package/src/user-organization.model.d.ts +24 -0
  145. package/src/user.model.d.ts +131 -0
  146. package/src/visibility.model.d.ts +6 -0
  147. package/.babelrc +0 -5
  148. package/.eslintrc.json +0 -18
  149. package/babel.config.json +0 -1
  150. package/jest.config.ts +0 -16
  151. package/project.json +0 -53
  152. package/src/agent/graph.ts +0 -272
  153. package/src/agent/index.ts +0 -5
  154. package/src/agent/token.ts +0 -23
  155. package/src/agent/utils.spec.ts +0 -283
  156. package/src/agent/utils.ts +0 -122
  157. package/src/agent/variables.ts +0 -21
  158. package/src/ai/ai-model.model.ts +0 -228
  159. package/src/ai/ai-provider.model.ts +0 -53
  160. package/src/ai/ai.model.ts +0 -87
  161. package/src/ai/chat-message-feedback.model.ts +0 -31
  162. package/src/ai/chat-message.model.ts +0 -277
  163. package/src/ai/chat.model.ts +0 -207
  164. package/src/ai/copilot-checkpoint.model.ts +0 -25
  165. package/src/ai/copilot-example.model.ts +0 -23
  166. package/src/ai/copilot-model.model.ts +0 -31
  167. package/src/ai/copilot-organization.model.ts +0 -21
  168. package/src/ai/copilot-provider.model.ts +0 -46
  169. package/src/ai/copilot-role.model.ts +0 -48
  170. package/src/ai/copilot-store.model.ts +0 -34
  171. package/src/ai/copilot-user.model.ts +0 -24
  172. package/src/ai/copilot.model.ts +0 -47
  173. package/src/ai/feature.model.ts +0 -6
  174. package/src/ai/index.ts +0 -39
  175. package/src/ai/knowledge-doc-chunk.model.ts +0 -120
  176. package/src/ai/knowledge-doc-chunk.spec.ts +0 -47
  177. package/src/ai/knowledge-doc-page.model.ts +0 -20
  178. package/src/ai/knowledge-doc.model.ts +0 -252
  179. package/src/ai/knowledge-pipeline.ts +0 -138
  180. package/src/ai/knowledge-retrieval-log.model.ts +0 -19
  181. package/src/ai/knowledgebase-task.model.ts +0 -46
  182. package/src/ai/knowledgebase.model.ts +0 -190
  183. package/src/ai/rag-web.ts +0 -54
  184. package/src/ai/rag.ts +0 -24
  185. package/src/ai/role-permissions.ts +0 -13
  186. package/src/ai/types.ts +0 -83
  187. package/src/ai/xpert-agent-execution.model.ts +0 -115
  188. package/src/ai/xpert-agent.model.ts +0 -258
  189. package/src/ai/xpert-project.model.ts +0 -103
  190. package/src/ai/xpert-task.model.ts +0 -32
  191. package/src/ai/xpert-template.model.ts +0 -53
  192. package/src/ai/xpert-tool-mcp.model.ts +0 -72
  193. package/src/ai/xpert-tool.model.ts +0 -211
  194. package/src/ai/xpert-toolset.model.ts +0 -220
  195. package/src/ai/xpert-workflow-task.prompt.ts +0 -71
  196. package/src/ai/xpert-workflow.model.ts +0 -449
  197. package/src/ai/xpert-workspace.model.ts +0 -42
  198. package/src/ai/xpert.model.ts +0 -613
  199. package/src/ai/xpert.utils.ts +0 -214
  200. package/src/analytics/ai.ts +0 -79
  201. package/src/analytics/approval-policy.model.ts +0 -40
  202. package/src/analytics/business-area-user.model.ts +0 -43
  203. package/src/analytics/business-area.ts +0 -20
  204. package/src/analytics/certification.model.ts +0 -12
  205. package/src/analytics/chatbi-conversation.model.ts +0 -16
  206. package/src/analytics/chatbi-model.model.ts +0 -22
  207. package/src/analytics/collection.model.ts +0 -8
  208. package/src/analytics/comment.model.ts +0 -14
  209. package/src/analytics/data-source-type.ts +0 -19
  210. package/src/analytics/data-source.ts +0 -72
  211. package/src/analytics/favorite.ts +0 -18
  212. package/src/analytics/features.ts +0 -19
  213. package/src/analytics/feed-model.ts +0 -15
  214. package/src/analytics/gateway.ts +0 -30
  215. package/src/analytics/index.ts +0 -39
  216. package/src/analytics/indicator-app.ts +0 -49
  217. package/src/analytics/indicator.ts +0 -127
  218. package/src/analytics/model-query-log.model.ts +0 -45
  219. package/src/analytics/model-query.ts +0 -22
  220. package/src/analytics/permission-approval.model.ts +0 -58
  221. package/src/analytics/project.model.ts +0 -56
  222. package/src/analytics/role-permissions.ts +0 -36
  223. package/src/analytics/schema.ts +0 -300
  224. package/src/analytics/screenshot.model.ts +0 -28
  225. package/src/analytics/semantic-model-entity.ts +0 -49
  226. package/src/analytics/semantic-model-member.ts +0 -45
  227. package/src/analytics/semantic-model.ts +0 -227
  228. package/src/analytics/story-template.model.ts +0 -34
  229. package/src/analytics/story-widget.ts +0 -15
  230. package/src/analytics/story.ts +0 -109
  231. package/src/analytics/subscription.ts +0 -43
  232. package/src/analytics/visit.model.ts +0 -39
  233. package/src/analytics/webSocket.ts +0 -53
  234. package/src/api-key.model.ts +0 -11
  235. package/src/base-entity.model.ts +0 -34
  236. package/src/contact.model.ts +0 -45
  237. package/src/core.model.ts +0 -103
  238. package/src/currency.model.ts +0 -582
  239. package/src/date-picker.model.ts +0 -5
  240. package/src/email-template.model.ts +0 -50
  241. package/src/email.model.ts +0 -46
  242. package/src/employee.model.ts +0 -199
  243. package/src/entity-with-members.model.ts +0 -16
  244. package/src/feature.model.ts +0 -108
  245. package/src/file-provider.ts +0 -37
  246. package/src/help-center-article.model.ts +0 -35
  247. package/src/help-center.model.ts +0 -33
  248. package/src/http-status.enum.ts +0 -58
  249. package/src/import-export.model.ts +0 -42
  250. package/src/index.ts +0 -60
  251. package/src/integration/dify.ts +0 -31
  252. package/src/integration/dingtalk.ts +0 -16
  253. package/src/integration/fastgpt.ts +0 -32
  254. package/src/integration/firecrawl.ts +0 -46
  255. package/src/integration/github.ts +0 -149
  256. package/src/integration/index.ts +0 -15
  257. package/src/integration/lark.ts +0 -79
  258. package/src/integration/wecom.ts +0 -16
  259. package/src/integration.model.ts +0 -119
  260. package/src/invite.model.ts +0 -144
  261. package/src/language.model.ts +0 -22
  262. package/src/organization-contact.model.ts +0 -84
  263. package/src/organization-language.model.ts +0 -24
  264. package/src/organization-projects.model.ts +0 -99
  265. package/src/organization-team-employee-model.ts +0 -14
  266. package/src/organization-team-model.ts +0 -25
  267. package/src/organization.model.ts +0 -266
  268. package/src/plugin.ts +0 -15
  269. package/src/role-permission.model.ts +0 -123
  270. package/src/role.model.ts +0 -31
  271. package/src/schedule.ts +0 -71
  272. package/src/secret-token.model.ts +0 -15
  273. package/src/seed.model.ts +0 -50
  274. package/src/storage-file.model.ts +0 -46
  275. package/src/tag-entity.model.ts +0 -23
  276. package/src/tenant.model.ts +0 -52
  277. package/src/tools/index.ts +0 -1
  278. package/src/tools/sandbox.ts +0 -5
  279. package/src/translation.model.ts +0 -37
  280. package/src/types.ts +0 -277
  281. package/src/user-organization.model.ts +0 -31
  282. package/src/user.model.ts +0 -151
  283. package/src/visibility.model.ts +0 -6
  284. package/tsconfig.json +0 -22
  285. package/tsconfig.lib.json +0 -10
  286. 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,21 +0,0 @@
1
- import { TWorkflowVarGroup } from "../ai";
2
-
3
- /**
4
- *
5
- * Returns the variable schema for a given variable name.
6
- * The variable name can be in the format of 'groupName.variableName' or just 'variableName'.
7
- *
8
- * @param variables
9
- * @param variable
10
- * @returns
11
- */
12
- export function getVariableSchema(variables: TWorkflowVarGroup[], variable: string) {
13
- const [groupName, ...rest] = variable?.split('.') ?? []
14
-
15
- const group = variables?.find((_) => (rest.length ? _.group?.name === groupName : !_.group?.name))
16
-
17
- return {
18
- group,
19
- variable: group?.variables.find((_) => _.name === (rest.join('.') || groupName))
20
- }
21
- }
@@ -1,228 +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
- export interface IAiModel extends IBasePerTenantAndOrganizationEntityModel {
7
- /**
8
- * 模型名称
9
- */
10
- name: string
11
-
12
- /**
13
- * 模型展示名称
14
- */
15
- label: string
16
-
17
- /**
18
- * 模型类型
19
- */
20
- modelType: string
21
-
22
- /**
23
- * 模型特性
24
- */
25
- features: string[]
26
-
27
- /**
28
- * 模型属性
29
- */
30
- modelProperties: Record<string, any>
31
-
32
- /**
33
- * 参数规则
34
- */
35
- parameterRules: Record<string, any>[]
36
-
37
- /**
38
- * 定价信息
39
- */
40
- pricing: {
41
- input: string
42
- output: string
43
- unit: string
44
- currency: string
45
- }
46
-
47
- /**
48
- * 是否已废弃
49
- */
50
- deprecated: boolean
51
- }
52
-
53
- export enum ProviderType {
54
- CUSTOM = 'custom',
55
- SYSTEM = 'system'
56
- }
57
-
58
- export interface ICopilotWithProvider extends ICopilot {
59
- providerWithModels: Partial<IAiProviderEntity>
60
- }
61
-
62
- export interface IAiProviderEntity {
63
- provider: string;
64
- label: I18nObject;
65
- description: I18nObject;
66
- icon_small: I18nObject;
67
- icon_large: I18nObject;
68
- background: string;
69
- help: ProviderHelpInfo;
70
- supported_model_types: AiModelTypeEnum[];
71
- configurate_methods: ConfigurateMethod[];
72
- model_credential_schema: ModelCredentialSchema;
73
- provider_credential_schema: ProviderCredentialSchema;
74
- models: ProviderModel[]
75
- /**
76
- * Not yet implemented, your contribution is needed
77
- */
78
- not_implemented?: boolean
79
- }
80
-
81
- export interface ProviderHelpInfo {
82
- title: I18nObject;
83
- url: I18nObject;
84
- }
85
-
86
- export interface ProviderModel {
87
- model: string;
88
- label: I18nObject;
89
- model_type: AiModelTypeEnum;
90
- features?: ModelFeature[];
91
- fetch_from: FetchFrom;
92
- model_properties: Partial<Record<ModelPropertyKey, any>>;
93
- deprecated?: boolean;
94
- modelConfig?: any;
95
- }
96
-
97
- export interface ProviderCredentialSchema {
98
- credential_form_schemas: CredentialFormSchema[];
99
- }
100
-
101
- /**
102
- * @todo Use JSON Schema to implement
103
- */
104
- export enum CredentialFormTypeEnum {
105
- TEXT_INPUT = "text-input",
106
- SECRET_INPUT = "secret-input",
107
- SELECT = "select",
108
- RADIO = "radio",
109
- // SWITCH = "switch", // use ParameterType.BOOLEAN
110
- }
111
-
112
- export interface CredentialFormSchema {
113
- variable: string;
114
- label: I18nObject;
115
- type: CredentialFormTypeEnum | ParameterType
116
- required: boolean;
117
- default?: number | string | boolean
118
- options?: {
119
- label: I18nObject
120
- value: number | string | boolean
121
- }[]
122
- placeholder: I18nObject;
123
-
124
- max_length?: number
125
- show_on?: FormShowOnObject[]
126
- }
127
-
128
- export interface FormShowOnObject {
129
- variable: string
130
- value: string
131
- }
132
-
133
- export enum FetchFrom {
134
- PREDEFINED_MODEL = "predefined-model",
135
- CUSTOMIZABLE_MODEL = "customizable-model"
136
- }
137
-
138
- export enum ModelFeature {
139
- TOOL_CALL = "tool-call",
140
- MULTI_TOOL_CALL = "multi-tool-call",
141
- AGENT_THOUGHT = "agent-thought",
142
- VISION = "vision",
143
- STREAM_TOOL_CALL = "stream-tool-call"
144
- }
145
-
146
- export enum ModelPropertyKey {
147
- MODE = "mode",
148
- CONTEXT_SIZE = "context_size",
149
- MAX_CHUNKS = "max_chunks",
150
- FILE_UPLOAD_LIMIT = "file_upload_limit",
151
- SUPPORTED_FILE_EXTENSIONS = "supported_file_extensions",
152
- MAX_CHARACTERS_PER_CHUNK = "max_characters_per_chunk",
153
- DEFAULT_VOICE = "default_voice",
154
- VOICES = "voices",
155
- WORD_LIMIT = "word_limit",
156
- AUDIO_TYPE = "audio_type",
157
- MAX_WORKERS = "max_workers"
158
- }
159
-
160
- export enum ConfigurateMethod {
161
- PREDEFINED_MODEL = 'predefined-model',
162
- CUSTOMIZABLE_MODEL = 'customizable-model'
163
- }
164
-
165
- /**
166
- * @todo Use JSON Schema to implement
167
- */
168
- export enum ParameterType {
169
- FLOAT = "float",
170
- INT = "int",
171
- STRING = "string",
172
- BOOLEAN = "boolean",
173
- TEXT = "text"
174
- }
175
-
176
- /**
177
- * @todo Use JSON Schema to implement
178
- */
179
- export interface ParameterRule {
180
- name?: string;
181
- useTemplate?: string;
182
- label: I18nObject;
183
- type: ParameterType;
184
- help?: I18nObject;
185
- required?: boolean;
186
- default?: any;
187
- min?: number;
188
- max?: number;
189
- precision?: number;
190
- options?: string[];
191
- }
192
-
193
- export interface PriceConfig {
194
- input: number;
195
- output?: number;
196
- unit: number;
197
- currency: string;
198
- }
199
-
200
- export interface AIModelEntity extends ProviderModel {
201
- parameter_rules?: ParameterRule[]
202
- pricing?: PriceConfig
203
- }
204
-
205
- export interface FieldModelSchema {
206
- label: I18nObject
207
- placeholder?: I18nObject
208
- }
209
-
210
-
211
- export interface ModelCredentialSchema {
212
- model: FieldModelSchema
213
- credential_form_schemas: CredentialFormSchema[]
214
- }
215
-
216
- export const AI_MODEL_TYPE_VARIABLE = "__model_type"
217
-
218
- export enum PriceType {
219
- INPUT = "input",
220
- OUTPUT = "output"
221
- }
222
-
223
- export interface PriceInfo {
224
- unitPrice: number;
225
- unit: number;
226
- totalAmount: number;
227
- currency: string;
228
- }
@@ -1,53 +0,0 @@
1
- import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
2
-
3
- export interface IAiProvider extends IBasePerTenantAndOrganizationEntityModel {
4
- /**
5
- * 供应商标识,如 'openai'
6
- */
7
- name: string
8
-
9
- /**
10
- * 供应商展示名称
11
- */
12
- label: string
13
-
14
- /**
15
- * 供应商描述
16
- */
17
- description: string
18
-
19
- /**
20
- * 供应商小图标
21
- */
22
- iconSmall: string
23
-
24
- /**
25
- * 供应商大图标
26
- */
27
- iconLarge: string
28
-
29
- /**
30
- * 背景颜色
31
- */
32
- background: string
33
-
34
- /**
35
- * 帮助信息标题
36
- */
37
- helpTitle: string
38
-
39
- /**
40
- * 帮助信息URL
41
- */
42
- helpUrl: string
43
-
44
- /**
45
- * 支持的模型类型
46
- */
47
- supportedModelTypes: string[]
48
-
49
- /**
50
- * 配置方式
51
- */
52
- configurateMethods: string[]
53
- }