@metad/contracts 3.6.2 → 3.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (287) hide show
  1. package/.babelrc +5 -0
  2. package/.eslintrc.json +18 -0
  3. package/babel.config.json +1 -0
  4. package/index.cjs.js +5 -4233
  5. package/jest.config.ts +16 -0
  6. package/package.json +2 -2
  7. package/project.json +53 -0
  8. package/src/agent/{ai-model.d.ts → ai-model.ts} +2 -2
  9. package/src/agent/graph.ts +275 -0
  10. package/src/agent/index.ts +5 -0
  11. package/src/agent/token.ts +23 -0
  12. package/src/agent/utils.spec.ts +283 -0
  13. package/src/agent/utils.ts +122 -0
  14. package/src/agent/variables.ts +66 -0
  15. package/src/ai/ai-model.model.ts +232 -0
  16. package/src/ai/ai-provider.model.ts +53 -0
  17. package/src/ai/ai.model.ts +87 -0
  18. package/src/ai/chat-message-feedback.model.ts +31 -0
  19. package/src/ai/chat-message.model.ts +277 -0
  20. package/src/ai/chat.model.ts +207 -0
  21. package/src/ai/copilot-checkpoint.model.ts +25 -0
  22. package/src/ai/copilot-example.model.ts +23 -0
  23. package/src/ai/copilot-model.model.ts +31 -0
  24. package/src/ai/copilot-organization.model.ts +21 -0
  25. package/src/ai/copilot-provider.model.ts +46 -0
  26. package/src/ai/copilot-role.model.ts +48 -0
  27. package/src/ai/copilot-store.model.ts +34 -0
  28. package/src/ai/copilot-user.model.ts +24 -0
  29. package/src/ai/copilot.model.ts +47 -0
  30. package/src/ai/{environment.model.d.ts → environment.model.ts} +12 -10
  31. package/src/ai/feature.model.ts +6 -0
  32. package/src/ai/index.ts +40 -0
  33. package/src/ai/knowledge-doc-chunk.model.ts +123 -0
  34. package/src/ai/knowledge-doc-chunk.spec.ts +47 -0
  35. package/src/ai/knowledge-doc-page.model.ts +20 -0
  36. package/src/ai/knowledge-doc.model.ts +364 -0
  37. package/src/ai/knowledge-pipeline.ts +138 -0
  38. package/src/ai/knowledge-retrieval-log.model.ts +19 -0
  39. package/src/ai/knowledgebase-task.model.ts +46 -0
  40. package/src/ai/knowledgebase.model.ts +205 -0
  41. package/src/ai/rag-web.ts +54 -0
  42. package/src/ai/rag.ts +24 -0
  43. package/src/ai/role-permissions.ts +13 -0
  44. package/src/ai/types.ts +83 -0
  45. package/src/ai/xpert-agent-execution.model.ts +115 -0
  46. package/src/ai/xpert-agent.model.ts +264 -0
  47. package/src/ai/xpert-project.model.ts +103 -0
  48. package/src/ai/xpert-table.model.ts +100 -0
  49. package/src/ai/xpert-task.model.ts +32 -0
  50. package/src/ai/xpert-template.model.ts +53 -0
  51. package/src/ai/xpert-tool-mcp.model.ts +77 -0
  52. package/src/ai/xpert-tool.model.ts +216 -0
  53. package/src/ai/xpert-toolset.model.ts +220 -0
  54. package/src/ai/xpert-workflow-task.prompt.ts +71 -0
  55. package/src/ai/xpert-workflow.model.ts +502 -0
  56. package/src/ai/xpert-workspace.model.ts +42 -0
  57. package/src/ai/xpert.model.ts +637 -0
  58. package/src/ai/xpert.utils.ts +214 -0
  59. package/src/analytics/ai.ts +79 -0
  60. package/src/analytics/approval-policy.model.ts +40 -0
  61. package/src/analytics/business-area-user.model.ts +43 -0
  62. package/src/analytics/business-area.ts +20 -0
  63. package/src/analytics/certification.model.ts +12 -0
  64. package/src/analytics/chatbi-conversation.model.ts +16 -0
  65. package/src/analytics/chatbi-model.model.ts +22 -0
  66. package/src/analytics/collection.model.ts +8 -0
  67. package/src/analytics/comment.model.ts +14 -0
  68. package/src/analytics/data-source-type.ts +19 -0
  69. package/src/analytics/data-source.ts +72 -0
  70. package/src/analytics/favorite.ts +18 -0
  71. package/src/analytics/features.ts +19 -0
  72. package/src/analytics/feed-model.ts +15 -0
  73. package/src/analytics/gateway.ts +31 -0
  74. package/src/analytics/index.ts +39 -0
  75. package/src/analytics/indicator-app.ts +49 -0
  76. package/src/analytics/{indicator-market.d.ts → indicator-market.ts} +6 -2
  77. package/src/analytics/indicator.ts +143 -0
  78. package/src/analytics/model-query-log.model.ts +45 -0
  79. package/src/analytics/model-query.ts +22 -0
  80. package/src/analytics/{notification-destination.d.ts → notification-destination.ts} +9 -5
  81. package/src/analytics/{permission-approval-user.model.d.ts → permission-approval-user.model.ts} +10 -8
  82. package/src/analytics/permission-approval.model.ts +58 -0
  83. package/src/analytics/project.model.ts +56 -0
  84. package/src/analytics/role-permissions.ts +36 -0
  85. package/src/analytics/schema.ts +300 -0
  86. package/src/analytics/screenshot.model.ts +28 -0
  87. package/src/analytics/semantic-model-entity.ts +50 -0
  88. package/src/analytics/semantic-model-member.ts +49 -0
  89. package/src/analytics/semantic-model.ts +237 -0
  90. package/src/analytics/{story-point.d.ts → story-point.ts} +11 -6
  91. package/src/analytics/story-template.model.ts +34 -0
  92. package/src/analytics/story-widget.ts +15 -0
  93. package/src/analytics/story.ts +109 -0
  94. package/src/analytics/subscription.ts +43 -0
  95. package/src/analytics/visit.model.ts +39 -0
  96. package/src/analytics/webSocket.ts +53 -0
  97. package/src/api-key.model.ts +11 -0
  98. package/src/base-entity.model.ts +34 -0
  99. package/src/contact.model.ts +45 -0
  100. package/src/core.model.ts +103 -0
  101. package/src/{country.model.d.ts → country.model.ts} +3 -2
  102. package/src/currency.model.ts +582 -0
  103. package/src/{custom-smtp.model.d.ts → custom-smtp.model.ts} +21 -17
  104. package/src/date-picker.model.ts +5 -0
  105. package/src/email-template.model.ts +50 -0
  106. package/src/email.model.ts +46 -0
  107. package/src/employee.model.ts +199 -0
  108. package/src/entity-with-members.model.ts +16 -0
  109. package/src/feature.model.ts +108 -0
  110. package/src/file-provider.ts +37 -0
  111. package/src/help-center-article.model.ts +35 -0
  112. package/src/help-center.model.ts +33 -0
  113. package/src/http-status.enum.ts +58 -0
  114. package/src/import-export.model.ts +42 -0
  115. package/src/index.ts +60 -0
  116. package/src/integration/dify.ts +31 -0
  117. package/src/integration/dingtalk.ts +16 -0
  118. package/src/integration/fastgpt.ts +32 -0
  119. package/src/integration/firecrawl.ts +46 -0
  120. package/src/integration/github.ts +149 -0
  121. package/src/integration/index.ts +15 -0
  122. package/src/integration/lark.ts +79 -0
  123. package/src/integration/wecom.ts +16 -0
  124. package/src/integration.model.ts +119 -0
  125. package/src/invite.model.ts +144 -0
  126. package/src/language.model.ts +22 -0
  127. package/src/organization-contact.model.ts +84 -0
  128. package/src/{organization-department.model.d.ts → organization-department.model.ts} +16 -10
  129. package/src/organization-language.model.ts +24 -0
  130. package/src/organization-projects.model.ts +99 -0
  131. package/src/organization-team-employee-model.ts +14 -0
  132. package/src/organization-team-model.ts +25 -0
  133. package/src/organization.model.ts +266 -0
  134. package/src/{password-reset.model.d.ts → password-reset.model.ts} +14 -10
  135. package/src/{plain-object.model.d.ts → plain-object.model.ts} +1 -1
  136. package/src/plugin.ts +15 -0
  137. package/src/role-permission.model.ts +123 -0
  138. package/src/role.model.ts +31 -0
  139. package/src/schedule.ts +71 -0
  140. package/src/secret-token.model.ts +15 -0
  141. package/src/seed.model.ts +50 -0
  142. package/src/storage-file.model.ts +46 -0
  143. package/src/tag-entity.model.ts +23 -0
  144. package/src/tenant.model.ts +52 -0
  145. package/src/tools/index.ts +1 -0
  146. package/src/tools/sandbox.ts +5 -0
  147. package/src/translation.model.ts +37 -0
  148. package/src/types.ts +277 -0
  149. package/src/user-organization.model.ts +31 -0
  150. package/src/user.model.ts +151 -0
  151. package/src/visibility.model.ts +6 -0
  152. package/tsconfig.json +22 -0
  153. package/tsconfig.lib.json +10 -0
  154. package/tsconfig.spec.json +9 -0
  155. package/index.cjs.d.ts +0 -1
  156. package/index.esm.d.ts +0 -1
  157. package/index.esm.js +0 -4129
  158. package/src/agent/graph.d.ts +0 -148
  159. package/src/agent/index.d.ts +0 -5
  160. package/src/agent/token.d.ts +0 -21
  161. package/src/agent/utils.d.ts +0 -19
  162. package/src/agent/variables.d.ts +0 -14
  163. package/src/ai/ai-model.model.d.ts +0 -198
  164. package/src/ai/ai-provider.model.d.ts +0 -43
  165. package/src/ai/ai.model.d.ts +0 -82
  166. package/src/ai/chat-message-feedback.model.d.ts +0 -24
  167. package/src/ai/chat-message.model.d.ts +0 -222
  168. package/src/ai/chat.model.d.ts +0 -189
  169. package/src/ai/copilot-checkpoint.model.d.ts +0 -23
  170. package/src/ai/copilot-example.model.d.ts +0 -19
  171. package/src/ai/copilot-model.model.d.ts +0 -26
  172. package/src/ai/copilot-organization.model.d.ts +0 -17
  173. package/src/ai/copilot-provider.model.d.ts +0 -31
  174. package/src/ai/copilot-role.model.d.ts +0 -43
  175. package/src/ai/copilot-store.model.d.ts +0 -29
  176. package/src/ai/copilot-user.model.d.ts +0 -20
  177. package/src/ai/copilot.model.d.ts +0 -36
  178. package/src/ai/feature.model.d.ts +0 -6
  179. package/src/ai/index.d.ts +0 -39
  180. package/src/ai/knowledge-doc-chunk.model.d.ts +0 -60
  181. package/src/ai/knowledge-doc-page.model.d.ts +0 -15
  182. package/src/ai/knowledge-doc.model.d.ts +0 -192
  183. package/src/ai/knowledge-pipeline.d.ts +0 -107
  184. package/src/ai/knowledge-retrieval-log.model.d.ts +0 -10
  185. package/src/ai/knowledgebase-task.model.d.ts +0 -39
  186. package/src/ai/knowledgebase.model.d.ts +0 -162
  187. package/src/ai/rag-web.d.ts +0 -26
  188. package/src/ai/rag.d.ts +0 -24
  189. package/src/ai/role-permissions.d.ts +0 -13
  190. package/src/ai/types.d.ts +0 -39
  191. package/src/ai/xpert-agent-execution.model.d.ts +0 -96
  192. package/src/ai/xpert-agent.model.d.ts +0 -192
  193. package/src/ai/xpert-project.model.d.ts +0 -86
  194. package/src/ai/xpert-task.model.d.ts +0 -26
  195. package/src/ai/xpert-template.model.d.ts +0 -47
  196. package/src/ai/xpert-tool-mcp.model.d.ts +0 -67
  197. package/src/ai/xpert-tool.model.d.ts +0 -147
  198. package/src/ai/xpert-toolset.model.d.ts +0 -200
  199. package/src/ai/xpert-workflow-task.prompt.d.ts +0 -2
  200. package/src/ai/xpert-workflow.model.d.ts +0 -366
  201. package/src/ai/xpert-workspace.model.d.ts +0 -32
  202. package/src/ai/xpert.model.d.ts +0 -529
  203. package/src/ai/xpert.utils.d.ts +0 -80
  204. package/src/analytics/ai.d.ts +0 -73
  205. package/src/analytics/approval-policy.model.d.ts +0 -30
  206. package/src/analytics/business-area-user.model.d.ts +0 -35
  207. package/src/analytics/business-area.d.ts +0 -17
  208. package/src/analytics/certification.model.d.ts +0 -11
  209. package/src/analytics/chatbi-conversation.model.d.ts +0 -15
  210. package/src/analytics/chatbi-model.model.d.ts +0 -18
  211. package/src/analytics/collection.model.d.ts +0 -6
  212. package/src/analytics/comment.model.d.ts +0 -10
  213. package/src/analytics/data-source-type.d.ts +0 -16
  214. package/src/analytics/data-source.d.ts +0 -62
  215. package/src/analytics/favorite.d.ts +0 -14
  216. package/src/analytics/features.d.ts +0 -19
  217. package/src/analytics/feed-model.d.ts +0 -13
  218. package/src/analytics/gateway.d.ts +0 -27
  219. package/src/analytics/index.d.ts +0 -38
  220. package/src/analytics/indicator-app.d.ts +0 -44
  221. package/src/analytics/indicator.d.ts +0 -106
  222. package/src/analytics/model-query-log.model.d.ts +0 -41
  223. package/src/analytics/model-query.d.ts +0 -21
  224. package/src/analytics/permission-approval.model.d.ts +0 -47
  225. package/src/analytics/project.model.d.ts +0 -50
  226. package/src/analytics/role-permissions.d.ts +0 -25
  227. package/src/analytics/schema.d.ts +0 -262
  228. package/src/analytics/screenshot.model.d.ts +0 -25
  229. package/src/analytics/semantic-model-entity.d.ts +0 -37
  230. package/src/analytics/semantic-model-member.d.ts +0 -24
  231. package/src/analytics/semantic-model.d.ts +0 -175
  232. package/src/analytics/story-template.model.d.ts +0 -28
  233. package/src/analytics/story-widget.d.ts +0 -12
  234. package/src/analytics/story.d.ts +0 -93
  235. package/src/analytics/subscription.d.ts +0 -38
  236. package/src/analytics/visit.model.d.ts +0 -34
  237. package/src/analytics/webSocket.d.ts +0 -48
  238. package/src/api-key.model.d.ts +0 -10
  239. package/src/base-entity.model.d.ts +0 -27
  240. package/src/contact.model.d.ts +0 -41
  241. package/src/core.model.d.ts +0 -97
  242. package/src/currency.model.d.ts +0 -579
  243. package/src/date-picker.model.d.ts +0 -5
  244. package/src/email-template.model.d.ts +0 -39
  245. package/src/email.model.d.ts +0 -36
  246. package/src/employee.model.d.ts +0 -128
  247. package/src/entity-with-members.model.d.ts +0 -13
  248. package/src/feature.model.d.ts +0 -93
  249. package/src/file-provider.d.ts +0 -33
  250. package/src/help-center-article.model.d.ts +0 -0
  251. package/src/help-center.model.d.ts +0 -0
  252. package/src/http-status.enum.d.ts +0 -57
  253. package/src/import-export.model.d.ts +0 -36
  254. package/src/index.d.ts +0 -48
  255. package/src/integration/dify.d.ts +0 -0
  256. package/src/integration/dingtalk.d.ts +0 -2
  257. package/src/integration/fastgpt.d.ts +0 -0
  258. package/src/integration/firecrawl.d.ts +0 -2
  259. package/src/integration/github.d.ts +0 -69
  260. package/src/integration/index.d.ts +0 -4
  261. package/src/integration/lark.d.ts +0 -11
  262. package/src/integration/wecom.d.ts +0 -2
  263. package/src/integration.model.d.ts +0 -90
  264. package/src/invite.model.d.ts +0 -123
  265. package/src/language.model.d.ts +0 -19
  266. package/src/organization-contact.model.d.ts +0 -73
  267. package/src/organization-language.model.d.ts +0 -18
  268. package/src/organization-projects.model.d.ts +0 -80
  269. package/src/organization-team-employee-model.d.ts +0 -12
  270. package/src/organization-team-model.d.ts +0 -19
  271. package/src/organization.model.d.ts +0 -239
  272. package/src/plugin.d.ts +0 -13
  273. package/src/role-permission.model.d.ts +0 -61
  274. package/src/role.model.d.ts +0 -26
  275. package/src/schedule.d.ts +0 -27
  276. package/src/secret-token.model.d.ts +0 -11
  277. package/src/seed.model.d.ts +0 -37
  278. package/src/storage-file.model.d.ts +0 -40
  279. package/src/tag-entity.model.d.ts +0 -20
  280. package/src/tenant.model.d.ts +0 -40
  281. package/src/tools/index.d.ts +0 -1
  282. package/src/tools/sandbox.d.ts +0 -5
  283. package/src/translation.model.d.ts +0 -26
  284. package/src/types.d.ts +0 -241
  285. package/src/user-organization.model.d.ts +0 -24
  286. package/src/user.model.d.ts +0 -131
  287. package/src/visibility.model.d.ts +0 -6
@@ -0,0 +1,216 @@
1
+ import type { JSONSchema4 } from "json-schema";
2
+ import { IBasePerTenantAndOrganizationEntityModel } from '../base-entity.model'
3
+ import { I18nObject } from '../types'
4
+ import { AiProviderRole } from './copilot.model'
5
+ import { TAvatar } from '../types'
6
+ import { IXpertToolset } from './xpert-toolset.model'
7
+
8
+ /**
9
+ * Tools for Xpert
10
+ */
11
+ export interface IXpertTool extends IBasePerTenantAndOrganizationEntityModel, XpertToolType {}
12
+
13
+ export type XpertToolType = {
14
+ name: string
15
+ description?: string
16
+ avatar?: TAvatar
17
+ /**
18
+ * @deprecated use disabled
19
+ */
20
+ enabled?: boolean
21
+ /**
22
+ * Is disabled in toolset
23
+ */
24
+ disabled?: boolean
25
+
26
+ options?: Record<string, any>
27
+ /**
28
+ * Schema of tool
29
+ */
30
+ schema?: Record<string, any> | TXpertToolEntity | IBuiltinTool
31
+ /**
32
+ * Default input parameters of tool
33
+ */
34
+ parameters?: Record<string, any>
35
+
36
+ /**
37
+ * Priority role of AI provider
38
+ * @default `AiProviderRole.Secondary`
39
+ */
40
+ aiProviderRole?: AiProviderRole
41
+
42
+ toolset?: IXpertToolset
43
+ toolsetId?: string
44
+
45
+ // Temporary properties
46
+ provider?: IBuiltinTool
47
+ }
48
+
49
+ export type TToolProviderIdentity = {
50
+ name: string
51
+ author: string
52
+ label: I18nObject
53
+ provider: string
54
+ entity?: string
55
+ }
56
+
57
+ interface ToolParameterOption {
58
+ value: string;
59
+ label: I18nObject;
60
+ }
61
+
62
+ export enum ToolParameterType {
63
+ STRING = "string",
64
+ NUMBER = "number",
65
+ BOOLEAN = "boolean",
66
+ ARRAY = "array",
67
+ SELECT = "select",
68
+ SECRET_INPUT = "secret-input",
69
+ FILE = "file"
70
+ }
71
+
72
+ export enum ToolParameterForm {
73
+ SCHEMA = "schema", // should be set while adding tool
74
+ FORM = "form", // should be set before invoking tool
75
+ LLM = "llm" // will be set by LLM
76
+ }
77
+
78
+ export type TToolParameter = {
79
+ name: string;
80
+ label: I18nObject;
81
+ human_description?: I18nObject;
82
+ placeholder?: I18nObject;
83
+ type: ToolParameterType;
84
+ form: ToolParameterForm;
85
+ llm_description?: string;
86
+ required?: boolean;
87
+ default?: number | string;
88
+ min?: number;
89
+ max?: number;
90
+ options?: ToolParameterOption[];
91
+ items?: {
92
+ type: ToolParameterType
93
+ }
94
+
95
+ /**
96
+ * Is visible for ai tool parameters
97
+ */
98
+ visible?: boolean
99
+ }
100
+
101
+ export interface ApiToolBundle {
102
+ /**
103
+ * This interface is used to store the schema information of an api based tool,
104
+ * such as the url, the method, the parameters, etc.
105
+ */
106
+
107
+ // server_url
108
+ server_url: string;
109
+ // method
110
+ method: string;
111
+ // summary
112
+ summary?: string;
113
+ // operation_id
114
+ operation_id?: string;
115
+ /**
116
+ * parameters
117
+ * @deprecated use schema
118
+ */
119
+ parameters?: TToolParameter[];
120
+ schema?: JSONSchema4
121
+ // author
122
+ author: string;
123
+ // icon
124
+ icon?: string;
125
+ // openapi operation
126
+ openapi: Record<string, any>;
127
+ }
128
+
129
+ export interface IBuiltinTool {
130
+ identity: TToolProviderIdentity
131
+ description: {
132
+ human: I18nObject
133
+ llm: string
134
+ }
135
+ /**
136
+ * Definition of input parameters (yaml schema)
137
+ */
138
+ parameters?: TToolParameter[]
139
+ /**
140
+ * Schema of tool (zod/json-schema)
141
+ */
142
+ schema?: any
143
+ /**
144
+ * @deprecated how to use?
145
+ */
146
+ entity?: string
147
+ }
148
+
149
+ // Types for OData
150
+ export type TXpertToolEntity = {
151
+ name: string
152
+ method: 'create' | 'get' | 'query' | 'update' | 'delete'
153
+ entity: string
154
+ path: string
155
+ /**
156
+ * Definition of properties
157
+ */
158
+ parameters: Partial<TToolParameter>[]
159
+
160
+ description?: string
161
+ }
162
+
163
+ export const TOOL_NAME_REGEX = /^[a-zA-Z0-9_-]+$/;
164
+
165
+ // Helper functions for tools
166
+ /**
167
+ *
168
+ * @param tool Tool
169
+ * @param disableToolDefault Is default disable tools
170
+ * @returns Tool is enabled?
171
+ */
172
+ export function isToolEnabled(tool: IXpertTool, disableToolDefault = false) {
173
+ let disabled = tool.disabled
174
+ if (disabled == null && tool.enabled != null) {
175
+ disabled = !tool.enabled
176
+ }
177
+ if (disabled == null) {
178
+ disabled = disableToolDefault
179
+ }
180
+ return !disabled
181
+ }
182
+
183
+ /**
184
+ * Tool is enabled?
185
+ *
186
+ * @deprecated use isToolEnabled
187
+ */
188
+ export function isEnableTool(tool: IXpertTool, toolset: IXpertToolset) {
189
+ let disabled = tool.disabled
190
+ if (disabled == null && tool.enabled != null) {
191
+ disabled = !tool.enabled
192
+ }
193
+ if (disabled == null) {
194
+ disabled = toolset.options?.disableToolDefault
195
+ }
196
+ return !disabled
197
+ }
198
+
199
+ export function getEnabledTools(toolset: IXpertToolset) {
200
+ if (!toolset) return null
201
+ const disableToolDefault = toolset.options?.disableToolDefault
202
+ const positions = toolset?.options?.toolPositions
203
+ const tools = toolset?.tools?.filter((_) => isToolEnabled(_, disableToolDefault))
204
+ return positions && tools
205
+ ? tools.sort((a, b) => (positions[a.name] ?? Infinity) - (positions[b.name] ?? Infinity))
206
+ : tools
207
+ }
208
+
209
+ export function getToolLabel(tool: IXpertTool): I18nObject | string {
210
+ if (!tool) return ''
211
+ const identity = (tool.schema as IBuiltinTool)?.identity
212
+ if (identity) {
213
+ return identity.label || tool.name || ''
214
+ }
215
+ return tool.name || ''
216
+ }
@@ -0,0 +1,220 @@
1
+ import { AiProviderRole } from './copilot.model'
2
+ import { TAvatar } from '../types'
3
+ import { IXpertTool, XpertToolType } from './xpert-tool.model'
4
+ import { IBasePerWorkspaceEntityModel } from './xpert-workspace.model'
5
+ import { ITag } from '../tag-entity.model'
6
+ import { TCopilotModel } from './copilot-model.model'
7
+ import { Subscriber } from 'rxjs'
8
+ import { I18nObject } from '../types'
9
+
10
+
11
+ export enum XpertToolsetCategoryEnum {
12
+ BUILTIN = 'builtin',
13
+ API = 'api',
14
+ /**
15
+ * [Anthropic Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction)
16
+ */
17
+ MCP = 'mcp',
18
+ /**
19
+ * @deprecated
20
+ */
21
+ WORKFLOW = 'workflow'
22
+ }
23
+
24
+ export type XpertToolsetType = string
25
+ export type TXpertToolset = {
26
+ key?: string
27
+ /**
28
+ * toolset name
29
+ */
30
+ name: string
31
+ type?: XpertToolsetType
32
+ category?: 'command' | XpertToolsetCategoryEnum
33
+ description?: string
34
+ /**
35
+ * avatar object
36
+ */
37
+ avatar?: TAvatar
38
+ /**
39
+ * Priority role of AI provider
40
+ * @default `AiProviderRole.Secondary`
41
+ */
42
+ aiProviderRole?: AiProviderRole
43
+
44
+ /**
45
+ * Privacy policy of this toolset
46
+ */
47
+ privacyPolicy?: string
48
+ /**
49
+ * Custom disclaimer for the toolset
50
+ */
51
+ customDisclaimer?: string
52
+
53
+ options?: TXpertToolsetOptions
54
+ credentials?: TToolCredentials
55
+ schema?: string
56
+ schemaType?: 'openapi_json' | 'openapi_yaml'
57
+
58
+ tools?: IXpertTool[]
59
+
60
+ tags?: ITag[]
61
+ }
62
+
63
+ /**
64
+ * Toolset for Xpert
65
+ */
66
+ export interface IXpertToolset extends IBasePerWorkspaceEntityModel, TXpertToolset {}
67
+
68
+ export type TXpertToolsetOptions = {
69
+ provider?: IToolProvider
70
+ baseUrl?: string
71
+ toolPositions?: Record<string, number>
72
+ disableToolDefault?: boolean
73
+ needSandbox?: boolean
74
+ [key: string]: any
75
+ }
76
+
77
+ /**
78
+ * Context env when tool call in langchain.js
79
+ */
80
+ export type XpertToolContext = {
81
+ tenantId: string
82
+ organizationId?: string
83
+ userId: string
84
+ copilotModel: TCopilotModel
85
+ chatModel: unknown // BaseChatModel in langchain
86
+ tool_call_id: string
87
+ subscriber: Subscriber<MessageEvent>
88
+ }
89
+
90
+ export enum CredentialsType {
91
+ SECRET_INPUT = 'secret-input',
92
+ TEXT_INPUT = 'text-input',
93
+ SELECT = 'select',
94
+ REMOTE_SELECT = 'remote-select',
95
+ COPILOT_MODEL = 'copilot-model',
96
+ BOOLEAN = 'boolean',
97
+ INT = 'int',
98
+ NUMBER = 'number'
99
+ }
100
+
101
+ export interface ToolCredentialsOption {
102
+ value: string
103
+ label: I18nObject | string
104
+ }
105
+
106
+ export interface ToolProviderCredentials {
107
+ name: string
108
+ type: CredentialsType
109
+ required?: boolean
110
+ default?: number | string
111
+ options?: ToolCredentialsOption[]
112
+ /**
113
+ * Url for fetch remote select options
114
+ */
115
+ selectUrl?: string
116
+ /**
117
+ * Is multiple select
118
+ */
119
+ multi?: boolean
120
+ /**
121
+ * Depends on credentials
122
+ */
123
+ depends?: string[]
124
+ label?: I18nObject
125
+ help?: I18nObject
126
+ /**
127
+ * Url for help document
128
+ */
129
+ url?: string
130
+ placeholder?: I18nObject
131
+ max?: number
132
+ config?: Record<string, any>
133
+ }
134
+
135
+ export enum ApiProviderSchemaType {
136
+ /**
137
+ * Enum class for api provider schema type.
138
+ */
139
+ OPENAPI = "openapi",
140
+ SWAGGER = "swagger",
141
+ OPENAI_PLUGIN = "openai_plugin",
142
+ OPENAI_ACTIONS = "openai_actions"
143
+ }
144
+
145
+ export enum ToolTagEnum {
146
+ SEARCH = 'search',
147
+ IMAGE = 'image',
148
+ VIDEOS = 'videos',
149
+ WEATHER = 'weather',
150
+ FINANCE = 'finance',
151
+ DESIGN = 'design',
152
+ TRAVEL = 'travel',
153
+ SOCIAL = 'social',
154
+ NEWS = 'news',
155
+ MEDICAL = 'medical',
156
+ PRODUCTIVITY = 'productivity',
157
+ EDUCATION = 'education',
158
+ BUSINESS = 'business',
159
+ ENTERTAINMENT = 'entertainment',
160
+ UTILITIES = 'utilities',
161
+ ANALYSIS = 'analysis',
162
+ SANDBOX = 'sandbox',
163
+ PROJECT = 'project',
164
+ AGENT = 'agent',
165
+ OTHER = 'other'
166
+ }
167
+
168
+ export interface IToolTag {
169
+ name: string
170
+ label: I18nObject
171
+ icon: string
172
+ description?: I18nObject
173
+ }
174
+
175
+ export interface IToolProvider {
176
+ not_implemented?: boolean
177
+ pro?: boolean
178
+ id: string;
179
+ author: string;
180
+ name: string; // identifier
181
+ description: I18nObject;
182
+ /**
183
+ * @deprecated use avatar
184
+ */
185
+ icon?: string;
186
+ avatar: TAvatar
187
+ label: I18nObject; // label
188
+ help_url?: string
189
+ type: XpertToolsetCategoryEnum;
190
+ masked_credentials?: Record<string, any>
191
+ original_credentials?: Record<string, any>
192
+ is_team_authorization: boolean
193
+ allow_delete: boolean
194
+ tools?: XpertToolType[]
195
+ tags: ToolTagEnum[];
196
+ }
197
+
198
+ export type TToolCredentials = Record<string, string | number | boolean | any>
199
+
200
+ export type TToolsetParams = {
201
+ tenantId: string
202
+ organizationId?: string
203
+ projectId?: string
204
+ userId?: string
205
+ xpertId?: string
206
+ conversationId?: string
207
+ agentKey?: string
208
+ signal?: AbortSignal
209
+ env: Record<string, unknown>
210
+ }
211
+
212
+ export interface IBaseToolset {
213
+ toolNamePrefix?: string
214
+ }
215
+
216
+ export type TProgramToolMessage = {
217
+ code: string
218
+ output: string
219
+ error?: string
220
+ }
@@ -0,0 +1,71 @@
1
+ export const TASK_DESCRIPTION_PREFIX =
2
+ `Launch a new agent to handle complex, multi-step tasks autonomously.
3
+
4
+ Available agent types and the tools they have access to:`
5
+
6
+ export const TASK_DESCRIPTION_SUFFIX =
7
+ `When using the Task tool, you must specify a subagent_type parameter to select which agent type to use.
8
+
9
+ When to use the Agent tool:
10
+ - When you are instructed to execute custom slash commands. Use the Agent tool with the slash command invocation as the entire prompt. The slash command can take arguments. For example: Task(description="Check the file")
11
+
12
+ When NOT to use the Agent tool:
13
+ - If you want to read a specific file path, use the Read or Glob tool instead of the Agent tool, to find the match more quickly
14
+ - If you are searching for a specific term or definition within a known location, use the Glob tool instead, to find the match more quickly
15
+ - If you are searching for content within a specific file or set of 2-3 files, use the Read tool instead of the Agent tool, to find the match more quickly
16
+ - Other tasks that are not related to the agent descriptions above
17
+
18
+
19
+ Usage notes:
20
+ 1. Launch multiple agents concurrently whenever possible, to maximize performance; to do that, use a single message with multiple tool uses
21
+ 2. When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.
22
+ 3. Each agent invocation is stateless. You will not be able to send additional messages to the agent, nor will the agent be able to communicate with you outside of its final report. Therefore, your prompt should contain a highly detailed task description for the agent to perform autonomously and you should specify exactly what information the agent should return back to you in its final and only message to you.
23
+ 4. The agent's outputs should generally be trusted
24
+ 5. Clearly tell the agent whether you expect it to create content, perform analysis, or just do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent
25
+ 6. If the agent description mentions that it should be used proactively, then you should try your best to use it without the user having to ask for it first. Use your judgement.
26
+
27
+ Example usage:
28
+
29
+ <example_agent_descriptions>
30
+ "content-reviewer": use this agent after you are done creating significant content or documents
31
+ "greeting-responder": use this agent when to respond to user greetings with a friendly joke
32
+ "research-analyst": use this agent to conduct thorough research on complex topics
33
+ </example_agent_description>
34
+
35
+ <example>
36
+ user: "Please write a function that checks if a number is prime"
37
+ assistant: Sure let me write a function that checks if a number is prime
38
+ assistant: First let me use the Write tool to write a function that checks if a number is prime
39
+ assistant: I'm going to use the Write tool to write the following code:
40
+ <code>
41
+ function isPrime(n) {
42
+ if (n <= 1) return false
43
+ for (let i = 2; i * i <= n; i++) {
44
+ if (n % i === 0) return false
45
+ }
46
+ return true
47
+ }
48
+ </code>
49
+ <commentary>
50
+ Since significant content was created and the task was completed, now use the content-reviewer agent to review the work
51
+ </commentary>
52
+ assistant: Now let me use the content-reviewer agent to review the code
53
+ assistant: Uses the Task tool to launch with the content-reviewer agent
54
+ </example>
55
+
56
+ <example>
57
+ user: "Can you help me research the environmental impact of different renewable energy sources and create a comprehensive report?"
58
+ <commentary>
59
+ This is a complex research task that would benefit from using the research-analyst agent to conduct thorough analysis
60
+ </commentary>
61
+ assistant: I'll help you research the environmental impact of renewable energy sources. Let me use the research-analyst agent to conduct comprehensive research on this topic.
62
+ assistant: Uses the Task tool to launch with the research-analyst agent, providing detailed instructions about what research to conduct and what format the report should take
63
+ </example>
64
+
65
+ <example>
66
+ user: "Hello"
67
+ <commentary>
68
+ Since the user is greeting, use the greeting-responder agent to respond with a friendly joke
69
+ </commentary>
70
+ assistant: "I'm going to use the Task tool to launch with the greeting-responder agent"
71
+ </example>`