@nocobase/plugin-ai 2.1.0-beta.24 → 2.1.0-beta.26

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 (94) hide show
  1. package/dist/ai/ai-employees/dara.js +1 -0
  2. package/dist/ai/tools/sub-agents/shared.js +3 -1
  3. package/dist/client/343.6f36d97dd122c5b6.js +10 -0
  4. package/dist/client/{559.133d286a0a0a1d93.js → 559.39872901b9053629.js} +1 -1
  5. package/dist/client/646.afa699c92cd556f3.js +10 -0
  6. package/dist/client/ai-employees/types.d.ts +2 -0
  7. package/dist/client/components/skill-settings.d.ts +2 -0
  8. package/dist/client/index.js +3 -3
  9. package/dist/client/llm-providers/mimo/ModelSettings.d.ts +10 -0
  10. package/dist/client/llm-providers/mimo/index.d.ts +10 -0
  11. package/dist/client/llm-providers/xai/ModelSettings.d.ts +10 -0
  12. package/dist/client/llm-providers/xai/index.d.ts +10 -0
  13. package/dist/collections/ai-employees.d.ts +7 -0
  14. package/dist/collections/ai-employees.js +13 -0
  15. package/dist/externalVersion.js +15 -15
  16. package/dist/locale/en-US.json +2 -0
  17. package/dist/locale/zh-CN.json +2 -0
  18. package/dist/node_modules/@langchain/xai/LICENSE +21 -0
  19. package/dist/node_modules/@langchain/xai/dist/_virtual/rolldown_runtime.cjs +25 -0
  20. package/dist/node_modules/@langchain/xai/dist/chat_models/completions.cjs +568 -0
  21. package/dist/node_modules/@langchain/xai/dist/chat_models/completions.d.cts +619 -0
  22. package/dist/node_modules/@langchain/xai/dist/chat_models/completions.d.ts +619 -0
  23. package/dist/node_modules/@langchain/xai/dist/chat_models/completions.js +566 -0
  24. package/dist/node_modules/@langchain/xai/dist/chat_models/index.cjs +2 -0
  25. package/dist/node_modules/@langchain/xai/dist/chat_models/index.d.ts +3 -0
  26. package/dist/node_modules/@langchain/xai/dist/chat_models/index.js +2 -0
  27. package/dist/node_modules/@langchain/xai/dist/chat_models/responses-types.d.cts +1178 -0
  28. package/dist/node_modules/@langchain/xai/dist/chat_models/responses-types.d.ts +1178 -0
  29. package/dist/node_modules/@langchain/xai/dist/chat_models/responses.cjs +233 -0
  30. package/dist/node_modules/@langchain/xai/dist/chat_models/responses.d.cts +70 -0
  31. package/dist/node_modules/@langchain/xai/dist/chat_models/responses.d.ts +70 -0
  32. package/dist/node_modules/@langchain/xai/dist/chat_models/responses.js +232 -0
  33. package/dist/node_modules/@langchain/xai/dist/converters/responses.cjs +168 -0
  34. package/dist/node_modules/@langchain/xai/dist/converters/responses.js +164 -0
  35. package/dist/node_modules/@langchain/xai/dist/index.cjs +7 -0
  36. package/dist/node_modules/@langchain/xai/dist/index.d.cts +5 -0
  37. package/dist/node_modules/@langchain/xai/dist/index.d.ts +6 -0
  38. package/dist/node_modules/@langchain/xai/dist/index.js +6 -0
  39. package/dist/node_modules/@langchain/xai/dist/live_search.cjs +54 -0
  40. package/dist/node_modules/@langchain/xai/dist/live_search.d.cts +145 -0
  41. package/dist/node_modules/@langchain/xai/dist/live_search.d.ts +145 -0
  42. package/dist/node_modules/@langchain/xai/dist/live_search.js +51 -0
  43. package/dist/node_modules/@langchain/xai/dist/profiles.cjs +289 -0
  44. package/dist/node_modules/@langchain/xai/dist/profiles.js +288 -0
  45. package/dist/node_modules/@langchain/xai/dist/tools/code_execution.cjs +52 -0
  46. package/dist/node_modules/@langchain/xai/dist/tools/code_execution.d.cts +64 -0
  47. package/dist/node_modules/@langchain/xai/dist/tools/code_execution.d.ts +64 -0
  48. package/dist/node_modules/@langchain/xai/dist/tools/code_execution.js +50 -0
  49. package/dist/node_modules/@langchain/xai/dist/tools/collections_search.cjs +60 -0
  50. package/dist/node_modules/@langchain/xai/dist/tools/collections_search.d.cts +90 -0
  51. package/dist/node_modules/@langchain/xai/dist/tools/collections_search.d.ts +90 -0
  52. package/dist/node_modules/@langchain/xai/dist/tools/collections_search.js +58 -0
  53. package/dist/node_modules/@langchain/xai/dist/tools/index.cjs +18 -0
  54. package/dist/node_modules/@langchain/xai/dist/tools/index.d.cts +18 -0
  55. package/dist/node_modules/@langchain/xai/dist/tools/index.d.ts +18 -0
  56. package/dist/node_modules/@langchain/xai/dist/tools/index.js +18 -0
  57. package/dist/node_modules/@langchain/xai/dist/tools/live_search.cjs +94 -0
  58. package/dist/node_modules/@langchain/xai/dist/tools/live_search.d.cts +149 -0
  59. package/dist/node_modules/@langchain/xai/dist/tools/live_search.d.ts +149 -0
  60. package/dist/node_modules/@langchain/xai/dist/tools/live_search.js +91 -0
  61. package/dist/node_modules/@langchain/xai/dist/tools/web_search.cjs +57 -0
  62. package/dist/node_modules/@langchain/xai/dist/tools/web_search.d.cts +104 -0
  63. package/dist/node_modules/@langchain/xai/dist/tools/web_search.d.ts +104 -0
  64. package/dist/node_modules/@langchain/xai/dist/tools/web_search.js +55 -0
  65. package/dist/node_modules/@langchain/xai/dist/tools/x_search.cjs +63 -0
  66. package/dist/node_modules/@langchain/xai/dist/tools/x_search.d.cts +145 -0
  67. package/dist/node_modules/@langchain/xai/dist/tools/x_search.d.ts +145 -0
  68. package/dist/node_modules/@langchain/xai/dist/tools/x_search.js +61 -0
  69. package/dist/node_modules/@langchain/xai/package.json +1 -0
  70. package/dist/node_modules/fast-glob/package.json +1 -1
  71. package/dist/node_modules/flexsearch/package.json +1 -1
  72. package/dist/node_modules/fs-extra/package.json +1 -1
  73. package/dist/node_modules/jsonrepair/package.json +1 -1
  74. package/dist/node_modules/nodejs-snowflake/package.json +1 -1
  75. package/dist/node_modules/openai/package.json +1 -1
  76. package/dist/node_modules/zod/package.json +1 -1
  77. package/dist/server/ai-employees/ai-employee.js +20 -10
  78. package/dist/server/llm-providers/common/reasoning.js +2 -4
  79. package/dist/server/llm-providers/mimo.d.ts +37 -0
  80. package/dist/server/llm-providers/mimo.js +156 -0
  81. package/dist/server/llm-providers/xai.d.ts +17 -0
  82. package/dist/server/llm-providers/xai.js +88 -0
  83. package/dist/server/migrations/20260428175558-update-ai-employee-category.d.ts +14 -0
  84. package/dist/server/migrations/20260428175558-update-ai-employee-category.js +55 -0
  85. package/dist/server/migrations/20260429175132-ai-employee-deprecated-orin.d.ts +14 -0
  86. package/dist/server/migrations/20260429175132-ai-employee-deprecated-orin.js +53 -0
  87. package/dist/server/plugin.js +5 -0
  88. package/dist/server/resource/aiEmployees.js +10 -1
  89. package/dist/server/workflow/nodes/employee/files.js +7 -4
  90. package/dist/server/workflow/nodes/employee/index.js +136 -132
  91. package/dist/server/workflow/nodes/employee/types.d.ts +1 -1
  92. package/package.json +3 -2
  93. package/dist/client/343.83f7d96664e4e038.js +0 -10
  94. package/dist/client/646.cba98d80e9e6ea74.js +0 -10
@@ -45,11 +45,11 @@ var import_plugin = __toESM(require("../../../plugin"));
45
45
  var import_ai_employee = require("../../../ai-employees/ai-employee");
46
46
  var import_files = require("./files");
47
47
  var import_utils = require("@nocobase/utils");
48
+ var import_ai = require("@nocobase/ai");
48
49
  __reExport(employee_exports, require("./handler"), module.exports);
49
50
  __reExport(employee_exports, require("./tools"), module.exports);
50
51
  class AIEmployeeInstruction extends import_plugin_workflow.Instruction {
51
52
  async run(node, input, processor) {
52
- var _a, _b, _c, _d, _e;
53
53
  const {
54
54
  username,
55
55
  message,
@@ -60,7 +60,7 @@ class AIEmployeeInstruction extends import_plugin_workflow.Instruction {
60
60
  userId,
61
61
  files
62
62
  } = processor.getParsedValue(node.config, node.id);
63
- const toolName = "aiEmployeeWorkflowTaskOutput";
63
+ const toolName = import_ai.SYSTEM_TOOLS.WORK_FLOW_TASK_OUTPUT;
64
64
  const workflowSystemPrompt = `
65
65
  You are operating inside a workflow.
66
66
  Your job is to complete the workflow task and return the final outcome to the workflow, not to reply freely as a normal assistant.
@@ -81,151 +81,155 @@ ${typeof message.system === "object" ? JSON.stringify(message.system) : message.
81
81
  upstreamId: (input == null ? void 0 : input.id) ?? null
82
82
  });
83
83
  await processor.exit();
84
- try {
85
- if (skillSettings && skillSettings.skillsVersion == null) {
86
- skillSettings.skillsVersion = 2;
87
- }
88
- if (skillSettings && skillSettings.toolsVersion == null) {
89
- skillSettings.toolsVersion = 2;
90
- }
91
- const { conversation, aiWorkflowTasks } = await this.createWorkflowTask({
92
- username,
93
- userMessage,
94
- systemMessage,
95
- skillSettings,
96
- requiresApproval,
97
- toolName,
98
- node,
99
- processor,
100
- jobId: id
101
- });
102
- let currentRoles = (_a = input == null ? void 0 : input.result) == null ? void 0 : _a.roleName;
103
- if (!currentRoles) {
104
- const defaultRole = await this.workflow.db.getRepository("rolesUsers").findOne({
84
+ const runner = async () => {
85
+ var _a, _b, _c, _d, _e;
86
+ try {
87
+ if (skillSettings && skillSettings.skillsVersion == null) {
88
+ skillSettings.skillsVersion = 2;
89
+ }
90
+ if (skillSettings && skillSettings.toolsVersion == null) {
91
+ skillSettings.toolsVersion = 2;
92
+ }
93
+ const { conversation, aiWorkflowTasks } = await this.createWorkflowTask({
94
+ username,
95
+ userMessage,
96
+ systemMessage,
97
+ skillSettings,
98
+ requiresApproval,
99
+ toolName,
100
+ node,
101
+ processor,
102
+ jobId: id
103
+ });
104
+ let currentRoles = (_a = input == null ? void 0 : input.result) == null ? void 0 : _a.roleName;
105
+ if (!currentRoles) {
106
+ const defaultRole = await this.workflow.db.getRepository("rolesUsers").findOne({
107
+ filter: {
108
+ userId: ((_c = (_b = input == null ? void 0 : input.result) == null ? void 0 : _b.user) == null ? void 0 : _c.id) ?? userId,
109
+ default: true
110
+ }
111
+ });
112
+ currentRoles = defaultRole == null ? void 0 : defaultRole.roleName;
113
+ }
114
+ const employee = await this.workflow.db.getRepository("aiEmployees").findOne({
105
115
  filter: {
106
- userId: ((_c = (_b = input == null ? void 0 : input.result) == null ? void 0 : _b.user) == null ? void 0 : _c.id) ?? userId,
107
- default: true
116
+ username
108
117
  }
109
118
  });
110
- currentRoles = defaultRole == null ? void 0 : defaultRole.roleName;
111
- }
112
- const employee = await this.workflow.db.getRepository("aiEmployees").findOne({
113
- filter: {
114
- username
115
- }
116
- });
117
- const aiEmployee = new import_ai_employee.AIEmployee({
118
- ctx: {
119
- app: this.workflow.app,
120
- db: this.workflow.app.db,
121
- log: this.workflow.app.log,
122
- logger: this.workflow.app.log,
123
- state: { currentRoles },
124
- auth: {
125
- user: {
126
- id: ((_e = (_d = input == null ? void 0 : input.result) == null ? void 0 : _d.user) == null ? void 0 : _e.id) ?? userId
127
- }
128
- },
129
- action: {
130
- params: {
131
- values: {
132
- sessionId: conversation.sessionId,
133
- model
119
+ const aiEmployee = new import_ai_employee.AIEmployee({
120
+ ctx: {
121
+ app: this.workflow.app,
122
+ db: this.workflow.app.db,
123
+ log: this.workflow.app.log,
124
+ logger: this.workflow.app.log,
125
+ state: { currentRoles },
126
+ auth: {
127
+ user: {
128
+ id: ((_e = (_d = input == null ? void 0 : input.result) == null ? void 0 : _d.user) == null ? void 0 : _e.id) ?? userId
134
129
  }
135
- }
136
- }
137
- },
138
- employee,
139
- sessionId: conversation.sessionId,
140
- systemMessage,
141
- skillSettings,
142
- webSearch,
143
- model,
144
- tools: [{ name: toolName }]
145
- });
146
- const attachmentPart = {};
147
- if (files == null ? void 0 : files.length) {
148
- const { resolveAttachments, resolveUrls } = import_files.Files.resolvers(this.workflow, attachmentPart);
149
- await resolveAttachments(files);
150
- await resolveUrls(files);
151
- }
152
- let result;
153
- let isToolInvoke = false;
154
- let retry = 0;
155
- do {
156
- const userMessages = [
157
- {
158
- role: "user",
159
- content: {
160
- type: "text",
161
- content: userMessage
162
130
  },
163
- ...attachmentPart
164
- }
165
- ];
166
- if (retry > 0) {
167
- if (retry < 2) {
168
- const firstUserMessage = await this.workflow.db.getRepository("aiConversations.messages", conversation.sessionId).findOne({
169
- filter: {
170
- role: "user"
131
+ action: {
132
+ params: {
133
+ values: {
134
+ sessionId: conversation.sessionId,
135
+ model
136
+ }
137
+ }
138
+ }
139
+ },
140
+ employee,
141
+ sessionId: conversation.sessionId,
142
+ systemMessage,
143
+ skillSettings,
144
+ webSearch,
145
+ model,
146
+ tools: [{ name: toolName }]
147
+ });
148
+ const attachmentPart = {};
149
+ if (files == null ? void 0 : files.length) {
150
+ const { resolveAttachments, resolveUrls } = import_files.Files.resolvers(this.workflow, attachmentPart);
151
+ await resolveAttachments(files);
152
+ await resolveUrls(files);
153
+ }
154
+ let result;
155
+ let isToolInvoke = false;
156
+ let retry = 0;
157
+ do {
158
+ const userMessages = [
159
+ {
160
+ role: "user",
161
+ content: {
162
+ type: "text",
163
+ content: userMessage
171
164
  },
172
- sort: ["messageId"]
173
- });
174
- const messageId = firstUserMessage == null ? void 0 : firstUserMessage.messageId;
175
- result = await aiEmployee.invoke({ messageId, userMessages });
176
- } else {
177
- result = await aiEmployee.invoke({
178
- userMessages: [
179
- {
180
- role: "user",
181
- content: {
182
- type: "text",
183
- content: `You failed to call the required tool "aiEmployeeWorkflowTaskOutput" in your previous response.
184
- Call "aiEmployeeWorkflowTaskOutput" now to submit the workflow outcome.
165
+ ...attachmentPart
166
+ }
167
+ ];
168
+ if (retry > 0) {
169
+ if (retry < 2) {
170
+ const firstUserMessage = await this.workflow.db.getRepository("aiConversations.messages", conversation.sessionId).findOne({
171
+ filter: {
172
+ role: "user"
173
+ },
174
+ sort: ["messageId"]
175
+ });
176
+ const messageId = firstUserMessage == null ? void 0 : firstUserMessage.messageId;
177
+ result = await aiEmployee.invoke({ messageId, userMessages });
178
+ } else {
179
+ result = await aiEmployee.invoke({
180
+ userMessages: [
181
+ {
182
+ role: "user",
183
+ content: {
184
+ type: "text",
185
+ content: `You failed to call the required tool "${import_ai.SYSTEM_TOOLS.WORK_FLOW_TASK_OUTPUT}" in your previous response.
186
+ Call "${import_ai.SYSTEM_TOOLS.WORK_FLOW_TASK_OUTPUT}" now to submit the workflow outcome.
185
187
  Do not send another normal assistant response without invoking it.
186
188
  `
189
+ }
187
190
  }
188
- }
189
- ]
190
- });
191
+ ]
192
+ });
193
+ }
194
+ } else {
195
+ result = await aiEmployee.invoke({ userMessages });
191
196
  }
192
- } else {
193
- result = await aiEmployee.invoke({ userMessages });
197
+ isToolInvoke = result.messages.filter((it) => it.type === "ai").flatMap((it) => it.tool_calls).some((it) => it.name === toolName);
198
+ } while (!isToolInvoke && retry++ < 2);
199
+ if (!isToolInvoke) {
200
+ throw new Error("AI employee not do job correctly");
194
201
  }
195
- isToolInvoke = result.messages.filter((it) => it.type === "ai").flatMap((it) => it.tool_calls).some((it) => it.name === toolName);
196
- } while (!isToolInvoke && retry++ < 2);
197
- if (!isToolInvoke) {
198
- throw new Error("AI employee not do job correctly");
199
- }
200
- await this.checkApproval({ requiresApproval, conversation, aiWorkflowTasks, result, aiEmployee, toolName });
201
- } catch (e) {
202
- processor.logger.error(`ai employee invoke failed, ${e.message}`, {
203
- node: node.id,
204
- stack: e.stack,
205
- chatOptions: node.config
206
- });
207
- const job = await this.workflow.app.db.getRepository("jobs").findOne({
208
- filterByTk: id
209
- });
210
- job.set({
211
- status: import_plugin_workflow.JOB_STATUS.ERROR,
212
- result: e.message
213
- });
214
- const aiWorkflowTask = await this.workflow.db.getRepository("aiWorkflowTasks").findOne({
215
- filter: {
216
- jobId: id
217
- }
218
- });
219
- if (aiWorkflowTask) {
220
- await this.workflow.db.getRepository("aiWorkflowTasks").update({
221
- values: { status: "aborted" },
202
+ await this.checkApproval({ requiresApproval, conversation, aiWorkflowTasks, result, aiEmployee, toolName });
203
+ } catch (e) {
204
+ processor.logger.error(`ai employee invoke failed, ${e.message}`, {
205
+ node: node.id,
206
+ stack: e.stack,
207
+ chatOptions: node.config
208
+ });
209
+ const job = await this.workflow.app.db.getRepository("jobs").findOne({
210
+ filterByTk: id
211
+ });
212
+ job.set({
213
+ status: import_plugin_workflow.JOB_STATUS.ERROR,
214
+ result: e.message
215
+ });
216
+ const aiWorkflowTask = await this.workflow.db.getRepository("aiWorkflowTasks").findOne({
222
217
  filter: {
223
- id: aiWorkflowTask.id
218
+ jobId: id
224
219
  }
225
220
  });
221
+ if (aiWorkflowTask) {
222
+ await this.workflow.db.getRepository("aiWorkflowTasks").update({
223
+ values: { status: "aborted" },
224
+ filter: {
225
+ id: aiWorkflowTask.id
226
+ }
227
+ });
228
+ }
229
+ await this.workflow.resume(job);
226
230
  }
227
- await this.workflow.resume(job);
228
- }
231
+ };
232
+ runner();
229
233
  }
230
234
  resume(node, job, processor) {
231
235
  return job;
@@ -32,5 +32,5 @@ export type AIEmployeeInstructionConfig = {
32
32
  export type AIEmployeeInstructionFiles = {
33
33
  type: 'file_id' | 'file_url';
34
34
  collection?: string;
35
- value: string;
35
+ value: string | string[];
36
36
  };
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "description": "Create AI employees with diverse skills to collaborate with humans, build systems, and handle business operations.",
7
7
  "description.ru-RU": "Поддержка интеграции с AI-сервисами: предоставляются AI-узлы для рабочих процессов, расширяя возможности бизнес-обработки.",
8
8
  "description.zh-CN": "创建各种技能的 AI 员工,与人类协同,搭建系统,处理业务。",
9
- "version": "2.1.0-beta.24",
9
+ "version": "2.1.0-beta.26",
10
10
  "main": "dist/server/index.js",
11
11
  "homepage": "https://docs.nocobase.com/handbook/action-ai",
12
12
  "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/action-ai",
@@ -42,6 +42,7 @@
42
42
  "@langchain/langgraph-checkpoint": "^1.0.0",
43
43
  "@langchain/ollama": "^1.2.2",
44
44
  "@langchain/openai": "^1.2.7",
45
+ "@langchain/xai": "1.3.3",
45
46
  "@nocobase/ai-employee-avatars": "^1.0.2",
46
47
  "@xyflow/react": "^12.7.0",
47
48
  "echarts": "^5.5.0",
@@ -61,5 +62,5 @@
61
62
  "keywords": [
62
63
  "AI"
63
64
  ],
64
- "gitHead": "f77b85530a2d127d9bfe4dca3a26fbb02c1139ba"
65
+ "gitHead": "b17e1a72057813fa27d8435bf0f2af67ea4b059f"
65
66
  }
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_ai=self.webpackChunk_nocobase_plugin_ai||[]).push([["343"],{5650:function(e,t,n){n.r(t),n.d(t,{Employees:function(){return ek}});var r=n(9155),o=n.n(r),a=n(2059),l=n(3342),i=n(3079),c=n(5230),u=n(9929),s=n(3059),p=n.n(s),m=n(5477);function f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function d(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return f(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return f(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function y(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function v(){var e=y(["\n border-color: "," !important;\n "]);return v=function(){return e},e}function b(){var e=y(["\n cursor: pointer;\n &:hover {\n border-color: "," !important;\n }\n "]);return b=function(){return e},e}function h(){var e=y(["\n border: 2px solid "," !important;\n "]);return h=function(){return e},e}function g(){var e=y(["\n cursor: pointer;\n &:hover {\n border: 2px solid "," !important;\n }\n "]);return g=function(){return e},e}var S=function(e){var t=e.srcs,n=e.size,r=void 0===n?"large":n,i=e.selectable,c=e.highlightItem,u=e.onClick,s=(0,l.useToken)().token,f=(0,l.useUploadStyles)(),y=(f.wrapSSR,f.hashId,f.componentCls);return null==t||t.map(function(e,t){var n=d(e,2),r=n[0],a=n[1];return o().createElement("div",{key:t,className:"".concat(y,"-list-picture-card-container ").concat(y,"-list-item-container")},o().createElement("div",{onClick:function(){return u&&u(a)},className:p()("".concat(y,"-list-item"),"".concat(y,"-list-item-done"),"".concat(y,"-list-item-list-type-picture-card"),c===a?(0,m.css)(v(),s.colorPrimary):"",i?(0,m.css)(b(),s.colorPrimary):"")},o().createElement("div",{className:"".concat(y,"-list-item-info")},o().createElement("span",{key:"thumbnail",className:"".concat(y,"-list-item-thumbnail")},o().createElement("img",{src:r,className:"".concat(y,"-list-item-image")})))))}),o().createElement(a.List,{grid:{gutter:16,column:10},itemLayout:"horizontal",dataSource:t,renderItem:function(e){var t=d(e,2),n=t[0],l=t[1];return o().createElement(a.List.Item,null,o().createElement(a.Avatar,{size:"small"===r?45:80,className:p()(c===l?(0,m.css)(h(),s.colorPrimary):"",i?(0,m.css)(g(),s.colorPrimary):""),src:n,onClick:function(){return u&&u(l)}}))}})},x=function(e){var t=e.disabled,n=(0,c.useField)(),a=Object.keys(u.B)[0],l=d(o().useState(a),2),i=l[0],s=l[1];(0,r.useEffect)(function(){n.value||n.setInitialValue(a)},[n]),(0,r.useEffect)(function(){n.value&&s(n.value)},[n.value]);var p=(0,r.useMemo)(function(){return Object.keys(u.B).map(function(e){return{seed:e,uri:(0,u.H)(e)}})},[]);return o().createElement(o().Fragment,null,o().createElement("div",{style:{marginBottom:"16px"}},o().createElement(S,{srcs:i?[[(0,u.H)(i),i]]:[]})),!0!==t?o().createElement(S,{srcs:p.map(function(e){return[e.uri,e.seed]}),size:"small",selectable:!0,highlightItem:i,onClick:function(e){return n.value=e}}):o().createElement(o().Fragment,null))},E=function(e){var t=e.edit,n=(0,i.kj)(),r=(0,l.useCollectionRecordData)(),a=null==r?void 0:r.builtIn;return o().createElement(l.SchemaComponent,{scope:{t:n},components:{AvatarSelect:x},schema:{type:"void",properties:{username:{type:"string",title:'{{t("Username")}}',"x-decorator":"FormItem","x-component":"Input",required:!0,"x-disabled":t},nickname:{type:"string",title:'{{t("Nickname")}}',"x-disabled":a,"x-decorator":"FormItem","x-component":"Input",required:!0},position:{type:"string",title:'{{t("Position")}}',"x-disabled":a,"x-decorator":"FormItem","x-component":"Input",description:n("Position description"),"x-component-props":{placeholder:n("Position placeholder")}},avatar:{type:"string",title:'{{t("Avatar")}}',"x-decorator":"FormItem","x-component":"AvatarSelect","x-component-props":{disabled:a}},bio:{type:"string",title:'{{t("Bio")}}',"x-disabled":a,"x-decorator":"FormItem","x-component":"Input.TextArea","x-component-props":{placeholder:n("Bio placeholder")}},greeting:{type:"string",title:'{{t("Greeting message")}}',"x-disabled":a,"x-decorator":"FormItem","x-component":"Input.TextArea","x-component-props":{placeholder:n("Greeting message placeholder")}}}}})};function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function k(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function w(){var e=k(["\n background-color: #fafafa;\n border: 1px solid #d9d9d9;\n border-radius: 6px;\n padding: 8px 12px;\n min-height: 330px;\n max-height: 500px;\n overflow-y: auto;\n "]);return w=function(){return e},e}function I(){var e=k(["\n margin: 0 !important;\n white-space: pre-wrap;\n word-break: break-word;\n "]);return I=function(){return e},e}function C(){var e=k(["\n width: 100%;\n "]);return C=function(){return e},e}function j(){var e=k(["\n width: 100%;\n "]);return j=function(){return e},e}var O=a.Typography.Paragraph,P=function(){var e=(0,i.kj)(),t=(0,l.useCurrentUserVariable)({maxDepth:3,noDisabled:!0}).currentUserSettings,n=(0,l.useCurrentRoleVariable)({noDisabled:!0}).currentRoleSettings,r=(0,l.useDatetimeVariable)({noDisabled:!0}).datetimeSettings;return[t,n,{key:"$nLang",value:"$nLang",label:e("Current language")},r]},z=function(){var e=(0,i.kj)();return o().createElement(a.Alert,{style:{marginBottom:16},message:e("Role setting description"),type:"info"})},T=function(){var e,t,n=(0,i.kj)(),u=(0,l.useCollectionRecordData)(),s=(0,c.useForm)(),p=P(),f=(null==u?void 0:u.about)?"custom":"system",d=function(e){if(Array.isArray(e))return e}(e=(0,r.useState)(f))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],a=!0,l=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return o}}(e)||function(e){if(e){if("string"==typeof e)return A(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return A(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),y=d[0],v=d[1];(0,r.useEffect)(function(){s.setValuesIn("_aboutMode",y)},[s,y]);var b=(null==u?void 0:u.defaultPrompt)||"",h=function(e){v(e)};return o().createElement(a.Space,{direction:"vertical",style:{width:"100%"}},o().createElement(a.Radio.Group,{value:y,onChange:function(e){return h(e.target.value)}},o().createElement(a.Radio,{value:"system"},n("System default")),o().createElement(a.Radio,{value:"custom"},n("Custom"))),"system"===y?o().createElement("div",{className:(0,m.css)(w())},o().createElement(O,{copyable:!0,className:(0,m.css)(I())},b)):o().createElement(l.Variable.RawTextArea,{value:null!=(t=s.values.about)?t:"",onChange:function(e){s.setValuesIn("about",e.target.value)},scope:p,placeholder:n("Role setting placeholder"),autoSize:{minRows:15},className:(0,m.css)(C())}))},F=function(){var e,t=(0,i.kj)(),n=(0,c.useForm)(),r=P();return o().createElement(l.Variable.RawTextArea,{value:null!=(e=n.values.about)?e:"",onChange:function(e){n.setValuesIn("about",e.target.value)},scope:r,placeholder:t("Role setting placeholder"),autoSize:{minRows:15},className:(0,m.css)(j())})},M=function(){var e=(0,l.useCollectionRecordData)();return(null==e?void 0:e.builtIn)?o().createElement(T,null):o().createElement(F,null)},B=function(){var e=(0,i.kj)();return o().createElement(l.SchemaComponent,{scope:{t:e},components:{Description:z,AboutField:M},schema:{type:"void",properties:{desc:{type:"void","x-component":"Description"},aboutWrap:{type:"void","x-component":"div",properties:{about:{type:"string",title:'{{t("Role setting")}}',"x-decorator":"FormItem","x-component":"AboutField"}}}}}})},R={name:"aiEmployees",fields:[{name:"username",type:"string",primaryKey:!0},{name:"nickname",type:"string",interface:"input"},{name:"position",type:"string",interface:"input"},{name:"avatar",type:"string",interface:"image"},{name:"bio",type:"text",interface:"textarea"},{name:"about",type:"text",interface:"textarea"},{name:"defaultPrompt",type:"text",interface:"textarea"},{name:"greeting",type:"text",interface:"textarea"},{name:"chatSettings",type:"jsonb"},{name:"skillSettings",type:"jsonb"},{name:"modelSettings",type:"jsonb"},{name:"dataSourceSettings",type:"jsonb"},{name:"enableKnowledgeBase",type:"boolean",allowNull:!1,defaultValue:!1},{name:"knowledgeBasePrompt",type:"text"},{name:"knowledgeBase",type:"jsonb"},{name:"enabled",type:"boolean",interface:"switch",allowNull:!1,defaultValue:!0},{name:"builtIn",type:"boolean",allowNull:!1,defaultValue:!1}]},D=n(7330),L=n(7694);function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var K=function(e){var t=e.skills,n=(0,i.kj)(),r=(0,l.useToken)().token,u=t.filter(function(e){return"GENERAL"===e.scope});return o().createElement(a.Collapse,{ghost:!0,size:"small",defaultActiveKey:[],items:[{key:"general-skills",label:o().createElement("div",null,o().createElement("div",{style:{fontWeight:r.fontWeightStrong,fontSize:r.fontSizeSM}},n("General skills")),o().createElement("div",{style:{color:r.colorTextSecondary,fontSize:r.fontSizeSM}},n("Shared by all AI employees."))),children:o().createElement(a.List,{itemLayout:"vertical",size:"small",dataSource:u,renderItem:function(e){var t,l,i;return o().createElement(a.List.Item,{key:e.name},o().createElement("div",{style:{fontSize:r.fontSizeSM}},c.Schema.compile(null!=(t=null==e?void 0:e.title)?t:e.name,{t:n})),o().createElement("div",{style:{color:r.colorTextSecondary,fontSize:r.fontSizeSM}},c.Schema.compile(null!=(l=null!=(i=null==e?void 0:e.about)?i:e.description)?l:"",{t:n})))}})}]})},N=function(e){var t=e.selectedSkills,n=e.skills,r=(0,i.kj)(),u=(0,l.useToken)().token,s=new Map(n.map(function(e){return[e.name,e]})),p=t.map(function(e){return s.get(e)});return o().createElement(a.Collapse,{ghost:!0,size:"small",items:[{key:"specific-skills",label:o().createElement("div",null,o().createElement("div",{style:{fontWeight:u.fontWeightStrong,fontSize:u.fontSizeSM}},r("Employee-specific skills")),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},r("Only available to this AI employee."))),children:o().createElement(a.List,{itemLayout:"vertical",size:"small",dataSource:p,renderItem:function(e){var t,n,l;return o().createElement(a.List.Item,{key:e.name},o().createElement("div",{style:{fontSize:u.fontSizeSM}},c.Schema.compile(null!=(t=null==e?void 0:e.title)?t:e.name,{t:r})),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},c.Schema.compile(null!=(n=null!=(l=null==e?void 0:e.about)?l:e.description)?n:"",{t:r})))}})}],defaultActiveKey:["specific-skills"]})},W=(0,L.observer)(function(){var e,t=(0,c.useField)(),n=(0,D.M)(),i=n.aiSkillsLoading,u=n.aiSkills,s=(0,l.useCollectionRecordData)(),p=null==s?void 0:s.builtIn,m=null!=(e=t.value)?e:[];(0,r.useEffect)(function(){n.getAISkills()},[n]);var f=function(e){if(Array.isArray(e))return V(e)}(m)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(m)||function(e){if(e){if("string"==typeof e)return V(e,void 0);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return V(e,void 0)}}(m)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),d=new Map(u.map(function(e){return[e.name,e]})),y=f.filter(function(e){var t=d.get(e);return t&&"SPECIFIED"===t.scope});return o().createElement(o().Fragment,null,!i&&o().createElement(a.Space,{direction:"vertical",size:"large",style:{width:"100%"}},o().createElement(K,{skills:u}),p&&y.length>0&&o().createElement(N,{selectedSkills:y,skills:u})))}),U=function(){return o().createElement(l.SchemaComponent,{components:{Skills:W},schema:{type:"void",properties:{skillSettings:{type:"object",properties:{skills:{type:"array","x-component":"Skills","x-decorator":"FormItem"}}}}}})},$=n(166),q=n(9452);function G(e,t,n,r,o,a,l){try{var i=e[a](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,o)}function _(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function l(e){G(a,r,o,l,i,"next",e)}function i(e){G(a,r,o,l,i,"throw",e)}l(void 0)})}}function H(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var X=function(){var e=(0,i.kj)();return{form:(0,r.useMemo)(function(){return(0,q.createForm)({initialValues:{username:"".concat((0,$.uid)()),enabled:!0,enableKnowledgeBase:!1,knowledgeBase:{knowledgeBaseIds:[],topK:3,score:"0.6"},knowledgeBasePrompt:e("knowledge Base Prompt default")}})},[e])}},Y=function(){var e=(0,l.useCollectionRecordData)();return{form:(0,r.useMemo)(function(){return(0,q.createForm)({initialValues:e})},[e])}},J=function(){var e=(0,l.useActionContext)().setVisible,t=(0,c.useForm)();return{type:"default",onClick:function(){e(!1),t.reset()}}},Q=function(){var e=(0,l.useActionContext)().setVisible,t=a.App.useApp().message,n=(0,c.useForm)(),r=(0,l.useAPIClient)(),o=(0,l.useDataBlockRequest)().refresh,u=(0,D.M)(),s=(0,i.kj)();return{type:"primary",onClick:function(){return _(function(){var a;return H(this,function(l){switch(l.label){case 0:return a=n.values,[4,n.submit()];case 1:return l.sent(),[4,r.resource("aiEmployees").create({values:a})];case 2:return l.sent(),o(),t.success(s("Saved successfully")),e(!1),n.reset(),[4,u.refreshAIEmployees()];case 3:return l.sent(),[2]}})})()}}},Z=function(){var e=(0,l.useActionContext)().setVisible,t=a.App.useApp().message,n=(0,c.useForm)(),r=(0,l.useDataBlockResource)(),o=(0,l.useDataBlockRequest)().refresh,u=(0,D.M)(),s=(0,l.useCollection)().getFilterTargetKey(),p=(0,i.kj)();return{type:"primary",onClick:function(){return _(function(){var a;return H(this,function(l){switch(l.label){case 0:return"system"===(a=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},n.values))._aboutMode&&(a.about=null),delete a._aboutMode,delete a.enabled,[4,n.submit()];case 1:return l.sent(),[4,r.update({values:a,filterByTk:a[s]})];case 2:return l.sent(),o(),t.success(p("Saved successfully")),e(!1),n.reset(),[4,u.refreshAIEmployees()];case 3:return l.sent(),[2]}})})()}}},ee=function(){var e=(0,i.kj)(),t=(0,l.useCollectionRecordData)(),n=(0,l.useDestroyActionProps)().onClick,r=null==t?void 0:t.builtIn,o=a.App.useApp().message,c="root"===(0,l.useAPIClient)().auth.role;return{onClick:function(t,a){return _(function(){return H(this,function(l){switch(l.label){case 0:if(r&&!c)return o.warning(e("Cannot delete built-in ai employees")),[2];return[4,n(t,a)];case 1:return l.sent(),[2]}})})()}}};function et(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var en=a.Card.Meta,er=(0,r.createContext)(null),eo=function(){var e=(0,r.useContext)(er).aiEmployee;return{form:(0,r.useMemo)(function(){return(0,q.createForm)({initialValues:e})},[e])}},ea=function(e){var t=e.aiEmployee,n=(0,l.useToken)().token,r=(0,l.useActionContext)().setVisible;return o().createElement(a.Card,{variant:"borderless",hoverable:!0,onClick:function(){return r(!0)}},o().createElement(en,{avatar:t.avatar?o().createElement(a.Avatar,{size:40,src:(0,u.H)(t.avatar)}):null,title:t.nickname,description:o().createElement(o().Fragment,null,t.position&&o().createElement(a.Tag,{style:{marginBottom:n.marginXS}},t.position),o().createElement(a.Typography.Paragraph,{style:{height:n.fontSize*n.lineHeight*3},ellipsis:{rows:3},type:"secondary"},t.bio))}))},el=function(){var e,t=function(e){if(Array.isArray(e))return e}(e=o().useState(!1))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],a=!0,l=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return o}}(e)||function(e){if(e){if("string"==typeof e)return et(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return et(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),n=t[0],r=t[1],i=(0,l.useAPIClient)(),c=(0,l.useRequest)(function(){return i.resource("aiEmployees").getTemplates().then(function(e){var t;return null==e||null==(t=e.data)?void 0:t.data})}),u=c.data;return c.loading?o().createElement(a.Spin,null):u&&u.length?o().createElement(a.Row,{gutter:[16,16]},u.map(function(e){return o().createElement(l.ActionContextProvider,{key:e.username,value:{visible:n,setVisible:r}},o().createElement(a.Col,{span:12},o().createElement(ea,{aiEmployee:e})),o().createElement(er.Provider,{value:{aiEmployee:e}},o().createElement(l.SchemaComponent,{scope:{useCancelActionProps:J,useCreateActionProps:Q,useTemplateFormProps:eo},schema:{type:"void",name:(0,$.uid)(),"x-component":"Action.Drawer",title:'{{t("New AI employee")}}',"x-decorator":"FormV2","x-use-decorator-props":"useTemplateFormProps",properties:{form:{type:"void","x-component":"AIEmployeeForm"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{close:{title:"Cancel","x-component":"Action","x-component-props":{type:"default"},"x-use-component-props":"useCancelActionProps"},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary"},"x-use-component-props":"useCreateActionProps"}}}}}})))})):o().createElement(a.Empty,{image:a.Empty.PRESENTED_IMAGE_SIMPLE})},ei=n(418),ec=function(){return(0,i.kj)(),o().createElement(l.SchemaComponent,{components:{Switch:ei.Switch},schema:{type:"void",properties:{enableKnowledgeBase:{type:"boolean",title:'{{t("Enable Knowledge Base")}}',"x-decorator":"FormItem","x-component":"Switch"},knowledgeBasePrompt:{type:"string",title:'{{t("Knowledge Base Prompt")}}',required:!0,"x-decorator":"FormItem","x-component":"Input.TextArea","x-component-props":{autoSize:{minRows:5}},"x-reactions":[{dependencies:["enableKnowledgeBase"],fulfill:{state:{disabled:"{{$deps[0] === false}}"}}}]},knowledgeBase:{type:"object",properties:{knowledgeBaseIds:{type:"array",title:'{{t("Knowledge Base")}}',required:!0,"x-decorator":"FormItem","x-component":"RemoteSelect","x-component-props":{mode:"multiple",manual:!1,fieldNames:{label:"name",value:"id"},service:{resource:"aiKnowledgeBase",action:"list",params:{fields:["id","name"],filter:{enabled:!0}}}},"x-reactions":[{dependencies:["enableKnowledgeBase"],fulfill:{state:{disabled:"{{$deps[0] === false}}"}}}]},topK:{type:"number",title:'{{t("Top K")}}',required:!0,"x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{min:1,max:100},"x-reactions":[{dependencies:["enableKnowledgeBase"],fulfill:{state:{disabled:"{{$deps[0] === false}}"}}}]},score:{type:"number",title:'{{t("Score")}}',required:!0,"x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{min:0,max:1,step:.1},"x-reactions":[{dependencies:["enableKnowledgeBase"],fulfill:{state:{disabled:"{{$deps[0] === false}}"}}}]}}}}}})},eu=n(7375);function es(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ep(e,t,n,r,o,a,l){try{var i=e[a](l),c=i.value}catch(e){n(e);return}i.done?t(c):Promise.resolve(c).then(r,o)}var em=function(){var e,t=(0,c.useField)(),n=(0,l.useCollectionRecordData)(),u=(0,l.useDataBlockResource)(),s=(0,l.useDataBlockRequest)().refresh,p=(0,D.M)(),m=a.App.useApp().message,f=(0,i.kj)(),d=function(e){if(Array.isArray(e))return e}(e=(0,r.useState)(!1))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],a=!0,l=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return o}}(e)||function(e){if(e){if("string"==typeof e)return es(e,2);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return es(e,2)}}(e)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),y=d[0],v=d[1];return o().createElement(a.Switch,{checked:t.value,onChange:function(e){var t;return(t=function(){return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:c(0)}),i(l,"throw",{value:c(1)}),i(l,"return",{value:c(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function c(i){return function(c){var u=[i,c];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,u[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(t){switch(t.label){case 0:v(!0),t.label=1;case 1:return t.trys.push([1,4,5,6]),[4,u.update({filterByTk:n.username,values:{enabled:e}})];case 2:return t.sent(),m.success(f("Saved successfully")),s(),[4,p.refreshAIEmployees()];case 3:return t.sent(),[3,6];case 4:return t.sent(),m.error(f("Failed to update")),[3,6];case 5:return v(!1),[7];case 6:return[2]}})},function(){var e=this,n=arguments;return new Promise(function(r,o){var a=t.apply(e,n);function l(e){ep(a,r,o,l,i,"next",e)}function i(e){ep(a,r,o,l,i,"throw",e)}l(void 0)})})()},loading:y,size:"small"})};function ef(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function ed(e){return function(e){if(Array.isArray(e))return ef(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ey(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ey(e,t){if(e){if("string"==typeof e)return ef(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ef(e,t)}}var ev=function(e){var t,n=e.name,r=e.title,u=e.description,s=e.isRoot,p=(0,i.kj)(),m=(0,l.useToken)().token,f=null==(t=(0,c.useField)().value)?void 0:t.find(function(e){return e.name===n});return o().createElement("div",{style:{minWidth:"150px",maxWidth:"300px"}},o().createElement("div",{style:{display:"flex",justifyContent:"space-between"}},o().createElement("div",null,c.Schema.compile(r,{t:p})),!s&&o().createElement("div",null,o().createElement(a.Switch,{size:"small",value:f,disabled:f}))),o().createElement("div",{style:{color:m.colorTextSecondary,fontSize:m.fontSizeSM}},c.Schema.compile(u,{t:p})))},eb=(0,L.observer)(function(){var e,t,n=(0,i.kj)(),u=(0,l.useToken)().token,s=(0,c.useField)(),p=(0,D.M)(),m=p.aiToolsLoading,f=p.aiTools,d=(0,l.useCollectionRecordData)(),y=null==d?void 0:d.builtIn;(0,r.useEffect)(function(){p.getAITools()},[p]);var v=function(e){console.log(e);var t=ed(s.value||[]);t.some(function(t){return t.name===e})||t.push({name:e,autoCall:!1}),console.log(s.value),console.log(t),s.value=t,console.log(s.value)},b=ed(null!=(t=s.value)?t:[]),h=new Set(b.map(function(e){return e.name})),g=(null==f?void 0:f.filter(function(e){return"CUSTOM"===e.scope&&!h.has(e.definition.name)}).map(function(e){var t,n,r={key:e.definition.name},a={title:null!=(t=e.introduction.title)?t:"",description:null!=(n=e.introduction.about)?n:"",name:e.definition.name,isRoot:!0};return r.label=o().createElement(ev,a),r.onClick=function(){return v(e.definition.name)},r}))||[],S=new Map(f.map(function(e){return[e.definition.name,e]})),x=f.filter(function(e){return"GENERAL"===e.scope&&"loader"===e.from}),E=b.filter(function(e){var t=S.get(e.name);return t&&"GENERAL"!==t.scope&&"CUSTOM"!==t.scope}),A=b.filter(function(e){var t=S.get(e.name);return t&&"CUSTOM"===t.scope}),k=[{label:n("Ask"),value:"ASK"},{label:n("Allow"),value:"ALLOW"}],w=function(e,t){return"CUSTOM"===e.scope?(null==t?void 0:t.autoCall)?"ALLOW":"ASK":"ALLOW"===e.defaultPermission?"ALLOW":"ASK"},I=function(e){if(Array.isArray(e))return e}(e=(0,r.useState)(y&&0===A.length?[]:["custom-tools"]))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],a=!0,l=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return o}}(e)||ey(e,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),C=I[0],j=I[1],O=(0,r.useRef)(A.length);return(0,r.useEffect)(function(){var e=0===O.current;y&&0===A.length?j([]):e&&A.length>0&&j(["custom-tools"]),O.current=A.length},[A.length,y]),o().createElement(o().Fragment,null,!m&&o().createElement(a.Space,{direction:"vertical",size:"large",style:{width:"100%"}},o().createElement("div",null,o().createElement(a.Collapse,{ghost:!0,size:"small",defaultActiveKey:[],items:[{key:"general-tools",label:o().createElement("div",null,o().createElement("div",{style:{fontWeight:u.fontWeightStrong,fontSize:u.fontSizeSM}},n("General tools")),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},n("Shared by all AI employees."))),children:o().createElement(a.List,{itemLayout:"vertical",size:"small",dataSource:x,renderItem:function(e){return o().createElement(a.List.Item,{key:e.definition.name,extra:o().createElement(a.Flex,{vertical:!0,justify:"end"},o().createElement("div",{style:{fontSize:u.fontSizeSM,color:u.colorTextSecondary}},n("Permission"),o().createElement(a.Segmented,{style:{marginLeft:"8px"},size:"small",options:k,value:w(e),disabled:!0})))},o().createElement("div",{style:{fontSize:u.fontSizeSM}},c.Schema.compile(e.introduction.title,{t:n})),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},c.Schema.compile(e.introduction.about,{t:n})))}})}]})),y&&E.length>0&&o().createElement("div",null,o().createElement(a.Collapse,{ghost:!0,size:"small",items:[{key:"specific-tools",label:o().createElement("div",null,o().createElement("div",{style:{fontWeight:u.fontWeightStrong,fontSize:u.fontSizeSM}},n("Employee-specific tools")),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},n("Only available to this AI employee."))),children:o().createElement(a.List,{itemLayout:"vertical",size:"small",dataSource:E,renderItem:function(e){var t=S.get(e.name);return t?o().createElement(a.List.Item,{key:t.definition.name,extra:o().createElement(a.Flex,{vertical:!0,justify:"end"},o().createElement("div",{style:{fontSize:u.fontSizeSM,color:u.colorTextSecondary}},n("Permission"),o().createElement(a.Segmented,{style:{marginLeft:"8px"},size:"small",options:k,value:w(t,e),disabled:!0})))},o().createElement("div",{style:{fontSize:u.fontSizeSM}},c.Schema.compile(t.introduction.title,{t:n})),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},c.Schema.compile(t.introduction.about,{t:n}))):null}})}],defaultActiveKey:["specific-tools"]})),o().createElement("div",null,o().createElement(a.Collapse,{ghost:!0,size:"small",activeKey:C,onChange:function(e){j(Array.isArray(e)?e:[e].filter(Boolean))},items:[{key:"custom-tools",label:o().createElement("div",null,o().createElement("div",{style:{fontWeight:u.fontWeightStrong,fontSize:u.fontSizeSM}},n("Custom tools")),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},n("Created by workflow. You can add/remove and set default permissions."))),extra:o().createElement("div",{onClick:function(e){e.stopPropagation()},onKeyDown:function(e){e.stopPropagation()}},o().createElement(a.Dropdown,{menu:{items:g},placement:"bottomRight",disabled:0===g.length},o().createElement(a.Button,{type:"primary",icon:o().createElement(eu.PlusOutlined,null)},n("Add tool")))),children:o().createElement(a.List,{itemLayout:"vertical",bordered:!0,dataSource:A,renderItem:function(e){var t=S.get(e.name);return t?o().createElement(a.List.Item,{key:t.definition.name,extra:o().createElement(a.Flex,{vertical:!0,justify:"end"},o().createElement(a.Space,null,o().createElement("div",{style:{fontSize:u.fontSizeSM}},n("Permission"),o().createElement(a.Segmented,{style:{marginLeft:"8px",marginRight:"8px"},size:"small",options:k,value:w(t,e),onChange:function(t){var n=(s.value||[]).map(function(n){var r,o;return n.name===e.name?(r=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},n),o=o={autoCall:"ALLOW"===t},Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}),r):n});s.value=n}})),o().createElement(a.Button,{icon:o().createElement(eu.DeleteOutlined,null),variant:"link",color:"default",onClick:function(){var e=ed(s.value||[]),n=e.findIndex(function(e){return e.name===t.definition.name});-1!==n&&(e.splice(n,1),s.value=e)}})))},o().createElement("div",null,c.Schema.compile(t.introduction.title,{t:n})),o().createElement("div",{style:{color:u.colorTextSecondary,fontSize:u.fontSizeSM}},c.Schema.compile(t.introduction.about,{t:n}))):null}})}]}))))}),eh=function(){return o().createElement(l.SchemaComponent,{components:{Tools:eb},schema:{type:"void",properties:{skillSettings:{type:"object",properties:{tools:{type:"array","x-component":"Tools","x-decorator":"FormItem"}}}}}})};function eg(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function eS(e,t){if(e){if("string"==typeof e)return eg(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eg(e,t)}}var ex=function(e){var t,n,c=e.edit,u=(0,i.kj)(),s=(0,l.useAPIClient)(),p=function(e){if(Array.isArray(e))return e}(t=(0,r.useState)(!1))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var o=[],a=!0,l=!1;try{for(r=r.call(e);!(a=(t=r.next()).done)&&(o.push(t.value),2!==o.length);a=!0);}catch(e){l=!0,n=e}finally{try{a||null==r.return||r.return()}finally{if(l)throw n}}return o}}(t)||eS(t,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),m=p[0],f=p[1];return(0,r.useEffect)(function(){s.resource("aiSettings").isKnowledgeBaseEnabled().then(function(e){var t;f(null==e||null==(t=e.data)?void 0:t.data.enabled)}).catch(function(e){return console.error("api fail aiSettings.isKnowledgeBaseEnabled",e)})},[s]),o().createElement(a.Tabs,{items:[{key:"profile",label:u("Profile"),children:o().createElement(E,{edit:c}),forceRender:!0},{key:"roleSetting",label:u("Role setting"),children:o().createElement(B,null),forceRender:!0},{key:"skills",label:u("Skills"),children:o().createElement(U,null)},{key:"tools",label:u("Tools"),children:o().createElement(eh,null)}].concat(function(e){if(Array.isArray(e))return eg(e)}(n=m?[{key:"knowledgeBase",label:u("KnowledgeBase"),children:o().createElement(ec,null)}]:[])||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||eS(n)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())})},eE=function(e){var t,n,r=(0,c.useField)();return r.value?o().createElement(a.Avatar,(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({shape:"square",size:"large"},e),n=n={src:(0,u.H)(r.value)},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)):null},eA=function(e){var t=(0,c.useField)();return t.value?t.value&&o().createElement(eu.CheckOutlined,{style:{color:"#52c41a"}}):null},ek=function(){var e=(0,i.kj)();return o().createElement(l.ExtendCollectionsProvider,{collections:[R]},o().createElement(l.SchemaComponent,{components:{AIEmployeeForm:ex,Avatar:eE,Templates:el,Enabled:eA,EnableSwitch:em},scope:{t:e,useCreateFormProps:X,useEditFormProps:Y,useCancelActionProps:J,useCreateActionProps:Q,useEditActionProps:Z,useDeleteActionProps:ee},schema:{type:"void",name:"ai-employees",properties:{block:{type:"void","x-component":"CardItem","x-component-props":{heightMode:"fullHeight"},"x-decorator":"TableBlockProvider","x-decorator-props":{collection:"aiEmployees",action:"list",rowKey:"username",dragSort:!0,dragSortBy:"sort"},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:20}},properties:{refresh:{title:"{{t('Refresh')}}","x-component":"Action","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined"}},add:{type:"void",title:"{{t('New AI employee')}}","x-align":"right","x-component":"Action","x-component-props":{type:"primary",icon:"PlusOutlined"},properties:{drawer:{type:"void","x-component":"Action.Drawer",title:'{{t("New AI employee")}}',"x-decorator":"FormV2","x-use-decorator-props":"useCreateFormProps",properties:{form:{type:"void","x-component":"AIEmployeeForm"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{close:{title:"Cancel","x-component":"Action","x-component-props":{type:"default"},"x-use-component-props":"useCancelActionProps"},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary"},"x-use-component-props":"useCreateActionProps"}}}}}}}}},table:{type:"array","x-component":"TableV2","x-use-component-props":"useTableBlockProps","x-component-props":{rowKey:"username",rowSelection:{type:"checkbox"}},properties:{column0:{type:"void",title:e("Avatar"),"x-component":"TableV2.Column",properties:{avatar:{type:"string","x-component":"Avatar","x-component-props":{shape:"circle"}}}},column1:{type:"void",title:e("Username"),"x-component":"TableV2.Column",properties:{username:{type:"string","x-component":"Input","x-pattern":"readPretty"}}},column2:{type:"void",title:e("Nickname"),"x-component":"TableV2.Column",properties:{nickname:{type:"string","x-component":"Input","x-pattern":"readPretty"}}},column3:{type:"void",title:e("Position"),"x-component":"TableV2.Column",properties:{position:{type:"string","x-component":"Input","x-pattern":"readPretty"}}},column4:{type:"void",title:e("Enabled"),"x-component":"TableV2.Column",properties:{enabled:{type:"boolean","x-component":"EnableSwitch"}}},column6:{type:"void",title:'{{t("Actions")}}',"x-decorator":"TableV2.Column.ActionBar","x-component":"TableV2.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{edit:{type:"void",title:'{{t("Edit") }}',"x-action":"update","x-component":"Action.Link","x-component-props":{openMode:"drawer"},properties:{drawer:{type:"void",title:e("Edit AI employee"),"x-component":"Action.Drawer","x-decorator":"FormV2","x-use-decorator-props":"useEditFormProps",properties:{form:{type:"void","x-component":"AIEmployeeForm","x-component-props":{edit:!0}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{close:{title:e("Cancel"),"x-component":"Action","x-use-component-props":"useCancelActionProps"},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-use-component-props":"useEditActionProps"}}}}}}},destroy:{type:"void",title:'{{ t("Delete") }}',"x-action":"destroy","x-component":"Action.Link","x-use-component-props":"useDeleteActionProps","x-component-props":{confirm:{title:"{{t('Delete AI employee')}}",content:"{{t('Are you sure you want to delete this AI employee?')}}"}}}}}}}}}}}}}}))}}}]);