@epam/ai-dial-skills 1.1.0-dev.447 → 1.1.0-dev.456
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/hooks/useSkillSelectorOverlay/useSkillSelectorOverlay.d.ts +1 -1
- package/hooks/useSkillSelectorOverlay/useSkillSelectorOverlay.d.ts.map +1 -1
- package/index.js +101 -73
- package/models/skill-details-side-panel-props.d.ts +11 -1
- package/models/skill-details-side-panel-props.d.ts.map +1 -1
- package/models/skill-selector-overlay.d.ts +39 -6
- package/models/skill-selector-overlay.d.ts.map +1 -1
- package/package.json +4 -4
- package/utils/skill-url.d.ts +2 -0
- package/utils/skill-url.d.ts.map +1 -0
|
@@ -7,5 +7,5 @@ import { UseSkillSelectorOverlayOptions, UseSkillSelectorOverlayResult } from '.
|
|
|
7
7
|
* favorites state, the description fetch, labels, and the modal/panel
|
|
8
8
|
* components.
|
|
9
9
|
*/
|
|
10
|
-
export declare const useSkillSelectorOverlay: ({ isEnabled, skills, sharedWithMe, publicSkills, favoriteIds, onToggleFavorite, fetchSkillDescription, labels, renderCatalogContent, detailsPanelComponent: DetailsPanelComponent, }: UseSkillSelectorOverlayOptions) => UseSkillSelectorOverlayResult;
|
|
10
|
+
export declare const useSkillSelectorOverlay: ({ isEnabled, skills, sharedWithMe, publicSkills, favoriteIds, onToggleFavorite, fetchSkillDescription, labels, historyChipLabelClassName, renderCatalogContent, detailsPanelComponent: DetailsPanelComponent, }: UseSkillSelectorOverlayOptions) => UseSkillSelectorOverlayResult;
|
|
11
11
|
//# sourceMappingURL=useSkillSelectorOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSkillSelectorOverlay.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSkillSelectorOverlay/useSkillSelectorOverlay.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useSkillSelectorOverlay.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSkillSelectorOverlay/useSkillSelectorOverlay.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,qCAAqC,CAAC;AAG7C;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,GAAI,iNAYrC,8BAA8B,KAAG,6BAkXnC,CAAC"}
|
package/index.js
CHANGED
|
@@ -97,7 +97,7 @@ var A = ({ description: e, isDescriptionLoading: o, viewDetailsLabel: s = "View
|
|
|
97
97
|
V.current.set(e, t);
|
|
98
98
|
};
|
|
99
99
|
return /* @__PURE__ */ T("div", {
|
|
100
|
-
className: "flex w-
|
|
100
|
+
className: "flex w-full flex-col desktop:w-[280px]",
|
|
101
101
|
style: R,
|
|
102
102
|
children: [
|
|
103
103
|
/* @__PURE__ */ w("p", {
|
|
@@ -203,8 +203,11 @@ var A = ({ description: e, isDescriptionLoading: o, viewDetailsLabel: s = "View
|
|
|
203
203
|
name: e.name,
|
|
204
204
|
description: t.get(e.url) ?? void 0,
|
|
205
205
|
isDescriptionLoading: n.has(e.url)
|
|
206
|
-
}), B = (
|
|
207
|
-
let
|
|
206
|
+
}), B = (e) => {
|
|
207
|
+
let t = e.split("/").filter((e) => e.length > 0);
|
|
208
|
+
return t[t.length - 1] ?? e;
|
|
209
|
+
}, V = ({ isEnabled: t, skills: n, sharedWithMe: r, publicSkills: i, favoriteIds: o, onToggleFavorite: s, fetchSkillDescription: c, labels: l, historyChipLabelClassName: u, renderCatalogContent: d, detailsPanelComponent: f }) => {
|
|
210
|
+
let { addMenuLabel: p = "Skills", backLabel: g = "Back", catalogModalTitleLabel: _ = "Use skill", emptyQueryHintLabel: S = "Type to filter", panelLabels: C } = l ?? {}, [T, E] = b(!1), [D, O] = b(null), [k, A] = b(null), [M, N] = b(/* @__PURE__ */ new Map()), [P, F] = b(/* @__PURE__ */ new Set()), R = y(/* @__PURE__ */ new Set()), V = v(() => [
|
|
208
211
|
...n,
|
|
209
212
|
...r ?? [],
|
|
210
213
|
...i ?? []
|
|
@@ -212,128 +215,153 @@ var A = ({ description: e, isDescriptionLoading: o, viewDetailsLabel: s = "View
|
|
|
212
215
|
n,
|
|
213
216
|
r,
|
|
214
217
|
i
|
|
215
|
-
]),
|
|
216
|
-
|
|
218
|
+
]), H = v(() => new Map(V.map((e) => [e.url, e])), [V]), U = v(() => V.filter((e) => o.has(e.url)).map((e) => z(e, M, P)), [
|
|
219
|
+
V,
|
|
217
220
|
o,
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
]),
|
|
221
|
-
|
|
222
|
-
}, []),
|
|
223
|
-
|
|
224
|
-
}, []),
|
|
225
|
-
|
|
226
|
-
|
|
221
|
+
M,
|
|
222
|
+
P
|
|
223
|
+
]), W = v(() => k == null ? null : H.get(k) ?? null, [H, k]), G = h((e) => {
|
|
224
|
+
A(e);
|
|
225
|
+
}, []), K = h(() => {
|
|
226
|
+
A(null);
|
|
227
|
+
}, []), q = k, J = v(() => k == null ? void 0 : [{ url: k }], [k]), Y = h((e) => {
|
|
228
|
+
M.has(e) || R.current.has(e) || (R.current.add(e), F((t) => new Set(t).add(e)), c(e).then((t) => {
|
|
229
|
+
R.current.delete(e), F((t) => {
|
|
227
230
|
let n = new Set(t);
|
|
228
231
|
return n.delete(e), n;
|
|
229
|
-
}),
|
|
232
|
+
}), N((n) => new Map(n).set(e, t));
|
|
230
233
|
}));
|
|
231
|
-
}, [
|
|
232
|
-
name:
|
|
233
|
-
path:
|
|
234
|
-
description:
|
|
235
|
-
isDescriptionLoading:
|
|
236
|
-
onTooltipOpen:
|
|
237
|
-
onViewDetails:
|
|
238
|
-
labels: { viewDetailsLabel:
|
|
239
|
-
}),
|
|
240
|
-
|
|
234
|
+
}, [M, c]), X = v(() => W == null ? null : /* @__PURE__ */ w(j, {
|
|
235
|
+
name: W.name,
|
|
236
|
+
path: W.url,
|
|
237
|
+
description: M.get(W.url) ?? void 0,
|
|
238
|
+
isDescriptionLoading: P.has(W.url),
|
|
239
|
+
onTooltipOpen: Y,
|
|
240
|
+
onViewDetails: O,
|
|
241
|
+
labels: { viewDetailsLabel: C?.viewDetailsLabel }
|
|
242
|
+
}), [
|
|
243
|
+
W,
|
|
244
|
+
M,
|
|
245
|
+
P,
|
|
246
|
+
Y,
|
|
247
|
+
C
|
|
248
|
+
]), Z = h((e) => e == null || e.length === 0 ? null : e.map((e) => /* @__PURE__ */ w(j, {
|
|
249
|
+
name: H.get(e.url)?.name ?? B(e.url),
|
|
250
|
+
path: e.url,
|
|
251
|
+
labelClassName: u,
|
|
252
|
+
description: M.get(e.url) ?? void 0,
|
|
253
|
+
isDescriptionLoading: P.has(e.url),
|
|
254
|
+
onTooltipOpen: Y,
|
|
255
|
+
onViewDetails: O,
|
|
256
|
+
labels: { viewDetailsLabel: C?.viewDetailsLabel }
|
|
257
|
+
}, e.url)), [
|
|
258
|
+
H,
|
|
259
|
+
u,
|
|
260
|
+
M,
|
|
261
|
+
P,
|
|
262
|
+
Y,
|
|
263
|
+
C
|
|
264
|
+
]), Q = h((e) => /* @__PURE__ */ w(I, {
|
|
265
|
+
favorites: U,
|
|
241
266
|
onSelect: (t) => {
|
|
242
|
-
|
|
267
|
+
G(t.id), e();
|
|
243
268
|
},
|
|
244
269
|
onToggleFavorite: s,
|
|
245
270
|
onBrowse: () => {
|
|
246
|
-
e(),
|
|
271
|
+
e(), E(!0);
|
|
247
272
|
},
|
|
248
273
|
onViewDetails: (t) => {
|
|
249
|
-
e(),
|
|
274
|
+
e(), O(t.id);
|
|
250
275
|
},
|
|
251
|
-
onItemTooltipOpen:
|
|
252
|
-
labels:
|
|
276
|
+
onItemTooltipOpen: Y,
|
|
277
|
+
labels: C
|
|
253
278
|
}), [
|
|
254
|
-
|
|
255
|
-
|
|
279
|
+
U,
|
|
280
|
+
G,
|
|
256
281
|
s,
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
]),
|
|
282
|
+
Y,
|
|
283
|
+
C
|
|
284
|
+
]), $ = v(() => ({
|
|
260
285
|
key: "skills",
|
|
261
|
-
title:
|
|
286
|
+
title: p,
|
|
262
287
|
icon: /* @__PURE__ */ w(x, {
|
|
263
288
|
size: e,
|
|
264
289
|
"aria-hidden": !0,
|
|
265
290
|
stroke: a
|
|
266
291
|
}),
|
|
267
|
-
renderOverlay:
|
|
268
|
-
backLabel:
|
|
292
|
+
renderOverlay: Q,
|
|
293
|
+
backLabel: g
|
|
269
294
|
}), [
|
|
270
|
-
f,
|
|
271
295
|
p,
|
|
272
|
-
|
|
273
|
-
|
|
296
|
+
g,
|
|
297
|
+
Q
|
|
298
|
+
]), ee = v(() => t ? {
|
|
274
299
|
triggerPrefix: "/",
|
|
275
|
-
menuLabel:
|
|
276
|
-
emptyQueryHint:
|
|
300
|
+
menuLabel: p,
|
|
301
|
+
emptyQueryHint: S,
|
|
277
302
|
renderMenu: ({ query: e, close: t }) => /* @__PURE__ */ w(I, {
|
|
278
|
-
favorites:
|
|
303
|
+
favorites: U,
|
|
279
304
|
searchQuery: e,
|
|
280
305
|
onSelect: (e) => {
|
|
281
|
-
t({ consumeQuery: !0 }),
|
|
306
|
+
t({ consumeQuery: !0 }), G(e.id);
|
|
282
307
|
},
|
|
283
308
|
onToggleFavorite: s,
|
|
284
309
|
onBrowse: () => {
|
|
285
|
-
t({ consumeQuery: !0 }),
|
|
310
|
+
t({ consumeQuery: !0 }), E(!0);
|
|
286
311
|
},
|
|
287
312
|
onViewDetails: (e) => {
|
|
288
|
-
t({ consumeQuery: !0 }),
|
|
313
|
+
t({ consumeQuery: !0 }), O(e.id);
|
|
289
314
|
},
|
|
290
|
-
onItemTooltipOpen:
|
|
291
|
-
labels:
|
|
315
|
+
onItemTooltipOpen: Y,
|
|
316
|
+
labels: C
|
|
292
317
|
})
|
|
293
318
|
} : void 0, [
|
|
294
319
|
t,
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
320
|
+
p,
|
|
321
|
+
S,
|
|
322
|
+
U,
|
|
323
|
+
G,
|
|
299
324
|
s,
|
|
300
|
-
|
|
301
|
-
|
|
325
|
+
Y,
|
|
326
|
+
C
|
|
302
327
|
]);
|
|
303
328
|
return t ? {
|
|
304
|
-
skillMenuOverlay:
|
|
305
|
-
commandMenu:
|
|
329
|
+
skillMenuOverlay: $,
|
|
330
|
+
commandMenu: ee,
|
|
306
331
|
skillCatalogModal: /* @__PURE__ */ w(L, {
|
|
307
|
-
isOpen:
|
|
308
|
-
onClose: () =>
|
|
332
|
+
isOpen: T,
|
|
333
|
+
onClose: () => E(!1),
|
|
309
334
|
onSelect: (e) => {
|
|
310
|
-
|
|
335
|
+
G(e), E(!1);
|
|
311
336
|
},
|
|
312
|
-
title:
|
|
313
|
-
renderContent:
|
|
337
|
+
title: _,
|
|
338
|
+
renderContent: d
|
|
314
339
|
}),
|
|
315
340
|
skillDetailsPanel: /* @__PURE__ */ w(m, {
|
|
316
341
|
fallback: null,
|
|
317
|
-
children: /* @__PURE__ */ w(
|
|
318
|
-
skillId:
|
|
319
|
-
onClose: () =>
|
|
320
|
-
onUseInChat: (e) => {
|
|
321
|
-
H(e), D(null);
|
|
322
|
-
}
|
|
342
|
+
children: /* @__PURE__ */ w(f, {
|
|
343
|
+
skillId: D,
|
|
344
|
+
onClose: () => O(null)
|
|
323
345
|
})
|
|
324
346
|
}),
|
|
325
|
-
selectedSkillElement:
|
|
326
|
-
|
|
327
|
-
|
|
347
|
+
selectedSkillElement: X,
|
|
348
|
+
selectedSkillPath: q,
|
|
349
|
+
selectedSkills: J,
|
|
350
|
+
selectSkill: G,
|
|
351
|
+
removeSelectedSkill: K,
|
|
352
|
+
renderHistorySkills: Z
|
|
328
353
|
} : {
|
|
329
354
|
skillMenuOverlay: void 0,
|
|
330
355
|
commandMenu: void 0,
|
|
331
356
|
skillCatalogModal: null,
|
|
332
357
|
skillDetailsPanel: null,
|
|
333
358
|
selectedSkillElement: null,
|
|
359
|
+
selectedSkillPath: null,
|
|
360
|
+
selectedSkills: void 0,
|
|
334
361
|
selectSkill: () => void 0,
|
|
335
|
-
removeSelectedSkill: () => void 0
|
|
362
|
+
removeSelectedSkill: () => void 0,
|
|
363
|
+
renderHistorySkills: () => null
|
|
336
364
|
};
|
|
337
365
|
};
|
|
338
366
|
//#endregion
|
|
339
|
-
export { j as ChatSkill, I as FavoriteSkillsPanel, L as SkillCatalogModal, R as SkillDetailsSidePanel, A as SkillInfoTooltipContent, z as buildFavoriteSkillItem,
|
|
367
|
+
export { j as ChatSkill, I as FavoriteSkillsPanel, L as SkillCatalogModal, R as SkillDetailsSidePanel, A as SkillInfoTooltipContent, z as buildFavoriteSkillItem, V as useSkillSelectorOverlay };
|
|
@@ -4,7 +4,9 @@ import { ReactNode } from 'react';
|
|
|
4
4
|
* Props for {@link SkillDetailsSidePanel} — the skill-scoped surface of
|
|
5
5
|
* `@epam/ai-dial-catalog`'s `DetailsPanelProps`, narrowed to the actions a
|
|
6
6
|
* skill details surface offers. Publish, share, credentials, and download
|
|
7
|
-
* stay with the Catalog page: omitting them hides those actions.
|
|
7
|
+
* stay with the Catalog page: omitting them hides those actions. A surface
|
|
8
|
+
* that shows the skill's information only passes `isReadonly` with the
|
|
9
|
+
* primary action and Download hidden.
|
|
8
10
|
*/
|
|
9
11
|
export interface SkillDetailsSidePanelProps {
|
|
10
12
|
/** The skill catalog item to display in the panel. */
|
|
@@ -18,6 +20,12 @@ export interface SkillDetailsSidePanelProps {
|
|
|
18
20
|
* panel shows a small loading indicator next to the tab row.
|
|
19
21
|
*/
|
|
20
22
|
isDetailsLoading?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Renders the panel read-only: the favorite star and every mutating action
|
|
25
|
+
* are withheld. The primary action and Download still render unless their
|
|
26
|
+
* own visibility rules hide them. Default: `false`.
|
|
27
|
+
*/
|
|
28
|
+
isReadonly?: boolean;
|
|
21
29
|
/** Called when the panel should close (close button or backdrop click). */
|
|
22
30
|
onClose: () => void;
|
|
23
31
|
/** Called when the star/favorite button is toggled. */
|
|
@@ -26,6 +34,8 @@ export interface SkillDetailsSidePanelProps {
|
|
|
26
34
|
onUseInChat?: (item: CatalogItem) => void;
|
|
27
35
|
/** Controls whether the header's primary action button is shown for the skill. */
|
|
28
36
|
isPrimaryActionVisible?: (item: CatalogItem) => boolean;
|
|
37
|
+
/** Narrows which items offer the "Download" action. */
|
|
38
|
+
isDownloadVisible?: (item: CatalogItem) => boolean;
|
|
29
39
|
/**
|
|
30
40
|
* Resolves the text of a file picked in the Content tab, given its opaque
|
|
31
41
|
* `id`. Superseded by `onLoadContentFilePreview` and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-details-side-panel-props.d.ts","sourceRoot":"","sources":["../../src/models/skill-details-side-panel-props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"skill-details-side-panel-props.d.ts","sourceRoot":"","sources":["../../src/models/skill-details-side-panel-props.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,IAAI,EAAE,WAAW,CAAC;IAClB,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5D,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,kFAAkF;IAClF,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;IACxD,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;IACnD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpE;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,CACzB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;IACpD;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;IAC3E,2DAA2D;IAC3D,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
+
import { RequestSkill } from '../../../chat-shared/src/index.ts';
|
|
1
2
|
import { CommandMenuConfig, MenuOverlayConfig } from '@epam/ai-dial-conversation-input';
|
|
2
3
|
import { ComponentType, ReactNode } from 'react';
|
|
3
4
|
import { SkillListingEntry } from './favorite-skill-item';
|
|
4
5
|
import { FavoriteSkillsPanelLabels } from './favorite-skills-panel-props';
|
|
5
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Props accepted by the details-panel component injected into
|
|
8
|
+
* `useSkillSelectorOverlay`. The rendered panel is the host's composition;
|
|
9
|
+
* the flow this hook opens it from ("View details") is information-only, so
|
|
10
|
+
* hosts typically render it read-only.
|
|
11
|
+
*/
|
|
6
12
|
export interface SkillDetailsPanelComponentProps {
|
|
7
13
|
/** Resource URL of the skill whose details are shown; `null` renders nothing. */
|
|
8
14
|
skillId: string | null;
|
|
9
15
|
/** Called when the panel should close (close button or backdrop click). */
|
|
10
16
|
onClose: () => void;
|
|
11
|
-
/**
|
|
12
|
-
* Called with the skill's resource URL when the panel's "Use in chat" is
|
|
13
|
-
* clicked; the hook also closes the panel.
|
|
14
|
-
*/
|
|
15
|
-
onUseInChat: (skillId: string) => void;
|
|
16
17
|
}
|
|
17
18
|
/** Localizable string labels for the skill selector overlay flow. */
|
|
18
19
|
export interface SkillSelectorOverlayLabels {
|
|
@@ -54,6 +55,14 @@ export interface UseSkillSelectorOverlayOptions {
|
|
|
54
55
|
fetchSkillDescription: (skillId: string) => Promise<string | null>;
|
|
55
56
|
/** Localizable string overrides. */
|
|
56
57
|
labels?: SkillSelectorOverlayLabels;
|
|
58
|
+
/**
|
|
59
|
+
* Typography class applied to each history `ChatSkill` chip's label.
|
|
60
|
+
* History chips render beside the message bubble's first text line — inline
|
|
61
|
+
* within it (user bubble) or overlaid on it (assistant bubble) — so pass
|
|
62
|
+
* the class the bubbles' body text uses, keeping the chip's height matched
|
|
63
|
+
* to that line. Unset falls back to the chip's own default label class.
|
|
64
|
+
*/
|
|
65
|
+
historyChipLabelClassName?: string;
|
|
57
66
|
/**
|
|
58
67
|
* Renders the browse modal's picker content (e.g. a host catalog view);
|
|
59
68
|
* receives the selection and close callbacks to wire into it, and is
|
|
@@ -98,6 +107,19 @@ export interface UseSkillSelectorOverlayResult {
|
|
|
98
107
|
* `null` while `isEnabled` is `false` or nothing is selected.
|
|
99
108
|
*/
|
|
100
109
|
selectedSkillElement: ReactNode;
|
|
110
|
+
/**
|
|
111
|
+
* The selected skill's resource URL (`skills/{bucket}/{path}`) — the value
|
|
112
|
+
* the host sends as a `{ url }` entry in the outgoing message's
|
|
113
|
+
* `custom_content.skills`. `null` while nothing is selected or the flow is
|
|
114
|
+
* disabled.
|
|
115
|
+
*/
|
|
116
|
+
selectedSkillPath: string | null;
|
|
117
|
+
/**
|
|
118
|
+
* The selected skill as the send-time `custom_content.skills` payload —
|
|
119
|
+
* `[{ url: selectedSkillPath }]`, or `undefined` while nothing is selected
|
|
120
|
+
* or the flow is disabled, so `custom_content.skills` is omitted entirely.
|
|
121
|
+
*/
|
|
122
|
+
selectedSkills: RequestSkill[] | undefined;
|
|
101
123
|
/**
|
|
102
124
|
* Selects a skill by its resource URL (`skills/{bucket}/{path}`), replacing
|
|
103
125
|
* any prior selection.
|
|
@@ -109,5 +131,16 @@ export interface UseSkillSelectorOverlayResult {
|
|
|
109
131
|
* skill's element is shown.
|
|
110
132
|
*/
|
|
111
133
|
removeSelectedSkill: () => void;
|
|
134
|
+
/**
|
|
135
|
+
* Renders a message's `custom_content.skills` entries as `ChatSkill`
|
|
136
|
+
* elements beside the message bubble's first text line, with the text
|
|
137
|
+
* word-flowing after them — one per entry, sharing the session description
|
|
138
|
+
* cache, the lazy-fetch first-open trigger, and the "View details" details
|
|
139
|
+
* panel with the favorite rows and the input chip. Each entry's name comes
|
|
140
|
+
* from the listing pools matched on its url, falling back to the url's last
|
|
141
|
+
* non-empty segment. Returns `null` while `isEnabled` is `false` or the
|
|
142
|
+
* array is empty.
|
|
143
|
+
*/
|
|
144
|
+
renderHistorySkills: (skills: RequestSkill[] | undefined) => ReactNode;
|
|
112
145
|
}
|
|
113
146
|
//# sourceMappingURL=skill-selector-overlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-selector-overlay.d.ts","sourceRoot":"","sources":["../../src/models/skill-selector-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E
|
|
1
|
+
{"version":3,"file":"skill-selector-overlay.d.ts","sourceRoot":"","sources":["../../src/models/skill-selector-overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,WAAW,+BAA+B;IAC9C,iFAAiF;IACjF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qEAAqE;AACrE,MAAM,WAAW,0BAA0B;IACzC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,WAAW,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED,qDAAqD;AACrD,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,qEAAqE;IACrE,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,uDAAuD;IACvD,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,0EAA0E;IAC1E,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACjC,oEAAoE;IACpE,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnE,oCAAoC;IACpC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IACpC;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;OAIG;IACH,oBAAoB,EAAE,CACpB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,EAC9B,OAAO,EAAE,MAAM,IAAI,KAChB,SAAS,CAAC;IACf,sEAAsE;IACtE,qBAAqB,EAAE,aAAa,CAAC,+BAA+B,CAAC,CAAC;CACvE;AAED,6CAA6C;AAC7C,MAAM,WAAW,6BAA6B;IAC5C;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;OAGG;IACH,iBAAiB,EAAE,SAAS,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,EAAE,SAAS,CAAC;IAC7B;;;;;;;OAOG;IACH,oBAAoB,EAAE,SAAS,CAAC;IAChC;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,cAAc,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC;;;;;;;;;OASG;IACH,mBAAmB,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,KAAK,SAAS,CAAC;CACxE"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-skills",
|
|
3
3
|
"description": "Host-agnostic UI for picking a favorite skill to attach to a chat input",
|
|
4
|
-
"version": "1.1.0-dev.
|
|
4
|
+
"version": "1.1.0-dev.456",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
|
-
"@epam/ai-dial-catalog": "1.1.0-dev.
|
|
20
|
-
"@epam/ai-dial-chat-shared": "1.1.0-dev.
|
|
21
|
-
"@epam/ai-dial-conversation-input": "1.1.0-dev.
|
|
19
|
+
"@epam/ai-dial-catalog": "1.1.0-dev.456",
|
|
20
|
+
"@epam/ai-dial-chat-shared": "1.1.0-dev.456",
|
|
21
|
+
"@epam/ai-dial-conversation-input": "1.1.0-dev.456",
|
|
22
22
|
"@epam/ai-dial-ui-kit": "*",
|
|
23
23
|
"@tabler/icons-react": "^3.0.0",
|
|
24
24
|
"react": "^19.0.0"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-url.d.ts","sourceRoot":"","sources":["../../src/utils/skill-url.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,GAAI,KAAK,MAAM,KAAG,MAGlD,CAAC"}
|