@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,24 @@
|
|
|
1
|
+
import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
|
|
2
|
+
import { IOrganization } from '../organization.model'
|
|
3
|
+
import { IUser } from '../user.model'
|
|
4
|
+
import { AiProvider } from './ai.model'
|
|
5
|
+
import { ICopilot, TCopilotTokenUsage } from './copilot.model'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
export interface ICopilotUser extends IBasePerTenantAndOrganizationEntityModel, TCopilotTokenUsage {
|
|
11
|
+
orgId?: string
|
|
12
|
+
org?: IOrganization
|
|
13
|
+
copilotId?: string
|
|
14
|
+
copilot?: ICopilot
|
|
15
|
+
userId?: string
|
|
16
|
+
user?: IUser
|
|
17
|
+
// Associated AI Model provider
|
|
18
|
+
provider?: AiProvider | string
|
|
19
|
+
model?: string
|
|
20
|
+
|
|
21
|
+
// Total tokens used historically
|
|
22
|
+
tokenTotalUsed?: number
|
|
23
|
+
priceTotalUsed?: number
|
|
24
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
|
|
2
|
+
import { ICopilotModel } from './copilot-model.model'
|
|
3
|
+
import { ICopilotProvider } from './copilot-provider.model'
|
|
4
|
+
|
|
5
|
+
export interface ICopilot extends IBasePerTenantAndOrganizationEntityModel {
|
|
6
|
+
name?: string
|
|
7
|
+
role: AiProviderRole
|
|
8
|
+
enabled?: boolean
|
|
9
|
+
|
|
10
|
+
showTokenizer?: boolean
|
|
11
|
+
/**
|
|
12
|
+
* Balance of Token
|
|
13
|
+
*/
|
|
14
|
+
tokenBalance?: number
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Details config for openai api
|
|
18
|
+
*/
|
|
19
|
+
options?: any
|
|
20
|
+
|
|
21
|
+
modelProvider?: ICopilotProvider
|
|
22
|
+
copilotModel?: ICopilotModel
|
|
23
|
+
|
|
24
|
+
// Temporary properties
|
|
25
|
+
usage?: TCopilotTokenUsage
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The order of priority is: `Embedding`, `Secondary`, `Primary`
|
|
30
|
+
*/
|
|
31
|
+
export enum AiProviderRole {
|
|
32
|
+
Primary = 'primary',
|
|
33
|
+
Secondary = 'secondary',
|
|
34
|
+
Embedding = 'embedding',
|
|
35
|
+
Reasoning = 'reasoning'
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export type TCopilotTokenUsage = {
|
|
39
|
+
// Token limit for the current period
|
|
40
|
+
tokenLimit?: number
|
|
41
|
+
priceLimit?: number
|
|
42
|
+
// Tokens used in the current period
|
|
43
|
+
tokenUsed?: number
|
|
44
|
+
priceUsed?: number
|
|
45
|
+
|
|
46
|
+
currency?: string
|
|
47
|
+
}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { IBasePerWorkspaceEntityModel } from "./xpert-workspace.model"
|
|
1
|
+
import { IBasePerWorkspaceEntityModel } from "./xpert-workspace.model"
|
|
2
|
+
|
|
2
3
|
export type TEnvironmentVariable = {
|
|
3
|
-
name: string
|
|
4
|
-
value: string
|
|
5
|
-
type: 'default' | 'secret'
|
|
4
|
+
name: string
|
|
5
|
+
value: string
|
|
6
|
+
type: 'default' | 'secret'
|
|
6
7
|
/**
|
|
7
8
|
* Has owner, private variable
|
|
8
9
|
*/
|
|
9
|
-
owner?: string
|
|
10
|
-
}
|
|
10
|
+
owner?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
11
13
|
export interface IEnvironment extends IBasePerWorkspaceEntityModel {
|
|
12
|
-
name: string
|
|
13
|
-
isDefault?: boolean
|
|
14
|
-
isArchived?: boolean
|
|
15
|
-
variables: TEnvironmentVariable[]
|
|
14
|
+
name: string
|
|
15
|
+
isDefault?: boolean
|
|
16
|
+
isArchived?: boolean
|
|
17
|
+
variables: TEnvironmentVariable[]
|
|
16
18
|
}
|
package/src/ai/index.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export * from './ai-model.model'
|
|
2
|
+
export * from './ai.model'
|
|
3
|
+
export * from './chat.model'
|
|
4
|
+
export * from './chat-message.model'
|
|
5
|
+
export * from './chat-message-feedback.model'
|
|
6
|
+
export * from './copilot-checkpoint.model'
|
|
7
|
+
export * from './copilot-example.model'
|
|
8
|
+
export * from './copilot-model.model'
|
|
9
|
+
export * from './copilot-organization.model'
|
|
10
|
+
export * from './copilot-provider.model'
|
|
11
|
+
export * from './copilot-store.model'
|
|
12
|
+
export * from './copilot-user.model'
|
|
13
|
+
export * from './copilot.model'
|
|
14
|
+
export * from './feature.model'
|
|
15
|
+
export * from './rag'
|
|
16
|
+
export * from './rag-web'
|
|
17
|
+
export * from './knowledgebase.model'
|
|
18
|
+
export * from './knowledge-doc.model'
|
|
19
|
+
export * from './knowledge-doc-page.model'
|
|
20
|
+
export * from './role-permissions'
|
|
21
|
+
export * from './xpert-agent-execution.model'
|
|
22
|
+
export * from './xpert-agent.model'
|
|
23
|
+
export * from './xpert-tool.model'
|
|
24
|
+
export * from './xpert-toolset.model'
|
|
25
|
+
export * from './xpert-workspace.model'
|
|
26
|
+
export * from './xpert.model'
|
|
27
|
+
export * from './xpert.utils'
|
|
28
|
+
export * from './types'
|
|
29
|
+
export * from './xpert-template.model'
|
|
30
|
+
export * from './xpert-task.model'
|
|
31
|
+
export * from './xpert-workflow.model'
|
|
32
|
+
export * from './xpert-workflow-task.prompt'
|
|
33
|
+
export * from './xpert-tool-mcp.model'
|
|
34
|
+
export * from './xpert-project.model'
|
|
35
|
+
export * from './environment.model'
|
|
36
|
+
export * from './knowledgebase-task.model'
|
|
37
|
+
export * from './knowledge-pipeline'
|
|
38
|
+
export * from './knowledge-retrieval-log.model'
|
|
39
|
+
export * from './knowledge-doc-chunk.model'
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { DocumentInterface } from '@langchain/core/documents'
|
|
2
|
+
import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
|
|
3
|
+
import { IKnowledgeDocument } from './knowledge-doc.model'
|
|
4
|
+
import { IKnowledgebase } from './knowledgebase.model'
|
|
5
|
+
|
|
6
|
+
export type TDocumentAsset = {
|
|
7
|
+
type: 'image' | 'video' | 'audio' | 'file'
|
|
8
|
+
url: string // remote url
|
|
9
|
+
filePath: string // local path
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface IDocChunkMetadata {
|
|
13
|
+
chunkId: string
|
|
14
|
+
parentId?: string | null
|
|
15
|
+
children?: DocumentInterface<IDocChunkMetadata>[]
|
|
16
|
+
|
|
17
|
+
knowledgeId?: string
|
|
18
|
+
chunkIndex?: number // Index within the document or parent chunk
|
|
19
|
+
enabled?: boolean
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Default to 'text'. Indicates the original media type of the chunk.
|
|
23
|
+
* @default text
|
|
24
|
+
*/
|
|
25
|
+
mediaType?: 'text' | 'image' | 'video' | 'audio' // Media type of the chunk
|
|
26
|
+
/**
|
|
27
|
+
* Associated assets like images, videos, etc.
|
|
28
|
+
*/
|
|
29
|
+
assets?: TDocumentAsset[]
|
|
30
|
+
/**
|
|
31
|
+
* Whether the chunk is represented as a vector in the vector store
|
|
32
|
+
*/
|
|
33
|
+
isVector?: boolean
|
|
34
|
+
score?: number
|
|
35
|
+
relevanceScore?: number
|
|
36
|
+
|
|
37
|
+
[key: string]: any
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Segmented chunk of a knowledge document
|
|
43
|
+
*/
|
|
44
|
+
export interface IKnowledgeDocumentChunk<Metadata extends IDocChunkMetadata = any>
|
|
45
|
+
extends DocumentInterface<Metadata>,
|
|
46
|
+
IBasePerTenantAndOrganizationEntityModel {
|
|
47
|
+
documentId?: string
|
|
48
|
+
document?: IKnowledgeDocument
|
|
49
|
+
knowledgebaseId?: string
|
|
50
|
+
knowledgebase?: IKnowledgebase
|
|
51
|
+
|
|
52
|
+
parent?: IKnowledgeDocumentChunk<Metadata>
|
|
53
|
+
children?: IKnowledgeDocumentChunk<Metadata>[]
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Build a hierarchical tree structure from a flat list of DocumentInterface objects,
|
|
59
|
+
* and
|
|
60
|
+
*
|
|
61
|
+
* @template Metadata - Type of metadata, defaults to IDocChunkMetadata
|
|
62
|
+
* @param documents - A flat array of DocumentInterface objects
|
|
63
|
+
* @returns the hierarchical tree (root-level DocumentInterface[])
|
|
64
|
+
*/
|
|
65
|
+
export function buildChunkTree<Metadata extends IDocChunkMetadata = IDocChunkMetadata>(
|
|
66
|
+
documents: DocumentInterface<Metadata>[]
|
|
67
|
+
): DocumentInterface<Metadata>[] {
|
|
68
|
+
if (!documents || documents.length === 0) return []
|
|
69
|
+
|
|
70
|
+
// Step 1. Build a lookup map for quick access by chunkId
|
|
71
|
+
const map = new Map<string, DocumentInterface<Metadata>>()
|
|
72
|
+
for (const doc of documents) {
|
|
73
|
+
if (doc.metadata?.chunkId) {
|
|
74
|
+
map.set(doc.metadata.chunkId, { ...doc, metadata: { ...doc.metadata, children: [] } })
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Step 2. Organize nodes into tree
|
|
79
|
+
const roots: DocumentInterface<Metadata>[] = []
|
|
80
|
+
|
|
81
|
+
for (const doc of map.values()) {
|
|
82
|
+
const parentId = doc.metadata.parentId
|
|
83
|
+
if (parentId && map.has(parentId)) {
|
|
84
|
+
const parent = map.get(parentId)
|
|
85
|
+
parent.metadata.children = parent.metadata.children || []
|
|
86
|
+
parent.metadata.children.push(doc)
|
|
87
|
+
} else {
|
|
88
|
+
roots.push(doc)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return roots
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Find all leaf nodes (nodes without children).
|
|
97
|
+
*
|
|
98
|
+
* @param roots
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
export function collectTreeLeaves(roots: IKnowledgeDocumentChunk[]) {
|
|
102
|
+
const leaves: IKnowledgeDocumentChunk[] = []
|
|
103
|
+
|
|
104
|
+
const collectLeaves = (node: IKnowledgeDocumentChunk) => {
|
|
105
|
+
const children = node.metadata.children
|
|
106
|
+
if (!children || children.length === 0) {
|
|
107
|
+
leaves.push(node)
|
|
108
|
+
} else {
|
|
109
|
+
for (const child of children) {
|
|
110
|
+
collectLeaves(child as IKnowledgeDocumentChunk)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
for (const root of roots) {
|
|
116
|
+
collectLeaves(root)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return leaves
|
|
120
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { DocumentInterface } from "@langchain/core/documents"
|
|
2
|
+
import { buildChunkTree, IDocChunkMetadata } from "./knowledge-doc-chunk.model"
|
|
3
|
+
|
|
4
|
+
describe("buildChunkTree", () => {
|
|
5
|
+
function makeDoc(
|
|
6
|
+
chunkId: string,
|
|
7
|
+
parentId?: string,
|
|
8
|
+
extra?: Partial<IDocChunkMetadata>
|
|
9
|
+
): DocumentInterface<IDocChunkMetadata> {
|
|
10
|
+
return {
|
|
11
|
+
pageContent: `Content ${chunkId}`,
|
|
12
|
+
metadata: {
|
|
13
|
+
chunkId,
|
|
14
|
+
parentId,
|
|
15
|
+
...extra,
|
|
16
|
+
} as IDocChunkMetadata,
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
it("does not mutate input documents", () => {
|
|
21
|
+
const chunks: DocumentInterface<IDocChunkMetadata>[] = [
|
|
22
|
+
{
|
|
23
|
+
pageContent: 'Parent chunk',
|
|
24
|
+
metadata: { chunkId: '1' },
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
pageContent: 'Parent chunk',
|
|
28
|
+
metadata: { chunkId: '2' },
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
pageContent: 'Child 1',
|
|
32
|
+
metadata: { chunkId: '1-1', parentId: '1', type: 'child' },
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
pageContent: 'Child 2',
|
|
36
|
+
metadata: { chunkId: '1-2', parentId: '1', type: 'child' },
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
pageContent: 'Grandchild of 1-2',
|
|
40
|
+
metadata: { chunkId: '1-2-1', parentId: '1-2', type: 'child' },
|
|
41
|
+
},
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
const tree = buildChunkTree(chunks)
|
|
45
|
+
console.log('Tree:', JSON.stringify(tree, null, 2))
|
|
46
|
+
})
|
|
47
|
+
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Document } from '@langchain/core/documents'
|
|
2
|
+
import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
|
|
3
|
+
import { IKnowledgeDocument } from './knowledge-doc.model'
|
|
4
|
+
import { DocumentMetadata, IKnowledgebase } from './knowledgebase.model'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Segmented page of a knowledge document
|
|
9
|
+
*/
|
|
10
|
+
export interface IKnowledgeDocumentPage<Metadata extends DocumentMetadata = DocumentMetadata>
|
|
11
|
+
extends Document,
|
|
12
|
+
IBasePerTenantAndOrganizationEntityModel {
|
|
13
|
+
documentId?: string
|
|
14
|
+
document?: IKnowledgeDocument
|
|
15
|
+
knowledgebaseId?: string
|
|
16
|
+
knowledgebase?: IKnowledgebase
|
|
17
|
+
|
|
18
|
+
metadata: Metadata
|
|
19
|
+
pageContent: string
|
|
20
|
+
}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
|
|
2
|
+
import { IIntegration } from '../integration.model'
|
|
3
|
+
import { IStorageFile } from '../storage-file.model'
|
|
4
|
+
import { IKnowledgeDocumentPage } from './knowledge-doc-page.model'
|
|
5
|
+
import { IKnowledgebaseTask } from './knowledgebase-task.model'
|
|
6
|
+
import { IKnowledgebase } from './knowledgebase.model'
|
|
7
|
+
import { TRagWebOptions } from './rag-web'
|
|
8
|
+
import { IKnowledgeDocumentChunk } from './knowledge-doc-chunk.model'
|
|
9
|
+
import { DocumentSourceProviderCategoryEnum } from './knowledge-pipeline'
|
|
10
|
+
import { TCopilotModel } from './copilot-model.model'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
export type DocumentParserConfig = {
|
|
14
|
+
pages?: number[][]
|
|
15
|
+
replaceWhitespace?: boolean
|
|
16
|
+
removeSensitive?: boolean
|
|
17
|
+
textSplitterType?: string
|
|
18
|
+
textSplitter?: {
|
|
19
|
+
[key: string]: unknown
|
|
20
|
+
}
|
|
21
|
+
transformerType?: string
|
|
22
|
+
transformerIntegration?: string
|
|
23
|
+
transformer?: {
|
|
24
|
+
[key: string]: unknown
|
|
25
|
+
}
|
|
26
|
+
imageUnderstandingType?: string
|
|
27
|
+
imageUnderstandingIntegration?: string
|
|
28
|
+
imageUnderstanding?: {
|
|
29
|
+
[key: string]: unknown
|
|
30
|
+
}
|
|
31
|
+
imageUnderstandingModel?: TCopilotModel
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type DocumentTextParserConfig = DocumentParserConfig & {
|
|
35
|
+
delimiter?: string
|
|
36
|
+
chunkSize?: number | null
|
|
37
|
+
chunkOverlap?: number | null
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type DocumentSheetParserConfig = DocumentParserConfig & {
|
|
41
|
+
fields?: string[]
|
|
42
|
+
indexedFields?: string[]
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Import Type:
|
|
47
|
+
* - file: local file
|
|
48
|
+
* - web: web document
|
|
49
|
+
* ...
|
|
50
|
+
*/
|
|
51
|
+
export enum DocumentTypeEnum {
|
|
52
|
+
/**
|
|
53
|
+
* Folder, parent of other documents
|
|
54
|
+
*/
|
|
55
|
+
FOLDER = 'folder',
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Local files
|
|
59
|
+
* @deprecated use DocumentSourceProviderCategoryEnum local file type instead
|
|
60
|
+
*/
|
|
61
|
+
FILE = 'file'
|
|
62
|
+
}
|
|
63
|
+
export const KDocumentSourceType = {
|
|
64
|
+
...DocumentSourceProviderCategoryEnum,
|
|
65
|
+
...DocumentTypeEnum
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Document type category, determine how to process the document.
|
|
70
|
+
*/
|
|
71
|
+
export enum KBDocumentCategoryEnum {
|
|
72
|
+
Text = 'text',
|
|
73
|
+
Image = 'image',
|
|
74
|
+
Audio = 'audio',
|
|
75
|
+
Video = 'video',
|
|
76
|
+
Sheet = 'sheet',
|
|
77
|
+
Other = 'other'
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export enum KBDocumentStatusEnum {
|
|
81
|
+
WAITING = 'waiting',
|
|
82
|
+
VALIDATE = 'validate',
|
|
83
|
+
RUNNING = 'running',
|
|
84
|
+
TRANSFORMED = 'transformed',
|
|
85
|
+
SPLITTED = 'splitted',
|
|
86
|
+
UNDERSTOOD = 'understood',
|
|
87
|
+
EMBEDDING = 'embedding',
|
|
88
|
+
CANCEL = 'cancel',
|
|
89
|
+
FINISH = 'finish',
|
|
90
|
+
ERROR = 'error'
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export type TDocumentWebOptions = TRagWebOptions & {
|
|
94
|
+
//
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export type TDocSourceConfig = {
|
|
98
|
+
key?: string
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export type TKnowledgeDocument = {
|
|
102
|
+
disabled?: boolean
|
|
103
|
+
|
|
104
|
+
knowledgebaseId?: string
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @deprecated use fileUrl instead
|
|
108
|
+
*/
|
|
109
|
+
storageFileId?: string
|
|
110
|
+
/**
|
|
111
|
+
* @deprecated use fileUrl instead
|
|
112
|
+
*/
|
|
113
|
+
storageFile?: IStorageFile
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* thumbnail base64 string
|
|
117
|
+
*/
|
|
118
|
+
thumbnail?: string
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* default parser ID
|
|
122
|
+
* @deprecated unused
|
|
123
|
+
*/
|
|
124
|
+
parserId: string
|
|
125
|
+
parserConfig: DocumentTextParserConfig
|
|
126
|
+
/**
|
|
127
|
+
* where dose this document come from
|
|
128
|
+
*/
|
|
129
|
+
sourceType?: DocumentSourceProviderCategoryEnum | DocumentTypeEnum
|
|
130
|
+
sourceConfig?: TDocSourceConfig
|
|
131
|
+
/**
|
|
132
|
+
* document type category
|
|
133
|
+
*/
|
|
134
|
+
category?: KBDocumentCategoryEnum | null
|
|
135
|
+
/**
|
|
136
|
+
* Local file extension or Web doc provider
|
|
137
|
+
*/
|
|
138
|
+
type: string
|
|
139
|
+
/**
|
|
140
|
+
* file name or web url
|
|
141
|
+
*/
|
|
142
|
+
name: string
|
|
143
|
+
/**
|
|
144
|
+
* where does it store
|
|
145
|
+
*/
|
|
146
|
+
filePath: string
|
|
147
|
+
fileUrl?: string
|
|
148
|
+
/**
|
|
149
|
+
* Folder path in server for this document file.
|
|
150
|
+
* Init it in creating document entity.
|
|
151
|
+
*/
|
|
152
|
+
folder?: string
|
|
153
|
+
|
|
154
|
+
size?: string
|
|
155
|
+
mimeType?: string
|
|
156
|
+
|
|
157
|
+
tokenNum?: number | null
|
|
158
|
+
chunkNum?: number | null
|
|
159
|
+
|
|
160
|
+
progress?: number | null
|
|
161
|
+
/**
|
|
162
|
+
* process message
|
|
163
|
+
*/
|
|
164
|
+
processMsg?: string | null
|
|
165
|
+
|
|
166
|
+
processBeginAt?: Date | null
|
|
167
|
+
|
|
168
|
+
processDuation?: number | null
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* is it validate (0: wasted,1: validate)
|
|
172
|
+
*/
|
|
173
|
+
status?: KBDocumentStatusEnum
|
|
174
|
+
/**
|
|
175
|
+
* The background job id
|
|
176
|
+
*/
|
|
177
|
+
jobId?: string
|
|
178
|
+
|
|
179
|
+
options?: TDocumentWebOptions
|
|
180
|
+
|
|
181
|
+
integrationId?: string
|
|
182
|
+
integration?: IIntegration
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* @deprecated use chunks instead
|
|
186
|
+
*/
|
|
187
|
+
pages?: IKnowledgeDocumentPage[]
|
|
188
|
+
|
|
189
|
+
chunks?: IKnowledgeDocumentChunk[]
|
|
190
|
+
tasks?: IKnowledgebaseTask[]
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* Document, include file, web pages, folder, virtual, etc.
|
|
195
|
+
*/
|
|
196
|
+
export interface IKnowledgeDocument<T = Metadata> extends TKnowledgeDocument, IBasePerTenantAndOrganizationEntityModel {
|
|
197
|
+
parent?: IKnowledgeDocument | null
|
|
198
|
+
children?: IKnowledgeDocument[]
|
|
199
|
+
knowledgebase?: IKnowledgebase
|
|
200
|
+
|
|
201
|
+
draft?: TKnowledgeDocument
|
|
202
|
+
|
|
203
|
+
metadata?: T
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// export interface IDocumentChunk<Metadata = DocumentMetadata> {
|
|
207
|
+
// id: string
|
|
208
|
+
// pageContent: string
|
|
209
|
+
// metadata: Metadata & {
|
|
210
|
+
// knowledgeId?: string
|
|
211
|
+
// }
|
|
212
|
+
// collection_id: string
|
|
213
|
+
// }
|
|
214
|
+
|
|
215
|
+
export type Metadata = any
|
|
216
|
+
|
|
217
|
+
export interface IKnowledgeDocumentCreateInput
|
|
218
|
+
extends IKnowledgeDocument, IBasePerTenantAndOrganizationEntityModel {}
|
|
219
|
+
|
|
220
|
+
export interface IKnowledgeDocumentUpdateInput
|
|
221
|
+
extends Partial<IKnowledgeDocumentCreateInput> {
|
|
222
|
+
id?: string;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
export interface IKnowledgeDocumentFindInput
|
|
226
|
+
extends IBasePerTenantAndOrganizationEntityModel,
|
|
227
|
+
IKnowledgeDocument {}
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
export function isDocumentSheet(type: string): boolean {
|
|
231
|
+
return ['csv', 'xls', 'xlsx', 'ods', 'vnd.openxmlformats-officedocument.spreadsheetml.sheet'].includes(type)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
export function isImageType(type: string): boolean {
|
|
235
|
+
return ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'svg', 'webp'].includes(type)
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export function isVideoType(type: string): boolean {
|
|
239
|
+
return ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm'].includes(type)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export function isAudioType(type: string): boolean {
|
|
243
|
+
return ['mp3', 'wav', 'aac', 'flac', 'ogg', 'm4a'].includes(type)
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export function classificateDocumentCategory(entity: Partial<IKnowledgeDocument>): KBDocumentCategoryEnum {
|
|
247
|
+
return isDocumentSheet(entity.type) ? KBDocumentCategoryEnum.Sheet :
|
|
248
|
+
isImageType(entity.type) ? KBDocumentCategoryEnum.Image :
|
|
249
|
+
isVideoType(entity.type) ? KBDocumentCategoryEnum.Video :
|
|
250
|
+
isAudioType(entity.type) ? KBDocumentCategoryEnum.Audio :
|
|
251
|
+
KBDocumentCategoryEnum.Text
|
|
252
|
+
}
|