@epam/ai-dial-toolset-editor 1.3.0-dev.16 → 1.3.0-dev.161

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ToolsetEditor.d.ts","sourceRoot":"","sources":["../../../src/components/ToolsetEditor/ToolsetEditor.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AA4C5E,uKAAuK;AACvK,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA6bhD,CAAC"}
1
+ {"version":3,"file":"ToolsetEditor.d.ts","sourceRoot":"","sources":["../../../src/components/ToolsetEditor/ToolsetEditor.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AA4C5E,uKAAuK;AACvK,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAkdhD,CAAC"}
package/index.css CHANGED
@@ -1 +1,2 @@
1
- .sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.visible{visibility:visible}.block{display:block}.inline{display:inline}.flex{display:flex}.hidden{display:none}.max-w-\[1060px\]{max-width:1060px}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.border-t{border-top-width:1px}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.px-2{padding-left:.5rem;padding-right:.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-start{text-align:start}.text-primary{color:var(--text-primary,#161b2d)}.text-secondary{color:var(--text-secondary,#57647a)}@media (min-width:1280px){.desktop\:not-sr-only{height:auto;margin:0;overflow:visible;padding:0;position:static;width:auto;clip:auto;white-space:normal}}
1
+ /*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
2
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid}}}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.block{display:block}.flex{display:flex}.inline{display:inline}.max-w-\[1060px\]{max-width:1060px}.shrink-0{flex-shrink:0}.flex-col{flex-direction:column}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-tertiary{border-color:var(--stroke-tertiary,#e0e6f0)}.px-2{padding-inline:.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-start{text-align:start}.text-primary{color:var(--text-primary,#161b2d)}.text-secondary{color:var(--text-secondary,#57647a)}@media (min-width:1280px){.desktop\:not-sr-only{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
package/index.js CHANGED
@@ -2,24 +2,24 @@ import { DEFAULT_DEPLOYMENT_VERSION as e, DeploymentCreationFieldErrorCode as t,
2
2
  import { ToolsetAuthTypes as c, ToolsetCredentialsLevel as l, WithLogin as u, dialFileToAttachment as d, getApiErrorDetails as f } from "@epam/ai-dial-chat-hooks";
3
3
  import { CopyButton as p, ENTITY_DESCRIPTION_MAX_LENGTH as m, ENTITY_NAME_MAX_LENGTH as h, TAG_INPUT_TAG_CLASS_NAME as g, TextRefinementField as _, mergeClasses as v, useCodeCopy as y, useTextRefinement as b } from "@epam/ai-dial-chat-shared";
4
4
  import { memo as x, useCallback as S, useEffect as C, useMemo as w, useRef as T, useState as E } from "react";
5
- import { IconBrandOauth as ee, IconKey as te, IconLockOff as D, IconLogin as ne, IconLogout as re } from "@tabler/icons-react";
5
+ import { IconBrandOauth as ee, IconKey as te, IconLockOff as ne, IconLogin as D, IconLogout as re } from "@tabler/icons-react";
6
6
  import { jsx as O, jsxs as k } from "react/jsx-runtime";
7
- import { ConfirmationPopup as ie, ConfirmationPopupVariant as ae, DIAL_ICON_SIZE as A, DIAL_KIT_ICON_STROKE as j, Input as M, NeutralButton as N, PasswordInput as P, Radio as F, RadioGroup as I, SegmentedControl as L, Select as oe, TagInput as R } from "@epam/ai-dial-ui-kit";
7
+ import { ConfirmationPopup as ie, ConfirmationPopupVariant as ae, DIAL_ICON_SIZE as A, DIAL_KIT_ICON_STROKE as j, Input as M, NeutralButton as N, PasswordInput as P, Radio as F, RadioGroup as I, SegmentedControl as L, Select as R, TagInput as oe } from "@epam/ai-dial-ui-kit";
8
8
  //#region src/constants/public-class-names.ts
9
9
  var se = {
10
10
  metadataSection: "dial-toolset-editor-metadata-section",
11
11
  setupSection: "dial-toolset-editor-setup-section"
12
12
  }, z = /* @__PURE__ */ function(e) {
13
13
  return e.Http = "HTTP", e.Sse = "SSE", e;
14
- }({}), B = e, ce = { validateVersionPattern: a }, V = {
14
+ }({}), B = e, ce = { validateVersionPattern: a }, le = {
15
15
  [c.OAuth]: ee,
16
16
  [c.ApiKey]: te,
17
- [c.None]: D
18
- }, le = () => ({
17
+ [c.None]: ne
18
+ }, V = () => ({
19
19
  authenticationType: c.None,
20
20
  withLogin: u.WithoutLogin,
21
21
  isLoggedIn: !1
22
- }), H = () => ({
22
+ }), ue = () => ({
23
23
  name: "",
24
24
  version: B,
25
25
  iconUrl: "",
@@ -29,49 +29,49 @@ var se = {
29
29
  endpoint: "",
30
30
  protocol: z.Http,
31
31
  allowedTools: [],
32
- auth: le()
33
- }), U = (e) => {
32
+ auth: V()
33
+ }), H = (e) => {
34
34
  if (!/^https?:\/\//.test(e) || e.endsWith(".") || e.endsWith("//")) return !1;
35
35
  try {
36
36
  return !!new URL(e);
37
37
  } catch {
38
38
  return !1;
39
39
  }
40
- }, W = (e) => U(e.trim()), G = (e) => e.replace(/^(https?):\/([^/])/, "$1://$2"), K = (e) => {
40
+ }, U = (e) => H(e.trim()), W = (e) => e.replace(/^(https?):\/([^/])/, "$1://$2"), de = (e) => {
41
41
  let t = e?.trim() ?? "";
42
- if (!t || U(t)) return t;
42
+ if (!t || H(t)) return t;
43
43
  let n = [t];
44
44
  try {
45
45
  let e = decodeURIComponent(t);
46
46
  e !== t && n.push(e);
47
47
  } catch {}
48
48
  for (let e of n) {
49
- let t = G(e);
50
- if (U(t)) return t;
49
+ let t = W(e);
50
+ if (H(t)) return t;
51
51
  }
52
52
  return t;
53
- }, q = (e) => !e?.trim() || W(e), J = (e, t = !1) => e.isLoggedIn ? !0 : e.authenticationType === c.ApiKey ? e.keyHeader?.trim() ? e.withLogin === u.WithoutLogin ? !0 : !!(e.keyHeader?.trim() && e.apiKey?.trim()) : !1 : e.authenticationType === c.OAuth && e.withLogin === u.WithConfig ? !!e.clientId?.trim() && (t || !!e.clientSecret?.trim()) && q(e.authorizationEndpoint) && q(e.tokenEndpoint) : !0, ue = (e, t = !1) => Object.keys(s(e, ce)).length === 0 && W(e.endpoint) && J(e.auth, t), Y = new Set([
53
+ }, G = (e) => !e?.trim() || U(e), K = (e, t = !1) => e.isLoggedIn ? !0 : e.authenticationType === c.ApiKey ? e.keyHeader?.trim() ? e.withLogin === u.WithoutLogin || !!(e.keyHeader?.trim() && e.apiKey?.trim()) : !1 : e.authenticationType === c.OAuth && e.withLogin === u.WithConfig ? !!e.clientId?.trim() && (t || !!e.clientSecret?.trim()) && G(e.authorizationEndpoint) && G(e.tokenEndpoint) : !0, fe = (e, t = !1) => Object.keys(s(e, ce)).length === 0 && U(e.endpoint) && K(e.auth, t), q = /* @__PURE__ */ new Set([
54
54
  "name",
55
55
  "description",
56
56
  "iconUrl",
57
57
  "version",
58
58
  "topics",
59
59
  "otherLocales"
60
- ]), de = (e) => ({
60
+ ]), pe = (e) => ({
61
61
  name: e.name,
62
62
  description: e.description,
63
63
  iconUrl: e.iconUrl,
64
64
  version: e.version,
65
65
  topics: e.topics,
66
66
  otherLocales: e.otherLocales
67
- }), fe = (e) => {
67
+ }), me = (e) => {
68
68
  let t = {}, n = {};
69
- for (let [r, i] of Object.entries(e)) (Y.has(r) ? t : n)[r] = i;
69
+ for (let [r, i] of Object.entries(e)) (q.has(r) ? t : n)[r] = i;
70
70
  return {
71
71
  metadata: t,
72
72
  setup: n
73
73
  };
74
- }, pe = {
74
+ }, he = {
75
75
  name: {
76
76
  label: "Name",
77
77
  placeholder: "Enter name"
@@ -110,64 +110,64 @@ var se = {
110
110
  saveLabel: "Save"
111
111
  },
112
112
  ariaLabel: "General"
113
- }, me = ({ form: e, errors: t, bucket: n, FileManagerModal: r, resolveIconUrl: a, allowedMimeTypes: o, maxFileSizeBytes: s, availableLocaleOptions: c, onChange: l, onNameBlur: u, onVersionBlur: f, renderDescription: p, labels: m }) => {
113
+ }, ge = ({ form: e, errors: t, bucket: n, FileManagerModal: r, resolveIconUrl: a, allowedMimeTypes: o, maxFileSizeBytes: s, availableLocaleOptions: c, onChange: l, onNameBlur: u, onVersionBlur: f, renderDescription: p, labels: m }) => {
114
114
  let h = S((e) => {
115
115
  let [t] = e.files;
116
116
  return (t ? d(t, n, { resolvePreviewUrl: a }) : null)?.url;
117
- }, [n, a]);
117
+ }, [n, a]), g = w(() => ({
118
+ bucket: n,
119
+ FileManagerModal: r,
120
+ resolveIconUrl: a,
121
+ resolveAttachedIconUrl: h,
122
+ allowedMimeTypes: o,
123
+ maxFileSizeBytes: s
124
+ }), [
125
+ n,
126
+ r,
127
+ a,
128
+ h,
129
+ o,
130
+ s
131
+ ]), _ = w(() => ({
132
+ form: m?.form ?? he,
133
+ avatarPicker: m?.avatarPicker
134
+ }), [m?.form, m?.avatarPicker]);
118
135
  return /* @__PURE__ */ O(i, {
119
136
  values: e,
120
137
  errors: t,
121
138
  onChange: l,
122
139
  onNameBlur: u,
123
140
  onVersionBlur: f,
124
- avatarPicker: w(() => ({
125
- bucket: n,
126
- FileManagerModal: r,
127
- resolveIconUrl: a,
128
- resolveAttachedIconUrl: h,
129
- allowedMimeTypes: o,
130
- maxFileSizeBytes: s
131
- }), [
132
- n,
133
- r,
134
- a,
135
- h,
136
- o,
137
- s
138
- ]),
141
+ avatarPicker: g,
139
142
  availableLocaleOptions: c,
140
143
  renderDescription: p,
141
- labels: w(() => ({
142
- form: m?.form ?? pe,
143
- avatarPicker: m?.avatarPicker
144
- }), [m?.form, m?.avatarPicker])
144
+ labels: _
145
145
  });
146
- }, X = /* @__PURE__ */ function(e) {
146
+ }, J = /* @__PURE__ */ function(e) {
147
147
  return e.Success = "success", e.Cancelled = "cancelled", e.PopupBlocked = "popup-blocked", e.InvalidConfig = "invalid-config", e.Failed = "failed", e;
148
- }({}), Z = (e) => e === c.None ? u.WithoutLogin : u.WithLogin, Q = (e, t) => e === c.None ? t?.typeNone ?? "Open access" : e === c.OAuth ? t?.typeOAuth ?? "OAuth" : t?.typeApiKey ?? "API Key", he = ({ auth: e, errors: t, isSaving: n, toolsetId: r, isEditMode: i, endpoint: a, authActions: o, onOAuthLogin: s, onNotifySuccess: d, onNotifyError: p, onAuthChange: m, onEnsureSaved: h, labels: _ }) => {
149
- let [v, y] = E(!1), [b, x] = E(!1), S = e.isLoggedIn || n || v, C = W(a) && J(e, i) && !S, w = (t) => {
148
+ }({}), Y = (e) => e === c.None ? u.WithoutLogin : u.WithLogin, _e = (e, t) => e === c.None ? t?.typeNone ?? "Open access" : e === c.OAuth ? t?.typeOAuth ?? "OAuth" : t?.typeApiKey ?? "API Key", X = ({ auth: e, errors: t, isSaving: n, toolsetId: r, isEditMode: i, endpoint: a, authActions: o, onOAuthLogin: s, onNotifySuccess: d, onNotifyError: p, onAuthChange: m, onEnsureSaved: h, labels: _ }) => {
149
+ let [v, y] = E(!1), [b, x] = E(!1), S = e.isLoggedIn || n || v, C = U(a) && K(e, i) && !S, w = (t) => {
150
150
  S || t === e.authenticationType || m({
151
151
  authenticationType: t,
152
- withLogin: Z(t)
152
+ withLogin: Y(t)
153
153
  });
154
154
  }, T = (e) => {
155
155
  m({ withLogin: e });
156
156
  }, ee = (e) => {
157
157
  switch (e.auth != null && m(e.auth), e.status) {
158
- case X.Success:
158
+ case J.Success:
159
159
  m({ isLoggedIn: !0 }), d(_?.loginSuccessMessage ?? "Successfully logged in.");
160
160
  return;
161
- case X.PopupBlocked:
161
+ case J.PopupBlocked:
162
162
  p(_?.errorPopupBlocked ?? "The login popup was blocked by your browser. Please allow popups for this site and try again.");
163
163
  return;
164
- case X.InvalidConfig:
164
+ case J.InvalidConfig:
165
165
  p(_?.errorOAuthConfigMissing ?? "The OAuth provider did not return a valid client configuration. Please check the endpoint or contact your administrator.");
166
166
  return;
167
- case X.Failed:
167
+ case J.Failed:
168
168
  p(_?.errorLoginFailed ?? "Failed to log in. Please check your credentials and try again.", e.traceId);
169
169
  return;
170
- case X.Cancelled: return;
170
+ case J.Cancelled: return;
171
171
  }
172
172
  }, te = async () => {
173
173
  if (!C) return;
@@ -201,7 +201,7 @@ var se = {
201
201
  y(!1);
202
202
  }
203
203
  }
204
- }, D = async () => {
204
+ }, ne = async () => {
205
205
  y(!0);
206
206
  try {
207
207
  let t = {
@@ -231,7 +231,7 @@ var se = {
231
231
  className: "flex",
232
232
  children: /* @__PURE__ */ O(N, {
233
233
  label: _?.logInLabel ?? "Log in",
234
- iconBefore: /* @__PURE__ */ O(ne, {
234
+ iconBefore: /* @__PURE__ */ O(D, {
235
235
  size: A.MD,
236
236
  stroke: j
237
237
  }),
@@ -256,7 +256,7 @@ var se = {
256
256
  c.OAuth,
257
257
  c.ApiKey
258
258
  ].map((t) => {
259
- let n = V[t];
259
+ let n = le[t];
260
260
  return {
261
261
  value: t,
262
262
  label: /* @__PURE__ */ k("div", {
@@ -268,7 +268,7 @@ var se = {
268
268
  "aria-hidden": !0
269
269
  }), /* @__PURE__ */ O("span", {
270
270
  className: "sr-only desktop:not-sr-only",
271
- children: Q(t, _)
271
+ children: _e(t, _)
272
272
  })]
273
273
  }),
274
274
  disabled: S && e.authenticationType !== t
@@ -353,7 +353,7 @@ var se = {
353
353
  invalid: !!t.tokenEndpoint,
354
354
  disabled: S
355
355
  }),
356
- /* @__PURE__ */ O(R, {
356
+ /* @__PURE__ */ O(oe, {
357
357
  id: "toolset-scopes",
358
358
  labelProps: { label: _?.scopesLabel ?? "Scopes" },
359
359
  placeholder: _?.scopesPlaceholder ?? "Enter scopes",
@@ -432,13 +432,13 @@ var se = {
432
432
  variant: ae.Danger,
433
433
  isLoading: v,
434
434
  disableConfirmButton: v,
435
- onConfirm: D,
435
+ onConfirm: ne,
436
436
  onCancel: () => x(!1),
437
437
  onClose: () => x(!1)
438
438
  })
439
439
  ]
440
440
  });
441
- }, ge = x(({ url: e, className: t, labels: n }) => {
441
+ }, ve = x(({ url: e, className: t, labels: n }) => {
442
442
  let { isCopied: r, copy: i } = y(e), a = n?.copiedLabel ?? "Copied!";
443
443
  return /* @__PURE__ */ k("div", {
444
444
  className: v("flex flex-col gap-3", t),
@@ -467,7 +467,7 @@ var se = {
467
467
  })
468
468
  ]
469
469
  });
470
- }), _e = ({ form: e, errors: t, isSaving: n, toolsetId: r, isEditMode: i, connectUrl: a, listToolNames: o, authActions: s, onOAuthLogin: c, onNotifySuccess: l, onNotifyError: u, onChange: d, onAuthChange: f, onEnsureSaved: p, labels: m }) => {
470
+ }), ye = ({ form: e, errors: t, isSaving: n, toolsetId: r, isEditMode: i, connectUrl: a, listToolNames: o, authActions: s, onOAuthLogin: c, onNotifySuccess: l, onNotifyError: u, onChange: d, onAuthChange: f, onEnsureSaved: p, labels: m }) => {
471
471
  let [h, _] = E(null), v = !!a && !!r, y = w(() => [{
472
472
  value: z.Http,
473
473
  label: "HTTP"
@@ -476,7 +476,7 @@ var se = {
476
476
  label: "SSE"
477
477
  }], []);
478
478
  return C(() => {
479
- if (!r || !o || !J(e.auth, i)) {
479
+ if (!r || !o || !K(e.auth, i)) {
480
480
  _(null);
481
481
  return;
482
482
  }
@@ -525,7 +525,7 @@ var se = {
525
525
  d({ protocol: e });
526
526
  }
527
527
  }),
528
- h ? /* @__PURE__ */ O(oe, {
528
+ h ? /* @__PURE__ */ O(R, {
529
529
  id: "toolset-allowed-tools",
530
530
  multiple: !0,
531
531
  searchable: !0,
@@ -538,7 +538,7 @@ var se = {
538
538
  })),
539
539
  value: e.allowedTools,
540
540
  onChange: (e) => d({ allowedTools: e })
541
- }) : /* @__PURE__ */ O(R, {
541
+ }) : /* @__PURE__ */ O(oe, {
542
542
  id: "toolset-allowed-tools",
543
543
  labelProps: { label: m?.allowedToolsLabel ?? "Allowed tools" },
544
544
  placeholder: m?.allowedToolsPlaceholder ?? "Add tools, comma separated",
@@ -546,7 +546,7 @@ var se = {
546
546
  onChange: (e) => d({ allowedTools: e }),
547
547
  tagClassName: g
548
548
  }),
549
- /* @__PURE__ */ O(he, {
549
+ /* @__PURE__ */ O(X, {
550
550
  auth: e.auth,
551
551
  errors: t,
552
552
  isSaving: n,
@@ -561,202 +561,206 @@ var se = {
561
561
  onEnsureSaved: p,
562
562
  labels: m?.auth
563
563
  }),
564
- v && /* @__PURE__ */ O(ge, {
564
+ v && /* @__PURE__ */ O(ve, {
565
565
  url: a ?? "",
566
566
  labels: m?.connect,
567
567
  className: "border-t border-tertiary pt-4"
568
568
  })
569
569
  ]
570
570
  });
571
- }, ve = [
571
+ }, be = [
572
572
  "keyHeader",
573
573
  "apiKey",
574
574
  "clientId",
575
575
  "clientSecret",
576
576
  "authorizationEndpoint",
577
577
  "tokenEndpoint"
578
- ], ye = ["endpoint", ...ve], be = new Set(ye), xe = (e) => {
578
+ ], xe = ["endpoint", ...be], Z = new Set(xe), Se = (e) => {
579
579
  let t = {};
580
- for (let n of Object.keys(e)) be.has(n) && (t[n] = !0);
580
+ for (let n of Object.keys(e)) Z.has(n) && (t[n] = !0);
581
581
  return t;
582
- }, $ = ({ initialForm: e, toolsetId: i, onPersist: a, onPostSaveLogin: s, onToolsetsChanged: l, onSaveSuccess: d, onSaveComplete: p, onBack: g, buildMcpUrl: v, listToolNames: y, authActions: x, onOAuthLogin: ee, onNotifySuccess: te, onNotifyError: D, bucket: ne, FileManagerModal: re, resolveIconUrl: k, allowedMimeTypes: ie, maxFileSizeBytes: ae, availableLocaleOptions: A, onRefineDescription: j, labels: M }) => {
583
- let N = !!i, [P, F] = E(""), I = i || P, [L, oe] = E({
582
+ }, Q = ({ initialForm: e, toolsetId: i, onPersist: a, onPostSaveLogin: s, onToolsetsChanged: l, onSaveSuccess: d, onSaveComplete: p, onBack: g, onDirtyChange: v, buildMcpUrl: y, listToolNames: x, authActions: ee, onOAuthLogin: te, onNotifySuccess: ne, onNotifyError: D, bucket: re, FileManagerModal: k, resolveIconUrl: ie, allowedMimeTypes: ae, maxFileSizeBytes: A, availableLocaleOptions: j, onRefineDescription: M, labels: N }) => {
583
+ let P = !!i, [F, I] = E(""), L = i || F, [R, oe] = E({
584
584
  initialForm: e,
585
585
  key: 0
586
- });
587
- L.initialForm !== e && oe({
586
+ }), [z, B] = E(e);
587
+ R.initialForm !== e && (oe({
588
588
  initialForm: e,
589
- key: L.key + 1
590
- });
591
- let { values: R, setValues: z, markTouched: B, visibleErrorCodes: V, attemptSubmit: le } = o({
592
- initialValues: w(() => de(e), [e]),
589
+ key: R.key + 1
590
+ }), B(e));
591
+ let le = w(() => pe(e), [e]), { values: V, setValues: ue, markTouched: H, visibleErrorCodes: W, attemptSubmit: de } = o({
592
+ initialValues: le,
593
593
  validationOptions: ce,
594
- reseedKey: L.key
595
- }), [H, U] = E(e), G = w(() => ({
596
- ...H,
597
- ...R
598
- }), [H, R]), [K, q] = E(!1), [J, Y] = E({}), [pe, X] = E({}), Z = T(null);
594
+ reseedKey: R.key
595
+ }), [G, K] = E(e), q = w(() => ({
596
+ ...G,
597
+ ...V
598
+ }), [G, V]), he = w(() => JSON.stringify(q) !== JSON.stringify(z), [q, z]);
599
+ C(() => {
600
+ v?.(he);
601
+ }, [he, v]);
602
+ let [J, Y] = E(!1), [_e, X] = E({}), [ve, Z] = E({}), Q = T(null);
599
603
  C(() => {
600
- U(e), Z.current = e, Y({}), X({}), F("");
604
+ K(e), Q.current = e, X({}), Z({}), I("");
601
605
  }, [e]);
602
- let Q = S((e) => {
603
- let { metadata: t, setup: n } = fe(e);
604
- Object.keys(t).length > 0 && (z(t), "name" in t && B(r.Name), "version" in t && B(r.Version)), Object.keys(n).length !== 0 && (U((e) => ({
606
+ let Ce = S((e) => {
607
+ let { metadata: t, setup: n } = me(e);
608
+ Object.keys(t).length > 0 && (ue(t), "name" in t && H(r.Name), "version" in t && H(r.Version)), Object.keys(n).length !== 0 && (K((e) => ({
605
609
  ...e,
606
610
  ...n
607
- })), X((e) => ({
611
+ })), Z((e) => ({
608
612
  ...e,
609
- ...xe(n)
610
- })), Y((e) => {
613
+ ...Se(n)
614
+ })), X((e) => {
611
615
  let t = { ...e };
612
616
  for (let e of Object.keys(n)) delete t[e];
613
617
  return t;
614
618
  }));
615
- }, [z, B]), he = S((e) => {
616
- U((t) => ({
619
+ }, [ue, H]), we = S((e) => {
620
+ K((t) => ({
617
621
  ...t,
618
622
  auth: {
619
623
  ...t.auth,
620
624
  ...e
621
625
  }
622
- })), X((t) => ({
626
+ })), Z((t) => ({
623
627
  ...t,
624
- ...xe(e)
625
- })), Y((t) => {
628
+ ...Se(e)
629
+ })), X((t) => {
626
630
  let n = { ...t };
627
- if ("authenticationType" in e || "withLogin" in e || "isLoggedIn" in e) for (let e of ve) delete n[e];
631
+ if ("authenticationType" in e || "withLogin" in e || "isLoggedIn" in e) for (let e of be) delete n[e];
628
632
  else for (let t of Object.keys(e)) delete n[t];
629
633
  return n;
630
634
  }), "isLoggedIn" in e && l();
631
- }, [l]), ge = S(async () => {
632
- if (I && Z.current != null && JSON.stringify(Z.current) === JSON.stringify(G)) return I;
633
- q(!0);
635
+ }, [l]), Te = S(async () => {
636
+ if (L && Q.current != null && JSON.stringify(Q.current) === JSON.stringify(q)) return L;
637
+ Y(!0);
634
638
  try {
635
- let e = await a(G, I);
636
- return e ? (I || F(e), Z.current = G, await l(), e) : null;
639
+ let e = await a(q, L);
640
+ return e ? (L || I(e), Q.current = q, B(q), v?.(!1), await l(), e) : null;
637
641
  } catch {
638
642
  return null;
639
643
  } finally {
640
- q(!1);
644
+ Y(!1);
641
645
  }
642
646
  }, [
643
- G,
644
- I,
647
+ q,
648
+ L,
645
649
  a,
646
- l
647
- ]), be = S(async () => await ge() ?? !1, [ge]), $ = S((e) => {
648
- let t = M?.validation, n = {};
649
- return e.endpoint.trim() ? W(e.endpoint) || (n.endpoint = t?.endpointInvalid ?? "Enter a valid http(s) URL") : n.endpoint = t?.endpointRequired ?? "Endpoint is required", e.auth.isLoggedIn || (e.auth.authenticationType === c.ApiKey && (e.auth.keyHeader?.trim() || (n.keyHeader = t?.keyHeaderRequired ?? "Key name is required"), e.auth.withLogin === u.WithLogin && !e.auth.apiKey?.trim() && (n.apiKey = t?.apiKeyRequired ?? "API key is required")), e.auth.authenticationType === c.OAuth && e.auth.withLogin === u.WithConfig && (e.auth.clientId?.trim() || (n.clientId = t?.clientIdRequired ?? "Client ID is required"), !N && !e.auth.clientSecret?.trim() && (n.clientSecret = t?.clientSecretRequired ?? "Client secret is required"), e.auth.authorizationEndpoint?.trim() && !W(e.auth.authorizationEndpoint) && (n.authorizationEndpoint = t?.endpointInvalid ?? "Enter a valid http(s) URL"), e.auth.tokenEndpoint?.trim() && !W(e.auth.tokenEndpoint) && (n.tokenEndpoint = t?.endpointInvalid ?? "Enter a valid http(s) URL"))), n;
650
- }, [M, N]), Se = S(async () => {
651
- let e = le(), t = $(G);
652
- if (!e || Object.keys(t).length > 0) {
653
- Y(t);
654
- return;
655
- }
656
- Y({}), q(!0);
657
- try {
658
- let e = await a(G, I);
659
- if (!e) return;
660
- await l(), d(G);
650
+ l,
651
+ v
652
+ ]), Ee = S(async () => await Te() ?? !1, [Te]), $ = S((e) => {
653
+ let t = N?.validation, n = {};
654
+ return e.endpoint.trim() ? U(e.endpoint) || (n.endpoint = t?.endpointInvalid ?? "Enter a valid http(s) URL") : n.endpoint = t?.endpointRequired ?? "Endpoint is required", e.auth.isLoggedIn || (e.auth.authenticationType === c.ApiKey && (e.auth.keyHeader?.trim() || (n.keyHeader = t?.keyHeaderRequired ?? "Key name is required"), e.auth.withLogin === u.WithLogin && !e.auth.apiKey?.trim() && (n.apiKey = t?.apiKeyRequired ?? "API key is required")), e.auth.authenticationType === c.OAuth && e.auth.withLogin === u.WithConfig && (e.auth.clientId?.trim() || (n.clientId = t?.clientIdRequired ?? "Client ID is required"), !P && !e.auth.clientSecret?.trim() && (n.clientSecret = t?.clientSecretRequired ?? "Client secret is required"), e.auth.authorizationEndpoint?.trim() && !U(e.auth.authorizationEndpoint) && (n.authorizationEndpoint = t?.endpointInvalid ?? "Enter a valid http(s) URL"), e.auth.tokenEndpoint?.trim() && !U(e.auth.tokenEndpoint) && (n.tokenEndpoint = t?.endpointInvalid ?? "Enter a valid http(s) URL"))), n;
655
+ }, [N, P]), De = S(async () => {
656
+ let e = de(), t = $(q);
657
+ if (!e || Object.keys(t).length > 0) X(t);
658
+ else {
659
+ X({}), Y(!0);
661
660
  try {
662
- await s(e, G.auth), p();
663
- } catch (e) {
664
- let { traceId: t } = await f(e);
665
- D(M?.settings?.auth?.errorLoginFailed ?? "Failed to log in. Please check your credentials and try again.", t);
661
+ let e = await a(q, L);
662
+ if (!e) return;
663
+ B(q), await l(), d(q);
664
+ try {
665
+ await s(e, q.auth), p();
666
+ } catch (e) {
667
+ let { traceId: t } = await f(e);
668
+ D(N?.settings?.auth?.errorLoginFailed ?? "Failed to log in. Please check your credentials and try again.", t);
669
+ }
670
+ } catch {} finally {
671
+ Y(!1);
666
672
  }
667
- } catch {} finally {
668
- q(!1);
669
673
  }
670
674
  }, [
671
- le,
672
- G,
675
+ de,
676
+ q,
673
677
  $,
674
- I,
678
+ L,
675
679
  a,
676
680
  l,
677
681
  d,
678
682
  p,
679
683
  s,
680
684
  D,
681
- M
682
- ]), Ce = b({
683
- value: R.description,
684
- onChange: (e) => Q({ description: e }),
685
- onRefine: j,
686
- disabled: K,
687
- resetKey: L.key
688
- }), we = j ? (e, t) => /* @__PURE__ */ O(_, {
685
+ N
686
+ ]), Oe = b({
687
+ value: V.description,
688
+ onChange: (e) => Ce({ description: e }),
689
+ onRefine: M,
690
+ disabled: J,
691
+ resetKey: R.key
692
+ }), ke = M ? (e, t) => /* @__PURE__ */ O(_, {
689
693
  isEnabled: !0,
690
694
  fieldId: t,
691
- label: M?.general?.form?.description.label ?? "Description",
692
- labels: M?.refinement,
693
- refinement: Ce,
694
- disabled: Ce.isPending || K,
695
+ label: N?.general?.form?.description.label ?? "Description",
696
+ labels: N?.refinement,
697
+ refinement: Oe,
698
+ disabled: Oe.isPending || J,
695
699
  children: e
696
- }) : void 0, Te = w(() => !ue(G, N), [G, N]), Ee = w(() => {
697
- let e = M?.validation, n = $(G), r = { ...J };
698
- for (let e of ye) {
699
- if (!pe[e]) continue;
700
+ }) : void 0, Ae = w(() => !fe(q, P), [q, P]), je = w(() => {
701
+ let e = N?.validation, n = $(q), r = { ..._e };
702
+ for (let e of xe) {
703
+ if (!ve[e]) continue;
700
704
  let t = n[e];
701
705
  t ? r[e] = t : delete r[e];
702
706
  }
703
- return V.name === t.Required ? r.name = e?.nameRequired ?? "Name is required" : V.name === t.TooLong ? r.name = e?.nameTooLong ?? `Use ${h} characters or fewer.` : V.name === t.ControlCharacters && (r.name = e?.nameControlCharacters ?? "Remove line breaks, tabs and other control characters."), V.description === t.TooLong && (r.description = e?.descriptionTooLong ?? `Use ${m} characters or fewer.`), V.version === t.InvalidFormat && (r.version = e?.versionInvalid ?? "Version must follow semantic versioning (e.g., 1.0.0)"), r;
707
+ return W.name === t.Required ? r.name = e?.nameRequired ?? "Name is required" : W.name === t.TooLong ? r.name = e?.nameTooLong ?? `Use ${h} characters or fewer.` : W.name === t.ControlCharacters && (r.name = e?.nameControlCharacters ?? "Remove line breaks, tabs and other control characters."), W.description === t.TooLong && (r.description = e?.descriptionTooLong ?? `Use ${m} characters or fewer.`), W.version === t.InvalidFormat && (r.version = e?.versionInvalid ?? "Version must follow semantic versioning (e.g., 1.0.0)"), r;
704
708
  }, [
705
- pe,
706
- J,
707
- G,
708
- M,
709
- V,
709
+ ve,
710
+ _e,
711
+ q,
712
+ N,
713
+ W,
710
714
  $
711
- ]), De = v && I ? v(I) : void 0;
715
+ ]), Me = y && L ? y(L) : void 0;
712
716
  return /* @__PURE__ */ O(n, {
713
- title: N ? M?.layout?.editTitle ?? "Edit toolset" : M?.layout?.createTitle ?? "Create toolset",
717
+ title: P ? N?.layout?.editTitle ?? "Edit toolset" : N?.layout?.createTitle ?? "Create toolset",
714
718
  onBack: g,
715
719
  onCancel: g,
716
- onSubmit: Se,
717
- submitLabel: N ? M?.layout?.saveLabel ?? "Save" : M?.layout?.createLabel ?? "Create",
718
- isSubmitting: K,
719
- isSubmitDisabled: Te || Ce.isPending,
720
+ onSubmit: De,
721
+ submitLabel: P ? N?.layout?.saveLabel ?? "Save" : N?.layout?.createLabel ?? "Create",
722
+ isSubmitting: J,
723
+ isSubmitDisabled: Ae || Oe.isPending,
720
724
  metadataSectionClassName: se.metadataSection,
721
725
  setupSectionClassName: se.setupSection,
722
726
  labels: {
723
- backAriaLabel: M?.layout?.backAriaLabel ?? "Back to catalog",
724
- savingStatusLabel: M?.layout?.savingStatusLabel ?? "Saving",
725
- metadataTitle: M?.layout?.metadataSectionTitle ?? "Metadata",
726
- setupTitle: M?.layout?.setupSectionTitle ?? "Setup",
727
- cancelLabel: M?.layout?.cancelLabel ?? "Cancel"
727
+ backAriaLabel: N?.layout?.backAriaLabel ?? "Back to catalog",
728
+ savingStatusLabel: N?.layout?.savingStatusLabel ?? "Saving",
729
+ metadataTitle: N?.layout?.metadataSectionTitle ?? "Metadata",
730
+ setupTitle: N?.layout?.setupSectionTitle ?? "Setup",
731
+ cancelLabel: N?.layout?.cancelLabel ?? "Cancel"
728
732
  },
729
- metadata: /* @__PURE__ */ O(me, {
730
- form: G,
731
- errors: Ee,
732
- bucket: ne,
733
- FileManagerModal: re,
734
- resolveIconUrl: k,
735
- allowedMimeTypes: ie,
736
- maxFileSizeBytes: ae,
737
- availableLocaleOptions: A,
738
- onChange: Q,
739
- renderDescription: we,
740
- labels: M?.general
733
+ metadata: /* @__PURE__ */ O(ge, {
734
+ form: q,
735
+ errors: je,
736
+ bucket: re,
737
+ FileManagerModal: k,
738
+ resolveIconUrl: ie,
739
+ allowedMimeTypes: ae,
740
+ maxFileSizeBytes: A,
741
+ availableLocaleOptions: j,
742
+ onChange: Ce,
743
+ renderDescription: ke,
744
+ labels: N?.general
741
745
  }),
742
- setup: /* @__PURE__ */ O(_e, {
743
- form: G,
744
- errors: Ee,
745
- isSaving: K,
746
- toolsetId: I,
747
- isEditMode: N,
748
- connectUrl: De,
749
- listToolNames: y,
750
- authActions: x,
751
- onOAuthLogin: ee,
752
- onNotifySuccess: te,
746
+ setup: /* @__PURE__ */ O(ye, {
747
+ form: q,
748
+ errors: je,
749
+ isSaving: J,
750
+ toolsetId: L,
751
+ isEditMode: P,
752
+ connectUrl: Me,
753
+ listToolNames: x,
754
+ authActions: ee,
755
+ onOAuthLogin: te,
756
+ onNotifySuccess: ne,
753
757
  onNotifyError: D,
754
- onChange: Q,
755
- onAuthChange: he,
756
- onEnsureSaved: be,
757
- labels: M?.settings
758
+ onChange: Ce,
759
+ onAuthChange: we,
760
+ onEnsureSaved: Ee,
761
+ labels: N?.settings
758
762
  })
759
763
  });
760
764
  };
761
765
  //#endregion
762
- export { V as AUTH_TYPE_ICONS, B as DEFAULT_TOOLSET_VERSION, me as GeneralForm, se as TOOLSET_EDITOR_CLASS, $ as ToolsetEditor, X as ToolsetOAuthLoginStatus, z as ToolsetTransportType, H as getDefaultToolsetForm, J as isToolsetAuthValid, ue as isToolsetFormValid, W as isValidEndpointUrl, K as normalizeReturnedEndpointUrl };
766
+ export { le as AUTH_TYPE_ICONS, B as DEFAULT_TOOLSET_VERSION, ge as GeneralForm, se as TOOLSET_EDITOR_CLASS, Q as ToolsetEditor, J as ToolsetOAuthLoginStatus, z as ToolsetTransportType, ue as getDefaultToolsetForm, K as isToolsetAuthValid, fe as isToolsetFormValid, U as isValidEndpointUrl, de as normalizeReturnedEndpointUrl };
@@ -105,6 +105,8 @@ export interface ToolsetEditorProps {
105
105
  onSaveComplete: () => void;
106
106
  /** Called for the Cancel button and the header back action. */
107
107
  onBack: () => void;
108
+ /** Called with whether the form differs from the values it was seeded with or last persisted, on mount and whenever that changes; `false` right after a Log In draft persist. */
109
+ onDirtyChange?: (isDirty: boolean) => void;
108
110
  /**
109
111
  * Builds the MCP endpoint URL shown in the Connect section for a toolset
110
112
  * id. Omit when the host has no external core URL configured — the
@@ -1 +1 @@
1
- {"version":3,"file":"toolset-editor-props.d.ts","sourceRoot":"","sources":["../../src/models/toolset-editor-props.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolset-editor-props.d.ts","sourceRoot":"","sources":["../../src/models/toolset-editor-props.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-toolset-editor",
3
3
  "description": "Host-agnostic form for authoring and editing a DIAL MCP toolset",
4
- "version": "1.3.0-dev.16",
4
+ "version": "1.3.0-dev.161",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -18,12 +18,12 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@tabler/icons-react": "^3.44.0",
21
- "@epam/ai-dial-builder-form": "1.3.0-dev.16"
21
+ "@epam/ai-dial-builder-form": "1.3.0-dev.161"
22
22
  },
23
23
  "peerDependencies": {
24
- "@epam/ai-dial-chat-hooks": "1.3.0-dev.16",
25
- "@epam/ai-dial-chat-shared": "1.3.0-dev.16",
26
- "@epam/ai-dial-ui-kit": "^0.15.1",
24
+ "@epam/ai-dial-chat-hooks": "1.3.0-dev.161",
25
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.161",
26
+ "@epam/ai-dial-ui-kit": "^0.16.0-dev.33",
27
27
  "react": "^19.2.8"
28
28
  },
29
29
  "repository": {