@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.
- package/.babelrc +5 -0
- package/.eslintrc.json +18 -0
- package/babel.config.json +1 -0
- package/index.cjs.js +5 -4233
- package/jest.config.ts +16 -0
- package/package.json +2 -2
- package/project.json +53 -0
- package/src/agent/{ai-model.d.ts → ai-model.ts} +2 -2
- package/src/agent/graph.ts +275 -0
- package/src/agent/index.ts +5 -0
- package/src/agent/token.ts +23 -0
- package/src/agent/utils.spec.ts +283 -0
- package/src/agent/utils.ts +122 -0
- package/src/agent/variables.ts +66 -0
- package/src/ai/ai-model.model.ts +232 -0
- package/src/ai/ai-provider.model.ts +53 -0
- package/src/ai/ai.model.ts +87 -0
- package/src/ai/chat-message-feedback.model.ts +31 -0
- package/src/ai/chat-message.model.ts +277 -0
- package/src/ai/chat.model.ts +207 -0
- package/src/ai/copilot-checkpoint.model.ts +25 -0
- package/src/ai/copilot-example.model.ts +23 -0
- package/src/ai/copilot-model.model.ts +31 -0
- package/src/ai/copilot-organization.model.ts +21 -0
- package/src/ai/copilot-provider.model.ts +46 -0
- package/src/ai/copilot-role.model.ts +48 -0
- package/src/ai/copilot-store.model.ts +34 -0
- package/src/ai/copilot-user.model.ts +24 -0
- package/src/ai/copilot.model.ts +47 -0
- package/src/ai/{environment.model.d.ts → environment.model.ts} +12 -10
- package/src/ai/feature.model.ts +6 -0
- package/src/ai/index.ts +40 -0
- package/src/ai/knowledge-doc-chunk.model.ts +123 -0
- package/src/ai/knowledge-doc-chunk.spec.ts +47 -0
- package/src/ai/knowledge-doc-page.model.ts +20 -0
- package/src/ai/knowledge-doc.model.ts +364 -0
- package/src/ai/knowledge-pipeline.ts +138 -0
- package/src/ai/knowledge-retrieval-log.model.ts +19 -0
- package/src/ai/knowledgebase-task.model.ts +46 -0
- package/src/ai/knowledgebase.model.ts +205 -0
- package/src/ai/rag-web.ts +54 -0
- package/src/ai/rag.ts +24 -0
- package/src/ai/role-permissions.ts +13 -0
- package/src/ai/types.ts +83 -0
- package/src/ai/xpert-agent-execution.model.ts +115 -0
- package/src/ai/xpert-agent.model.ts +264 -0
- package/src/ai/xpert-project.model.ts +103 -0
- package/src/ai/xpert-table.model.ts +100 -0
- package/src/ai/xpert-task.model.ts +32 -0
- package/src/ai/xpert-template.model.ts +53 -0
- package/src/ai/xpert-tool-mcp.model.ts +77 -0
- package/src/ai/xpert-tool.model.ts +216 -0
- package/src/ai/xpert-toolset.model.ts +220 -0
- package/src/ai/xpert-workflow-task.prompt.ts +71 -0
- package/src/ai/xpert-workflow.model.ts +502 -0
- package/src/ai/xpert-workspace.model.ts +42 -0
- package/src/ai/xpert.model.ts +637 -0
- package/src/ai/xpert.utils.ts +214 -0
- package/src/analytics/ai.ts +79 -0
- package/src/analytics/approval-policy.model.ts +40 -0
- package/src/analytics/business-area-user.model.ts +43 -0
- package/src/analytics/business-area.ts +20 -0
- package/src/analytics/certification.model.ts +12 -0
- package/src/analytics/chatbi-conversation.model.ts +16 -0
- package/src/analytics/chatbi-model.model.ts +22 -0
- package/src/analytics/collection.model.ts +8 -0
- package/src/analytics/comment.model.ts +14 -0
- package/src/analytics/data-source-type.ts +19 -0
- package/src/analytics/data-source.ts +72 -0
- package/src/analytics/favorite.ts +18 -0
- package/src/analytics/features.ts +19 -0
- package/src/analytics/feed-model.ts +15 -0
- package/src/analytics/gateway.ts +31 -0
- package/src/analytics/index.ts +39 -0
- package/src/analytics/indicator-app.ts +49 -0
- package/src/analytics/{indicator-market.d.ts → indicator-market.ts} +6 -2
- package/src/analytics/indicator.ts +143 -0
- package/src/analytics/model-query-log.model.ts +45 -0
- package/src/analytics/model-query.ts +22 -0
- package/src/analytics/{notification-destination.d.ts → notification-destination.ts} +9 -5
- package/src/analytics/{permission-approval-user.model.d.ts → permission-approval-user.model.ts} +10 -8
- package/src/analytics/permission-approval.model.ts +58 -0
- package/src/analytics/project.model.ts +56 -0
- package/src/analytics/role-permissions.ts +36 -0
- package/src/analytics/schema.ts +300 -0
- package/src/analytics/screenshot.model.ts +28 -0
- package/src/analytics/semantic-model-entity.ts +50 -0
- package/src/analytics/semantic-model-member.ts +49 -0
- package/src/analytics/semantic-model.ts +237 -0
- package/src/analytics/{story-point.d.ts → story-point.ts} +11 -6
- package/src/analytics/story-template.model.ts +34 -0
- package/src/analytics/story-widget.ts +15 -0
- package/src/analytics/story.ts +109 -0
- package/src/analytics/subscription.ts +43 -0
- package/src/analytics/visit.model.ts +39 -0
- package/src/analytics/webSocket.ts +53 -0
- package/src/api-key.model.ts +11 -0
- package/src/base-entity.model.ts +34 -0
- package/src/contact.model.ts +45 -0
- package/src/core.model.ts +103 -0
- package/src/{country.model.d.ts → country.model.ts} +3 -2
- package/src/currency.model.ts +582 -0
- package/src/{custom-smtp.model.d.ts → custom-smtp.model.ts} +21 -17
- package/src/date-picker.model.ts +5 -0
- package/src/email-template.model.ts +50 -0
- package/src/email.model.ts +46 -0
- package/src/employee.model.ts +199 -0
- package/src/entity-with-members.model.ts +16 -0
- package/src/feature.model.ts +108 -0
- package/src/file-provider.ts +37 -0
- package/src/help-center-article.model.ts +35 -0
- package/src/help-center.model.ts +33 -0
- package/src/http-status.enum.ts +58 -0
- package/src/import-export.model.ts +42 -0
- package/src/index.ts +60 -0
- package/src/integration/dify.ts +31 -0
- package/src/integration/dingtalk.ts +16 -0
- package/src/integration/fastgpt.ts +32 -0
- package/src/integration/firecrawl.ts +46 -0
- package/src/integration/github.ts +149 -0
- package/src/integration/index.ts +15 -0
- package/src/integration/lark.ts +79 -0
- package/src/integration/wecom.ts +16 -0
- package/src/integration.model.ts +119 -0
- package/src/invite.model.ts +144 -0
- package/src/language.model.ts +22 -0
- package/src/organization-contact.model.ts +84 -0
- package/src/{organization-department.model.d.ts → organization-department.model.ts} +16 -10
- package/src/organization-language.model.ts +24 -0
- package/src/organization-projects.model.ts +99 -0
- package/src/organization-team-employee-model.ts +14 -0
- package/src/organization-team-model.ts +25 -0
- package/src/organization.model.ts +266 -0
- package/src/{password-reset.model.d.ts → password-reset.model.ts} +14 -10
- package/src/{plain-object.model.d.ts → plain-object.model.ts} +1 -1
- package/src/plugin.ts +15 -0
- package/src/role-permission.model.ts +123 -0
- package/src/role.model.ts +31 -0
- package/src/schedule.ts +71 -0
- package/src/secret-token.model.ts +15 -0
- package/src/seed.model.ts +50 -0
- package/src/storage-file.model.ts +46 -0
- package/src/tag-entity.model.ts +23 -0
- package/src/tenant.model.ts +52 -0
- package/src/tools/index.ts +1 -0
- package/src/tools/sandbox.ts +5 -0
- package/src/translation.model.ts +37 -0
- package/src/types.ts +277 -0
- package/src/user-organization.model.ts +31 -0
- package/src/user.model.ts +151 -0
- package/src/visibility.model.ts +6 -0
- package/tsconfig.json +22 -0
- package/tsconfig.lib.json +10 -0
- package/tsconfig.spec.json +9 -0
- package/index.cjs.d.ts +0 -1
- package/index.esm.d.ts +0 -1
- package/index.esm.js +0 -4129
- package/src/agent/graph.d.ts +0 -148
- package/src/agent/index.d.ts +0 -5
- package/src/agent/token.d.ts +0 -21
- package/src/agent/utils.d.ts +0 -19
- package/src/agent/variables.d.ts +0 -14
- package/src/ai/ai-model.model.d.ts +0 -198
- package/src/ai/ai-provider.model.d.ts +0 -43
- package/src/ai/ai.model.d.ts +0 -82
- package/src/ai/chat-message-feedback.model.d.ts +0 -24
- package/src/ai/chat-message.model.d.ts +0 -222
- package/src/ai/chat.model.d.ts +0 -189
- package/src/ai/copilot-checkpoint.model.d.ts +0 -23
- package/src/ai/copilot-example.model.d.ts +0 -19
- package/src/ai/copilot-model.model.d.ts +0 -26
- package/src/ai/copilot-organization.model.d.ts +0 -17
- package/src/ai/copilot-provider.model.d.ts +0 -31
- package/src/ai/copilot-role.model.d.ts +0 -43
- package/src/ai/copilot-store.model.d.ts +0 -29
- package/src/ai/copilot-user.model.d.ts +0 -20
- package/src/ai/copilot.model.d.ts +0 -36
- package/src/ai/feature.model.d.ts +0 -6
- package/src/ai/index.d.ts +0 -39
- package/src/ai/knowledge-doc-chunk.model.d.ts +0 -60
- package/src/ai/knowledge-doc-page.model.d.ts +0 -15
- package/src/ai/knowledge-doc.model.d.ts +0 -192
- package/src/ai/knowledge-pipeline.d.ts +0 -107
- package/src/ai/knowledge-retrieval-log.model.d.ts +0 -10
- package/src/ai/knowledgebase-task.model.d.ts +0 -39
- package/src/ai/knowledgebase.model.d.ts +0 -162
- package/src/ai/rag-web.d.ts +0 -26
- package/src/ai/rag.d.ts +0 -24
- package/src/ai/role-permissions.d.ts +0 -13
- package/src/ai/types.d.ts +0 -39
- package/src/ai/xpert-agent-execution.model.d.ts +0 -96
- package/src/ai/xpert-agent.model.d.ts +0 -192
- package/src/ai/xpert-project.model.d.ts +0 -86
- package/src/ai/xpert-task.model.d.ts +0 -26
- package/src/ai/xpert-template.model.d.ts +0 -47
- package/src/ai/xpert-tool-mcp.model.d.ts +0 -67
- package/src/ai/xpert-tool.model.d.ts +0 -147
- package/src/ai/xpert-toolset.model.d.ts +0 -200
- package/src/ai/xpert-workflow-task.prompt.d.ts +0 -2
- package/src/ai/xpert-workflow.model.d.ts +0 -366
- package/src/ai/xpert-workspace.model.d.ts +0 -32
- package/src/ai/xpert.model.d.ts +0 -529
- package/src/ai/xpert.utils.d.ts +0 -80
- package/src/analytics/ai.d.ts +0 -73
- package/src/analytics/approval-policy.model.d.ts +0 -30
- package/src/analytics/business-area-user.model.d.ts +0 -35
- package/src/analytics/business-area.d.ts +0 -17
- package/src/analytics/certification.model.d.ts +0 -11
- package/src/analytics/chatbi-conversation.model.d.ts +0 -15
- package/src/analytics/chatbi-model.model.d.ts +0 -18
- package/src/analytics/collection.model.d.ts +0 -6
- package/src/analytics/comment.model.d.ts +0 -10
- package/src/analytics/data-source-type.d.ts +0 -16
- package/src/analytics/data-source.d.ts +0 -62
- package/src/analytics/favorite.d.ts +0 -14
- package/src/analytics/features.d.ts +0 -19
- package/src/analytics/feed-model.d.ts +0 -13
- package/src/analytics/gateway.d.ts +0 -27
- package/src/analytics/index.d.ts +0 -38
- package/src/analytics/indicator-app.d.ts +0 -44
- package/src/analytics/indicator.d.ts +0 -106
- package/src/analytics/model-query-log.model.d.ts +0 -41
- package/src/analytics/model-query.d.ts +0 -21
- package/src/analytics/permission-approval.model.d.ts +0 -47
- package/src/analytics/project.model.d.ts +0 -50
- package/src/analytics/role-permissions.d.ts +0 -25
- package/src/analytics/schema.d.ts +0 -262
- package/src/analytics/screenshot.model.d.ts +0 -25
- package/src/analytics/semantic-model-entity.d.ts +0 -37
- package/src/analytics/semantic-model-member.d.ts +0 -24
- package/src/analytics/semantic-model.d.ts +0 -175
- package/src/analytics/story-template.model.d.ts +0 -28
- package/src/analytics/story-widget.d.ts +0 -12
- package/src/analytics/story.d.ts +0 -93
- package/src/analytics/subscription.d.ts +0 -38
- package/src/analytics/visit.model.d.ts +0 -34
- package/src/analytics/webSocket.d.ts +0 -48
- package/src/api-key.model.d.ts +0 -10
- package/src/base-entity.model.d.ts +0 -27
- package/src/contact.model.d.ts +0 -41
- package/src/core.model.d.ts +0 -97
- package/src/currency.model.d.ts +0 -579
- package/src/date-picker.model.d.ts +0 -5
- package/src/email-template.model.d.ts +0 -39
- package/src/email.model.d.ts +0 -36
- package/src/employee.model.d.ts +0 -128
- package/src/entity-with-members.model.d.ts +0 -13
- package/src/feature.model.d.ts +0 -93
- package/src/file-provider.d.ts +0 -33
- package/src/help-center-article.model.d.ts +0 -0
- package/src/help-center.model.d.ts +0 -0
- package/src/http-status.enum.d.ts +0 -57
- package/src/import-export.model.d.ts +0 -36
- package/src/index.d.ts +0 -48
- package/src/integration/dify.d.ts +0 -0
- package/src/integration/dingtalk.d.ts +0 -2
- package/src/integration/fastgpt.d.ts +0 -0
- package/src/integration/firecrawl.d.ts +0 -2
- package/src/integration/github.d.ts +0 -69
- package/src/integration/index.d.ts +0 -4
- package/src/integration/lark.d.ts +0 -11
- package/src/integration/wecom.d.ts +0 -2
- package/src/integration.model.d.ts +0 -90
- package/src/invite.model.d.ts +0 -123
- package/src/language.model.d.ts +0 -19
- package/src/organization-contact.model.d.ts +0 -73
- package/src/organization-language.model.d.ts +0 -18
- package/src/organization-projects.model.d.ts +0 -80
- package/src/organization-team-employee-model.d.ts +0 -12
- package/src/organization-team-model.d.ts +0 -19
- package/src/organization.model.d.ts +0 -239
- package/src/plugin.d.ts +0 -13
- package/src/role-permission.model.d.ts +0 -61
- package/src/role.model.d.ts +0 -26
- package/src/schedule.d.ts +0 -27
- package/src/secret-token.model.d.ts +0 -11
- package/src/seed.model.d.ts +0 -37
- package/src/storage-file.model.d.ts +0 -40
- package/src/tag-entity.model.d.ts +0 -20
- package/src/tenant.model.d.ts +0 -40
- package/src/tools/index.d.ts +0 -1
- package/src/tools/sandbox.d.ts +0 -5
- package/src/translation.model.d.ts +0 -26
- package/src/types.d.ts +0 -241
- package/src/user-organization.model.d.ts +0 -24
- package/src/user.model.d.ts +0 -131
- 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
|
+
}
|