@nocobase/plugin-ai 2.1.0-beta.24 → 2.1.0-beta.25
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/dist/ai/ai-employees/dara.js +1 -0
- package/dist/ai/tools/sub-agents/shared.js +3 -1
- package/dist/client/343.6f36d97dd122c5b6.js +10 -0
- package/dist/client/{559.133d286a0a0a1d93.js → 559.c119db3f985a695f.js} +1 -1
- package/dist/client/646.afa699c92cd556f3.js +10 -0
- package/dist/client/ai-employees/types.d.ts +2 -0
- package/dist/client/components/skill-settings.d.ts +2 -0
- package/dist/client/index.js +3 -3
- package/dist/client/llm-providers/mimo/ModelSettings.d.ts +10 -0
- package/dist/client/llm-providers/mimo/index.d.ts +10 -0
- package/dist/collections/ai-employees.d.ts +7 -0
- package/dist/collections/ai-employees.js +13 -0
- package/dist/externalVersion.js +15 -15
- package/dist/locale/en-US.json +2 -0
- package/dist/locale/zh-CN.json +2 -0
- package/dist/node_modules/fast-glob/package.json +1 -1
- package/dist/node_modules/flexsearch/package.json +1 -1
- package/dist/node_modules/fs-extra/package.json +1 -1
- package/dist/node_modules/jsonrepair/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/node_modules/openai/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/ai-employees/ai-employee.js +9 -3
- package/dist/server/llm-providers/common/reasoning.js +2 -4
- package/dist/server/llm-providers/mimo.d.ts +37 -0
- package/dist/server/llm-providers/mimo.js +156 -0
- package/dist/server/migrations/20260428175558-update-ai-employee-category.d.ts +14 -0
- package/dist/server/migrations/20260428175558-update-ai-employee-category.js +55 -0
- package/dist/server/migrations/20260429175132-ai-employee-deprecated-orin.d.ts +14 -0
- package/dist/server/migrations/20260429175132-ai-employee-deprecated-orin.js +53 -0
- package/dist/server/plugin.js +3 -1
- package/dist/server/resource/aiEmployees.js +10 -1
- package/dist/server/workflow/nodes/employee/index.js +133 -130
- package/package.json +2 -2
- package/dist/client/343.83f7d96664e4e038.js +0 -10
- package/dist/client/646.cba98d80e9e6ea74.js +0 -10
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
var update_ai_employee_category_exports = {};
|
|
28
|
+
__export(update_ai_employee_category_exports, {
|
|
29
|
+
default: () => update_ai_employee_category_default
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(update_ai_employee_category_exports);
|
|
32
|
+
var import_server = require("@nocobase/server");
|
|
33
|
+
class update_ai_employee_category_default extends import_server.Migration {
|
|
34
|
+
on = "afterSync";
|
|
35
|
+
// 'beforeLoad' or 'afterLoad'
|
|
36
|
+
appVersion = "<2.2.0";
|
|
37
|
+
async up() {
|
|
38
|
+
const repo = this.db.getRepository("aiEmployees");
|
|
39
|
+
if (!repo) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
await repo.update({
|
|
43
|
+
values: {
|
|
44
|
+
category: "developer"
|
|
45
|
+
},
|
|
46
|
+
filter: {
|
|
47
|
+
builtIn: true,
|
|
48
|
+
username: {
|
|
49
|
+
$in: ["orin", "nathan", "dara"]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
this.app.logger.info('Update AI employee orin, nathan, dara`s category to "developer"');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
import { Migration } from '@nocobase/server';
|
|
10
|
+
export default class extends Migration {
|
|
11
|
+
on: string;
|
|
12
|
+
appVersion: string;
|
|
13
|
+
up(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
var __defProp = Object.defineProperty;
|
|
11
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
12
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __export = (target, all) => {
|
|
15
|
+
for (var name in all)
|
|
16
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
17
|
+
};
|
|
18
|
+
var __copyProps = (to, from, except, desc) => {
|
|
19
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
20
|
+
for (let key of __getOwnPropNames(from))
|
|
21
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
22
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
23
|
+
}
|
|
24
|
+
return to;
|
|
25
|
+
};
|
|
26
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
+
var ai_employee_deprecated_orin_exports = {};
|
|
28
|
+
__export(ai_employee_deprecated_orin_exports, {
|
|
29
|
+
default: () => ai_employee_deprecated_orin_default
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(ai_employee_deprecated_orin_exports);
|
|
32
|
+
var import_server = require("@nocobase/server");
|
|
33
|
+
class ai_employee_deprecated_orin_default extends import_server.Migration {
|
|
34
|
+
on = "afterSync";
|
|
35
|
+
// 'beforeLoad' or 'afterLoad'
|
|
36
|
+
appVersion = "<2.2.0";
|
|
37
|
+
async up() {
|
|
38
|
+
const repo = this.db.getRepository("aiEmployees");
|
|
39
|
+
if (!repo) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
await repo.update({
|
|
43
|
+
values: {
|
|
44
|
+
deprecated: true
|
|
45
|
+
},
|
|
46
|
+
filter: {
|
|
47
|
+
builtIn: true,
|
|
48
|
+
username: "orin"
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
this.app.logger.info("Update AI employee orin to deprecated");
|
|
52
|
+
}
|
|
53
|
+
}
|
package/dist/server/plugin.js
CHANGED
|
@@ -72,6 +72,7 @@ var import_ai_coding_manager = require("./manager/ai-coding-manager");
|
|
|
72
72
|
var import_kimi = require("./llm-providers/kimi");
|
|
73
73
|
var import_document_loader = require("./document-loader");
|
|
74
74
|
var import_checkpoints = require("./ai-employees/checkpoints");
|
|
75
|
+
var import_mimo = require("./llm-providers/mimo");
|
|
75
76
|
var import_sub_agents = require("./ai-employees/sub-agents");
|
|
76
77
|
var import_employee = require("./workflow/nodes/employee");
|
|
77
78
|
var import_ai_knowledge_base = require("./ai-employees/ai-knowledge-base");
|
|
@@ -141,9 +142,10 @@ class PluginAIServer extends import_server.Plugin {
|
|
|
141
142
|
this.aiManager.registerLLMProvider("anthropic", import_anthropic.anthropicProviderOptions);
|
|
142
143
|
this.aiManager.registerLLMProvider("deepseek", import_deepseek.deepseekProviderOptions);
|
|
143
144
|
this.aiManager.registerLLMProvider("dashscope", import_dashscope.dashscopeProviderOptions);
|
|
145
|
+
this.aiManager.registerLLMProvider("kimi", import_kimi.kimiProviderOptions);
|
|
146
|
+
this.aiManager.registerLLMProvider("mimo", import_mimo.mimoProviderOptions);
|
|
144
147
|
this.aiManager.registerLLMProvider("ollama", import_ollama.ollamaProviderOptions);
|
|
145
148
|
this.aiManager.registerLLMProvider("openai-completions", import_openai2.openaiCompletionsProviderOptions);
|
|
146
|
-
this.aiManager.registerLLMProvider("kimi", import_kimi.kimiProviderOptions);
|
|
147
149
|
}
|
|
148
150
|
registerTools() {
|
|
149
151
|
const toolsManager = this.ai.toolsManager;
|
|
@@ -49,6 +49,13 @@ const list = async (ctx, next) => {
|
|
|
49
49
|
const { paginate } = ctx.action.params || {};
|
|
50
50
|
const plugin = ctx.app.pm.get("ai");
|
|
51
51
|
const builtInManager = plugin.builtInManager;
|
|
52
|
+
const filter = ctx.action.params.filter || {};
|
|
53
|
+
ctx.action.mergeParams({
|
|
54
|
+
filter: {
|
|
55
|
+
...filter,
|
|
56
|
+
deprecated: false
|
|
57
|
+
}
|
|
58
|
+
});
|
|
52
59
|
await import_actions.default.list(ctx, () => {
|
|
53
60
|
});
|
|
54
61
|
let data = ctx.body.rows;
|
|
@@ -146,7 +153,9 @@ const listByUser = async (ctx, next) => {
|
|
|
146
153
|
prompt: (_b = (_a = row.userConfigs) == null ? void 0 : _a[0]) == null ? void 0 : _b.prompt
|
|
147
154
|
},
|
|
148
155
|
skillSettings,
|
|
149
|
-
builtIn: row.builtIn
|
|
156
|
+
builtIn: row.builtIn,
|
|
157
|
+
category: row.category,
|
|
158
|
+
deprecated: row.deprecated
|
|
150
159
|
};
|
|
151
160
|
});
|
|
152
161
|
await next();
|
|
@@ -49,7 +49,6 @@ __reExport(employee_exports, require("./handler"), module.exports);
|
|
|
49
49
|
__reExport(employee_exports, require("./tools"), module.exports);
|
|
50
50
|
class AIEmployeeInstruction extends import_plugin_workflow.Instruction {
|
|
51
51
|
async run(node, input, processor) {
|
|
52
|
-
var _a, _b, _c, _d, _e;
|
|
53
52
|
const {
|
|
54
53
|
username,
|
|
55
54
|
message,
|
|
@@ -81,151 +80,155 @@ ${typeof message.system === "object" ? JSON.stringify(message.system) : message.
|
|
|
81
80
|
upstreamId: (input == null ? void 0 : input.id) ?? null
|
|
82
81
|
});
|
|
83
82
|
await processor.exit();
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
83
|
+
const runner = async () => {
|
|
84
|
+
var _a, _b, _c, _d, _e;
|
|
85
|
+
try {
|
|
86
|
+
if (skillSettings && skillSettings.skillsVersion == null) {
|
|
87
|
+
skillSettings.skillsVersion = 2;
|
|
88
|
+
}
|
|
89
|
+
if (skillSettings && skillSettings.toolsVersion == null) {
|
|
90
|
+
skillSettings.toolsVersion = 2;
|
|
91
|
+
}
|
|
92
|
+
const { conversation, aiWorkflowTasks } = await this.createWorkflowTask({
|
|
93
|
+
username,
|
|
94
|
+
userMessage,
|
|
95
|
+
systemMessage,
|
|
96
|
+
skillSettings,
|
|
97
|
+
requiresApproval,
|
|
98
|
+
toolName,
|
|
99
|
+
node,
|
|
100
|
+
processor,
|
|
101
|
+
jobId: id
|
|
102
|
+
});
|
|
103
|
+
let currentRoles = (_a = input == null ? void 0 : input.result) == null ? void 0 : _a.roleName;
|
|
104
|
+
if (!currentRoles) {
|
|
105
|
+
const defaultRole = await this.workflow.db.getRepository("rolesUsers").findOne({
|
|
106
|
+
filter: {
|
|
107
|
+
userId: ((_c = (_b = input == null ? void 0 : input.result) == null ? void 0 : _b.user) == null ? void 0 : _c.id) ?? userId,
|
|
108
|
+
default: true
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
currentRoles = defaultRole == null ? void 0 : defaultRole.roleName;
|
|
112
|
+
}
|
|
113
|
+
const employee = await this.workflow.db.getRepository("aiEmployees").findOne({
|
|
105
114
|
filter: {
|
|
106
|
-
|
|
107
|
-
default: true
|
|
115
|
+
username
|
|
108
116
|
}
|
|
109
117
|
});
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
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
|
|
118
|
+
const aiEmployee = new import_ai_employee.AIEmployee({
|
|
119
|
+
ctx: {
|
|
120
|
+
app: this.workflow.app,
|
|
121
|
+
db: this.workflow.app.db,
|
|
122
|
+
log: this.workflow.app.log,
|
|
123
|
+
logger: this.workflow.app.log,
|
|
124
|
+
state: { currentRoles },
|
|
125
|
+
auth: {
|
|
126
|
+
user: {
|
|
127
|
+
id: ((_e = (_d = input == null ? void 0 : input.result) == null ? void 0 : _d.user) == null ? void 0 : _e.id) ?? userId
|
|
134
128
|
}
|
|
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
129
|
},
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
130
|
+
action: {
|
|
131
|
+
params: {
|
|
132
|
+
values: {
|
|
133
|
+
sessionId: conversation.sessionId,
|
|
134
|
+
model
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
employee,
|
|
140
|
+
sessionId: conversation.sessionId,
|
|
141
|
+
systemMessage,
|
|
142
|
+
skillSettings,
|
|
143
|
+
webSearch,
|
|
144
|
+
model,
|
|
145
|
+
tools: [{ name: toolName }]
|
|
146
|
+
});
|
|
147
|
+
const attachmentPart = {};
|
|
148
|
+
if (files == null ? void 0 : files.length) {
|
|
149
|
+
const { resolveAttachments, resolveUrls } = import_files.Files.resolvers(this.workflow, attachmentPart);
|
|
150
|
+
await resolveAttachments(files);
|
|
151
|
+
await resolveUrls(files);
|
|
152
|
+
}
|
|
153
|
+
let result;
|
|
154
|
+
let isToolInvoke = false;
|
|
155
|
+
let retry = 0;
|
|
156
|
+
do {
|
|
157
|
+
const userMessages = [
|
|
158
|
+
{
|
|
159
|
+
role: "user",
|
|
160
|
+
content: {
|
|
161
|
+
type: "text",
|
|
162
|
+
content: userMessage
|
|
171
163
|
},
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
164
|
+
...attachmentPart
|
|
165
|
+
}
|
|
166
|
+
];
|
|
167
|
+
if (retry > 0) {
|
|
168
|
+
if (retry < 2) {
|
|
169
|
+
const firstUserMessage = await this.workflow.db.getRepository("aiConversations.messages", conversation.sessionId).findOne({
|
|
170
|
+
filter: {
|
|
171
|
+
role: "user"
|
|
172
|
+
},
|
|
173
|
+
sort: ["messageId"]
|
|
174
|
+
});
|
|
175
|
+
const messageId = firstUserMessage == null ? void 0 : firstUserMessage.messageId;
|
|
176
|
+
result = await aiEmployee.invoke({ messageId, userMessages });
|
|
177
|
+
} else {
|
|
178
|
+
result = await aiEmployee.invoke({
|
|
179
|
+
userMessages: [
|
|
180
|
+
{
|
|
181
|
+
role: "user",
|
|
182
|
+
content: {
|
|
183
|
+
type: "text",
|
|
184
|
+
content: `You failed to call the required tool "aiEmployeeWorkflowTaskOutput" in your previous response.
|
|
184
185
|
Call "aiEmployeeWorkflowTaskOutput" now to submit the workflow outcome.
|
|
185
186
|
Do not send another normal assistant response without invoking it.
|
|
186
187
|
`
|
|
188
|
+
}
|
|
187
189
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
190
|
+
]
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
} else {
|
|
194
|
+
result = await aiEmployee.invoke({ userMessages });
|
|
191
195
|
}
|
|
192
|
-
|
|
193
|
-
|
|
196
|
+
isToolInvoke = result.messages.filter((it) => it.type === "ai").flatMap((it) => it.tool_calls).some((it) => it.name === toolName);
|
|
197
|
+
} while (!isToolInvoke && retry++ < 2);
|
|
198
|
+
if (!isToolInvoke) {
|
|
199
|
+
throw new Error("AI employee not do job correctly");
|
|
194
200
|
}
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
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" },
|
|
201
|
+
await this.checkApproval({ requiresApproval, conversation, aiWorkflowTasks, result, aiEmployee, toolName });
|
|
202
|
+
} catch (e) {
|
|
203
|
+
processor.logger.error(`ai employee invoke failed, ${e.message}`, {
|
|
204
|
+
node: node.id,
|
|
205
|
+
stack: e.stack,
|
|
206
|
+
chatOptions: node.config
|
|
207
|
+
});
|
|
208
|
+
const job = await this.workflow.app.db.getRepository("jobs").findOne({
|
|
209
|
+
filterByTk: id
|
|
210
|
+
});
|
|
211
|
+
job.set({
|
|
212
|
+
status: import_plugin_workflow.JOB_STATUS.ERROR,
|
|
213
|
+
result: e.message
|
|
214
|
+
});
|
|
215
|
+
const aiWorkflowTask = await this.workflow.db.getRepository("aiWorkflowTasks").findOne({
|
|
222
216
|
filter: {
|
|
223
|
-
|
|
217
|
+
jobId: id
|
|
224
218
|
}
|
|
225
219
|
});
|
|
220
|
+
if (aiWorkflowTask) {
|
|
221
|
+
await this.workflow.db.getRepository("aiWorkflowTasks").update({
|
|
222
|
+
values: { status: "aborted" },
|
|
223
|
+
filter: {
|
|
224
|
+
id: aiWorkflowTask.id
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
await this.workflow.resume(job);
|
|
226
229
|
}
|
|
227
|
-
|
|
228
|
-
|
|
230
|
+
};
|
|
231
|
+
runner();
|
|
229
232
|
}
|
|
230
233
|
resume(node, job, processor) {
|
|
231
234
|
return job;
|
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.
|
|
9
|
+
"version": "2.1.0-beta.25",
|
|
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",
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"keywords": [
|
|
62
62
|
"AI"
|
|
63
63
|
],
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "824f8b8200e9fe086135768934d3ef427b212446"
|
|
65
65
|
}
|
|
@@ -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?')}}"}}}}}}}}}}}}}}))}}}]);
|