@nocobase/plugin-ai 2.2.0-beta.16 → 2.2.0-beta.18
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/docs/nocobase/ai-dev/watermark-plugin.md +2 -0
- package/dist/ai/docs/nocobase/api/cli/api/resource/create.md +4 -3
- package/dist/ai/docs/nocobase/file-manager/file-preview/index.md +44 -3
- package/dist/ai/docs/nocobase/file-manager/storage/aliyun-oss.md +100 -3
- package/dist/ai/docs/nocobase/plugin-development/build.md +10 -4
- package/dist/ai/docs/nocobase/plugin-development/client/appendix/faq.md +1 -1
- package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-action.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-block.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/custom-field.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/fullstack-plugin.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/client/examples/settings-page.md +2 -0
- package/dist/ai/docs/nocobase/plugin-development/common/i18n.md +3 -3
- package/dist/ai/docs/nocobase/plugin-development/server/cache.md +1 -1
- package/dist/ai/docs/nocobase/plugin-development/server/collections.md +0 -6
- package/dist/ai/docs/nocobase/plugin-development/server/command.md +2 -2
- package/dist/ai/docs/nocobase/plugin-development/server/context.md +2 -2
- package/dist/ai/docs/nocobase/plugin-development/server/i18n.md +4 -4
- package/dist/ai/docs/nocobase/plugin-development/write-your-first-plugin.md +91 -43
- package/dist/ai/docs/nocobase/users-permissions/sync/index.md +8 -1
- package/dist/ai/docs/nocobase/users-permissions/sync/sources/dingtalk.md +138 -0
- package/dist/ai/docs/nocobase/users-permissions/sync/sources/ldap.md +87 -0
- package/dist/ai/docs/nocobase/workflow/nodes/javascript.md +21 -1
- package/dist/client/244.1086967ad8fdedf4.js +10 -0
- package/dist/client/{705.19b642db34de438a.js → 705.a4fe26945d175e8a.js} +1 -1
- package/dist/client/index.js +3 -3
- package/dist/client-v2/244.678c34d698985c60.js +10 -0
- package/dist/client-v2/420.a5b929a5e7f330be.js +10 -0
- package/dist/client-v2/{705.8dc34d43f02f322c.js → 705.f2e1b26a3f000075.js} +1 -1
- package/dist/client-v2/ai-employees/chatbox/hooks/reasoning-stream.d.ts +10 -0
- package/dist/client-v2/ai-employees/chatbox/stores/chat-box.d.ts +0 -2
- package/dist/client-v2/index.js +3 -3
- package/dist/client-v2/llm-providers/forms.d.ts +2 -0
- package/dist/client-v2/llm-providers/index.d.ts +1 -0
- package/dist/client-v2/models/ai-employees/AIEmployeeShortcutModel.d.ts +3 -0
- package/dist/client-v2/pages/EmployeesPage.d.ts +3 -0
- package/dist/client-v2/pages/LLMServicesPage.d.ts +9 -4
- package/dist/client-v2/repositories/AIConfigRepository.d.ts +2 -0
- package/dist/externalVersion.js +18 -16
- package/dist/locale/de-DE.json +2 -1
- package/dist/locale/en-US.json +9 -5
- package/dist/locale/es-ES.json +2 -1
- package/dist/locale/fr-FR.json +2 -1
- package/dist/locale/hu-HU.json +2 -1
- package/dist/locale/id-ID.json +2 -1
- package/dist/locale/it-IT.json +2 -1
- package/dist/locale/ja-JP.json +2 -1
- package/dist/locale/ko-KR.json +2 -1
- package/dist/locale/nl-NL.json +2 -1
- package/dist/locale/pt-BR.json +2 -1
- package/dist/locale/ru-RU.json +2 -1
- package/dist/locale/tr-TR.json +2 -1
- package/dist/locale/uk-UA.json +2 -1
- package/dist/locale/vi-VN.json +2 -1
- package/dist/locale/zh-CN.json +9 -5
- package/dist/locale/zh-TW.json +2 -1
- package/dist/node_modules/@langchain/mistralai/package.json +1 -1
- package/dist/node_modules/@langchain/xai/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/just-bash/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 +40 -24
- package/dist/server/ai-employees/reasoning-stream-state.d.ts +23 -0
- package/dist/server/ai-employees/reasoning-stream-state.js +63 -0
- package/dist/server/llm-providers/common/reasoning.js +18 -10
- package/dist/{client-v2/ai-employees/chatbox/components/DebugPanel.d.ts → server/llm-providers/deepseek/index.d.ts} +2 -2
- package/dist/server/llm-providers/deepseek/index.js +32 -0
- package/dist/server/llm-providers/deepseek/provider.d.ts +57 -0
- package/dist/server/llm-providers/deepseek/provider.js +320 -0
- package/dist/server/llm-providers/deepseek/reasoning.d.ts +83 -0
- package/dist/server/llm-providers/deepseek/reasoning.js +285 -0
- package/dist/server/llm-providers/mistral.d.ts +1 -1
- package/dist/server/llm-providers/provider.d.ts +1 -0
- package/dist/server/llm-providers/provider.js +3 -0
- package/dist/server/llm-providers/shengsuanyun.d.ts +29 -0
- package/dist/server/llm-providers/shengsuanyun.js +114 -0
- package/dist/server/manager/ai-manager.d.ts +3 -0
- package/dist/server/manager/ai-manager.js +7 -2
- package/dist/server/plugin.js +2 -0
- package/dist/server/types/ai-message.type.d.ts +4 -0
- package/dist/swagger/index.d.ts +14 -0
- package/dist/swagger/llm.d.ts +8 -0
- package/dist/swagger/llm.js +8 -0
- package/dist/swagger/schemas.d.ts +6 -0
- package/dist/swagger/schemas.js +6 -0
- package/package.json +2 -2
- package/dist/client/244.8631eb5cf3f05e21.js +0 -10
- package/dist/client-v2/244.c428e645ecb94414.js +0 -10
- package/dist/client-v2/420.b2aedb1ff71fca0e.js +0 -10
- package/dist/client-v2/debug-logger.d.ts +0 -52
- package/dist/server/llm-providers/deepseek.d.ts +0 -40
- package/dist/server/llm-providers/deepseek.js +0 -174
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
pkg: '@nocobase/plugin-auth-dingtalk'
|
|
3
|
+
title: "Synchronize User Data from DingTalk"
|
|
4
|
+
description: "Synchronize DingTalk users and departments to NocoBase and receive incremental changes through HTTP callbacks or Stream mode."
|
|
5
|
+
keywords: "DingTalk,user synchronization,department synchronization,Stream mode,event subscription,NocoBase"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Synchronize User Data from DingTalk
|
|
9
|
+
|
|
10
|
+
<PluginInfo commercial="true" name="auth-dingtalk"></PluginInfo>
|
|
11
|
+
|
|
12
|
+
## Introduction
|
|
13
|
+
|
|
14
|
+
The **DingTalk** plugin synchronizes users and departments from a DingTalk organization to NocoBase. It supports full synchronization on demand and incremental updates through either an HTTP callback or a Stream connection.
|
|
15
|
+
|
|
16
|
+
## Before you begin
|
|
17
|
+
|
|
18
|
+
1. Install and enable the **DingTalk** and **User Data Synchronization** plugins.
|
|
19
|
+
2. Create an internal application in the DingTalk developer console.
|
|
20
|
+
3. Grant the contact permissions and configure the data permission scope described below.
|
|
21
|
+
4. Copy the application's Client ID and Client Secret. See [Authentication: DingTalk](/auth-verification/auth-dingtalk/) for the credential setup.
|
|
22
|
+
|
|
23
|
+
## Configure contact permissions and the data permission scope
|
|
24
|
+
|
|
25
|
+
Open **Permission Management** for the application in the DingTalk developer console and grant the following contact permissions.
|
|
26
|
+
|
|
27
|
+
| Permission | Identifier | Required | Purpose |
|
|
28
|
+
| --- | --- | --- | --- |
|
|
29
|
+
| Read department information | `qyapi_get_department_list` | Yes | Read the department list, names, and hierarchy. |
|
|
30
|
+
| Read department members | `qyapi_get_department_member` | Yes | Read the member list of each department. |
|
|
31
|
+
| Read member information | `qyapi_get_member` | Yes | Read member details and department memberships. |
|
|
32
|
+
| Employee mobile number information | `fieldMobile` | When using mobile numbers | Synchronize mobile numbers. This permission is required when **User unique identifier field** is `mobile`. |
|
|
33
|
+
| Email and other personal information | `fieldEmail` | No | Grant this permission when user email addresses need to be synchronized. |
|
|
34
|
+
|
|
35
|
+
After granting the permissions, configure the application's **Data Permission Scope** (also called **Contact Permission Scope** or **Visibility Range** in some console versions) to include the departments and employees that may be synchronized. Select all employees for a full organization synchronization. If only selected departments or employees are included, NocoBase synchronizes only those entries.
|
|
36
|
+
|
|
37
|
+
:::warning
|
|
38
|
+
API permissions determine which fields the application can read, while the data permission scope determines which departments and employees it can read. Both must be configured. Event subscriptions do not replace contact read permissions: after receiving an event, NocoBase still calls DingTalk APIs to retrieve the latest user or department information.
|
|
39
|
+
:::
|
|
40
|
+
|
|
41
|
+
If the same DingTalk application is also used for sign-in, grant the personal-information permissions described in [Authentication: DingTalk](/auth-verification/auth-dingtalk/). Those sign-in permissions are not required solely for user data synchronization.
|
|
42
|
+
|
|
43
|
+
## Add a DingTalk synchronization source
|
|
44
|
+
|
|
45
|
+
Go to **Users & Permissions > Synchronize**, click **Add new**, and select **DingTalk** as the type.
|
|
46
|
+
|
|
47
|
+
Configure the following fields:
|
|
48
|
+
|
|
49
|
+
| Field | Description |
|
|
50
|
+
| --- | --- |
|
|
51
|
+
| Source name | A unique name for this synchronization source. |
|
|
52
|
+
| Enabled | Starts event reception for this source and enables synchronization tasks. |
|
|
53
|
+
| Client ID | The Client ID of the DingTalk internal application. Environment variables and secrets are supported. |
|
|
54
|
+
| Client Secret | The Client Secret of the DingTalk internal application. Environment variables and secrets are supported. |
|
|
55
|
+
| User unique identifier field | Select `mobile` or `unionId`. Keep the selected field stable after the first synchronization. Users without a value for the selected field are skipped. |
|
|
56
|
+
| Event receiving mode | Select **HTTP callback** or **Stream mode** for incremental user and department changes. |
|
|
57
|
+
|
|
58
|
+
Save and enable the source, then click **Sync** to complete the initial full synchronization before relying on incremental events.
|
|
59
|
+
|
|
60
|
+
## Choose an event receiving mode
|
|
61
|
+
|
|
62
|
+
### Stream mode
|
|
63
|
+
|
|
64
|
+
Stream mode establishes an outbound persistent connection from the NocoBase server to DingTalk. It does not require a public callback URL, Token, or EncodingAESKey.
|
|
65
|
+
|
|
66
|
+
1. In the DingTalk developer console, open the application's event subscription settings and select **Stream mode**.
|
|
67
|
+
2. Subscribe to the user and department change events required by the application.
|
|
68
|
+
3. In NocoBase, select **Stream mode**, save the source, and enable it.
|
|
69
|
+
|
|
70
|
+
The Stream client starts when the source is enabled. Updating, disabling, or deleting the source refreshes or closes the corresponding connection.
|
|
71
|
+
|
|
72
|
+
:::info
|
|
73
|
+
The NocoBase server must be able to establish outbound connections to DingTalk. A reverse proxy or public inbound callback endpoint is not required for Stream mode.
|
|
74
|
+
:::
|
|
75
|
+
|
|
76
|
+
### HTTP callback
|
|
77
|
+
|
|
78
|
+
HTTP callback mode receives DingTalk events through a NocoBase callback URL.
|
|
79
|
+
|
|
80
|
+
1. Select **HTTP callback** in NocoBase.
|
|
81
|
+
2. Enter the Token and EncodingAESKey configured for the DingTalk event subscription.
|
|
82
|
+
3. Save the source and copy the generated **Event callback URL**.
|
|
83
|
+
4. Configure that URL in the DingTalk developer console and subscribe to the required user and department events.
|
|
84
|
+
|
|
85
|
+
The callback URL must be reachable by DingTalk. In a production environment, expose it through HTTPS and make sure the reverse proxy forwards the request path unchanged.
|
|
86
|
+
|
|
87
|
+
## Supported incremental events
|
|
88
|
+
|
|
89
|
+
Both event receiving modes handle the following DingTalk events:
|
|
90
|
+
|
|
91
|
+
| Event | Result in NocoBase |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
| `user_add_org` | Create or update the user. |
|
|
94
|
+
| `user_modify_org` | Update the user. |
|
|
95
|
+
| `user_leave_org` | Delete the synchronized user. |
|
|
96
|
+
| `org_dept_create` | Create or update the department. |
|
|
97
|
+
| `org_dept_modify` | Update the department and synchronize its users. |
|
|
98
|
+
| `org_dept_remove` | Delete the synchronized department. |
|
|
99
|
+
|
|
100
|
+
## Synchronized fields
|
|
101
|
+
|
|
102
|
+
### Department fields
|
|
103
|
+
|
|
104
|
+
| DingTalk field | NocoBase field or purpose |
|
|
105
|
+
| --- | --- |
|
|
106
|
+
| `dept_id` | Source-unique department identifier. |
|
|
107
|
+
| `name` | Department name. |
|
|
108
|
+
| `parent_id` | Parent department used to build the department hierarchy. If the parent is outside the data permission scope, the department is synchronized as a root department. |
|
|
109
|
+
|
|
110
|
+
### User fields
|
|
111
|
+
|
|
112
|
+
| DingTalk field | NocoBase field or purpose |
|
|
113
|
+
| --- | --- |
|
|
114
|
+
| `mobile` or `unionid` | Generates the source-unique user identifier and username according to **User unique identifier field**. A user without the selected field is skipped. |
|
|
115
|
+
| `name` | User nickname. |
|
|
116
|
+
| `mobile` | Phone number. Requires the **Employee mobile number information** permission. |
|
|
117
|
+
| `email`, falling back to `org_email` | Email address. Requires the **Email and other personal information** permission. |
|
|
118
|
+
| `dept_id_list` | Department memberships. Only departments within the data permission scope are retained. |
|
|
119
|
+
| `dept_order_list` | Primary department. |
|
|
120
|
+
| `leader_in_dept` | Whether the user is an owner of the corresponding department. |
|
|
121
|
+
|
|
122
|
+
### Department owners
|
|
123
|
+
|
|
124
|
+
DingTalk uses `leader_in_dept` in the user details to indicate whether the user is an owner of each department they belong to. NocoBase synchronizes this flag separately for each department: the same user can own multiple departments, and an owned department does not have to be the user's primary department. Only departments within the data permission scope are included.
|
|
125
|
+
|
|
126
|
+
When an owner flag is removed in DingTalk, the corresponding owner flag in NocoBase is removed by the next synchronization. Owner status changed manually in NocoBase may be overwritten by DingTalk data during the next synchronization.
|
|
127
|
+
|
|
128
|
+
Full and incremental synchronization use the same field mapping. Other DingTalk user fields, such as avatar, job title, and employee number, are not currently synchronized.
|
|
129
|
+
|
|
130
|
+
## Troubleshooting
|
|
131
|
+
|
|
132
|
+
- If synchronization returns no data or an entire department is missing, verify the three required contact read permissions and confirm that the department is included in the data permission scope.
|
|
133
|
+
- If a user is present but their mobile number or email address is empty, verify the **Employee mobile number information** or **Email and other personal information** permission respectively.
|
|
134
|
+
- If DingTalk reports that a department or employee is outside the permission scope, expand the application's data permission scope instead of only resubscribing to events.
|
|
135
|
+
- If users are skipped, verify that they have a value for the configured unique identifier field.
|
|
136
|
+
- For Stream mode, check the application logs for `Dingtalk stream client starting`, `Dingtalk stream client started`, or connection errors.
|
|
137
|
+
- For HTTP callback mode, verify that the callback URL is publicly reachable and that Token and EncodingAESKey match the DingTalk configuration.
|
|
138
|
+
- Run a manual full synchronization after changing the application's permissions or visibility range.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
pkg: '@nocobase/plugin-auth-ldap'
|
|
3
|
+
title: "Synchronize User Data from LDAP"
|
|
4
|
+
description: "Synchronize LDAP users and departments to NocoBase by reusing an existing LDAP authenticator."
|
|
5
|
+
keywords: "LDAP,user synchronization,department synchronization,Bind DN,Search DN,NocoBase"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Synchronize User Data from LDAP
|
|
9
|
+
|
|
10
|
+
<PluginInfo commercial="true" name="auth-ldap"></PluginInfo>
|
|
11
|
+
|
|
12
|
+
## Introduction
|
|
13
|
+
|
|
14
|
+
The **Auth: LDAP** plugin can use an existing LDAP authenticator as a user data synchronization source. The synchronization source reuses the authenticator's LDAP connection, Bind DN, Search DN, search scope, and attribute mappings, then writes the resulting users and optional department hierarchy to NocoBase.
|
|
15
|
+
|
|
16
|
+
## Before you begin
|
|
17
|
+
|
|
18
|
+
1. Install and enable the **Auth: LDAP** and **User Data Synchronization** plugins.
|
|
19
|
+
2. Create and verify an LDAP authenticator. See [Authentication: LDAP](/auth-verification/auth-ldap/).
|
|
20
|
+
3. Make sure the authenticator's attribute mappings include the fields needed by NocoBase, such as username or email, nickname, and phone number.
|
|
21
|
+
|
|
22
|
+
## Add an LDAP synchronization source
|
|
23
|
+
|
|
24
|
+
Go to **Users & Permissions > Synchronize**, click **Add new**, and select **LDAP** as the type.
|
|
25
|
+
|
|
26
|
+
Configure the following fields:
|
|
27
|
+
|
|
28
|
+
| Field | Description |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| Source name | A unique name for this synchronization source. |
|
|
31
|
+
| Enabled | Enables manual synchronization and LDAP synchronization tasks for this source. |
|
|
32
|
+
| LDAP authenticator | The existing LDAP authenticator whose connection and attribute mappings will be reused. |
|
|
33
|
+
| Sync filter | The LDAP filter used to find users during synchronization. The default is `(&(objectCategory=person)(objectClass=user))`. Adjust it to match your directory schema. |
|
|
34
|
+
| Size limit | Optional maximum number of entries returned by an LDAP search. Leave it empty to use the LDAP server's default limit. |
|
|
35
|
+
| Page size | Optional page size for paged LDAP searches. Use this when the directory contains more entries than a single query can return. |
|
|
36
|
+
| Sync departments | Also synchronizes the LDAP organizational hierarchy to NocoBase departments. |
|
|
37
|
+
| Department search DN | Required when department synchronization is enabled. Specify the DN that contains the organizational units to synchronize, for example `ou=departments,dc=example,dc=com`. |
|
|
38
|
+
|
|
39
|
+
:::info
|
|
40
|
+
The synchronization source uses the selected authenticator's Bind DN and Bind password to search LDAP. It does not store a second copy of the LDAP connection credentials.
|
|
41
|
+
:::
|
|
42
|
+
|
|
43
|
+
## Synchronize users
|
|
44
|
+
|
|
45
|
+
Save and enable the source, then click **Sync** to start a full synchronization. Open **Task** to review the result and retry a failed task.
|
|
46
|
+
|
|
47
|
+
User matching follows the field selected in the LDAP authenticator's **Use this field to bind the user** setting. Keep that setting and the authenticator's attribute mappings stable after the first synchronization to avoid creating duplicate users.
|
|
48
|
+
|
|
49
|
+
## Synchronize departments
|
|
50
|
+
|
|
51
|
+
Enable **Sync departments** and enter a **Department search DN** when the LDAP directory contains a hierarchy that should be represented in NocoBase.
|
|
52
|
+
|
|
53
|
+
The plugin searches organizational units below that DN, preserves their parent-child relationships, and associates users with departments based on their distinguished names. The configured Department search DN must cover the organizational units referenced by the users you expect to synchronize.
|
|
54
|
+
|
|
55
|
+
## Synchronized fields
|
|
56
|
+
|
|
57
|
+
### User fields
|
|
58
|
+
|
|
59
|
+
User fields reuse the selected LDAP authenticator's **Attribute mapping**:
|
|
60
|
+
|
|
61
|
+
| LDAP attribute or setting | NocoBase field or purpose |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| Login account attribute | Used as the source-unique user identifier and written to the username or email selected by the authenticator's **Use this field to bind the user** setting. This attribute is usually inferred from `{{account}}` in the authenticator's search filter, such as `uid`, `sAMAccountName`, or `mail`. A user without this attribute is skipped. |
|
|
64
|
+
| Attribute mapped to `username` | Username. |
|
|
65
|
+
| Attribute mapped to `nickname` | User nickname. |
|
|
66
|
+
| Attribute mapped to `email` | Email address. |
|
|
67
|
+
| Attribute mapped to `phone` | Phone number. |
|
|
68
|
+
| `distinguishedName`, falling back to the entry DN | Finds the nearest synchronized department in the DN path and sets it as the user's primary department. This applies only when department synchronization is enabled. |
|
|
69
|
+
|
|
70
|
+
For a multi-valued LDAP attribute, only the first value is currently synchronized. Other user attributes that are not included in the authenticator's attribute mapping are not synchronized.
|
|
71
|
+
|
|
72
|
+
### Department fields
|
|
73
|
+
|
|
74
|
+
| LDAP attribute or structure | NocoBase field or purpose |
|
|
75
|
+
| --- | --- |
|
|
76
|
+
| `objectGUID` | Source-unique department identifier. An organizational unit without this attribute is skipped. |
|
|
77
|
+
| `ou`, `cn`, `name` | The first non-empty value in this order becomes the department name. An organizational unit without a name is skipped. |
|
|
78
|
+
| `distinguishedName`, falling back to the entry DN | Identifies the current department and its parent to build the department hierarchy. |
|
|
79
|
+
|
|
80
|
+
Department synchronization searches for `organizationalUnit` and `container` objects by default. It does not currently synchronize multiple user departments from attributes such as `memberOf`, or department owners.
|
|
81
|
+
|
|
82
|
+
## Troubleshooting
|
|
83
|
+
|
|
84
|
+
- If no users are returned, verify the authenticator's Search DN, search scope, Bind DN permissions, and the synchronization filter.
|
|
85
|
+
- If the result is truncated, configure a page size and verify the LDAP server's size limits.
|
|
86
|
+
- If departments are missing, verify that department synchronization is enabled and the Department search DN covers the required organizational units.
|
|
87
|
+
- Review the synchronization task details and application logs for LDAP connection, bind, and search errors.
|
|
@@ -44,6 +44,26 @@ If checked, subsequent nodes will still be executed even if the script encounter
|
|
|
44
44
|
If the script errors out, it will have no return value, and the node's result will be populated with the error message. If subsequent nodes use the result variable from the script node, it should be handled with caution.
|
|
45
45
|
:::
|
|
46
46
|
|
|
47
|
+
## Worker concurrency control
|
|
48
|
+
|
|
49
|
+
JavaScript script nodes place pending scripts in a task queue and execute them in separate Worker threads. By default, NocoBase does not limit JavaScript script Worker concurrency. If multiple tasks are waiting in the queue, they can create Workers and run concurrently.
|
|
50
|
+
|
|
51
|
+
If scripts consume a significant amount of memory while running, multiple Workers can quickly increase the memory usage of an application instance. In this case, use the `WORKFLOW_SCRIPT_WORKER_CONCURRENCY` environment variable to set a concurrency limit. The same applies to CPU-intensive scripts: excessive concurrency increases CPU contention and may affect other requests and workflows in NocoBase. You should also configure this variable if a large number of script tasks may be created within a short period:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
WORKFLOW_SCRIPT_WORKER_CONCURRENCY=4
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The configuration rules are as follows:
|
|
58
|
+
|
|
59
|
+
- If the variable is unset or its value is invalid, concurrency is unlimited
|
|
60
|
+
- A positive integer sets the maximum number of Worker threads that can run concurrently
|
|
61
|
+
- A value of `0` removes the concurrency limit, allowing all queued tasks to run concurrently
|
|
62
|
+
|
|
63
|
+
When the concurrency limit is reached, new tasks remain in the queue until a Worker becomes available. You can keep the default configuration if scripts run infrequently and each execution uses few resources. If you need a concurrency limit, start with a small value and adjust it gradually based on the application instance's memory and CPU usage and task queueing time.
|
|
64
|
+
|
|
65
|
+
If an application runs on multiple server instances, this setting applies separately to each instance. The overall concurrency capacity also depends on the number of instances that can consume tasks. Restart the NocoBase service after changing the environment variable for the new value to take effect.
|
|
66
|
+
|
|
47
67
|
## Execution Engine
|
|
48
68
|
|
|
49
69
|
The JavaScript script node supports two execution engines, automatically selected based on whether the `WORKFLOW_SCRIPT_MODULES` environment variable is configured:
|
|
@@ -164,4 +184,4 @@ async function sleep(time) {
|
|
|
164
184
|
await sleep(1000);
|
|
165
185
|
|
|
166
186
|
return 123;
|
|
167
|
-
```
|
|
187
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
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([["244"],{143:function(u,e,t){t.r(e),t.d(e,{listAIEmployees:function(){return N},SkillSettings:function(){return uF},updateAIEmployee:function(){return X},createAIEmployee:function(){return Y},deleteAIEmployee:function(){return $},isKnowledgeBaseEnabled:function(){return Q},listKnowledgeBases:function(){return Z},buildEmployeeSubmitValues:function(){return ua},normalizeSkillSettings:function(){return ul},default:function(){return uf},isAIEmployeeUsernameConflictError:function(){return z},EMPLOYEE_PROMPT_VARIABLE_NAMESPACES:function(){return M},updateAIEmployeeEnabled:function(){return J},EmployeesPage:function(){return um},moveAIEmployee:function(){return q}});var n=t(9155),r=t.n(n),l=t(2059),a=t(7375),o=t(5428),i=t(5477),A=t(3485),E=t(7694),F=t(9488),s=t(4196),c=t(3617),D=t(9312),B=t(8666),C=t(9937),m=/^[a-zA-Z0-9_-]+$/,d=RegExp("^[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376-\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4-\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088F\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5C-\\u0C5D\\u0C60-\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDC-\\u0CDE\\u0CE0-\\u0CE1\\u0CF1-\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E81-\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183-\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3006\\u3031-\\u3035\\u303B-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7DC\\uA7F1-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD-\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}-\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{1031F}\\u{1032D}-\\u{10340}\\u{10342}-\\u{10349}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{103A0}-\\u{103C3}\\u{103C8}-\\u{103CF}\\u{10400}-\\u{1049D}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{10570}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}-\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}-\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}-\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10860}-\\u{10876}\\u{10880}-\\u{1089E}\\u{108E0}-\\u{108F2}\\u{108F4}-\\u{108F5}\\u{10900}-\\u{10915}\\u{10920}-\\u{10939}\\u{10940}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BE}-\\u{109BF}\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A60}-\\u{10A7C}\\u{10A80}-\\u{10A9C}\\u{10AC0}-\\u{10AC7}\\u{10AC9}-\\u{10AE4}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B60}-\\u{10B72}\\u{10B80}-\\u{10B91}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10D00}-\\u{10D23}\\u{10D4A}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10E80}-\\u{10EA9}\\u{10EB0}-\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10F00}-\\u{10F1C}\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F70}-\\u{10F81}\\u{10FB0}-\\u{10FC4}\\u{10FE0}-\\u{10FF6}\\u{11003}-\\u{11037}\\u{11071}-\\u{11072}\\u{11075}\\u{11083}-\\u{110AF}\\u{110D0}-\\u{110E8}\\u{11103}-\\u{11126}\\u{11144}\\u{11147}\\u{11150}-\\u{11172}\\u{11176}\\u{11183}-\\u{111B2}\\u{111C1}-\\u{111C4}\\u{111DA}\\u{111DC}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122B}\\u{1123F}-\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A8}\\u{112B0}-\\u{112DE}\\u{11305}-\\u{1130C}\\u{1130F}-\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}-\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}\\u{11350}\\u{1135D}-\\u{11361}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}\\u{113D1}\\u{113D3}\\u{11400}-\\u{11434}\\u{11447}-\\u{1144A}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114AF}\\u{114C4}-\\u{114C5}\\u{114C7}\\u{11580}-\\u{115AE}\\u{115D8}-\\u{115DB}\\u{11600}-\\u{1162F}\\u{11644}\\u{11680}-\\u{116AA}\\u{116B8}\\u{11700}-\\u{1171A}\\u{11740}-\\u{11746}\\u{11800}-\\u{1182B}\\u{118A0}-\\u{118DF}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}-\\u{11916}\\u{11918}-\\u{1192F}\\u{1193F}\\u{11941}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D0}\\u{119E1}\\u{119E3}\\u{11A00}\\u{11A0B}-\\u{11A32}\\u{11A3A}\\u{11A50}\\u{11A5C}-\\u{11A89}\\u{11A9D}\\u{11AB0}-\\u{11AF8}\\u{11BC0}-\\u{11BE0}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2E}\\u{11C40}\\u{11C72}-\\u{11C8F}\\u{11D00}-\\u{11D06}\\u{11D08}-\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D60}-\\u{11D65}\\u{11D67}-\\u{11D68}\\u{11D6A}-\\u{11D89}\\u{11D98}\\u{11DB0}-\\u{11DDB}\\u{11EE0}-\\u{11EF2}\\u{11F02}\\u{11F04}-\\u{11F10}\\u{11F12}-\\u{11F33}\\u{11FB0}\\u{12000}-\\u{12399}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF0}\\u{13000}-\\u{1342F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A70}-\\u{16ABE}\\u{16AD0}-\\u{16AED}\\u{16B00}-\\u{16B2F}\\u{16B40}-\\u{16B43}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D6C}\\u{16E40}-\\u{16E7F}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16F00}-\\u{16F4A}\\u{16F50}\\u{16F93}-\\u{16F9F}\\u{16FE0}-\\u{16FE1}\\u{16FE3}\\u{16FF2}-\\u{16FF3}\\u{17000}-\\u{18CD5}\\u{18CFF}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}-\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}-\\u{1D49F}\\u{1D4A2}\\u{1D4A5}-\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E14E}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E4D0}-\\u{1E4EB}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}-\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}-\\u{1E6FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}-\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E800}-\\u{1E8C4}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}-\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}-\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}-\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B81D}\\u{2B820}-\\u{2CEAD}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{33479}\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1-\\u05C2\\u05C4-\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7-\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u0897-\\u089F\\u08CA-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962-\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7-\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2-\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47-\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70-\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2-\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47-\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B62-\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3C\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55-\\u0C56\\u0C62-\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5-\\u0CD6\\u0CE2-\\u0CE3\\u0CF3\\u0D00-\\u0D03\\u0D3B-\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62-\\u0D63\\u0D81-\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2-\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EBC\\u0EC8-\\u0ECE\\u0F18-\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F3F\\u0F71-\\u0F84\\u0F86-\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1715\\u1732-\\u1734\\u1752-\\u1753\\u1772-\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u180F\\u1885-\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ADD\\u1AE0-\\u1AEB\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099-\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E-\\uA69F\\uA6F0-\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA82C\\uA880-\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C-\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7-\\uAAB8\\uAABE-\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5-\\uAAF6\\uABE3-\\uABEA\\uABEC-\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\u{101FD}\\u{102E0}\\u{10376}-\\u{1037A}\\u{10A01}-\\u{10A03}\\u{10A05}-\\u{10A06}\\u{10A0C}-\\u{10A0F}\\u{10A38}-\\u{10A3A}\\u{10A3F}\\u{10AE5}-\\u{10AE6}\\u{10D24}-\\u{10D27}\\u{10D69}-\\u{10D6D}\\u{10EAB}-\\u{10EAC}\\u{10EFA}-\\u{10EFF}\\u{10F46}-\\u{10F50}\\u{10F82}-\\u{10F85}\\u{11000}-\\u{11002}\\u{11038}-\\u{11046}\\u{11070}\\u{11073}-\\u{11074}\\u{1107F}-\\u{11082}\\u{110B0}-\\u{110BA}\\u{110C2}\\u{11100}-\\u{11102}\\u{11127}-\\u{11134}\\u{11145}-\\u{11146}\\u{11173}\\u{11180}-\\u{11182}\\u{111B3}-\\u{111C0}\\u{111C9}-\\u{111CC}\\u{111CE}-\\u{111CF}\\u{1122C}-\\u{11237}\\u{1123E}\\u{11241}\\u{112DF}-\\u{112EA}\\u{11300}-\\u{11303}\\u{1133B}-\\u{1133C}\\u{1133E}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11357}\\u{11362}-\\u{11363}\\u{11366}-\\u{1136C}\\u{11370}-\\u{11374}\\u{113B8}-\\u{113C0}\\u{113C2}\\u{113C5}\\u{113C7}-\\u{113CA}\\u{113CC}-\\u{113D0}\\u{113D2}\\u{113E1}-\\u{113E2}\\u{11435}-\\u{11446}\\u{1145E}\\u{114B0}-\\u{114C3}\\u{115AF}-\\u{115B5}\\u{115B8}-\\u{115C0}\\u{115DC}-\\u{115DD}\\u{11630}-\\u{11640}\\u{116AB}-\\u{116B7}\\u{1171D}-\\u{1172B}\\u{1182C}-\\u{1183A}\\u{11930}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193B}-\\u{1193E}\\u{11940}\\u{11942}-\\u{11943}\\u{119D1}-\\u{119D7}\\u{119DA}-\\u{119E0}\\u{119E4}\\u{11A01}-\\u{11A0A}\\u{11A33}-\\u{11A39}\\u{11A3B}-\\u{11A3E}\\u{11A47}\\u{11A51}-\\u{11A5B}\\u{11A8A}-\\u{11A99}\\u{11B60}-\\u{11B67}\\u{11C2F}-\\u{11C36}\\u{11C38}-\\u{11C3F}\\u{11C92}-\\u{11CA7}\\u{11CA9}-\\u{11CB6}\\u{11D31}-\\u{11D36}\\u{11D3A}\\u{11D3C}-\\u{11D3D}\\u{11D3F}-\\u{11D45}\\u{11D47}\\u{11D8A}-\\u{11D8E}\\u{11D90}-\\u{11D91}\\u{11D93}-\\u{11D97}\\u{11EF3}-\\u{11EF6}\\u{11F00}-\\u{11F01}\\u{11F03}\\u{11F34}-\\u{11F3A}\\u{11F3E}-\\u{11F42}\\u{11F5A}\\u{13440}\\u{13447}-\\u{13455}\\u{1611E}-\\u{1612F}\\u{16AF0}-\\u{16AF4}\\u{16B30}-\\u{16B36}\\u{16F4F}\\u{16F51}-\\u{16F87}\\u{16F8F}-\\u{16F92}\\u{16FE4}\\u{16FF0}-\\u{16FF1}\\u{1BC9D}-\\u{1BC9E}\\u{1CF00}-\\u{1CF2D}\\u{1CF30}-\\u{1CF46}\\u{1D165}-\\u{1D169}\\u{1D16D}-\\u{1D172}\\u{1D17B}-\\u{1D182}\\u{1D185}-\\u{1D18B}\\u{1D1AA}-\\u{1D1AD}\\u{1D242}-\\u{1D244}\\u{1DA00}-\\u{1DA36}\\u{1DA3B}-\\u{1DA6C}\\u{1DA75}\\u{1DA84}\\u{1DA9B}-\\u{1DA9F}\\u{1DAA1}-\\u{1DAAF}\\u{1E000}-\\u{1E006}\\u{1E008}-\\u{1E018}\\u{1E01B}-\\u{1E021}\\u{1E023}-\\u{1E024}\\u{1E026}-\\u{1E02A}\\u{1E08F}\\u{1E130}-\\u{1E136}\\u{1E2AE}\\u{1E2EC}-\\u{1E2EF}\\u{1E4EC}-\\u{1E4EF}\\u{1E5EE}-\\u{1E5EF}\\u{1E6E3}\\u{1E6E6}\\u{1E6EE}-\\u{1E6EF}\\u{1E6F5}\\u{1E8D0}-\\u{1E8D6}\\u{1E944}-\\u{1E94A}\\u{E0100}-\\u{E01EF}\\u0030-\\u0039\\u00B2-\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\\u{10107}-\\u{10133}\\u{10140}-\\u{10178}\\u{1018A}-\\u{1018B}\\u{102E1}-\\u{102FB}\\u{10320}-\\u{10323}\\u{10341}\\u{1034A}\\u{103D1}-\\u{103D5}\\u{104A0}-\\u{104A9}\\u{10858}-\\u{1085F}\\u{10879}-\\u{1087F}\\u{108A7}-\\u{108AF}\\u{108FB}-\\u{108FF}\\u{10916}-\\u{1091B}\\u{109BC}-\\u{109BD}\\u{109C0}-\\u{109CF}\\u{109D2}-\\u{109FF}\\u{10A40}-\\u{10A48}\\u{10A7D}-\\u{10A7E}\\u{10A9D}-\\u{10A9F}\\u{10AEB}-\\u{10AEF}\\u{10B58}-\\u{10B5F}\\u{10B78}-\\u{10B7F}\\u{10BA9}-\\u{10BAF}\\u{10CFA}-\\u{10CFF}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D49}\\u{10E60}-\\u{10E7E}\\u{10F1D}-\\u{10F26}\\u{10F51}-\\u{10F54}\\u{10FC5}-\\u{10FCB}\\u{11052}-\\u{1106F}\\u{110F0}-\\u{110F9}\\u{11136}-\\u{1113F}\\u{111D0}-\\u{111D9}\\u{111E1}-\\u{111F4}\\u{112F0}-\\u{112F9}\\u{11450}-\\u{11459}\\u{114D0}-\\u{114D9}\\u{11650}-\\u{11659}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11730}-\\u{1173B}\\u{118E0}-\\u{118F2}\\u{11950}-\\u{11959}\\u{11BF0}-\\u{11BF9}\\u{11C50}-\\u{11C6C}\\u{11D50}-\\u{11D59}\\u{11DA0}-\\u{11DA9}\\u{11DE0}-\\u{11DE9}\\u{11F50}-\\u{11F59}\\u{11FC0}-\\u{11FD4}\\u{12400}-\\u{1246E}\\u{16130}-\\u{16139}\\u{16A60}-\\u{16A69}\\u{16AC0}-\\u{16AC9}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16D70}-\\u{16D79}\\u{16E80}-\\u{16E96}\\u{16FF4}-\\u{16FF6}\\u{1CCF0}-\\u{1CCF9}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D7CE}-\\u{1D7FF}\\u{1E140}-\\u{1E149}\\u{1E2F0}-\\u{1E2F9}\\u{1E4F0}-\\u{1E4F9}\\u{1E5F1}-\\u{1E5FA}\\u{1E8C7}-\\u{1E8CF}\\u{1E950}-\\u{1E959}\\u{1EC71}-\\u{1ECAB}\\u{1ECAD}-\\u{1ECAF}\\u{1ECB1}-\\u{1ECB4}\\u{1ED01}-\\u{1ED2D}\\u{1ED2F}-\\u{1ED3D}\\u{1F100}-\\u{1F10C}\\u{1FBF0}-\\u{1FBF9} ._'’()&\xb7-]+$","u"),f=function(u){return u.trim()},p=function(u,e){return u.length>0&&Array.from(u).length<=e},y=function(u){var e=f(u);return p(e,64)&&m.test(e)},g=function(u){var e=f(u);return p(e,64)&&d.test(e)&&RegExp("[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376-\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06E5-\\u06E6\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4-\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088F\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5C-\\u0C5D\\u0C60-\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDC-\\u0CDE\\u0CE0-\\u0CE1\\u0CF1-\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E46\\u0E81-\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C8A\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183-\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3006\\u3031-\\u3035\\u303B-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A-\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7DC\\uA7F1-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD-\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\\u{10000}-\\u{1000B}\\u{1000D}-\\u{10026}\\u{10028}-\\u{1003A}\\u{1003C}-\\u{1003D}\\u{1003F}-\\u{1004D}\\u{10050}-\\u{1005D}\\u{10080}-\\u{100FA}\\u{10280}-\\u{1029C}\\u{102A0}-\\u{102D0}\\u{10300}-\\u{1031F}\\u{1032D}-\\u{10340}\\u{10342}-\\u{10349}\\u{10350}-\\u{10375}\\u{10380}-\\u{1039D}\\u{103A0}-\\u{103C3}\\u{103C8}-\\u{103CF}\\u{10400}-\\u{1049D}\\u{104B0}-\\u{104D3}\\u{104D8}-\\u{104FB}\\u{10500}-\\u{10527}\\u{10530}-\\u{10563}\\u{10570}-\\u{1057A}\\u{1057C}-\\u{1058A}\\u{1058C}-\\u{10592}\\u{10594}-\\u{10595}\\u{10597}-\\u{105A1}\\u{105A3}-\\u{105B1}\\u{105B3}-\\u{105B9}\\u{105BB}-\\u{105BC}\\u{105C0}-\\u{105F3}\\u{10600}-\\u{10736}\\u{10740}-\\u{10755}\\u{10760}-\\u{10767}\\u{10780}-\\u{10785}\\u{10787}-\\u{107B0}\\u{107B2}-\\u{107BA}\\u{10800}-\\u{10805}\\u{10808}\\u{1080A}-\\u{10835}\\u{10837}-\\u{10838}\\u{1083C}\\u{1083F}-\\u{10855}\\u{10860}-\\u{10876}\\u{10880}-\\u{1089E}\\u{108E0}-\\u{108F2}\\u{108F4}-\\u{108F5}\\u{10900}-\\u{10915}\\u{10920}-\\u{10939}\\u{10940}-\\u{10959}\\u{10980}-\\u{109B7}\\u{109BE}-\\u{109BF}\\u{10A00}\\u{10A10}-\\u{10A13}\\u{10A15}-\\u{10A17}\\u{10A19}-\\u{10A35}\\u{10A60}-\\u{10A7C}\\u{10A80}-\\u{10A9C}\\u{10AC0}-\\u{10AC7}\\u{10AC9}-\\u{10AE4}\\u{10B00}-\\u{10B35}\\u{10B40}-\\u{10B55}\\u{10B60}-\\u{10B72}\\u{10B80}-\\u{10B91}\\u{10C00}-\\u{10C48}\\u{10C80}-\\u{10CB2}\\u{10CC0}-\\u{10CF2}\\u{10D00}-\\u{10D23}\\u{10D4A}-\\u{10D65}\\u{10D6F}-\\u{10D85}\\u{10E80}-\\u{10EA9}\\u{10EB0}-\\u{10EB1}\\u{10EC2}-\\u{10EC7}\\u{10F00}-\\u{10F1C}\\u{10F27}\\u{10F30}-\\u{10F45}\\u{10F70}-\\u{10F81}\\u{10FB0}-\\u{10FC4}\\u{10FE0}-\\u{10FF6}\\u{11003}-\\u{11037}\\u{11071}-\\u{11072}\\u{11075}\\u{11083}-\\u{110AF}\\u{110D0}-\\u{110E8}\\u{11103}-\\u{11126}\\u{11144}\\u{11147}\\u{11150}-\\u{11172}\\u{11176}\\u{11183}-\\u{111B2}\\u{111C1}-\\u{111C4}\\u{111DA}\\u{111DC}\\u{11200}-\\u{11211}\\u{11213}-\\u{1122B}\\u{1123F}-\\u{11240}\\u{11280}-\\u{11286}\\u{11288}\\u{1128A}-\\u{1128D}\\u{1128F}-\\u{1129D}\\u{1129F}-\\u{112A8}\\u{112B0}-\\u{112DE}\\u{11305}-\\u{1130C}\\u{1130F}-\\u{11310}\\u{11313}-\\u{11328}\\u{1132A}-\\u{11330}\\u{11332}-\\u{11333}\\u{11335}-\\u{11339}\\u{1133D}\\u{11350}\\u{1135D}-\\u{11361}\\u{11380}-\\u{11389}\\u{1138B}\\u{1138E}\\u{11390}-\\u{113B5}\\u{113B7}\\u{113D1}\\u{113D3}\\u{11400}-\\u{11434}\\u{11447}-\\u{1144A}\\u{1145F}-\\u{11461}\\u{11480}-\\u{114AF}\\u{114C4}-\\u{114C5}\\u{114C7}\\u{11580}-\\u{115AE}\\u{115D8}-\\u{115DB}\\u{11600}-\\u{1162F}\\u{11644}\\u{11680}-\\u{116AA}\\u{116B8}\\u{11700}-\\u{1171A}\\u{11740}-\\u{11746}\\u{11800}-\\u{1182B}\\u{118A0}-\\u{118DF}\\u{118FF}-\\u{11906}\\u{11909}\\u{1190C}-\\u{11913}\\u{11915}-\\u{11916}\\u{11918}-\\u{1192F}\\u{1193F}\\u{11941}\\u{119A0}-\\u{119A7}\\u{119AA}-\\u{119D0}\\u{119E1}\\u{119E3}\\u{11A00}\\u{11A0B}-\\u{11A32}\\u{11A3A}\\u{11A50}\\u{11A5C}-\\u{11A89}\\u{11A9D}\\u{11AB0}-\\u{11AF8}\\u{11BC0}-\\u{11BE0}\\u{11C00}-\\u{11C08}\\u{11C0A}-\\u{11C2E}\\u{11C40}\\u{11C72}-\\u{11C8F}\\u{11D00}-\\u{11D06}\\u{11D08}-\\u{11D09}\\u{11D0B}-\\u{11D30}\\u{11D46}\\u{11D60}-\\u{11D65}\\u{11D67}-\\u{11D68}\\u{11D6A}-\\u{11D89}\\u{11D98}\\u{11DB0}-\\u{11DDB}\\u{11EE0}-\\u{11EF2}\\u{11F02}\\u{11F04}-\\u{11F10}\\u{11F12}-\\u{11F33}\\u{11FB0}\\u{12000}-\\u{12399}\\u{12480}-\\u{12543}\\u{12F90}-\\u{12FF0}\\u{13000}-\\u{1342F}\\u{13441}-\\u{13446}\\u{13460}-\\u{143FA}\\u{14400}-\\u{14646}\\u{16100}-\\u{1611D}\\u{16800}-\\u{16A38}\\u{16A40}-\\u{16A5E}\\u{16A70}-\\u{16ABE}\\u{16AD0}-\\u{16AED}\\u{16B00}-\\u{16B2F}\\u{16B40}-\\u{16B43}\\u{16B63}-\\u{16B77}\\u{16B7D}-\\u{16B8F}\\u{16D40}-\\u{16D6C}\\u{16E40}-\\u{16E7F}\\u{16EA0}-\\u{16EB8}\\u{16EBB}-\\u{16ED3}\\u{16F00}-\\u{16F4A}\\u{16F50}\\u{16F93}-\\u{16F9F}\\u{16FE0}-\\u{16FE1}\\u{16FE3}\\u{16FF2}-\\u{16FF3}\\u{17000}-\\u{18CD5}\\u{18CFF}-\\u{18D1E}\\u{18D80}-\\u{18DF2}\\u{1AFF0}-\\u{1AFF3}\\u{1AFF5}-\\u{1AFFB}\\u{1AFFD}-\\u{1AFFE}\\u{1B000}-\\u{1B122}\\u{1B132}\\u{1B150}-\\u{1B152}\\u{1B155}\\u{1B164}-\\u{1B167}\\u{1B170}-\\u{1B2FB}\\u{1BC00}-\\u{1BC6A}\\u{1BC70}-\\u{1BC7C}\\u{1BC80}-\\u{1BC88}\\u{1BC90}-\\u{1BC99}\\u{1D400}-\\u{1D454}\\u{1D456}-\\u{1D49C}\\u{1D49E}-\\u{1D49F}\\u{1D4A2}\\u{1D4A5}-\\u{1D4A6}\\u{1D4A9}-\\u{1D4AC}\\u{1D4AE}-\\u{1D4B9}\\u{1D4BB}\\u{1D4BD}-\\u{1D4C3}\\u{1D4C5}-\\u{1D505}\\u{1D507}-\\u{1D50A}\\u{1D50D}-\\u{1D514}\\u{1D516}-\\u{1D51C}\\u{1D51E}-\\u{1D539}\\u{1D53B}-\\u{1D53E}\\u{1D540}-\\u{1D544}\\u{1D546}\\u{1D54A}-\\u{1D550}\\u{1D552}-\\u{1D6A5}\\u{1D6A8}-\\u{1D6C0}\\u{1D6C2}-\\u{1D6DA}\\u{1D6DC}-\\u{1D6FA}\\u{1D6FC}-\\u{1D714}\\u{1D716}-\\u{1D734}\\u{1D736}-\\u{1D74E}\\u{1D750}-\\u{1D76E}\\u{1D770}-\\u{1D788}\\u{1D78A}-\\u{1D7A8}\\u{1D7AA}-\\u{1D7C2}\\u{1D7C4}-\\u{1D7CB}\\u{1DF00}-\\u{1DF1E}\\u{1DF25}-\\u{1DF2A}\\u{1E030}-\\u{1E06D}\\u{1E100}-\\u{1E12C}\\u{1E137}-\\u{1E13D}\\u{1E14E}\\u{1E290}-\\u{1E2AD}\\u{1E2C0}-\\u{1E2EB}\\u{1E4D0}-\\u{1E4EB}\\u{1E5D0}-\\u{1E5ED}\\u{1E5F0}\\u{1E6C0}-\\u{1E6DE}\\u{1E6E0}-\\u{1E6E2}\\u{1E6E4}-\\u{1E6E5}\\u{1E6E7}-\\u{1E6ED}\\u{1E6F0}-\\u{1E6F4}\\u{1E6FE}-\\u{1E6FF}\\u{1E7E0}-\\u{1E7E6}\\u{1E7E8}-\\u{1E7EB}\\u{1E7ED}-\\u{1E7EE}\\u{1E7F0}-\\u{1E7FE}\\u{1E800}-\\u{1E8C4}\\u{1E900}-\\u{1E943}\\u{1E94B}\\u{1EE00}-\\u{1EE03}\\u{1EE05}-\\u{1EE1F}\\u{1EE21}-\\u{1EE22}\\u{1EE24}\\u{1EE27}\\u{1EE29}-\\u{1EE32}\\u{1EE34}-\\u{1EE37}\\u{1EE39}\\u{1EE3B}\\u{1EE42}\\u{1EE47}\\u{1EE49}\\u{1EE4B}\\u{1EE4D}-\\u{1EE4F}\\u{1EE51}-\\u{1EE52}\\u{1EE54}\\u{1EE57}\\u{1EE59}\\u{1EE5B}\\u{1EE5D}\\u{1EE5F}\\u{1EE61}-\\u{1EE62}\\u{1EE64}\\u{1EE67}-\\u{1EE6A}\\u{1EE6C}-\\u{1EE72}\\u{1EE74}-\\u{1EE77}\\u{1EE79}-\\u{1EE7C}\\u{1EE7E}\\u{1EE80}-\\u{1EE89}\\u{1EE8B}-\\u{1EE9B}\\u{1EEA1}-\\u{1EEA3}\\u{1EEA5}-\\u{1EEA9}\\u{1EEAB}-\\u{1EEBB}\\u{20000}-\\u{2A6DF}\\u{2A700}-\\u{2B81D}\\u{2B820}-\\u{2CEAD}\\u{2CEB0}-\\u{2EBE0}\\u{2EBF0}-\\u{2EE5D}\\u{2F800}-\\u{2FA1D}\\u{30000}-\\u{3134A}\\u{31350}-\\u{33479}\\u0030-\\u0039\\u00B2-\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19\\u{10107}-\\u{10133}\\u{10140}-\\u{10178}\\u{1018A}-\\u{1018B}\\u{102E1}-\\u{102FB}\\u{10320}-\\u{10323}\\u{10341}\\u{1034A}\\u{103D1}-\\u{103D5}\\u{104A0}-\\u{104A9}\\u{10858}-\\u{1085F}\\u{10879}-\\u{1087F}\\u{108A7}-\\u{108AF}\\u{108FB}-\\u{108FF}\\u{10916}-\\u{1091B}\\u{109BC}-\\u{109BD}\\u{109C0}-\\u{109CF}\\u{109D2}-\\u{109FF}\\u{10A40}-\\u{10A48}\\u{10A7D}-\\u{10A7E}\\u{10A9D}-\\u{10A9F}\\u{10AEB}-\\u{10AEF}\\u{10B58}-\\u{10B5F}\\u{10B78}-\\u{10B7F}\\u{10BA9}-\\u{10BAF}\\u{10CFA}-\\u{10CFF}\\u{10D30}-\\u{10D39}\\u{10D40}-\\u{10D49}\\u{10E60}-\\u{10E7E}\\u{10F1D}-\\u{10F26}\\u{10F51}-\\u{10F54}\\u{10FC5}-\\u{10FCB}\\u{11052}-\\u{1106F}\\u{110F0}-\\u{110F9}\\u{11136}-\\u{1113F}\\u{111D0}-\\u{111D9}\\u{111E1}-\\u{111F4}\\u{112F0}-\\u{112F9}\\u{11450}-\\u{11459}\\u{114D0}-\\u{114D9}\\u{11650}-\\u{11659}\\u{116C0}-\\u{116C9}\\u{116D0}-\\u{116E3}\\u{11730}-\\u{1173B}\\u{118E0}-\\u{118F2}\\u{11950}-\\u{11959}\\u{11BF0}-\\u{11BF9}\\u{11C50}-\\u{11C6C}\\u{11D50}-\\u{11D59}\\u{11DA0}-\\u{11DA9}\\u{11DE0}-\\u{11DE9}\\u{11F50}-\\u{11F59}\\u{11FC0}-\\u{11FD4}\\u{12400}-\\u{1246E}\\u{16130}-\\u{16139}\\u{16A60}-\\u{16A69}\\u{16AC0}-\\u{16AC9}\\u{16B50}-\\u{16B59}\\u{16B5B}-\\u{16B61}\\u{16D70}-\\u{16D79}\\u{16E80}-\\u{16E96}\\u{16FF4}-\\u{16FF6}\\u{1CCF0}-\\u{1CCF9}\\u{1D2C0}-\\u{1D2D3}\\u{1D2E0}-\\u{1D2F3}\\u{1D360}-\\u{1D378}\\u{1D7CE}-\\u{1D7FF}\\u{1E140}-\\u{1E149}\\u{1E2F0}-\\u{1E2F9}\\u{1E4F0}-\\u{1E4F9}\\u{1E5F1}-\\u{1E5FA}\\u{1E8C7}-\\u{1E8CF}\\u{1E950}-\\u{1E959}\\u{1EC71}-\\u{1ECAB}\\u{1ECAD}-\\u{1ECAF}\\u{1ECB1}-\\u{1ECB4}\\u{1ED01}-\\u{1ED2D}\\u{1ED2F}-\\u{1ED3D}\\u{1F100}-\\u{1F10C}\\u{1FBF0}-\\u{1FBF9}]","u").test(e)};function b(u,e){(null==e||e>u.length)&&(e=u.length);for(var t=0,n=Array(e);t<e;t++)n[t]=u[t];return n}function h(u,e,t,n,r,l,a){try{var o=u[l](a),i=o.value}catch(u){t(u);return}o.done?e(i):Promise.resolve(i).then(n,r)}function v(u){return function(){var e=this,t=arguments;return new Promise(function(n,r){var l=u.apply(e,t);function a(u){h(l,n,r,a,o,"next",u)}function o(u){h(l,n,r,a,o,"throw",u)}a(void 0)})}}function S(u){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{},n=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(t).filter(function(u){return Object.getOwnPropertyDescriptor(t,u).enumerable}))),n.forEach(function(e){var n;n=t[e],e in u?Object.defineProperty(u,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):u[e]=n})}return u}function k(u,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(u,Object.getOwnPropertyDescriptors(e)):(function(u){var e=Object.keys(u);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(u);e.push.apply(e,t)}return e})(Object(e)).forEach(function(t){Object.defineProperty(u,t,Object.getOwnPropertyDescriptor(e,t))}),u}function w(u,e){return function(u){if(Array.isArray(u))return u}(u)||function(u,e){var t,n,r=null==u?null:"u">typeof Symbol&&u[Symbol.iterator]||u["@@iterator"];if(null!=r){var l=[],a=!0,o=!1;try{for(r=r.call(u);!(a=(t=r.next()).done)&&(l.push(t.value),!e||l.length!==e);a=!0);}catch(u){o=!0,n=u}finally{try{a||null==r.return||r.return()}finally{if(o)throw n}}return l}}(u,e)||x(u,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.")}()}function I(u){return function(u){if(Array.isArray(u))return b(u)}(u)||function(u){if("u">typeof Symbol&&null!=u[Symbol.iterator]||null!=u["@@iterator"])return Array.from(u)}(u)||x(u)||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 x(u,e){if(u){if("string"==typeof u)return b(u,e);var t=Object.prototype.toString.call(u).slice(8,-1);if("Object"===t&&u.constructor&&(t=u.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return b(u,e)}}function T(u,e){var t,n,r,l={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),o=Object.defineProperty;return o(a,"next",{value:i(0)}),o(a,"throw",{value:i(1)}),o(a,"return",{value:i(2)}),"function"==typeof Symbol&&o(a,Symbol.iterator,{value:function(){return this}}),a;function i(o){return function(i){var A=[o,i];if(t)throw TypeError("Generator is already executing.");for(;a&&(a=0,A[0]&&(l=0)),l;)try{if(t=1,n&&(r=2&A[0]?n.return:A[0]?n.throw||((r=n.return)&&r.call(n),0):n.next)&&!(r=r.call(n,A[1])).done)return r;switch(n=0,r&&(A=[2&A[0],r.value]),A[0]){case 0:case 1:r=A;break;case 4:return l.label++,{value:A[1],done:!1};case 5:l.label++,n=A[1],A=[0];continue;case 7:A=l.ops.pop(),l.trys.pop();continue;default:if(!(r=(r=l.trys).length>0&&r[r.length-1])&&(6===A[0]||2===A[0])){l=0;continue}if(3===A[0]&&(!r||A[1]>r[0]&&A[1]<r[3])){l.label=A[1];break}if(6===A[0]&&l.label<r[1]){l.label=r[1],r=A;break}if(r&&l.label<r[2]){l.label=r[2],l.ops.push(A);break}r[2]&&l.ops.pop(),l.trys.pop();continue}A=e.call(u,l)}catch(u){A=[6,u],n=0}finally{t=r=0}if(5&A[0])throw A[1];return{value:A[0]?A[1]:void 0,done:!0}}}}function O(){var u,e,t=(u=["\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n\n .ant-spin-nested-loading,\n .ant-spin-container,\n .ant-table,\n .ant-table-container {\n min-height: 0;\n flex: 1;\n display: flex;\n flex-direction: column;\n }\n\n .ant-table-content {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-body {\n flex: 1;\n min-height: 0;\n }\n\n .ant-table-thead > tr > th {\n white-space: nowrap;\n }\n\n .ant-pagination {\n flex: 0 0 auto;\n }\n"],e||(e=u.slice(0)),Object.freeze(Object.defineProperties(u,{raw:{value:Object.freeze(e)}})));return O=function(){return t},t}var P=Object.keys(s.B)[0],L="sort",M=["user","roleName","locale","now","timestamp"],j=function(u){return"".concat(u,":")},R=(0,i.css)(O()),K=function(u){return null!==u&&(void 0===u?"undefined":u&&"u">typeof Symbol&&u.constructor===Symbol?"symbol":typeof u)=="object"&&!Array.isArray(u)},z=function(u){if(!K(u)||!K(u.response)||!K(u.response.data))return!1;var e=u.response.data.errors;return Array.isArray(e)&&e.some(function(u){return K(u)&&"AI_EMPLOYEE_USERNAME_CONFLICT"===u.code})},W=function(u){var e;if(K(u))return null==(e=u.data)?void 0:e.data},_=function(u){if(!K(u))return{};var e=u.data;return K(e)?e:{}},V=function(u){return K(u)&&"string"==typeof u.username},G=function(u){return K(u)&&"string"==typeof u.key&&"string"==typeof u.name},U=function(u,e,t,n){return v(function(){var r;return T(this,function(l){if("function"!=typeof(r=u.resource(e)[t]))throw Error("Missing resource action: ".concat(e,".").concat(t));return[2,r(n)]})})()},H=function(u,e){var t=k(S({},u),{username:f(u.username),nickname:"string"==typeof u.nickname?f(u.nickname):u.nickname});return e.edit&&("system"===u._aboutMode&&(t.about=null),delete t._aboutMode,delete t.enabled),t};function N(u,e){return v(function(){var t,n,r;return T(this,function(l){switch(l.label){case 0:return[4,U(u,"aiEmployees","list",{page:e.page,pageSize:e.pageSize,filter:{category:e.category},sort:[L]})];case 1:return n=W(t=l.sent()),r=_(t),[2,{data:Array.isArray(n)?n.filter(V):[],total:"number"==typeof r.count?r.count:void 0}]}})})()}function q(u,e,t){return v(function(){return T(this,function(n){switch(n.label){case 0:return[4,U(u,"aiEmployees","move",{sourceId:e,targetId:t,sortField:L})];case 1:return n.sent(),[2]}})})()}function Y(u,e){return v(function(){return T(this,function(t){switch(t.label){case 0:return[4,U(u,"aiEmployees","create",{values:H(e,{edit:!1})})];case 1:return t.sent(),[2]}})})()}function X(u,e){return v(function(){return T(this,function(t){switch(t.label){case 0:if(!e.username)throw Error("Missing AI employee username.");return[4,U(u,"aiEmployees","update",{values:H(e,{edit:!0}),filterByTk:e.username})];case 1:return t.sent(),[2]}})})()}function $(u,e){return v(function(){return T(this,function(t){switch(t.label){case 0:return[4,U(u,"aiEmployees","destroy",{filterByTk:e})];case 1:return t.sent(),[2]}})})()}function J(u,e,t){return v(function(){return T(this,function(n){switch(n.label){case 0:return[4,U(u,"aiEmployees","update",{filterByTk:e,values:{enabled:t}})];case 1:return n.sent(),[2]}})})()}function Q(u){return v(function(){var e;return T(this,function(t){switch(t.label){case 0:return[4,U(u,"aiSettings","isKnowledgeBaseEnabled")];case 1:return[2,K(e=W(t.sent()))&&!0===e.enabled]}})})()}function Z(u){return v(function(){var e;return T(this,function(t){switch(t.label){case 0:return[4,U(u,"aiKnowledgeBase","list",{fields:["key","name"],filter:{enabled:!0}})];case 1:return[2,Array.isArray(e=W(t.sent()))?e.filter(G):[]]}})})()}var uu=function(u){var e=u.disabled,t=u.value,a=u.onChange,o=l.theme.useToken().token,i=t||P,A=(0,n.useMemo)(function(){return Object.keys(s.B).map(function(u){return{seed:u,uri:(0,s.H)(u)}})},[]);return r().createElement(r().Fragment,null,r().createElement("div",{style:{marginBottom:o.marginLG+o.margin}},r().createElement(l.Avatar,{size:2*o.controlHeightLG+o.paddingSM+2*o.lineWidth,src:(0,s.H)(i)})),e?null:r().createElement(l.List,{grid:{gutter:o.margin,column:10},dataSource:A,renderItem:function(u){return r().createElement(l.List.Item,null,r().createElement("button",{"aria-label":u.seed,type:"button",onClick:function(){return null==a?void 0:a(u.seed)},onKeyDown:function(e){("Enter"===e.key||" "===e.key)&&(e.preventDefault(),null==a||a(u.seed))},style:{background:"transparent",borderColor:i===u.seed?o.colorPrimary:"transparent",borderStyle:"solid",borderWidth:2*o.lineWidth,borderRadius:"50%",cursor:"pointer",display:"inline-flex",padding:0}},r().createElement(l.Avatar,{size:o.controlHeightLG+o.paddingSM+2*o.lineWidth,src:u.uri})))}}))},ue=function(u){var e=u.edit,t=u.builtIn,n=(0,F.kj)();return r().createElement(r().Fragment,null,r().createElement(l.Form.Item,{name:"username",label:j(n("Username")),rules:[{required:!0,whitespace:!0},{validator:function(u,e){return"string"==typeof e&&y(e)?Promise.resolve():Promise.reject(Error(n("Use 1-64 letters, numbers, underscores, or hyphens.")))}}],preserve:!0},r().createElement(l.Input,{disabled:e})),r().createElement(l.Form.Item,{name:"nickname",label:j(n("Nickname")),rules:[{required:!0,whitespace:!0},{validator:function(u,e){return"string"==typeof e&&g(e)?Promise.resolve():Promise.reject(Error(n("Use 1-64 letters, numbers, spaces, or . _ - ' ( ) & \xb7.")))}}],preserve:!0},r().createElement(l.Input,{disabled:t})),r().createElement(l.Form.Item,{name:"position",label:j(n("Position")),extra:n("Position description"),preserve:!0},r().createElement(l.Input,{disabled:t,placeholder:n("Position placeholder")})),r().createElement(l.Form.Item,{name:"avatar",label:j(n("Avatar")),preserve:!0},r().createElement(uu,{disabled:t})),r().createElement(l.Form.Item,{name:"bio",label:j(n("Bio")),preserve:!0},r().createElement(l.Input.TextArea,{disabled:t,placeholder:n("Bio placeholder")})),r().createElement(l.Form.Item,{name:"greeting",label:j(n("Greeting message")),preserve:!0},r().createElement(l.Input.TextArea,{disabled:t,placeholder:n("Greeting message placeholder")})))},ut=function(u){var e,t=u.builtIn,a=u.record,o=(0,F.kj)(),i=l.theme.useToken().token,E=l.Form.useFormInstance(),s=null!=(e=l.Form.useWatch("_aboutMode",E))?e:(null==a?void 0:a.about)?"custom":"system";return(0,n.useEffect)(function(){t&&!E.getFieldValue("_aboutMode")&&E.setFieldValue("_aboutMode",(null==a?void 0:a.about)?"custom":"system")},[t,E,null==a?void 0:a.about]),r().createElement(r().Fragment,null,r().createElement(l.Alert,{message:o("Role setting description"),type:"info",showIcon:!0}),t?r().createElement(l.Form.Item,{name:"_aboutMode",preserve:!0},r().createElement(l.Radio.Group,null,r().createElement(l.Radio,{value:"system"},o("System default")),r().createElement(l.Radio,{value:"custom"},o("Custom")))):null,t&&"system"===s?r().createElement(l.Typography.Paragraph,{copyable:!0,style:{backgroundColor:i.colorFillQuaternary,borderColor:i.colorBorder,borderRadius:i.borderRadius,borderStyle:"solid",borderWidth:i.lineWidth,margin:0,maxHeight:12*i.controlHeightLG,overflowY:"auto",paddingBlock:i.paddingSM,paddingInline:i.padding,whiteSpace:"pre-wrap",wordBreak:"break-word"}},(null==a?void 0:a.defaultPrompt)||""):r().createElement(l.Form.Item,{name:"about",label:j(o("Role setting")),preserve:!0},r().createElement(A.VariableTextArea,{namespaces:M,placeholder:o("Role setting placeholder"),rows:15})))},un=function(u){return K(u)?u:{}},ur=function(u){return"string"==typeof u?{name:u,autoCall:!1}:K(u)&&"string"==typeof u.name?{name:u.name,autoCall:!0===u.autoCall}:void 0},ul=function(u){return K(u)?{skills:Array.isArray(u.skills)?u.skills.filter(function(u){return"string"==typeof u}):[],tools:Array.isArray(u.tools)?u.tools.map(ur).filter(function(u){return!!u}):[]}:{}},ua=function(u,e){var t=k(S({},u),{skillSettings:ul(e.skillSettings)});return K(e.modelSettings)&&(t.modelSettings=un(e.modelSettings)),t},uo=function(){var u=(0,c.M)(),e=w((0,n.useState)(!1),2),t=e[0],r=e[1];return(0,n.useEffect)(function(){var e=!1;return v(function(){return T(this,function(t){switch(t.label){case 0:r(!0),t.label=1;case 1:return t.trys.push([1,3,4,5]),[4,u.getLLMServices()];case 2:return t.sent(),[3,5];case 3:return console.error(t.sent()),[3,5];case 4:return e||r(!1),[7];case 5:return[2]}})})().catch(function(u){console.error(u)}),function(){e=!0}},[u]),{services:u.llmServices,loading:t||u.llmServicesLoading}},ui=(0,E.observer)(function(){var u=(0,F.kj)(),e=l.Form.useFormInstance(),t=l.Form.useWatch("modelSettings",{form:e,preserve:!0}),a=w((0,n.useState)(function(){return un(e.getFieldValue("modelSettings"))}),2),o=a[0],i=a[1],A=uo(),E=A.services,s=A.loading,c=!!o.enabled,D=(0,n.useMemo)(function(){var u=Array.isArray(o.models)?o.models:[];if(u.length)return u.map(C.Wm).filter(function(u){return!!u});var e=(0,C.Wm)(o);return e?[e]:[]},[o]),B=(0,n.useCallback)(function(u){var t=S({},un(e.getFieldValue("modelSettings")),u);i(t),e.setFieldsValue({modelSettings:t})},[e]);return(0,n.useEffect)(function(){i(un(t))},[t]),(0,n.useEffect)(function(){if(c&&!D.length&&E.length){var u=E[0],e=null==u?void 0:u.enabledModels[0],t=u&&e?"".concat(u.llmService,":").concat(e.value):void 0;t&&B({models:[(0,C.JC)(t)]})}},[c,D.length,E,B]),r().createElement(r().Fragment,null,r().createElement(l.Alert,{type:"info",showIcon:!0,message:u("Restrict this AI employee to the selected models.")}),r().createElement(l.Form.Item,{label:r().createElement(l.Typography.Text,{strong:!0},j(u("Enable dedicated model configuration"))),preserve:!0},r().createElement(l.Switch,{checked:c,onChange:function(u){return B({enabled:u})}})),r().createElement(l.Form.Item,{label:r().createElement(l.Typography.Text,{strong:!0},j(u("Models"))),preserve:!0},r().createElement(C.AE,{disabled:!c,loading:s,placeholder:u("Select models"),services:E,value:D,onChange:function(u){u.length?B({llmService:void 0,model:void 0,models:u.map(C.JC)}):B({llmService:void 0,model:void 0,models:[]})}})))}),uA=function(){var u=(0,F.kj)();return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e?u(e):t}},uE=function(u){var e=u.title,t=u.description,n=l.theme.useToken().token;return r().createElement("div",null,r().createElement("div",{style:{fontWeight:n.fontWeightStrong,fontSize:n.fontSizeSM}},e),r().createElement("div",{style:{color:n.colorTextSecondary,fontSize:n.fontSizeSM}},t))},uF=(0,E.observer)(function(u){var e=u.builtIn,t=(0,F.kj)(),o=l.theme.useToken().token,i=uA(),A=(0,c.M)(),E=l.Form.useFormInstance(),s=ul(l.Form.useWatch("skillSettings",{form:E,preserve:!0})),D=Array.isArray(s.skills)?s.skills:[],B=w((0,n.useState)(e&&!D.length?[]:["custom-skills"]),2),C=B[0],m=B[1],d=r().useRef(D.length);(0,n.useEffect)(function(){A.getAISkills().catch(function(u){console.error(u)})},[A]);var f=function(u){var e=ul(E.getFieldValue("skillSettings"));E.setFieldsValue({skillSettings:k(S({},e),{skills:u})})},p=new Set(D),y=new Map(A.aiSkills.map(function(u){return[u.name,u]})),g=A.aiSkills.filter(function(u){return"GENERAL"===u.scope}),b=D.map(function(u){return y.get(u)}).filter(function(u){return!!u&&"SPECIFIED"===u.scope}),h=A.aiSkills.filter(function(u){return"CUSTOM"===u.scope}),v=D.filter(function(u){var e=y.get(u);return!e||"CUSTOM"===e.scope});(0,n.useEffect)(function(){var u=0===d.current;e&&0===v.length?m([]):u&&v.length>0&&m(["custom-skills"]),d.current=v.length},[e,v.length]);var x=h.filter(function(u){return!p.has(u.name)}).map(function(u){var e,t;return{key:u.name,label:r().createElement("div",{style:{maxWidth:8*o.controlHeightLG,minWidth:4*o.controlHeightLG}},r().createElement("div",null,i(null!=(e=u.title)?e:u.name,u.name)),r().createElement(l.Typography.Text,{type:"secondary"},i(null!=(t=u.about)?t:u.description))),onClick:function(){var e=ul(E.getFieldValue("skillSettings")),t=Array.isArray(e.skills)?e.skills:[];t.includes(u.name)||f(I(t).concat([u.name]))}}}),T=function(u){var e,t;return r().createElement(l.List.Item,{key:u.name},r().createElement("div",null,i(null!=(e=u.title)?e:u.name,u.name)),r().createElement(l.Typography.Text,{type:"secondary"},i(null!=(t=u.about)?t:u.description)))},O=[{key:"general-skills",label:r().createElement(uE,{title:t("General skills"),description:t("Shared by all AI employees.")}),children:r().createElement(l.List,{itemLayout:"vertical",size:"small",dataSource:g,renderItem:T})}];return e&&b.length&&O.push({key:"specific-skills",label:r().createElement(uE,{title:t("Employee-specific skills"),description:t("Only available to this AI employee.")}),children:r().createElement(l.List,{itemLayout:"vertical",size:"small",dataSource:b,renderItem:T})}),h.length&&O.push({key:"custom-skills",label:r().createElement(uE,{title:t("Custom skills"),description:t("Can be added to or removed from this AI employee.")}),extra:r().createElement("div",{onClick:function(u){u.stopPropagation()},onKeyDown:function(u){u.stopPropagation()}},r().createElement(l.Dropdown,{menu:{items:x},disabled:!x.length,placement:"bottomRight"},r().createElement(l.Button,{type:"primary",icon:r().createElement(a.PlusOutlined,null),disabled:!x.length,style:{pointerEvents:x.length?void 0:"none"}},t("Add skill")))),children:r().createElement(l.List,{itemLayout:"vertical",bordered:!0,dataSource:v,renderItem:function(u){var e,n,o=y.get(u),A=o?i(null!=(e=o.title)?e:o.name,o.name):u,E=o?i(null!=(n=o.about)?n:o.description):null;return r().createElement(l.List.Item,{key:u,extra:r().createElement(l.Button,{"aria-label":t("Delete"),icon:r().createElement(a.DeleteOutlined,null),type:"text",onClick:function(){f(D.filter(function(e){return e!==u}))}})},r().createElement("div",null,A),E?r().createElement(l.Typography.Text,{type:"secondary"},E):null)}})}),A.aiSkillsLoading?r().createElement(l.Spin,null):r().createElement(l.Collapse,{ghost:!0,size:"small",activeKey:C,onChange:function(u){return m(Array.isArray(u)?u.map(String):[String(u)])},items:O})}),us=function(u,e){return"CUSTOM"===u.scope?(null==e?void 0:e.autoCall)?"ALLOW":"ASK":"ALLOW"===u.defaultPermission?"ALLOW":"ASK"},uc=(0,E.observer)(function(u){var e=u.builtIn,t=(0,F.kj)(),o=l.theme.useToken().token,i=uA(),A=(0,c.M)(),E=l.Form.useFormInstance(),s=l.Form.useWatch("skillSettings",{form:E,preserve:!0}),D=w((0,n.useState)(function(){return ul(E.getFieldValue("skillSettings"))}),2),B=D[0],C=D[1],m=Array.isArray(B.tools)?B.tools:[],d=w((0,n.useState)(e&&!m.length?[]:["custom-tools"]),2),f=d[0],p=d[1],y=r().useRef(m.length),g=[{label:t("Ask"),value:"ASK"},{label:t("Allow"),value:"ALLOW"}];(0,n.useEffect)(function(){A.refreshAITools().catch(function(u){console.error(u)})},[A]),(0,n.useEffect)(function(){C(ul(s))},[s]);var b=function(u){var e=k(S({},ul(E.getFieldValue("skillSettings"))),{tools:u});C(e),E.setFieldsValue({skillSettings:e})},h=new Set(m.map(function(u){return u.name})),v=new Map(A.aiTools.map(function(u){return[u.definition.name,u]})),x=A.aiTools.filter(function(u){return"GENERAL"===u.scope&&"loader"===u.from}),T=m.filter(function(u){var e=v.get(u.name);return e&&"GENERAL"!==e.scope&&"CUSTOM"!==e.scope}),O=m.filter(function(u){var e=v.get(u.name);return!e||"CUSTOM"===e.scope});(0,n.useEffect)(function(){var u=0===y.current;e&&0===O.length?p([]):u&&O.length>0&&p(["custom-tools"]),y.current=O.length},[e,O.length]);var P=A.aiTools.filter(function(u){return"CUSTOM"===u.scope&&!h.has(u.definition.name)}).map(function(u){var e,t,n,a;return{key:u.definition.name,label:r().createElement("div",{style:{maxWidth:8*o.controlHeightLG,minWidth:4*o.controlHeightLG}},r().createElement(l.Flex,{justify:"space-between"},r().createElement("div",null,i(null!=(e=null==(n=u.introduction)?void 0:n.title)?e:u.definition.name,u.definition.name))),r().createElement(l.Typography.Text,{type:"secondary"},i(null!=(t=null==(a=u.introduction)?void 0:a.about)?t:u.definition.description))),onClick:function(){var e=ul(E.getFieldValue("skillSettings")),t=Array.isArray(e.tools)?e.tools:[];t.some(function(e){return e.name===u.definition.name})||b(I(t).concat([{name:u.definition.name,autoCall:!1}]))}}}),L=function(u){var e,n,a,o,A="definition"in u?u:v.get(u.name);if(!A)return null;var E="definition"in u?void 0:u;return r().createElement(l.List.Item,{key:A.definition.name,extra:r().createElement(l.Flex,{vertical:!0,justify:"end"},r().createElement(l.Space,null,r().createElement(l.Typography.Text,{type:"secondary"},t("Permission")),r().createElement(l.Segmented,{size:"small",options:g,value:us(A,E),disabled:!0})))},r().createElement("div",null,i(null!=(e=null==(a=A.introduction)?void 0:a.title)?e:A.definition.name,A.definition.name)),r().createElement(l.Typography.Text,{type:"secondary"},i(null!=(n=null==(o=A.introduction)?void 0:o.about)?n:A.definition.description)))},M=[{key:"general-tools",label:r().createElement(uE,{title:t("General tools"),description:t("Shared by all AI employees.")}),children:r().createElement(l.List,{itemLayout:"vertical",size:"small",dataSource:x,renderItem:L})}];return e&&T.length&&M.push({key:"specific-tools",label:r().createElement(uE,{title:t("Employee-specific tools"),description:t("Only available to this AI employee.")}),children:r().createElement(l.List,{itemLayout:"vertical",size:"small",dataSource:T,renderItem:L})}),M.push({key:"custom-tools",label:r().createElement(uE,{title:t("Custom tools"),description:t("Created by workflow. You can add/remove and set default permissions.")}),extra:r().createElement("div",{onClick:function(u){u.stopPropagation()},onKeyDown:function(u){u.stopPropagation()}},r().createElement(l.Dropdown,{menu:{items:P},disabled:!(null==P?void 0:P.length),placement:"bottomRight"},r().createElement(l.Button,{type:"primary",icon:r().createElement(a.PlusOutlined,null),disabled:!(null==P?void 0:P.length),style:{pointerEvents:(null==P?void 0:P.length)?void 0:"none"}},t("Add tool")))),children:r().createElement(l.List,{itemLayout:"vertical",bordered:!0,dataSource:O,renderItem:function(u){var e,n,o,A,E=v.get(u.name),F=E?i(null!=(e=null==(o=E.introduction)?void 0:o.title)?e:E.definition.name,E.definition.name):u.name,s=E?i(null!=(n=null==(A=E.introduction)?void 0:A.about)?n:E.definition.description):null;return r().createElement(l.List.Item,{key:u.name,extra:r().createElement(l.Space,null,r().createElement(l.Typography.Text,null,t("Permission")),r().createElement(l.Segmented,{size:"small",options:g,value:E?us(E,u):u.autoCall?"ALLOW":"ASK",onChange:function(e){b(m.map(function(t){return t.name===u.name?k(S({},t),{autoCall:"ALLOW"===e}):t}))}}),r().createElement(l.Button,{"aria-label":t("Delete"),icon:r().createElement(a.DeleteOutlined,null),type:"text",onClick:function(){b(m.filter(function(e){return e.name!==u.name}))}}))},r().createElement("div",null,F),s?r().createElement(l.Typography.Text,{type:"secondary"},s):null)}})}),A.aiToolsLoading?r().createElement(l.Spin,null):r().createElement(l.Collapse,{ghost:!0,size:"small",activeKey:f,onChange:function(u){return p(Array.isArray(u)?u.map(String):[String(u)])},items:M})}),uD=function(u){var e=u.apiClient,t=(0,F.kj)(),a=l.Form.useFormInstance(),o=l.Form.useWatch("enableKnowledgeBase",a),i=w((0,n.useState)([]),2),A=i[0],E=i[1],s=w((0,n.useState)(!1),2),c=s[0],D=s[1];return(0,n.useEffect)(function(){var u=!1;return v(function(){var t;return T(this,function(n){switch(n.label){case 0:D(!0),n.label=1;case 1:return n.trys.push([1,3,4,5]),[4,Z(e)];case 2:return t=n.sent(),u||E(t),[3,5];case 3:return console.error(n.sent()),[3,5];case 4:return u||D(!1),[7];case 5:return[2]}})})().catch(function(u){console.error(u)}),function(){u=!0}},[e]),r().createElement(r().Fragment,null,r().createElement(l.Form.Item,{name:"enableKnowledgeBase",label:j(t("Enable Knowledge Base")),valuePropName:"checked",preserve:!0},r().createElement(l.Switch,null)),r().createElement(l.Form.Item,{name:"knowledgeBasePrompt",label:j(t("Knowledge Base Prompt")),rules:[{required:!0}],preserve:!0},r().createElement(l.Input.TextArea,{disabled:!o,autoSize:{minRows:5}})),r().createElement(l.Form.Item,{name:["knowledgeBase","knowledgeBaseKeys"],label:j(t("Knowledge Base")),rules:[{required:!!o}],preserve:!0},r().createElement(l.Select,{disabled:!o,fieldNames:{label:"name",value:"key"},loading:c,mode:"multiple",options:A})),r().createElement(l.Form.Item,{name:["knowledgeBase","topK"],label:j(t("Top K")),rules:[{required:!0}],preserve:!0},r().createElement(l.InputNumber,{disabled:!o,min:1,max:100})),r().createElement(l.Form.Item,{name:["knowledgeBase","score"],label:j(t("Score")),rules:[{required:!0}],preserve:!0},r().createElement(l.InputNumber,{disabled:!o,min:0,max:1,step:.1})))},uB=function(u){var e,t=u.apiClient,n=u.activeTab,a=u.edit,o=u.onTabChange,i=u.record,A=u.knowledgeBaseEnabled,E=(0,F.kj)(),s=l.Form.useFormInstance(),c=null!=(e=l.Form.useWatch("chatSettings",s))?e:{},D=!!(null==i?void 0:i.builtIn),B=!1!==c.enableSkills,C=!1!==c.enableTools;return r().createElement(l.Tabs,{activeKey:n,onChange:o,items:[{key:"profile",label:E("Profile"),children:r().createElement(ue,{edit:a,builtIn:D}),forceRender:!0},{key:"roleSetting",label:E("Role setting"),children:r().createElement(ut,{builtIn:D,record:i}),forceRender:!0},{key:"modelSettings",label:E("Model settings"),children:r().createElement(ui,null),forceRender:!0}].concat(I(B?[{key:"skills",label:E("Skills"),children:r().createElement(uF,{builtIn:D}),forceRender:!0}]:[]),I(C?[{key:"tools",label:E("Tools"),children:r().createElement(uc,{builtIn:D}),forceRender:!0}]:[]),I(A?[{key:"knowledgeBase",label:E("KnowledgeBase"),children:r().createElement(uD,{apiClient:t}),forceRender:!0}]:[]))})},uC=function(u){var e=u.record,t=u.onUpdated,a=(0,A.useApp)(),o=(0,F.kj)(),i=l.App.useApp().message,E=(0,c.M)(),s=w((0,n.useState)(!1),2),D=s[0],B=s[1];return r().createElement(l.Switch,{checked:!!e.enabled,onChange:function(u){return v(function(){return T(this,function(n){switch(n.label){case 0:B(!0),n.label=1;case 1:return n.trys.push([1,5,6,7]),[4,J(a.apiClient,e.username,u)];case 2:return n.sent(),i.success(o("Saved successfully")),[4,t()];case 3:return n.sent(),[4,E.refreshAIEmployees()];case 4:return n.sent(),[3,7];case 5:return console.error(n.sent()),i.error(o("Failed to update")),[3,7];case 6:return B(!1),[7];case 7:return[2]}})})()},loading:D,size:"small"})},um=function(){var u=(0,A.useApp)(),e=(0,E.useFlowContext)(),t=(0,F.kj)(),i=l.theme.useToken().token,B=l.App.useApp().message,C=(0,c.M)(),m=w((0,n.useState)("business"),2),d=m[0],f=m[1],p=w((0,n.useState)([]),2),y=p[0],g=p[1],b=w((0,n.useState)(!1),2),h=b[0],S=b[1],k=w((0,n.useState)(!1),2),I=k[0],x=k[1],O=w((0,n.useState)([]),2),P=O[0],L=O[1],M=u.apiClient.auth,j=(null==M?void 0:M.role)==="root",K=(0,n.useMemo)(function(){return{color:i.colorPrimary,marginInline:-i.paddingSM,paddingBlock:i.paddingSM,paddingInlineEnd:i.paddingXS+i.paddingSM,paddingInlineStart:i.paddingSM}},[i.colorPrimary,i.paddingSM,i.paddingXS]),z=(0,n.useCallback)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;return v(function(){return T(this,function(t){switch(t.label){case 0:S(!0),t.label=1;case 1:return t.trys.push([1,,3,4]),[4,N(u.apiClient,{category:e})];case 2:return g(t.sent().data),[3,4];case 3:return S(!1),[7];case 4:return[2]}})})()},[u.apiClient,d]);(0,n.useEffect)(function(){z().catch(function(u){console.error(u),S(!1)})},[z]),(0,n.useEffect)(function(){v(function(){return T(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,Q(u.apiClient)];case 1:return x.apply(void 0,[e.sent()]),[3,3];case 2:return console.error(e.sent()),[3,3];case 3:return[2]}})})().catch(function(u){console.error(u)})},[u.apiClient]);var W=function(u){e.viewer.open({type:"drawer",width:D.o,closable:!0,content:r().createElement(ud,{editingRecord:u,knowledgeBaseEnabled:I,onSubmitted:function(){return v(function(){return T(this,function(u){switch(u.label){case 0:return[4,z()];case 1:return u.sent(),[4,C.refreshAIEmployees()];case 2:return u.sent(),[2]}})})()}})})},_=[{title:t("Avatar"),dataIndex:"avatar",render:function(u){return u?r().createElement(l.Avatar,{shape:"circle",size:"large",src:(0,s.H)(u)}):null}},{title:t("Username"),dataIndex:"username",render:function(u,e){var n=e.missingKnowledgeBaseKeys||[];return n.length?r().createElement(l.Space,{size:"small"},r().createElement("span",null,u),r().createElement(l.Tooltip,{title:t("Missing knowledge base configuration for keys: {{keys}}. Create knowledge bases with the same keys to enable this employee normally.",{keys:n.join(", ")})},r().createElement(a.ExclamationCircleOutlined,null))):u}},{title:t("Nickname"),dataIndex:"nickname"},{title:t("Position"),dataIndex:"position"},{title:t("Enabled"),dataIndex:"enabled",render:function(u,e){return r().createElement(uC,{record:e,onUpdated:function(){return z()}})}},{title:t("Actions"),key:"actions",render:function(e,n){return r().createElement(l.Space,{size:i.marginXS},r().createElement("a",{style:K,onClick:function(){return W(n)}},t("Edit")),r().createElement(l.Popconfirm,{title:t("Delete AI employee"),description:t("Are you sure you want to delete this AI employee?"),onConfirm:function(){return v(function(){return T(this,function(e){switch(e.label){case 0:if(n.builtIn&&!j)return B.warning(t("Cannot delete built-in ai employees")),[2];return[4,$(u.apiClient,n.username)];case 1:return e.sent(),B.success(t("Saved successfully")),[4,z()];case 2:return e.sent(),[4,C.refreshAIEmployees()];case 3:return e.sent(),[2]}})})()}},r().createElement("a",{style:K},t("Delete"))))}}];return r().createElement(l.Card,{style:{display:"flex",flexDirection:"column",minHeight:"100%"},styles:{body:{display:"flex",flex:1,flexDirection:"column",minHeight:0}}},r().createElement(l.Flex,{vertical:!0,gap:"middle",style:{flex:1,minHeight:0}},r().createElement(l.Flex,{justify:"space-between",wrap:"wrap",gap:"middle"},r().createElement(l.Radio.Group,{optionType:"button",value:d,options:[{label:t("Business"),value:"business"},{label:t("Developer"),value:"developer"}],onChange:function(u){return f(u.target.value)}}),r().createElement(l.Space,null,r().createElement(l.Button,{icon:r().createElement(a.ReloadOutlined,null),onClick:function(){return z()}},t("Refresh")),r().createElement(l.Button,{type:"primary",icon:r().createElement(a.PlusOutlined,null),onClick:function(){e.viewer.open({type:"drawer",width:D.o,closable:!0,content:r().createElement(ud,{knowledgeBaseEnabled:I,onSubmitted:function(){return v(function(){return T(this,function(u){switch(u.label){case 0:return[4,z()];case 1:return u.sent(),[4,C.refreshAIEmployees()];case 2:return u.sent(),[2]}})})()}})})}},t("New AI employee")))),r().createElement("div",{style:{display:"flex",flex:1,flexDirection:"column",minHeight:0}},r().createElement(A.Table,{rowKey:"username",loading:h,columns:_,dataSource:y,className:R,isDraggable:!0,onSortEnd:function(e,n){return v(function(){var r,l,a;return T(this,function(i){switch(i.label){case 0:if(!e.username||!n.username||e.username===n.username)return[2];r=y,l=y.findIndex(function(u){return u.username===e.username}),a=y.findIndex(function(u){return u.username===n.username}),l>=0&&a>=0&&g((0,o.arrayMove)(y,l,a)),i.label=1;case 1:return i.trys.push([1,5,,6]),[4,q(u.apiClient,e.username,n.username)];case 2:return i.sent(),B.success(t("Saved successfully")),[4,z()];case 3:return i.sent(),[4,C.refreshAIEmployees()];case 4:return i.sent(),[3,6];case 5:return console.error(i.sent()),g(r),B.error(t("Failed to update")),[3,6];case 6:return[2]}})})()},rowSelection:{selectedRowKeys:P,onChange:L},pagination:{defaultPageSize:20,showTotal:function(u){return t("Total {{count}} items",{count:u})}},scroll:{x:"max-content",y:"100%"}}))))},ud=function(u){var e=u.editingRecord,t=u.knowledgeBaseEnabled,a=u.onSubmitted,o=(0,A.useApp)(),i=(0,E.useFlowContext)(),s=(0,F.kj)(),c=l.App.useApp().message,D=w(l.Form.useForm(),1)[0],C=w((0,n.useState)(!1),2),m=C[0],d=C[1],f=w((0,n.useState)("profile"),2),p=f[0],y=f[1],g=w((0,n.useState)(!1),2),b=g[0],h=g[1],I=(0,n.useRef)();I.current||(I.current=e?k(S({},e),{_aboutMode:e.builtIn?e.about?"custom":"system":void 0}):{username:(0,E.randomId)(),enabled:!0,enableKnowledgeBase:!1,knowledgeBase:{knowledgeBaseKeys:[],topK:3,score:"0.6"},knowledgeBasePrompt:s("knowledge Base Prompt default"),avatar:P,builtIn:!1,category:"business"});var x=I.current,O=i.view,L=O.Header,M=O.Footer;(0,n.useEffect)(function(){D.setFieldsValue(x)},[D,x]);var j=(0,B.C)({view:i.view,form:D,initialValues:x,dirty:b,title:s("Unsaved changes"),content:s("Are you sure you don't want to save?")});return r().createElement(r().Fragment,null,r().createElement(L,{title:e?s("Edit AI employee"):s("New AI employee")}),r().createElement(l.Spin,{spinning:m},r().createElement(l.Form,{form:D,layout:"vertical",onFinish:function(u){return v(function(){var t,n;return T(this,function(r){switch(r.label){case 0:d(!0),r.label=1;case 1:if(r.trys.push([1,8,9,10]),t=ua(u,D.getFieldsValue(!0)),!e)return[3,3];return[4,X(o.apiClient,t)];case 2:return r.sent(),[3,5];case 3:return[4,Y(o.apiClient,t)];case 4:r.sent(),r.label=5;case 5:return c.success(s("Saved successfully")),[4,a()];case 6:return r.sent(),[4,i.view.close(void 0,!0)];case 7:return r.sent(),[3,10];case 8:if(n=r.sent(),!e&&z(n))return y("profile"),D.setFields([{name:"username",errors:[s("Username already exists")]}]),[2];throw n;case 9:return d(!1),[7];case 10:return[2]}})})()},onValuesChange:function(){return h(!0)}},r().createElement(uB,{apiClient:o.apiClient,activeTab:p,edit:!!e,onTabChange:y,record:e,knowledgeBaseEnabled:t}))),r().createElement(M,null,r().createElement(l.Flex,{justify:"end",gap:"small"},r().createElement(l.Button,{onClick:j},s("Cancel")),r().createElement(l.Button,{type:"primary",loading:m,onClick:function(){return D.submit()}},s("Submit")))))},uf=um}}]);
|
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
"use strict";(self.webpackChunk_nocobase_plugin_ai=self.webpackChunk_nocobase_plugin_ai||[]).push([["705"],{2951:function(e,t,n){n.d(t,{X:function(){return r}});function r(e){return null}},4893:function(e,t,n){n.d(t,{f:function(){return f}});var r=n(9155),l=n.n(r),o=n(7375),a=n(2059);function i(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 u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var o=[],a=!0,i=!1;try{for(l=l.call(e);!(a=(n=l.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){i=!0,r=e}finally{try{a||null==l.return||l.return()}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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 i(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.")}()}var c=function(e){return Array.from({length:e},function(e,t){return String(t)})},s=function(e,t,n){var r=e.slice(),l=u(r.splice(t,1),1)[0];return r.splice(n,0,l),r},m=function(e,t,n){var r=Number(e);return Number.isNaN(r)?e:r===t?String(n):t<n&&r>t&&r<=n?String(r-1):t>n&&r>=n&&r<t?String(r+1):e},f=function(e){var t=e.value,n=e.onChange,i=e.defaultValue,f=e.getDefaultValue,d=e.addText,p=e.itemTitle,v=e.size,g=e.bordered,y=e.defaultOpenPanelCount,b=void 0===y?5:y,h=e.renderHeader,E=e.renderItem,S=a.theme.useToken().token,k=Array.isArray(t)?t:[],w=u((0,r.useState)(function(){return c(Math.min(k.length,b))}),2),A=w[0],j=w[1];(0,r.useEffect)(function(){j(function(e){var t=e.filter(function(e){return Number(e)<k.length});return t.length>0||0===k.length?t:c(Math.min(k.length,b))})},[b,k.length]);var x=(0,r.useMemo)(function(){return k.map(function(e,t){return{key:String(t),label:h?h(e,t):"".concat(p," ").concat(t+1),extra:l().createElement(a.Space,{size:4,onClick:function(e){return e.stopPropagation()}},l().createElement(a.Button,{type:"text",size:"small","aria-label":"move-up",icon:l().createElement(o.UpOutlined,null),disabled:0===t,onClick:function(){0!==t&&(null==n||n(s(k,t,t-1)),j(function(e){return e.map(function(e){return m(e,t,t-1)})}))}}),l().createElement(a.Button,{type:"text",size:"small","aria-label":"move-down",icon:l().createElement(o.DownOutlined,null),disabled:t===k.length-1,onClick:function(){t!==k.length-1&&(null==n||n(s(k,t,t+1)),j(function(e){return e.map(function(e){return m(e,t,t+1)})}))}}),l().createElement(a.Button,{type:"text",size:"small","aria-label":"delete",icon:l().createElement(o.DeleteOutlined,null),onClick:function(){var e=k.filter(function(e,n){return n!==t});null==n||n(e),j(function(n){var r;return r=e.length,n.filter(function(e){return Number(e)!==t}).map(function(e){var n=Number(e);return n>t?String(n-1):e}).filter(function(e){return Number(e)<r})})}})),children:E(e,t),forceRender:!0}})},[p,k,n,h,E]);return l().createElement(a.Flex,{vertical:!0,gap:"middle"},k.length>0?l().createElement(a.Collapse,{size:void 0===v?"small":v,bordered:void 0===g||g,activeKey:A,items:x,onChange:function(e){return j(Array.isArray(e)?e.map(String):[String(e)])}}):l().createElement(a.Empty,{style:{border:"".concat(S.lineWidth,"px dashed ").concat(S.colorBorder),borderRadius:S.borderRadiusLG,margin:0,padding:S.padding}}),l().createElement(a.Button,{block:!0,type:"dashed",icon:l().createElement(o.PlusOutlined,null),onClick:function(){var e=f?f():i,t=k.concat(e);null==n||n(t),j(function(e){return Array.from(new Set(e.concat(String(t.length-1))))})}},d))}},5208:function(e,t,n){n.d(t,{AIEmployeeFieldset:function(){return es}});var r=n(9155),l=n.n(r),o=n(2059),a=n(7375),i=n(5477),u=n(4221),c=n(9488),s=n(7694),m=n(1204),f=n(3617),d=(0,s.observer)(function(e){var t=e.value,n=e.onChange,o=(0,f.M)(),a=o.aiEmployees,i=(0,r.useMemo)(function(){return a.find(function(e){return e.username===t})},[a,t]);return(0,r.useEffect)(function(){o.getAIEmployees()},[o]),l().createElement(m.Y,{aiEmployees:a,currentEmployee:i,onSelect:function(e){return null==n?void 0:n(e.username)}})}),p=n(9180),v=n(5428);"u">typeof window&&void 0!==window.document&&window.document.createElement;let g=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[g.Translate.toString(e),g.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}});var y=n(197),b=n(293);function h(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 E(){var e,t,n=(e=["\n display: flex;\n width: 100%;\n\n .ant-select {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .ant-btn {\n flex-shrink: 0;\n margin-inline-start: -","px;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n\n .ant-btn:hover,\n .ant-btn:focus {\n z-index: 2;\n }\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return E=function(){return n},n}function S(e){if(Array.isArray(e)){var t=(function(e){if(Array.isArray(e))return e}(e)||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var l=[],o=!0,a=!1;try{for(r=r.call(e);!(o=(t=r.next()).done)&&(l.push(t.value),1!==l.length);o=!0);}catch(e){a=!0,n=e}finally{try{o||null==r.return||r.return()}finally{if(a)throw n}}return l}}(e)||function(e){if(e){if("string"==typeof e)return h(e,1);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 h(e,1)}}(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.")}())[0];return null==t?void 0:String(t)}return null==e?void 0:String(e)}function k(e){return e.isForeignKey||"context"===e.type?"users"===e.target:"users"===e.collectionName&&"id"===e.name}function w(e){var t,n=null!=(t=null==e?void 0:e.paths)?t:[];return n.length?"{{".concat(n.join("."),"}}"):""}function A(e){if("string"==typeof e){var t=e.trim().match(/^\{\{\s*(.+?)\s*\}\}$/);if(t)return t[1].split(".")}}function j(e){var t,n=e.value,r=e.onChange,a=o.theme.useToken().token,u="string"==typeof(t=S(n))&&t.includes("{{")?S(n):void 0,c=(0,y.useWorkflowVariableOptions)({types:[k]}),m=(0,i.css)(E(),a.lineWidth);return l().createElement(o.Space.Compact,{className:m},l().createElement(b.l,{manual:!1,fieldNames:{label:"nickname",value:"id"},service:{resource:"users"},value:u?void 0:n,onChange:function(e){return null==r?void 0:r(e)}}),l().createElement(s.FlowContextSelector,{value:u,metaTree:c,parseValueToPath:A,formatPathToValue:w,onlyLeafSelectable:!0,dropdownFooter:null,onChange:function(e){e&&(null==r||r(e))}}))}function x(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","userId"],label:e("Operator"),tooltip:e("Complete the task using operator permissions"),rules:[{required:!0}]},l().createElement(j,null))}function O(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 C(e,t,n,r,l,o,a){try{var i=e[o](a),u=i.value}catch(e){n(e);return}i.done?t(u):Promise.resolve(u).then(r,l)}function F(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function I(){var e=F(["\n width: 100%;\n padding: ","px;\n border: ","px dashed ",";\n "]);return I=function(){return e},e}function T(){var e=F(["\n width: 100%;\n "]);return T=function(){return e},e}function M(){var e=F(["\n width: 100%;\n\n &.ant-space.ant-space-horizontal {\n flex-wrap: nowrap;\n }\n\n > .ant-space-item:nth-child(2) {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .ant-form-item {\n margin-bottom: 0;\n }\n "]);return M=function(){return e},e}var z=l().createContext(null);function N(e){var t,n=e.value,r=e.onChange,a=o.theme.useToken().token,u=(0,i.css)(I(),a.paddingSM,a.lineWidth,a.colorBorder);return null===n||(void 0===n?"undefined":n&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)!="object"||Array.isArray(n)?l().createElement(j,{value:n,onChange:function(e){return null==r?void 0:r(e)}}):l().createElement("div",{className:u},l().createElement(y.FilterDynamicComponent,{collection:"users",value:null!=(t=n.filter)?t:{},onChange:function(e){return null==r?void 0:r({filter:null!=e?e:{}})}}))}function P(e){var t,n,r=e.disabled,i=(0,c.kj)(),u=o.theme.useToken().token,s=l().useContext(z);return l().createElement(o.Button,(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}({ref:r||null==s?void 0:s.setActivatorNodeRef,"aria-label":i("Drag sort"),disabled:r,icon:l().createElement(a.MenuOutlined,null),type:"text",size:"small"},r?{}:null==s?void 0:s.attributes,r?{}:null==s?void 0:s.listeners),n=n={style:{color:u.colorTextTertiary,cursor:r?"not-allowed":"grab"}},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))}function V(e){var t=e.children,n=e.className,r=e.disabled,a=e.id,i=(0,v.useSortable)({disabled:r,id:a}),u=i.attributes,c=i.isDragging,s=i.listeners,m=i.setActivatorNodeRef,f=i.setNodeRef,d=i.transform,p=i.transition,y=o.theme.useToken().token;return l().createElement(z.Provider,{value:{attributes:u,listeners:s,setActivatorNodeRef:m}},l().createElement(o.Space,{ref:f,align:"center",className:n,size:y.marginXXS,style:{position:c?"relative":void 0,zIndex:c?1:void 0,transform:g.Transform.toString(d),transition:p}},t))}function D(){var e,t=(0,c.kj)(),n=o.Form.useFormInstance(),u=o.theme.useToken().token,s=(0,p.useSensors)((0,p.useSensor)(p.PointerSensor,{activationConstraint:{distance:1}})),m=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 l=[],o=!0,a=!1;try{for(r=r.call(e);!(o=(t=r.next()).done)&&(l.push(t.value),2!==l.length);o=!0);}catch(e){a=!0,n=e}finally{try{o||null==r.return||r.return()}finally{if(a)throw n}}return l}}(e)||function(e){if(e){if("string"==typeof e)return O(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 O(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.")}(),f=m[0],d=m[1],g=o.Form.useWatch(["config","requiresApproval"],n),y=null!=g?g:n.getFieldValue(["config","requiresApproval"]);if(!(y&&"no_required"!==y))return null;var b=(0,i.css)(T()),h=(0,i.css)(M());return l().createElement(o.Form.Item,{label:t("Assignees"),required:!0},l().createElement(o.Form.List,{name:["config","assignees"],rules:[{validator:function(e,n){var r;return(r=function(){return function(e,t){var n,r,l,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(a,"next",{value:u(0)}),i(a,"throw",{value:u(1)}),i(a,"return",{value:u(2)}),"function"==typeof Symbol&&i(a,Symbol.iterator,{value:function(){return this}}),a;function u(i){return function(u){var c=[i,u];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(e){if(!Array.isArray(n)||0===n.length)throw Error(t("Assignees is required"));return[2]})},function(){var e=this,t=arguments;return new Promise(function(n,l){var o=r.apply(e,t);function a(e){C(o,n,l,a,i,"next",e)}function i(e){C(o,n,l,a,i,"throw",e)}a(void 0)})})()}}]},function(e,n,r){return l().createElement(o.Space,{direction:"vertical",className:b,size:u.marginXS},l().createElement(p.DndContext,{collisionDetection:p.closestCenter,sensors:s,onDragEnd:function(t){var r=t.active,l=t.over;if(l&&r.id!==l.id){var o=e.findIndex(function(e){return String(e.key)===String(r.id)}),a=e.findIndex(function(e){return String(e.key)===String(l.id)});o<0||a<0||n.move(o,a)}}},l().createElement(v.SortableContext,{items:e.map(function(e){return String(e.key)}),strategy:v.verticalListSortingStrategy},l().createElement(o.Space,{direction:"vertical",className:b,size:u.marginXS},e.map(function(t){return l().createElement(V,{key:t.key,className:h,disabled:e.length<2,id:String(t.key)},l().createElement(P,{disabled:e.length<2}),l().createElement(o.Form.Item,{name:[t.name],noStyle:!0},l().createElement(N,null)),l().createElement(o.Button,{type:"text",size:"small","aria-label":"delete",icon:l().createElement(a.DeleteOutlined,null),onClick:function(){return n.remove(t.name)}}))})))),l().createElement(o.Form.ErrorList,{errors:r.errors}),l().createElement(o.Popover,{trigger:"click",open:f,onOpenChange:d,placement:"bottom",content:l().createElement(o.Space,{direction:"vertical"},l().createElement(o.Button,{type:"text",onClick:function(){n.add(null),d(!1)}},t("Select users")),l().createElement(o.Button,{type:"text",onClick:function(){n.add({filter:{}}),d(!1)}},t("Query users")))},l().createElement(o.Button,{block:!0,type:"dashed","aria-label":t("Add assignee"),icon:l().createElement(a.PlusOutlined,null)},t("Add assignee"))))}))}function X(e){var t=e.value,n=e.onChange,a=(0,c.kj)(),i=!0===t?"human_decision":!1===t||null==t?"no_required":u.fd.includes(t)?t:"no_required";return(0,r.useEffect)(function(){t!==i&&(null==n||n(i))},[i,n,t]),l().createElement(o.Radio.Group,{value:i,onChange:function(e){return null==n?void 0:n(e.target.value)},options:[{label:l().createElement(o.Tooltip,{title:a("Do not initiate approval")},l().createElement("span",null,a("No required"))),value:"no_required"},{label:l().createElement(o.Tooltip,{title:a("Initiate approval when needed")},l().createElement("span",null,a("AI decision"))),value:"ai_decision"},{label:l().createElement(o.Tooltip,{title:a("Always initiate approval")},l().createElement("span",null,a("Human decision"))),value:"human_decision"}]})}function L(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","requiresApproval"],label:e("Approval & Notice"),tooltip:e("Configure whether task output should be sent to specified users for notification, carbon copy, or approval"),initialValue:"no_required"},l().createElement(X,null))}var _=n(2951),W=n(4893),q={type:"attachments"};function R(){var e,t=(0,c.kj)(),n=o.Form.useFormInstance(),a=(0,s.useFlowEngine)(),i=o.Form.useWatch(["config","files"],n),u=Array.isArray(e=null!=i?i:n.getFieldValue(["config","files"]))?e:[],m=(0,r.useMemo)(function(){var e,t,n,r,l,o,i,u;return(null!=(t=null!=(n=null==(u=null==(e=a.context.dataSourceManager)||null==(r=e.getDataSource)?void 0:r.call(e,"main"))||null==(l=u.getCollections)?void 0:l.call(u))?n:null==u||null==(i=u.collectionManager)||null==(o=i.getCollections)?void 0:o.call(i))?t:[]).filter(function(e){var t;return!e.hidden&&(null==(t=e.options)?void 0:t.template)==="file"&&e.name}).map(function(e){var t;return{label:null!=(t=e.title)?t:e.name,value:e.name}})},[a.context.dataSourceManager]),f=(0,r.useCallback)(function(e){n.setFieldValue(["config","files"],e)},[n]),d=(0,r.useCallback)(function(e,t){f(u.map(function(n,r){return r===e?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,t):n}))},[u,f]);return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{name:["config","files"],noStyle:!0},l().createElement(_.X,null)),l().createElement(W.f,{value:u,onChange:f,defaultValue:q,getDefaultValue:function(){return{type:"attachments"}},addText:t("Add file"),itemTitle:t("Files"),renderHeader:function(e,n){return"".concat(t("Files")," ").concat(n+1)},renderItem:function(e,n){return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{label:t("Attachment Type"),required:!0},l().createElement(o.Select,{value:e.type,options:[{label:t("File (load via Attachment)"),value:"attachments"},{label:t("File (load via Files collection)"),value:"file_id"},{label:t("File (load via URL)"),value:"file_url"}],onChange:function(t){return d(n,{type:t,collection:"file_id"===t?e.collection:void 0})}})),"file_id"===e.type?l().createElement(o.Form.Item,{label:t("Collection"),required:!0},l().createElement(o.Select,{value:e.collection,options:m,onChange:function(e){return d(n,{collection:e})}})):null,l().createElement(o.Form.Item,{label:function(e,t){switch(t){case"attachments":return e("Attachment field");case"file_id":return e("ID");case"file_url":return e("URL");default:return e("Unknown")}}(t,e.type),required:!0},l().createElement(y.WorkflowVariableInput,{value:e.value,onChange:function(e){return d(n,{value:e})}})))}}))}function B(){var e=(0,c.kj)();return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{name:["config","message","system"],label:e("Background"),tooltip:e("Additional system prompt appended to the AI employee’s definition, used to refine instructions")},l().createElement(y.WorkflowVariableTextArea,{rows:10})),l().createElement(o.Form.Item,{name:["config","message","user"],label:e("Default user message"),tooltip:e("Enter the specific task description")},l().createElement(y.WorkflowVariableTextArea,{rows:10})))}var U=n(3734);function H(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 $=(0,s.observer)(function(e){var t=e.value,n=e.onChange,a=(0,c.kj)(),i=o.Form.useFormInstance(),u=o.Form.useWatch(["config","username"],i),s=(0,f.M)(),m="string"==typeof u?s.getAIEmployeesMap()[u]:void 0,d=s.llmServices,p=s.llmServicesLoading||s.aiEmployeesLoading;(0,r.useEffect)(function(){s.getLLMServices(),s.getAIEmployees()},[s]);var v=(0,r.useMemo)(function(){var e=new Set((0,U.lf)(m,(0,U.i2)(d)).map(function(e){return"".concat(e.llmService,":").concat(e.model)}));return d.map(function(t){return{label:t.llmServiceTitle,options:t.enabledModels.filter(function(n){return e.has("".concat(t.llmService,":").concat(n.value))}).map(function(e){return{label:"".concat(t.llmServiceTitle," / ").concat(e.label),value:"".concat(t.llmService,":").concat(e.value)}})}}).filter(function(e){return e.options.length>0})},[m,d]),g=(0,r.useMemo)(function(){return new Set(v.flatMap(function(e){return e.options.map(function(e){return e.value})}))},[v]),y=(null==t?void 0:t.llmService)&&t.model?"".concat(t.llmService,":").concat(t.model):void 0;return(0,r.useEffect)(function(){y&&!g.has(y)&&(null==n||n(null))},[n,g,y]),l().createElement(o.Select,{allowClear:!0,showSearch:!0,value:y,placeholder:a("Use default model"),options:v,loading:p,notFoundContent:p?l().createElement(o.Spin,{size:"small"}):null,optionFilterProp:"label",onChange:function(e){if(!e){null==n||n(null);return}var t,r=function(e){if(Array.isArray(e))return e}(t=e.split(":"))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var l=[],o=!0,a=!1;try{for(r=r.call(e);!(o=(t=r.next()).done)&&(l.push(t.value),2!==l.length);o=!0);}catch(e){a=!0,n=e}finally{try{o||null==r.return||r.return()}finally{if(a)throw n}}return l}}(t)||function(e){if(e){if("string"==typeof e)return H(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 H(e,2)}}(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.")}(),l=r[0],o=r[1];null==n||n({llmService:l,model:o})}})});function G(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","model"],label:e("Model"),tooltip:e("Leave empty to use AI employee or global default model.")},l().createElement($,null))}function J(){var e,t,n=(e=["\n display: flex;\n flex-direction: column;\n row-gap: ","px;\n margin-bottom: ","px;\n\n .nb-ai-capability-label {\n display: inline-flex;\n align-items: center;\n column-gap: ","px;\n color: ",";\n font-size: ","px;\n font-weight: ",";\n line-height: ",";\n white-space: nowrap;\n }\n\n .nb-ai-capability-control {\n width: 100%;\n min-width: 0;\n }\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return J=function(){return n},n}var Q="preset",K="custom",Y=function(e){return null!==e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"&&!Array.isArray(e)},Z=function(e){return Y(e)&&"string"==typeof e.name};function ee(e){var t=e.title,n=e.description,r=(0,c.kj)(),a=o.theme.useToken().token,i=t?r(t):"",u=n?r(n):"";return l().createElement("div",{style:{display:"flex",flexDirection:"column",gap:a.marginXXS,width:"100%",minWidth:0,padding:"".concat(a.paddingXXS,"px 0")}},l().createElement("div",null,i),u?l().createElement(o.Typography.Text,{type:"secondary",style:{fontSize:a.fontSizeSM},ellipsis:{tooltip:u}},u):null)}var et=(0,s.observer)(function(e){var t=e.type,n=e.value,a=e.onChange,i=(0,c.kj)(),u=o.theme.useToken().token,s=o.Form.useFormInstance(),m=o.Form.useWatch(["config","username"],s),d=(0,f.M)(),p="string"==typeof m?d.getAIEmployeesMap()[m]:void 0,v=(0,r.useMemo)(function(){var e,n,r,l,o;return"skills"===t?null!=(l=null==p||null==(o=p.skillSettings)?void 0:o.skills)?l:[]:null!=(e=null==p||null==(r=p.skillSettings)||null==(n=r.tools)?void 0:n.map(function(e){return e.name}))?e:[]},[p,t]),g=(0,r.useMemo)(function(){return[{label:l().createElement(o.Tooltip,{title:i("skills"===t?"Use the AI employee's default skills for this task.":"Use the AI employee's default tools for this task.")},l().createElement("span",null,i("Preset"))),value:Q},{label:l().createElement(o.Tooltip,{title:i("skills"===t?"Select the specific skills this task is allowed to use.":"Select the specific tools this task is allowed to use.")},l().createElement("span",null,i("Custom"))),value:K}]},[i,t]),y=Array.isArray(n)?K:Q,h="skills"===t?"aiSkills":"aiTools";return(0,r.useEffect)(function(){d.getAIEmployees()},[d]),l().createElement(o.Space,{direction:"vertical",size:u.marginXXS,style:{width:"100%"}},l().createElement(o.Radio.Group,{value:y,onChange:function(e){if(e.target.value===Q){null==a||a(void 0);return}null==a||a(v)},options:g}),y===K?l().createElement(b.l,{key:"string"==typeof m?m:void 0,multiple:!0,value:n,onChange:function(e){null==a||a(null==e?void 0:e.filter(function(e){return v.includes(e)}))},manual:!1,popupMatchSelectWidth:!0,placeholder:i("skills"===t?"Leave empty to disable skills.":"Leave empty to disable tools."),fieldNames:{label:"title",value:"name"},service:{resource:h,action:"listBinding",params:{username:m}},optionFilter:Z,optionRender:function(e){var t=e.data;return Z(t)?l().createElement(ee,{title:t.title,description:t.description}):null}}):null)});function en(e){var t=e.name,n=e.label,r=e.tooltip,u=e.children,c=o.theme.useToken().token,s=(0,i.css)(J(),c.marginXXS,c.margin,c.marginXXS,c.colorText,c.fontSize,c.fontWeightStrong,c.lineHeight);return l().createElement("div",{className:s},l().createElement("span",{className:"nb-ai-capability-label"},n,l().createElement(o.Tooltip,{title:r},l().createElement(a.QuestionCircleOutlined,null))),l().createElement("div",{className:"nb-ai-capability-control"},l().createElement(o.Form.Item,{name:t,noStyle:!0},u)))}function er(){var e=(0,c.kj)();return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{name:["config","skillSettings","skillsVersion"],initialValue:2,hidden:!0},l().createElement(_.X,null)),l().createElement(o.Form.Item,{name:["config","skillSettings","toolsVersion"],initialValue:2,hidden:!0},l().createElement(_.X,null)),l().createElement(en,{name:["config","skillSettings","skills"],label:e("Skills"),tooltip:e("Configure the skills available to this task")},l().createElement(et,{type:"skills"})),l().createElement(en,{name:["config","skillSettings","tools"],label:e("Tools"),tooltip:e("Configure the tools available to this task")},l().createElement(et,{type:"tools"})))}function el(){var e=(0,c.kj)(),t=(0,r.useMemo)(function(){return JSON.stringify({type:"object",properties:{result:{title:e("Response result"),type:"string",description:"The text message sent to the user"}}},null,2)},[e]);return l().createElement(o.Form.Item,{name:["config","structuredOutput","schema"],label:e("Structured output"),tooltip:e("Define the data structure of the final output of the node"),initialValue:t,rules:[{required:!0}],extra:l().createElement(o.Space,{size:4},l().createElement("span",null,e("Syntax references")),l().createElement(o.Typography.Link,{href:"https://json-schema.org",target:"_blank",rel:"noreferrer"},"JSON Schema"))},l().createElement(y.WorkflowVariableJsonTextArea,{json5:!0,autoSize:{minRows:10}}))}var eo=(0,s.observer)(function(e){var t=e.value,n=e.onChange,a=(0,c.kj)(),i=o.Form.useFormInstance(),u=(0,f.M)(),s=o.Form.useWatch(["config","model"],i),m=(0,r.useMemo)(function(){var e=u.llmServices;return(null==s?void 0:s.llmService)?e.find(function(e){return e.llmService===s.llmService}):void 0},[u.llmServices,s]),d=!!s&&(null==m?void 0:m.supportWebSearch)===!1;return(0,r.useEffect)(function(){u.getLLMServices()},[u]),(0,r.useEffect)(function(){d&&t&&(null==n||n(!1))},[d,n,t]),l().createElement(o.Space,{direction:"vertical"},l().createElement(o.Switch,{checked:!!t,disabled:d,onChange:function(e){return null==n?void 0:n(e)}}),d?l().createElement(o.Typography.Text,{type:"secondary"},a("Web search not supported")):null)});function ea(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","webSearch"],label:e("Web search"),tooltip:e("Enable the LLM to use web search tools during task execution"),initialValue:!1},l().createElement(eo,null))}function ei(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function eu(){var e=ei(["\n .ant-form-item-control-input-content > .ant-select,\n .ant-form-item-control-input-content > .ant-space-compact {\n width: 100%;\n }\n "]);return eu=function(){return e},e}function ec(){var e=ei(["\n display: flex;\n align-items: center;\n column-gap: ","px;\n margin-bottom: ","px;\n\n .nb-ai-employee-inline-label {\n display: inline-flex;\n align-items: center;\n column-gap: ","px;\n color: ",";\n font-size: ","px;\n font-weight: ",";\n line-height: ",";\n }\n "]);return ec=function(){return e},e}function es(){var e=(0,c.kj)(),t=o.Form.useFormInstance(),n=o.theme.useToken().token,r=(0,i.css)(eu()),s=(0,i.css)(ec(),n.marginXS,n.margin,n.marginXXS,n.colorText,n.fontSize,n.fontWeightStrong,n.lineHeight);return l().createElement(o.Tabs,{items:[{key:"task",label:e("Task"),forceRender:!0,children:l().createElement("div",{className:r},l().createElement("div",{className:s},l().createElement("span",{className:"nb-ai-employee-inline-label"},e("AI employee"),l().createElement(o.Tooltip,{title:e("Choose the AI employee for this task")},l().createElement(a.QuestionCircleOutlined,null))),l().createElement(o.Form.Item,{name:["config","username"],initialValue:u.zw,noStyle:!0},l().createElement(d,{onChange:function(e){t.setFieldValue(["config","username"],e),t.setFieldValue(["config","skillSettings","skills"],void 0),t.setFieldValue(["config","skillSettings","tools"],void 0)}}))),l().createElement(G,null),l().createElement(x,null),l().createElement(B,null),l().createElement(o.Form.Item,{label:e("Attachments"),tooltip:e("Select the file or image to be sent to the LLM")},l().createElement(R,null)),l().createElement(er,null),l().createElement(ea,null))},{key:"feedback",label:e("Feedback & Notification"),forceRender:!0,children:l().createElement("div",{className:r},l().createElement(el,null),l().createElement(L,null),l().createElement(D,null))}]})}}}]);
|
|
10
|
+
"use strict";(self.webpackChunk_nocobase_plugin_ai=self.webpackChunk_nocobase_plugin_ai||[]).push([["705"],{2951:function(e,t,n){n.d(t,{X:function(){return r}});function r(e){return null}},4893:function(e,t,n){n.d(t,{f:function(){return f}});var r=n(9155),l=n.n(r),o=n(7375),a=n(2059);function i(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 u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,l=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=l){var o=[],a=!0,i=!1;try{for(l=l.call(e);!(a=(n=l.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){i=!0,r=e}finally{try{a||null==l.return||l.return()}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return i(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 i(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.")}()}var c=function(e){return Array.from({length:e},function(e,t){return String(t)})},s=function(e,t,n){var r=e.slice(),l=u(r.splice(t,1),1)[0];return r.splice(n,0,l),r},m=function(e,t,n){var r=Number(e);return Number.isNaN(r)?e:r===t?String(n):t<n&&r>t&&r<=n?String(r-1):t>n&&r>=n&&r<t?String(r+1):e},f=function(e){var t=e.value,n=e.onChange,i=e.defaultValue,f=e.getDefaultValue,d=e.addText,p=e.itemTitle,v=e.size,g=e.bordered,y=e.defaultOpenPanelCount,b=void 0===y?5:y,h=e.renderHeader,E=e.renderItem,S=a.theme.useToken().token,k=Array.isArray(t)?t:[],w=u((0,r.useState)(function(){return c(Math.min(k.length,b))}),2),A=w[0],j=w[1];(0,r.useEffect)(function(){j(function(e){var t=e.filter(function(e){return Number(e)<k.length});return t.length>0||0===k.length?t:c(Math.min(k.length,b))})},[b,k.length]);var x=(0,r.useMemo)(function(){return k.map(function(e,t){return{key:String(t),label:h?h(e,t):"".concat(p," ").concat(t+1),extra:l().createElement(a.Space,{size:4,onClick:function(e){return e.stopPropagation()}},l().createElement(a.Button,{type:"text",size:"small","aria-label":"move-up",icon:l().createElement(o.UpOutlined,null),disabled:0===t,onClick:function(){0!==t&&(null==n||n(s(k,t,t-1)),j(function(e){return e.map(function(e){return m(e,t,t-1)})}))}}),l().createElement(a.Button,{type:"text",size:"small","aria-label":"move-down",icon:l().createElement(o.DownOutlined,null),disabled:t===k.length-1,onClick:function(){t!==k.length-1&&(null==n||n(s(k,t,t+1)),j(function(e){return e.map(function(e){return m(e,t,t+1)})}))}}),l().createElement(a.Button,{type:"text",size:"small","aria-label":"delete",icon:l().createElement(o.DeleteOutlined,null),onClick:function(){var e=k.filter(function(e,n){return n!==t});null==n||n(e),j(function(n){var r;return r=e.length,n.filter(function(e){return Number(e)!==t}).map(function(e){var n=Number(e);return n>t?String(n-1):e}).filter(function(e){return Number(e)<r})})}})),children:E(e,t),forceRender:!0}})},[p,k,n,h,E]);return l().createElement(a.Flex,{vertical:!0,gap:"middle"},k.length>0?l().createElement(a.Collapse,{size:void 0===v?"small":v,bordered:void 0===g||g,activeKey:A,items:x,onChange:function(e){return j(Array.isArray(e)?e.map(String):[String(e)])}}):l().createElement(a.Empty,{style:{border:"".concat(S.lineWidth,"px dashed ").concat(S.colorBorder),borderRadius:S.borderRadiusLG,margin:0,padding:S.padding}}),l().createElement(a.Button,{block:!0,type:"dashed",icon:l().createElement(o.PlusOutlined,null),onClick:function(){var e=f?f():i,t=k.concat(e);null==n||n(t),j(function(e){return Array.from(new Set(e.concat(String(t.length-1))))})}},d))}},5208:function(e,t,n){n.d(t,{AIEmployeeFieldset:function(){return em}});var r=n(9155),l=n.n(r),o=n(2059),a=n(7375),i=n(5477),u=n(4221),c=n(9488),s=n(7694),m=n(1204),f=n(3617),d=(0,s.observer)(function(e){var t=e.value,n=e.onChange,o=(0,f.M)(),a=o.aiEmployees,i=(0,r.useMemo)(function(){return a.find(function(e){return e.username===t})},[a,t]);return(0,r.useEffect)(function(){o.getAIEmployees()},[o]),l().createElement(m.Y,{aiEmployees:a,currentEmployee:i,onSelect:function(e){return null==n?void 0:n(e.username)}})}),p=n(9180),v=n(5428);"u">typeof window&&void 0!==window.document&&window.document.createElement;let g=Object.freeze({Translate:{toString(e){if(!e)return;let{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;let{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[g.Translate.toString(e),g.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}});var y=n(197),b=n(293);function h(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 E(){var e,t,n=(e=["\n display: flex;\n width: 100%;\n\n .ant-select {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .ant-btn {\n flex-shrink: 0;\n margin-inline-start: -","px;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n\n .ant-btn:hover,\n .ant-btn:focus {\n z-index: 2;\n }\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return E=function(){return n},n}function S(e){if(Array.isArray(e)){var t=(function(e){if(Array.isArray(e))return e}(e)||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var l=[],o=!0,a=!1;try{for(r=r.call(e);!(o=(t=r.next()).done)&&(l.push(t.value),1!==l.length);o=!0);}catch(e){a=!0,n=e}finally{try{o||null==r.return||r.return()}finally{if(a)throw n}}return l}}(e)||function(e){if(e){if("string"==typeof e)return h(e,1);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 h(e,1)}}(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.")}())[0];return null==t?void 0:String(t)}return null==e?void 0:String(e)}function k(e){return e.isForeignKey||"context"===e.type?"users"===e.target:"users"===e.collectionName&&"id"===e.name}function w(e){var t,n=null!=(t=null==e?void 0:e.paths)?t:[];return n.length?"{{".concat(n.join("."),"}}"):""}function A(e){if("string"==typeof e){var t=e.trim().match(/^\{\{\s*(.+?)\s*\}\}$/);if(t)return t[1].split(".")}}function j(e){var t,n=e.value,r=e.onChange,a=o.theme.useToken().token,u="string"==typeof(t=S(n))&&t.includes("{{")?S(n):void 0,c=(0,y.useWorkflowVariableOptions)({types:[k]}),m=(0,i.css)(E(),a.lineWidth);return l().createElement(o.Space.Compact,{className:m},l().createElement(b.l,{manual:!1,fieldNames:{label:"nickname",value:"id"},service:{resource:"users"},value:u?void 0:n,onChange:function(e){return null==r?void 0:r(e)}}),l().createElement(s.FlowContextSelector,{value:u,metaTree:c,parseValueToPath:A,formatPathToValue:w,onlyLeafSelectable:!0,dropdownFooter:null,onChange:function(e){e&&(null==r||r(e))}}))}function x(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","userId"],label:e("Operator"),tooltip:e("Complete the task using operator permissions"),rules:[{required:!0}]},l().createElement(j,null))}function O(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 C(e,t,n,r,l,o,a){try{var i=e[o](a),u=i.value}catch(e){n(e);return}i.done?t(u):Promise.resolve(u).then(r,l)}function F(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function I(){var e=F(["\n width: 100%;\n padding: ","px;\n border: ","px dashed ",";\n "]);return I=function(){return e},e}function T(){var e=F(["\n width: 100%;\n "]);return T=function(){return e},e}function M(){var e=F(["\n width: 100%;\n\n &.ant-space.ant-space-horizontal {\n flex-wrap: nowrap;\n }\n\n > .ant-space-item:nth-child(2) {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n .ant-form-item {\n margin-bottom: 0;\n }\n "]);return M=function(){return e},e}var z=l().createContext(null);function N(e){var t,n=e.value,r=e.onChange,a=o.theme.useToken().token,u=(0,i.css)(I(),a.paddingSM,a.lineWidth,a.colorBorder);return null===n||(void 0===n?"undefined":n&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)!="object"||Array.isArray(n)?l().createElement(j,{value:n,onChange:function(e){return null==r?void 0:r(e)}}):l().createElement("div",{className:u},l().createElement(y.FilterDynamicComponent,{collection:"users",value:null!=(t=n.filter)?t:{},onChange:function(e){return null==r?void 0:r({filter:null!=e?e:{}})}}))}function P(e){var t,n,r=e.disabled,i=(0,c.kj)(),u=o.theme.useToken().token,s=l().useContext(z);return l().createElement(o.Button,(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}({ref:r||null==s?void 0:s.setActivatorNodeRef,"aria-label":i("Drag sort"),disabled:r,icon:l().createElement(a.MenuOutlined,null),type:"text",size:"small"},r?{}:null==s?void 0:s.attributes,r?{}:null==s?void 0:s.listeners),n=n={style:{color:u.colorTextTertiary,cursor:r?"not-allowed":"grab"}},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))}function V(e){var t=e.children,n=e.className,r=e.disabled,a=e.id,i=(0,v.useSortable)({disabled:r,id:a}),u=i.attributes,c=i.isDragging,s=i.listeners,m=i.setActivatorNodeRef,f=i.setNodeRef,d=i.transform,p=i.transition,y=o.theme.useToken().token;return l().createElement(z.Provider,{value:{attributes:u,listeners:s,setActivatorNodeRef:m}},l().createElement(o.Space,{ref:f,align:"center",className:n,size:y.marginXXS,style:{position:c?"relative":void 0,zIndex:c?1:void 0,transform:g.Transform.toString(d),transition:p}},t))}function D(){var e,t=(0,c.kj)(),n=o.Form.useFormInstance(),u=o.theme.useToken().token,s=(0,p.useSensors)((0,p.useSensor)(p.PointerSensor,{activationConstraint:{distance:1}})),m=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 l=[],o=!0,a=!1;try{for(r=r.call(e);!(o=(t=r.next()).done)&&(l.push(t.value),2!==l.length);o=!0);}catch(e){a=!0,n=e}finally{try{o||null==r.return||r.return()}finally{if(a)throw n}}return l}}(e)||function(e){if(e){if("string"==typeof e)return O(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 O(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.")}(),f=m[0],d=m[1],g=o.Form.useWatch(["config","requiresApproval"],n),y=null!=g?g:n.getFieldValue(["config","requiresApproval"]);if(!(y&&"no_required"!==y))return null;var b=(0,i.css)(T()),h=(0,i.css)(M());return l().createElement(o.Form.Item,{label:t("Assignees"),required:!0},l().createElement(o.Form.List,{name:["config","assignees"],rules:[{validator:function(e,n){var r;return(r=function(){return function(e,t){var n,r,l,o={label:0,sent:function(){if(1&l[0])throw l[1];return l[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(a,"next",{value:u(0)}),i(a,"throw",{value:u(1)}),i(a,"return",{value:u(2)}),"function"==typeof Symbol&&i(a,Symbol.iterator,{value:function(){return this}}),a;function u(i){return function(u){var c=[i,u];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(o=0)),o;)try{if(n=1,r&&(l=2&c[0]?r.return:c[0]?r.throw||((l=r.return)&&l.call(r),0):r.next)&&!(l=l.call(r,c[1])).done)return l;switch(r=0,l&&(c=[2&c[0],l.value]),c[0]){case 0:case 1:l=c;break;case 4:return o.label++,{value:c[1],done:!1};case 5:o.label++,r=c[1],c=[0];continue;case 7:c=o.ops.pop(),o.trys.pop();continue;default:if(!(l=(l=o.trys).length>0&&l[l.length-1])&&(6===c[0]||2===c[0])){o=0;continue}if(3===c[0]&&(!l||c[1]>l[0]&&c[1]<l[3])){o.label=c[1];break}if(6===c[0]&&o.label<l[1]){o.label=l[1],l=c;break}if(l&&o.label<l[2]){o.label=l[2],o.ops.push(c);break}l[2]&&o.ops.pop(),o.trys.pop();continue}c=t.call(e,o)}catch(e){c=[6,e],r=0}finally{n=l=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}(this,function(e){if(!Array.isArray(n)||0===n.length)throw Error(t("Assignees is required"));return[2]})},function(){var e=this,t=arguments;return new Promise(function(n,l){var o=r.apply(e,t);function a(e){C(o,n,l,a,i,"next",e)}function i(e){C(o,n,l,a,i,"throw",e)}a(void 0)})})()}}]},function(e,n,r){return l().createElement(o.Space,{direction:"vertical",className:b,size:u.marginXS},l().createElement(p.DndContext,{collisionDetection:p.closestCenter,sensors:s,onDragEnd:function(t){var r=t.active,l=t.over;if(l&&r.id!==l.id){var o=e.findIndex(function(e){return String(e.key)===String(r.id)}),a=e.findIndex(function(e){return String(e.key)===String(l.id)});o<0||a<0||n.move(o,a)}}},l().createElement(v.SortableContext,{items:e.map(function(e){return String(e.key)}),strategy:v.verticalListSortingStrategy},l().createElement(o.Space,{direction:"vertical",className:b,size:u.marginXS},e.map(function(t){return l().createElement(V,{key:t.key,className:h,disabled:e.length<2,id:String(t.key)},l().createElement(P,{disabled:e.length<2}),l().createElement(o.Form.Item,{name:[t.name],noStyle:!0},l().createElement(N,null)),l().createElement(o.Button,{type:"text",size:"small","aria-label":"delete",icon:l().createElement(a.DeleteOutlined,null),onClick:function(){return n.remove(t.name)}}))})))),l().createElement(o.Form.ErrorList,{errors:r.errors}),l().createElement(o.Popover,{trigger:"click",open:f,onOpenChange:d,placement:"bottom",content:l().createElement(o.Space,{direction:"vertical"},l().createElement(o.Button,{type:"text",onClick:function(){n.add(null),d(!1)}},t("Select users")),l().createElement(o.Button,{type:"text",onClick:function(){n.add({filter:{}}),d(!1)}},t("Query users")))},l().createElement(o.Button,{block:!0,type:"dashed","aria-label":t("Add assignee"),icon:l().createElement(a.PlusOutlined,null)},t("Add assignee"))))}))}function X(e){var t=e.value,n=e.onChange,a=(0,c.kj)(),i=!0===t?"human_decision":!1===t||null==t?"no_required":u.fd.includes(t)?t:"no_required";return(0,r.useEffect)(function(){t!==i&&(null==n||n(i))},[i,n,t]),l().createElement(o.Radio.Group,{value:i,onChange:function(e){return null==n?void 0:n(e.target.value)},options:[{label:l().createElement(o.Tooltip,{title:a("Do not initiate approval")},l().createElement("span",null,a("No required"))),value:"no_required"},{label:l().createElement(o.Tooltip,{title:a("Initiate approval when needed")},l().createElement("span",null,a("AI decision"))),value:"ai_decision"},{label:l().createElement(o.Tooltip,{title:a("Always initiate approval")},l().createElement("span",null,a("Human decision"))),value:"human_decision"}]})}function L(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","requiresApproval"],label:e("Approval & Notice"),tooltip:e("Configure whether task output should be sent to specified users for notification, carbon copy, or approval"),initialValue:"no_required"},l().createElement(X,null))}var _=n(2951),W=n(4893),q={type:"attachments"};function R(){var e,t=(0,c.kj)(),n=o.Form.useFormInstance(),a=(0,s.useFlowEngine)(),i=o.Form.useWatch(["config","files"],n),u=Array.isArray(e=null!=i?i:n.getFieldValue(["config","files"]))?e:[],m=(0,r.useMemo)(function(){var e,t,n,r,l,o,i,u;return(null!=(t=null!=(n=null==(u=null==(e=a.context.dataSourceManager)||null==(r=e.getDataSource)?void 0:r.call(e,"main"))||null==(l=u.getCollections)?void 0:l.call(u))?n:null==u||null==(i=u.collectionManager)||null==(o=i.getCollections)?void 0:o.call(i))?t:[]).filter(function(e){var t;return!e.hidden&&(null==(t=e.options)?void 0:t.template)==="file"&&e.name}).map(function(e){var t;return{label:null!=(t=e.title)?t:e.name,value:e.name}})},[a.context.dataSourceManager]),f=(0,r.useCallback)(function(e){n.setFieldValue(["config","files"],e)},[n]),d=(0,r.useCallback)(function(e,t){f(u.map(function(n,r){return r===e?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,t):n}))},[u,f]);return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{name:["config","files"],noStyle:!0},l().createElement(_.X,null)),l().createElement(W.f,{value:u,onChange:f,defaultValue:q,getDefaultValue:function(){return{type:"attachments"}},addText:t("Add file"),itemTitle:t("Files"),renderHeader:function(e,n){return"".concat(t("Files")," ").concat(n+1)},renderItem:function(e,n){return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{label:t("Attachment Type"),required:!0},l().createElement(o.Select,{value:e.type,options:[{label:t("File (load via Attachment)"),value:"attachments"},{label:t("File (load via Files collection)"),value:"file_id"},{label:t("File (load via URL)"),value:"file_url"}],onChange:function(t){return d(n,{type:t,collection:"file_id"===t?e.collection:void 0})}})),"file_id"===e.type?l().createElement(o.Form.Item,{label:t("Collection"),required:!0},l().createElement(o.Select,{value:e.collection,options:m,onChange:function(e){return d(n,{collection:e})}})):null,l().createElement(o.Form.Item,{label:function(e,t){switch(t){case"attachments":return e("Attachment field");case"file_id":return e("ID");case"file_url":return e("URL");default:return e("Unknown")}}(t,e.type),required:!0},l().createElement(y.WorkflowVariableInput,{value:e.value,onChange:function(e){return d(n,{value:e})}})))}}))}function B(){var e=(0,c.kj)();return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{name:["config","message","system"],label:e("Background"),tooltip:e("Additional system prompt appended to the AI employee’s definition, used to refine instructions")},l().createElement(y.WorkflowVariableTextArea,{rows:10})),l().createElement(o.Form.Item,{name:["config","message","user"],label:e("Default user message"),tooltip:e("Enter the specific task description")},l().createElement(y.WorkflowVariableTextArea,{rows:10})))}var U=n(3734);function H(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 $=(0,s.observer)(function(e){var t=e.value,n=e.onChange,a=(0,c.kj)(),i=o.Form.useFormInstance(),u=o.Form.useWatch(["config","username"],i),s=(0,f.M)(),m="string"==typeof u?s.getAIEmployeesMap()[u]:void 0,d=s.llmServices,p=s.llmServicesLoading||s.aiEmployeesLoading;(0,r.useEffect)(function(){s.getLLMServices(),s.getAIEmployees()},[s]);var v=(0,r.useMemo)(function(){var e=new Set((0,U.lf)(m,(0,U.i2)(d)).map(function(e){return"".concat(e.llmService,":").concat(e.model)}));return d.map(function(t){return{label:t.llmServiceTitle,options:t.enabledModels.filter(function(n){return e.has("".concat(t.llmService,":").concat(n.value))}).map(function(e){return{label:"".concat(t.llmServiceTitle," / ").concat(e.label),value:"".concat(t.llmService,":").concat(e.value)}})}}).filter(function(e){return e.options.length>0})},[m,d]),g=(0,r.useMemo)(function(){return new Set(v.flatMap(function(e){return e.options.map(function(e){return e.value})}))},[v]),y=(null==t?void 0:t.llmService)&&t.model?"".concat(t.llmService,":").concat(t.model):void 0;return(0,r.useEffect)(function(){y&&!g.has(y)&&(null==n||n(null))},[n,g,y]),l().createElement(o.Select,{allowClear:!0,showSearch:!0,value:y,placeholder:a("Use default model"),options:v,loading:p,notFoundContent:p?l().createElement(o.Spin,{size:"small"}):null,optionFilterProp:"label",onChange:function(e){if(!e){null==n||n(null);return}var t,r=function(e){if(Array.isArray(e))return e}(t=e.split(":"))||function(e){var t,n,r=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var l=[],o=!0,a=!1;try{for(r=r.call(e);!(o=(t=r.next()).done)&&(l.push(t.value),2!==l.length);o=!0);}catch(e){a=!0,n=e}finally{try{o||null==r.return||r.return()}finally{if(a)throw n}}return l}}(t)||function(e){if(e){if("string"==typeof e)return H(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 H(e,2)}}(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.")}(),l=r[0],o=r[1];null==n||n({llmService:l,model:o})}})});function G(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","model"],label:e("Model"),tooltip:e("Leave empty to use AI employee or global default model.")},l().createElement($,null))}function J(){var e,t,n=(e=["\n display: flex;\n flex-direction: column;\n row-gap: ","px;\n margin-bottom: ","px;\n\n .nb-ai-capability-label {\n display: inline-flex;\n align-items: center;\n column-gap: ","px;\n color: ",";\n font-size: ","px;\n font-weight: ",";\n line-height: ",";\n white-space: nowrap;\n }\n\n .nb-ai-capability-control {\n width: 100%;\n min-width: 0;\n }\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return J=function(){return n},n}var Q="preset",K="custom",Y=function(e){return null!==e&&(void 0===e?"undefined":e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"&&!Array.isArray(e)},Z=function(e){return Y(e)&&"string"==typeof e.name};function ee(e){var t=e.title,n=e.description,r=(0,c.kj)(),a=o.theme.useToken().token,i=t?r(t):"",u=n?r(n):"";return l().createElement("div",{style:{display:"flex",flexDirection:"column",gap:a.marginXXS,width:"100%",minWidth:0,padding:"".concat(a.paddingXXS,"px 0")}},l().createElement("div",null,i),u?l().createElement(o.Typography.Text,{type:"secondary",style:{fontSize:a.fontSizeSM},ellipsis:{tooltip:u}},u):null)}var et=(0,s.observer)(function(e){var t=e.type,n=e.value,a=e.onChange,i=(0,c.kj)(),u=o.theme.useToken().token,s=o.Form.useFormInstance(),m=o.Form.useWatch(["config","username"],s),d=(0,f.M)(),p="string"==typeof m?d.getAIEmployeesMap()[m]:void 0,v=(0,r.useMemo)(function(){var e,n,r,l,o;return"skills"===t?null!=(l=null==p||null==(o=p.skillSettings)?void 0:o.skills)?l:[]:null!=(e=null==p||null==(r=p.skillSettings)||null==(n=r.tools)?void 0:n.map(function(e){return e.name}))?e:[]},[p,t]),g=(0,r.useMemo)(function(){return[{label:l().createElement(o.Tooltip,{title:i("skills"===t?"Use the AI employee's default skills for this task.":"Use the AI employee's default tools for this task.")},l().createElement("span",null,i("Preset"))),value:Q},{label:l().createElement(o.Tooltip,{title:i("skills"===t?"Select the specific skills this task is allowed to use.":"Select the specific tools this task is allowed to use.")},l().createElement("span",null,i("Custom"))),value:K}]},[i,t]),y=Array.isArray(n)?K:Q,h="skills"===t?"aiSkills":"aiTools";return(0,r.useEffect)(function(){d.getAIEmployees()},[d]),l().createElement(o.Space,{direction:"vertical",size:u.marginXXS,style:{width:"100%"}},l().createElement(o.Radio.Group,{value:y,onChange:function(e){if(e.target.value===Q){null==a||a(void 0);return}null==a||a(v)},options:g}),y===K?l().createElement(b.l,{key:"string"==typeof m?m:void 0,multiple:!0,value:n,onChange:function(e){null==a||a(null==e?void 0:e.filter(function(e){return v.includes(e)}))},manual:!1,popupMatchSelectWidth:!0,placeholder:i("skills"===t?"Leave empty to disable skills.":"Leave empty to disable tools."),fieldNames:{label:"title",value:"name"},service:{resource:h,action:"listBinding",params:{username:m}},optionFilter:Z,optionRender:function(e){var t=e.data;return Z(t)?l().createElement(ee,{title:t.title,description:t.description}):null}}):null)});function en(e){var t=e.name,n=e.label,r=e.tooltip,u=e.children,c=o.theme.useToken().token,s=(0,i.css)(J(),c.marginXXS,c.margin,c.marginXXS,c.colorText,c.fontSize,c.fontWeightStrong,c.lineHeight);return l().createElement("div",{className:s},l().createElement("span",{className:"nb-ai-capability-label"},n,l().createElement(o.Tooltip,{title:r},l().createElement(a.QuestionCircleOutlined,null))),l().createElement("div",{className:"nb-ai-capability-control"},l().createElement(o.Form.Item,{name:t,noStyle:!0},u)))}function er(){var e=(0,c.kj)();return l().createElement(l().Fragment,null,l().createElement(o.Form.Item,{name:["config","skillSettings","skillsVersion"],initialValue:2,hidden:!0},l().createElement(_.X,null)),l().createElement(o.Form.Item,{name:["config","skillSettings","toolsVersion"],initialValue:2,hidden:!0},l().createElement(_.X,null)),l().createElement(en,{name:["config","skillSettings","skills"],label:e("Skills"),tooltip:e("Configure the skills available to this task")},l().createElement(et,{type:"skills"})),l().createElement(en,{name:["config","skillSettings","tools"],label:e("Tools"),tooltip:e("Configure the tools available to this task")},l().createElement(et,{type:"tools"})))}function el(){var e=(0,c.kj)(),t=(0,r.useMemo)(function(){return JSON.stringify({type:"object",properties:{result:{title:e("Response result"),type:"string",description:"The text message sent to the user"}}},null,2)},[e]);return l().createElement(o.Form.Item,{name:["config","structuredOutput","schema"],label:e("Structured output"),tooltip:e("Define the data structure of the final output of the node"),initialValue:t,rules:[{required:!0}],extra:l().createElement(o.Space,{size:4},l().createElement("span",null,e("Syntax references")),l().createElement(o.Typography.Link,{href:"https://json-schema.org",target:"_blank",rel:"noreferrer"},"JSON Schema"))},l().createElement(y.WorkflowVariableJsonTextArea,{json5:!0,autoSize:{minRows:10}}))}var eo=n(6905),ea=(0,s.observer)(function(e){var t=e.value,n=e.onChange,a=(0,c.kj)(),i=o.Form.useFormInstance(),u=(0,f.M)(),s=o.Form.useWatch(["config","model"],i),m=(0,r.useMemo)(function(){var e=u.llmServices;return(null==s?void 0:s.llmService)?e.find(function(e){return e.llmService===s.llmService}):void 0},[u.llmServices,s]),d=!!s&&!(0,eo.v)(m,s.model);return(0,r.useEffect)(function(){u.getLLMServices()},[u]),(0,r.useEffect)(function(){d&&t&&(null==n||n(!1))},[d,n,t]),l().createElement(o.Space,{direction:"vertical"},l().createElement(o.Switch,{checked:!!t,disabled:d,onChange:function(e){return null==n?void 0:n(e)}}),d?l().createElement(o.Typography.Text,{type:"secondary"},a("Web search not supported")):null)});function ei(){var e=(0,c.kj)();return l().createElement(o.Form.Item,{name:["config","webSearch"],label:e("Web search"),tooltip:e("Enable the LLM to use web search tools during task execution"),initialValue:!1},l().createElement(ea,null))}function eu(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function ec(){var e=eu(["\n .ant-form-item-control-input-content > .ant-select,\n .ant-form-item-control-input-content > .ant-space-compact {\n width: 100%;\n }\n "]);return ec=function(){return e},e}function es(){var e=eu(["\n display: flex;\n align-items: center;\n column-gap: ","px;\n margin-bottom: ","px;\n\n .nb-ai-employee-inline-label {\n display: inline-flex;\n align-items: center;\n column-gap: ","px;\n color: ",";\n font-size: ","px;\n font-weight: ",";\n line-height: ",";\n }\n "]);return es=function(){return e},e}function em(){var e=(0,c.kj)(),t=o.Form.useFormInstance(),n=o.theme.useToken().token,r=(0,i.css)(ec()),s=(0,i.css)(es(),n.marginXS,n.margin,n.marginXXS,n.colorText,n.fontSize,n.fontWeightStrong,n.lineHeight);return l().createElement(o.Tabs,{items:[{key:"task",label:e("Task"),forceRender:!0,children:l().createElement("div",{className:r},l().createElement("div",{className:s},l().createElement("span",{className:"nb-ai-employee-inline-label"},e("AI employee"),l().createElement(o.Tooltip,{title:e("Choose the AI employee for this task")},l().createElement(a.QuestionCircleOutlined,null))),l().createElement(o.Form.Item,{name:["config","username"],initialValue:u.zw,noStyle:!0},l().createElement(d,{onChange:function(e){t.setFieldValue(["config","username"],e),t.setFieldValue(["config","skillSettings","skills"],void 0),t.setFieldValue(["config","skillSettings","tools"],void 0)}}))),l().createElement(G,null),l().createElement(x,null),l().createElement(B,null),l().createElement(o.Form.Item,{label:e("Attachments"),tooltip:e("Select the file or image to be sent to the LLM")},l().createElement(R,null)),l().createElement(er,null),l().createElement(ei,null))},{key:"feedback",label:e("Feedback & Notification"),forceRender:!0,children:l().createElement("div",{className:r},l().createElement(el,null),l().createElement(L,null),l().createElement(D,null))}]})}}}]);
|