@metad/contracts 3.6.0 → 3.6.1
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 -3996
- 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 +272 -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 +21 -0
- package/src/ai/ai-model.model.ts +228 -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 +39 -0
- package/src/ai/knowledge-doc-chunk.model.ts +120 -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 +252 -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 +190 -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 +258 -0
- package/src/ai/xpert-project.model.ts +103 -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 +72 -0
- package/src/ai/xpert-tool.model.ts +211 -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 +449 -0
- package/src/ai/xpert-workspace.model.ts +42 -0
- package/src/ai/xpert.model.ts +613 -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 +30 -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 +127 -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 +49 -0
- package/src/analytics/semantic-model-member.ts +45 -0
- package/src/analytics/semantic-model.ts +227 -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.ts +22 -0
- 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 -3900
- 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 -195
- 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 -38
- package/src/ai/knowledge-doc-page.model.d.ts +0 -15
- package/src/ai/knowledge-doc.model.d.ts +0 -177
- package/src/ai/knowledge-pipeline.d.ts +0 -100
- package/src/ai/knowledge-retrieval-log.model.d.ts +0 -10
- package/src/ai/knowledgebase-task.model.d.ts +0 -36
- package/src/ai/knowledgebase.model.d.ts +0 -160
- 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 -365
- package/src/ai/xpert-workspace.model.d.ts +0 -32
- package/src/ai/xpert.model.d.ts +0 -497
- 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/ragflow.d.ts +0 -0
- package/src/integration/wecom.d.ts +0 -2
- package/src/integration.model.d.ts +0 -86
- 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/password-reset.model.d.ts +0 -18
- 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 -240
- package/src/user-organization.model.d.ts +0 -24
- package/src/user.model.d.ts +0 -128
- 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,21 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
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
|
+
}
|
|
@@ -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
|
+
}
|