@nocobase/plugin-ai 2.2.0-beta.17 → 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/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/client/{705.19b642db34de438a.js → 705.a4fe26945d175e8a.js} +1 -1
- package/dist/client/index.js +3 -3
- 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 +1 -0
- package/dist/client-v2/repositories/AIConfigRepository.d.ts +2 -0
- package/dist/externalVersion.js +18 -16
- package/dist/locale/en-US.json +3 -4
- package/dist/locale/zh-CN.json +3 -4
- 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 +6 -0
- package/dist/swagger/schemas.d.ts +6 -0
- package/dist/swagger/schemas.js +6 -0
- package/package.json +2 -2
- 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,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.
|
|
@@ -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))}]})}}}]);
|