@metad/contracts 3.6.2 → 3.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/.babelrc +5 -0
  2. package/.eslintrc.json +18 -0
  3. package/babel.config.json +1 -0
  4. package/index.cjs.js +5 -4233
  5. package/jest.config.ts +16 -0
  6. package/package.json +2 -2
  7. package/project.json +53 -0
  8. package/src/agent/{ai-model.d.ts → ai-model.ts} +2 -2
  9. package/src/agent/graph.ts +275 -0
  10. package/src/agent/index.ts +5 -0
  11. package/src/agent/token.ts +23 -0
  12. package/src/agent/utils.spec.ts +283 -0
  13. package/src/agent/utils.ts +122 -0
  14. package/src/agent/variables.ts +66 -0
  15. package/src/ai/ai-model.model.ts +232 -0
  16. package/src/ai/ai-provider.model.ts +53 -0
  17. package/src/ai/ai.model.ts +87 -0
  18. package/src/ai/chat-message-feedback.model.ts +31 -0
  19. package/src/ai/chat-message.model.ts +277 -0
  20. package/src/ai/chat.model.ts +207 -0
  21. package/src/ai/copilot-checkpoint.model.ts +25 -0
  22. package/src/ai/copilot-example.model.ts +23 -0
  23. package/src/ai/copilot-model.model.ts +31 -0
  24. package/src/ai/copilot-organization.model.ts +21 -0
  25. package/src/ai/copilot-provider.model.ts +46 -0
  26. package/src/ai/copilot-role.model.ts +48 -0
  27. package/src/ai/copilot-store.model.ts +34 -0
  28. package/src/ai/copilot-user.model.ts +24 -0
  29. package/src/ai/copilot.model.ts +47 -0
  30. package/src/ai/{environment.model.d.ts → environment.model.ts} +12 -10
  31. package/src/ai/feature.model.ts +6 -0
  32. package/src/ai/index.ts +40 -0
  33. package/src/ai/knowledge-doc-chunk.model.ts +123 -0
  34. package/src/ai/knowledge-doc-chunk.spec.ts +47 -0
  35. package/src/ai/knowledge-doc-page.model.ts +20 -0
  36. package/src/ai/knowledge-doc.model.ts +364 -0
  37. package/src/ai/knowledge-pipeline.ts +138 -0
  38. package/src/ai/knowledge-retrieval-log.model.ts +19 -0
  39. package/src/ai/knowledgebase-task.model.ts +46 -0
  40. package/src/ai/knowledgebase.model.ts +205 -0
  41. package/src/ai/rag-web.ts +54 -0
  42. package/src/ai/rag.ts +24 -0
  43. package/src/ai/role-permissions.ts +13 -0
  44. package/src/ai/types.ts +83 -0
  45. package/src/ai/xpert-agent-execution.model.ts +115 -0
  46. package/src/ai/xpert-agent.model.ts +264 -0
  47. package/src/ai/xpert-project.model.ts +103 -0
  48. package/src/ai/xpert-table.model.ts +100 -0
  49. package/src/ai/xpert-task.model.ts +32 -0
  50. package/src/ai/xpert-template.model.ts +53 -0
  51. package/src/ai/xpert-tool-mcp.model.ts +77 -0
  52. package/src/ai/xpert-tool.model.ts +216 -0
  53. package/src/ai/xpert-toolset.model.ts +220 -0
  54. package/src/ai/xpert-workflow-task.prompt.ts +71 -0
  55. package/src/ai/xpert-workflow.model.ts +502 -0
  56. package/src/ai/xpert-workspace.model.ts +42 -0
  57. package/src/ai/xpert.model.ts +637 -0
  58. package/src/ai/xpert.utils.ts +214 -0
  59. package/src/analytics/ai.ts +79 -0
  60. package/src/analytics/approval-policy.model.ts +40 -0
  61. package/src/analytics/business-area-user.model.ts +43 -0
  62. package/src/analytics/business-area.ts +20 -0
  63. package/src/analytics/certification.model.ts +12 -0
  64. package/src/analytics/chatbi-conversation.model.ts +16 -0
  65. package/src/analytics/chatbi-model.model.ts +22 -0
  66. package/src/analytics/collection.model.ts +8 -0
  67. package/src/analytics/comment.model.ts +14 -0
  68. package/src/analytics/data-source-type.ts +19 -0
  69. package/src/analytics/data-source.ts +72 -0
  70. package/src/analytics/favorite.ts +18 -0
  71. package/src/analytics/features.ts +19 -0
  72. package/src/analytics/feed-model.ts +15 -0
  73. package/src/analytics/gateway.ts +31 -0
  74. package/src/analytics/index.ts +39 -0
  75. package/src/analytics/indicator-app.ts +49 -0
  76. package/src/analytics/{indicator-market.d.ts → indicator-market.ts} +6 -2
  77. package/src/analytics/indicator.ts +143 -0
  78. package/src/analytics/model-query-log.model.ts +45 -0
  79. package/src/analytics/model-query.ts +22 -0
  80. package/src/analytics/{notification-destination.d.ts → notification-destination.ts} +9 -5
  81. package/src/analytics/{permission-approval-user.model.d.ts → permission-approval-user.model.ts} +10 -8
  82. package/src/analytics/permission-approval.model.ts +58 -0
  83. package/src/analytics/project.model.ts +56 -0
  84. package/src/analytics/role-permissions.ts +36 -0
  85. package/src/analytics/schema.ts +300 -0
  86. package/src/analytics/screenshot.model.ts +28 -0
  87. package/src/analytics/semantic-model-entity.ts +50 -0
  88. package/src/analytics/semantic-model-member.ts +49 -0
  89. package/src/analytics/semantic-model.ts +237 -0
  90. package/src/analytics/{story-point.d.ts → story-point.ts} +11 -6
  91. package/src/analytics/story-template.model.ts +34 -0
  92. package/src/analytics/story-widget.ts +15 -0
  93. package/src/analytics/story.ts +109 -0
  94. package/src/analytics/subscription.ts +43 -0
  95. package/src/analytics/visit.model.ts +39 -0
  96. package/src/analytics/webSocket.ts +53 -0
  97. package/src/api-key.model.ts +11 -0
  98. package/src/base-entity.model.ts +34 -0
  99. package/src/contact.model.ts +45 -0
  100. package/src/core.model.ts +103 -0
  101. package/src/{country.model.d.ts → country.model.ts} +3 -2
  102. package/src/currency.model.ts +582 -0
  103. package/src/{custom-smtp.model.d.ts → custom-smtp.model.ts} +21 -17
  104. package/src/date-picker.model.ts +5 -0
  105. package/src/email-template.model.ts +50 -0
  106. package/src/email.model.ts +46 -0
  107. package/src/employee.model.ts +199 -0
  108. package/src/entity-with-members.model.ts +16 -0
  109. package/src/feature.model.ts +108 -0
  110. package/src/file-provider.ts +37 -0
  111. package/src/help-center-article.model.ts +35 -0
  112. package/src/help-center.model.ts +33 -0
  113. package/src/http-status.enum.ts +58 -0
  114. package/src/import-export.model.ts +42 -0
  115. package/src/index.ts +60 -0
  116. package/src/integration/dify.ts +31 -0
  117. package/src/integration/dingtalk.ts +16 -0
  118. package/src/integration/fastgpt.ts +32 -0
  119. package/src/integration/firecrawl.ts +46 -0
  120. package/src/integration/github.ts +149 -0
  121. package/src/integration/index.ts +15 -0
  122. package/src/integration/lark.ts +79 -0
  123. package/src/integration/wecom.ts +16 -0
  124. package/src/integration.model.ts +119 -0
  125. package/src/invite.model.ts +144 -0
  126. package/src/language.model.ts +22 -0
  127. package/src/organization-contact.model.ts +84 -0
  128. package/src/{organization-department.model.d.ts → organization-department.model.ts} +16 -10
  129. package/src/organization-language.model.ts +24 -0
  130. package/src/organization-projects.model.ts +99 -0
  131. package/src/organization-team-employee-model.ts +14 -0
  132. package/src/organization-team-model.ts +25 -0
  133. package/src/organization.model.ts +266 -0
  134. package/src/{password-reset.model.d.ts → password-reset.model.ts} +14 -10
  135. package/src/{plain-object.model.d.ts → plain-object.model.ts} +1 -1
  136. package/src/plugin.ts +15 -0
  137. package/src/role-permission.model.ts +123 -0
  138. package/src/role.model.ts +31 -0
  139. package/src/schedule.ts +71 -0
  140. package/src/secret-token.model.ts +15 -0
  141. package/src/seed.model.ts +50 -0
  142. package/src/storage-file.model.ts +46 -0
  143. package/src/tag-entity.model.ts +23 -0
  144. package/src/tenant.model.ts +52 -0
  145. package/src/tools/index.ts +1 -0
  146. package/src/tools/sandbox.ts +5 -0
  147. package/src/translation.model.ts +37 -0
  148. package/src/types.ts +277 -0
  149. package/src/user-organization.model.ts +31 -0
  150. package/src/user.model.ts +151 -0
  151. package/src/visibility.model.ts +6 -0
  152. package/tsconfig.json +22 -0
  153. package/tsconfig.lib.json +10 -0
  154. package/tsconfig.spec.json +9 -0
  155. package/index.cjs.d.ts +0 -1
  156. package/index.esm.d.ts +0 -1
  157. package/index.esm.js +0 -4129
  158. package/src/agent/graph.d.ts +0 -148
  159. package/src/agent/index.d.ts +0 -5
  160. package/src/agent/token.d.ts +0 -21
  161. package/src/agent/utils.d.ts +0 -19
  162. package/src/agent/variables.d.ts +0 -14
  163. package/src/ai/ai-model.model.d.ts +0 -198
  164. package/src/ai/ai-provider.model.d.ts +0 -43
  165. package/src/ai/ai.model.d.ts +0 -82
  166. package/src/ai/chat-message-feedback.model.d.ts +0 -24
  167. package/src/ai/chat-message.model.d.ts +0 -222
  168. package/src/ai/chat.model.d.ts +0 -189
  169. package/src/ai/copilot-checkpoint.model.d.ts +0 -23
  170. package/src/ai/copilot-example.model.d.ts +0 -19
  171. package/src/ai/copilot-model.model.d.ts +0 -26
  172. package/src/ai/copilot-organization.model.d.ts +0 -17
  173. package/src/ai/copilot-provider.model.d.ts +0 -31
  174. package/src/ai/copilot-role.model.d.ts +0 -43
  175. package/src/ai/copilot-store.model.d.ts +0 -29
  176. package/src/ai/copilot-user.model.d.ts +0 -20
  177. package/src/ai/copilot.model.d.ts +0 -36
  178. package/src/ai/feature.model.d.ts +0 -6
  179. package/src/ai/index.d.ts +0 -39
  180. package/src/ai/knowledge-doc-chunk.model.d.ts +0 -60
  181. package/src/ai/knowledge-doc-page.model.d.ts +0 -15
  182. package/src/ai/knowledge-doc.model.d.ts +0 -192
  183. package/src/ai/knowledge-pipeline.d.ts +0 -107
  184. package/src/ai/knowledge-retrieval-log.model.d.ts +0 -10
  185. package/src/ai/knowledgebase-task.model.d.ts +0 -39
  186. package/src/ai/knowledgebase.model.d.ts +0 -162
  187. package/src/ai/rag-web.d.ts +0 -26
  188. package/src/ai/rag.d.ts +0 -24
  189. package/src/ai/role-permissions.d.ts +0 -13
  190. package/src/ai/types.d.ts +0 -39
  191. package/src/ai/xpert-agent-execution.model.d.ts +0 -96
  192. package/src/ai/xpert-agent.model.d.ts +0 -192
  193. package/src/ai/xpert-project.model.d.ts +0 -86
  194. package/src/ai/xpert-task.model.d.ts +0 -26
  195. package/src/ai/xpert-template.model.d.ts +0 -47
  196. package/src/ai/xpert-tool-mcp.model.d.ts +0 -67
  197. package/src/ai/xpert-tool.model.d.ts +0 -147
  198. package/src/ai/xpert-toolset.model.d.ts +0 -200
  199. package/src/ai/xpert-workflow-task.prompt.d.ts +0 -2
  200. package/src/ai/xpert-workflow.model.d.ts +0 -366
  201. package/src/ai/xpert-workspace.model.d.ts +0 -32
  202. package/src/ai/xpert.model.d.ts +0 -529
  203. package/src/ai/xpert.utils.d.ts +0 -80
  204. package/src/analytics/ai.d.ts +0 -73
  205. package/src/analytics/approval-policy.model.d.ts +0 -30
  206. package/src/analytics/business-area-user.model.d.ts +0 -35
  207. package/src/analytics/business-area.d.ts +0 -17
  208. package/src/analytics/certification.model.d.ts +0 -11
  209. package/src/analytics/chatbi-conversation.model.d.ts +0 -15
  210. package/src/analytics/chatbi-model.model.d.ts +0 -18
  211. package/src/analytics/collection.model.d.ts +0 -6
  212. package/src/analytics/comment.model.d.ts +0 -10
  213. package/src/analytics/data-source-type.d.ts +0 -16
  214. package/src/analytics/data-source.d.ts +0 -62
  215. package/src/analytics/favorite.d.ts +0 -14
  216. package/src/analytics/features.d.ts +0 -19
  217. package/src/analytics/feed-model.d.ts +0 -13
  218. package/src/analytics/gateway.d.ts +0 -27
  219. package/src/analytics/index.d.ts +0 -38
  220. package/src/analytics/indicator-app.d.ts +0 -44
  221. package/src/analytics/indicator.d.ts +0 -106
  222. package/src/analytics/model-query-log.model.d.ts +0 -41
  223. package/src/analytics/model-query.d.ts +0 -21
  224. package/src/analytics/permission-approval.model.d.ts +0 -47
  225. package/src/analytics/project.model.d.ts +0 -50
  226. package/src/analytics/role-permissions.d.ts +0 -25
  227. package/src/analytics/schema.d.ts +0 -262
  228. package/src/analytics/screenshot.model.d.ts +0 -25
  229. package/src/analytics/semantic-model-entity.d.ts +0 -37
  230. package/src/analytics/semantic-model-member.d.ts +0 -24
  231. package/src/analytics/semantic-model.d.ts +0 -175
  232. package/src/analytics/story-template.model.d.ts +0 -28
  233. package/src/analytics/story-widget.d.ts +0 -12
  234. package/src/analytics/story.d.ts +0 -93
  235. package/src/analytics/subscription.d.ts +0 -38
  236. package/src/analytics/visit.model.d.ts +0 -34
  237. package/src/analytics/webSocket.d.ts +0 -48
  238. package/src/api-key.model.d.ts +0 -10
  239. package/src/base-entity.model.d.ts +0 -27
  240. package/src/contact.model.d.ts +0 -41
  241. package/src/core.model.d.ts +0 -97
  242. package/src/currency.model.d.ts +0 -579
  243. package/src/date-picker.model.d.ts +0 -5
  244. package/src/email-template.model.d.ts +0 -39
  245. package/src/email.model.d.ts +0 -36
  246. package/src/employee.model.d.ts +0 -128
  247. package/src/entity-with-members.model.d.ts +0 -13
  248. package/src/feature.model.d.ts +0 -93
  249. package/src/file-provider.d.ts +0 -33
  250. package/src/help-center-article.model.d.ts +0 -0
  251. package/src/help-center.model.d.ts +0 -0
  252. package/src/http-status.enum.d.ts +0 -57
  253. package/src/import-export.model.d.ts +0 -36
  254. package/src/index.d.ts +0 -48
  255. package/src/integration/dify.d.ts +0 -0
  256. package/src/integration/dingtalk.d.ts +0 -2
  257. package/src/integration/fastgpt.d.ts +0 -0
  258. package/src/integration/firecrawl.d.ts +0 -2
  259. package/src/integration/github.d.ts +0 -69
  260. package/src/integration/index.d.ts +0 -4
  261. package/src/integration/lark.d.ts +0 -11
  262. package/src/integration/wecom.d.ts +0 -2
  263. package/src/integration.model.d.ts +0 -90
  264. package/src/invite.model.d.ts +0 -123
  265. package/src/language.model.d.ts +0 -19
  266. package/src/organization-contact.model.d.ts +0 -73
  267. package/src/organization-language.model.d.ts +0 -18
  268. package/src/organization-projects.model.d.ts +0 -80
  269. package/src/organization-team-employee-model.d.ts +0 -12
  270. package/src/organization-team-model.d.ts +0 -19
  271. package/src/organization.model.d.ts +0 -239
  272. package/src/plugin.d.ts +0 -13
  273. package/src/role-permission.model.d.ts +0 -61
  274. package/src/role.model.d.ts +0 -26
  275. package/src/schedule.d.ts +0 -27
  276. package/src/secret-token.model.d.ts +0 -11
  277. package/src/seed.model.d.ts +0 -37
  278. package/src/storage-file.model.d.ts +0 -40
  279. package/src/tag-entity.model.d.ts +0 -20
  280. package/src/tenant.model.d.ts +0 -40
  281. package/src/tools/index.d.ts +0 -1
  282. package/src/tools/sandbox.d.ts +0 -5
  283. package/src/translation.model.d.ts +0 -26
  284. package/src/types.d.ts +0 -241
  285. package/src/user-organization.model.d.ts +0 -24
  286. package/src/user.model.d.ts +0 -131
  287. package/src/visibility.model.d.ts +0 -6
@@ -0,0 +1,122 @@
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
+ }
@@ -0,0 +1,66 @@
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
+ ]
@@ -0,0 +1,232 @@
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
+ }
@@ -0,0 +1,53 @@
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
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Business roles for AI copilot (commands or contexts)
3
+ */
4
+ export enum AiBusinessRole {
5
+ FinanceBP = 'finance_bp',
6
+ SupplyChainExpert = 'supply_chain_expert',
7
+ }
8
+
9
+ /**
10
+ * Providers for LLMs
11
+ *
12
+ * - https://js.langchain.com/docs/integrations/chat/
13
+ */
14
+ export enum AiProvider {
15
+ /**
16
+ * - https://js.langchain.com/docs/integrations/chat/openai/
17
+ */
18
+ OpenAI = 'openai',
19
+ /**
20
+ * - https://js.langchain.com/docs/integrations/chat/openai/
21
+ */
22
+ Azure = 'azure',
23
+ // DashScope = 'dashscope',
24
+ /**
25
+ * - https://ollama.com/
26
+ * - https://js.langchain.com/docs/integrations/chat/ollama/
27
+ */
28
+ Ollama = 'ollama',
29
+ /**
30
+ * - https://www.deepseek.com/zh
31
+ * - https://js.langchain.com/docs/integrations/chat/openai/
32
+ */
33
+ DeepSeek = 'deepseek',
34
+ /**
35
+ * - https://docs.anthropic.com/en/home
36
+ * - https://js.langchain.com/docs/integrations/chat/anthropic/
37
+ */
38
+ Anthropic = 'anthropic',
39
+ /**
40
+ * - https://www.aliyun.com/product/bailian
41
+ * - https://js.langchain.com/docs/integrations/chat/alibaba_tongyi/
42
+ */
43
+ AlibabaTongyi = 'alibaba_tongyi',
44
+ /**
45
+ * - https://open.bigmodel.cn/
46
+ * - https://js.langchain.com/docs/integrations/chat/openai/
47
+ */
48
+ Zhipu = 'zhipu',
49
+ /**
50
+ * - https://qianfan.cloud.baidu.com/
51
+ * - https://js.langchain.com/docs/integrations/chat/baidu_qianfan/
52
+ */
53
+ BaiduQianfan = 'baidu_qianfan',
54
+ /**
55
+ * - https://www.together.ai/
56
+ * - https://js.langchain.com/docs/integrations/chat/togetherai/
57
+ */
58
+ Together = 'together',
59
+ /**
60
+ * - https://platform.moonshot.cn/console
61
+ * - https://js.langchain.com/docs/integrations/chat/openai/
62
+ */
63
+ Moonshot = 'moonshot',
64
+ /**
65
+ * - https://groq.com/
66
+ * - https://js.langchain.com/docs/integrations/chat/openai/
67
+ */
68
+ Groq = 'groq',
69
+ /**
70
+ * - https://mistral.ai/
71
+ *
72
+ */
73
+ Mistral = 'mistral',
74
+ /**
75
+ * - https://cohere.com/
76
+ */
77
+ Cohere = 'cohere',
78
+
79
+ }
80
+
81
+ export enum AiProtocol {
82
+ OpenAI = 'openai',
83
+ Others = 'others'
84
+ }
85
+
86
+ export const OpenAIEmbeddingsProviders = [AiProvider.OpenAI, AiProvider.Azure, AiProvider.DeepSeek]
87
+ export const OllamaEmbeddingsProviders = [AiProvider.Ollama]
@@ -0,0 +1,31 @@
1
+ import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
2
+ import { IChatMessage } from './chat-message.model'
3
+ import { IChatConversation } from './chat.model'
4
+
5
+ export enum ChatMessageFeedbackRatingEnum {
6
+ LIKE = 'like',
7
+ DISLIKE = 'dislike'
8
+ }
9
+
10
+
11
+ /**
12
+ *
13
+ */
14
+ export interface IChatMessageFeedback extends IBasePerTenantAndOrganizationEntityModel {
15
+
16
+ rating: ChatMessageFeedbackRatingEnum
17
+
18
+ content?: string
19
+
20
+ // Many to one
21
+ /**
22
+ * Chat conversation
23
+ */
24
+ conversation?: IChatConversation
25
+ conversationId?: string | null
26
+ /**
27
+ * Chat conversation message
28
+ */
29
+ message?: IChatMessage
30
+ messageId?: string | null
31
+ }