@epam/ai-dial-chat-hooks 1.3.0-dev.124 → 1.3.0-dev.126
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/api-error/api-error.js +2 -2
- package/api-transport/create-unauthorized-middleware.js +4 -1
- package/attachment/useAttachmentAction/useAttachmentAction.js +5 -8
- package/catalog/map-entity-details-to-catalog.js +1 -1
- package/catalog/map-skill-to-catalog-item.js +1 -5
- package/catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js +1 -1
- package/catalog/usePublishFolders/usePublishFolders.js +1 -1
- package/catalog/useSkillItemDetails.js +3 -3
- package/conversation/conversation-draft/conversation-draft-store.js +40 -40
- package/conversation/conversation-transfer/import-conversation.js +7 -8
- package/conversation/conversation-transfer/progress.js +1 -1
- package/conversation/conversation-transfer/zip-export.js +1 -7
- package/conversation/conversation-transfer/zip-import.js +1 -1
- package/conversation/create-chat-stream-api.js +1 -5
- package/conversation/useAttachmentUpload/useAttachmentUpload.js +4 -1
- package/conversation/useConversationComposerDraft/useConversationComposerDraft.js +1 -5
- package/conversation/useConversationExport/useConversationExport.js +11 -12
- package/conversation/useConversationHandlers/message-utils.js +2 -2
- package/conversation/useConversationHandlers/useConversationHandlers.js +2 -2
- package/conversation/useConversationImport/useConversationImport.js +24 -24
- package/conversation/useConversationScroll/useConversationScroll.js +2 -6
- package/conversation/useConversationStream/conversation-path.js +2 -2
- package/conversation/useConversationStream/frame-scheduler.js +17 -17
- package/conversation/useConversationStream/generation-resume.js +11 -21
- package/conversation/useConversationStream/useConversationStream.js +39 -60
- package/conversation/useMessageSelectionReply/useMessageSelectionReply.js +4 -10
- package/conversation-overlay.js +1 -2
- package/conversation-sources.js +1 -2
- package/file-manager-canvas.js +1 -2
- package/files/attachment-types.js +1 -1
- package/files/create-upload-file-with-progress.js +5 -12
- package/files/dial-file-manager-mapping.util.js +7 -7
- package/files/dial-file-to-attachment.js +3 -3
- package/files/source-content.js +1 -1
- package/files/useDialFileListing/useDialFileListing.js +46 -61
- package/files/useDialFileManagerSections/useDialFileManagerSections.js +70 -86
- package/files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js +1 -1
- package/files/useDialFileMetadata/useDialFileMetadata.js +3 -3
- package/files/useDialFileUploadBatch/useDialFileUploadBatch.js +1 -1
- package/files/useFileAttachmentPicker/useFileAttachmentPicker.js +2 -2
- package/mcp-apps/useMcpAppTools/useMcpAppTools.js +3 -6
- package/oauth/authorize-url.js +1 -1
- package/oauth/handshake.js +3 -10
- package/oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js +2 -5
- package/oauth/useToolsetLogin/useToolsetLogin.js +2 -1
- package/offline-credentials/useOfflineCredentialsGate/useOfflineCredentialsGate.js +1 -1
- package/offline-credentials/useOfflineCredentialsLogin/useOfflineCredentialsLogin.js +13 -13
- package/package.json +16 -16
- package/scheduled-task/scheduled-task-description.js +1 -1
- package/scheduled-task/scheduled-task-trigger.js +1 -1
- package/scheduled-task/use-scheduled-task-runs.js +6 -18
- package/scheduled-task/use-scheduled-tasks.js +1 -1
- package/scroll-anchoring.js +1 -2
- package/shared/application-schema.js +3 -3
- package/shared/cron-day-of-month.js +10 -10
- package/shared/locale.js +2 -2
- package/skill/skill-file-batch-validation.js +18 -17
- package/skill/skill-types.js +1 -1
- package/skill/skill.js +12 -15
- package/skill/useSkillArchiveImport/useSkillArchiveImport.js +1 -7
- package/skill/useSkillEditorSubmit.js +1 -5
- package/skills-state.js +1 -2
- package/source-content.js +1 -2
- package/usage/useUsageLimitBanner/useUsageLimitBanner.js +1 -1
- package/usage/useUsageLimitBannerDismissal/useUsageLimitBannerDismissal.js +1 -1
- package/usePageFileDrag/usePageFileDrag.js +3 -3
|
@@ -2,161 +2,145 @@ import { FileManagerNotificationReason as e } from "../dial-file-manager.types.j
|
|
|
2
2
|
import { DIAL_FILE_MANAGER_SECTION_TABS as t } from "../dial-file-manager.model.js";
|
|
3
3
|
import { hasSamePaths as n, resolveSectionByPath as r, unionPathSets as i, withRoutableRootLabels as ee } from "../dial-file-manager-path.util.js";
|
|
4
4
|
import { useDialFileManager as a } from "../useDialFileManager/useDialFileManager.js";
|
|
5
|
-
import { useEffect as
|
|
6
|
-
import { NotificationVariant as
|
|
7
|
-
import { DialFileManagerTabs as
|
|
5
|
+
import { useEffect as te, useMemo as ne, useRef as re, useState as o } from "react";
|
|
6
|
+
import { NotificationVariant as s } from "@epam/ai-dial-ui-kit";
|
|
7
|
+
import { DialFileManagerTabs as c } from "@epam/ai-dial-react-file-manager";
|
|
8
8
|
//#region src/files/useDialFileManagerSections/useDialFileManagerSections.ts
|
|
9
|
-
var
|
|
10
|
-
let
|
|
11
|
-
let t =
|
|
9
|
+
var l = ({ activeTab: l, sections: u, ...d }) => {
|
|
10
|
+
let f = ne(() => ee(u.filter((e) => t.includes(e.tab))), [u]), p = l === c.All, m = (e) => {
|
|
11
|
+
let t = f.find((t) => t.tab === e);
|
|
12
12
|
return {
|
|
13
|
-
...
|
|
13
|
+
...d,
|
|
14
14
|
activeTab: e,
|
|
15
15
|
rootLabel: t?.rootLabel ?? e,
|
|
16
|
-
isActive: t != null && (
|
|
17
|
-
sessionKey:
|
|
16
|
+
isActive: t != null && (p || l === e),
|
|
17
|
+
sessionKey: l
|
|
18
18
|
};
|
|
19
|
-
},
|
|
19
|
+
}, h = a(m(c.MyFiles)), g = a(m(c.Shared)), ie = a(m(c.Organization)), _ = (e) => {
|
|
20
20
|
switch (e) {
|
|
21
|
-
case
|
|
22
|
-
case
|
|
23
|
-
case
|
|
21
|
+
case c.MyFiles: return h;
|
|
22
|
+
case c.Shared: return g;
|
|
23
|
+
case c.Organization: return ie;
|
|
24
24
|
default: throw Error(`Not a file-manager section tab: ${e}`);
|
|
25
25
|
}
|
|
26
|
-
}, [
|
|
27
|
-
|
|
28
|
-
let w = (e) =>
|
|
26
|
+
}, [v, y] = o(null), [b, x] = o(null), [S, C] = o(l);
|
|
27
|
+
S !== l && (C(l), y(null), x(null));
|
|
28
|
+
let w = (e) => f.some((t) => t.tab === e), T = f[0]?.tab ?? c.MyFiles, E = v != null && w(v) ? v : T, ae = b != null && w(b) ? b : E, D = (e) => e == null ? void 0 : r(e, f)?.tab, O = (e) => _(D(e) ?? E), k = (e, t) => {
|
|
29
29
|
let n = /* @__PURE__ */ new Map();
|
|
30
30
|
return e.forEach((e) => {
|
|
31
31
|
let r = D(t(e)) ?? E;
|
|
32
32
|
n.set(r, [...n.get(r) ?? [], e]);
|
|
33
33
|
}), [...n];
|
|
34
|
-
}, { onNotification: A } =
|
|
35
|
-
|
|
34
|
+
}, { onNotification: A } = d, j = re(/* @__PURE__ */ new Set()), M = f.map(({ tab: e }) => `${e}:${_(e).error ?? ""}`).join("|");
|
|
35
|
+
te(() => {
|
|
36
36
|
let t = j.current;
|
|
37
|
-
|
|
38
|
-
t.
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
m.forEach(({ tab: n }) => {
|
|
42
|
-
if (v(n).error == null) {
|
|
43
|
-
t.delete(n);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
t.has(n) || (t.add(n), n !== E && A?.({
|
|
47
|
-
variant: l.Error,
|
|
37
|
+
p ? f.forEach(({ tab: n }) => {
|
|
38
|
+
_(n).error == null ? t.delete(n) : t.has(n) || (t.add(n), n !== E && A?.({
|
|
39
|
+
variant: s.Error,
|
|
48
40
|
reason: e.FolderLoadFailed
|
|
49
41
|
}));
|
|
50
|
-
});
|
|
42
|
+
}) : t.clear();
|
|
51
43
|
}, [
|
|
52
|
-
|
|
53
|
-
|
|
44
|
+
M,
|
|
45
|
+
p,
|
|
54
46
|
E,
|
|
55
47
|
A
|
|
56
48
|
]);
|
|
57
|
-
let
|
|
49
|
+
let N = () => {
|
|
58
50
|
A?.({
|
|
59
|
-
variant:
|
|
51
|
+
variant: s.Warning,
|
|
60
52
|
reason: e.CrossSectionTransferUnsupported
|
|
61
53
|
});
|
|
62
|
-
},
|
|
54
|
+
}, P = (e, t) => {
|
|
63
55
|
let n = new Set(e.map(D));
|
|
64
56
|
if (n.size !== 1) return;
|
|
65
57
|
let [r] = n;
|
|
66
58
|
if (r != null) return (t ? D(t) : r) === r ? r : void 0;
|
|
67
|
-
},
|
|
59
|
+
}, F = (e) => {
|
|
68
60
|
if (e == null) {
|
|
69
|
-
|
|
61
|
+
_(E).onPathChange();
|
|
70
62
|
return;
|
|
71
63
|
}
|
|
72
64
|
let t = D(e);
|
|
73
|
-
t != null && (
|
|
74
|
-
},
|
|
75
|
-
|
|
76
|
-
let r =
|
|
65
|
+
t != null && (y(t), _(t).onPathChange(e));
|
|
66
|
+
}, I = (e) => {
|
|
67
|
+
f.forEach(({ tab: t }) => {
|
|
68
|
+
let r = _(t), i = new Set([...e].filter((e) => D(e) === t));
|
|
77
69
|
n(i, r.expandedPaths) || r.onExpandedPathsChange(i);
|
|
78
70
|
});
|
|
79
|
-
},
|
|
71
|
+
}, L = (e) => O(e).onFolderPopupPathChange(e), R = (e, t) => O(t).onUploadFiles(e, t), z = (e, t, n) => O(n).onUploadArchive(e, t, n), B = (e, t, n) => O(n).onValidateUpload(e, t, n), V = (e, t, n) => O(t).onCreateFolder(e, t, n), H = (e, t) => O(t.path).onCreateFolderValidate(e, t), U = (e) => k(e, (e) => e.path).forEach(([e, t]) => _(e).onDownloadFiles(t)), W = (e, t) => {
|
|
80
72
|
let n = D(t);
|
|
81
|
-
k(e, (e) => e.sourceUrl ?? t).forEach(([e, r]) =>
|
|
82
|
-
},
|
|
73
|
+
k(e, (e) => e.sourceUrl ?? t).forEach(([e, r]) => _(e).onDeleteFiles(r, e === n ? t : ""));
|
|
74
|
+
}, G = (e, t) => O(t.path).onRenameValidate(e, t), K = (e) => k(e, (e) => e.path).forEach(([e, t]) => _(e).onUnshareFiles(t)), q = (e) => k(e, (e) => e.path).forEach(([e, t]) => _(e).onRemoveFilesAccess(t)), oe = (e) => {
|
|
83
75
|
let t = D(e.path) ?? E;
|
|
84
|
-
|
|
85
|
-
},
|
|
76
|
+
x(t), _(t).onGetInfo(e);
|
|
77
|
+
}, se = (e, t) => {
|
|
86
78
|
if (e.length === 0) return;
|
|
87
|
-
let n =
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
v(n).onCopyFiles(e, t);
|
|
93
|
-
}, se = (e, t, n) => {
|
|
79
|
+
let n = P(e.map((e) => e.sourceUrl), t);
|
|
80
|
+
n == null ? N() : _(n).onCopyFiles(e, t);
|
|
81
|
+
}, ce = (e, t, n) => {
|
|
94
82
|
if (e.length === 0) return;
|
|
95
|
-
let r =
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
v(r).onMoveToFiles(e, t, n);
|
|
101
|
-
}, ce = () => m.forEach(({ tab: e }) => v(e).cancelCopyMove());
|
|
102
|
-
if (!h) {
|
|
103
|
-
let e = t.includes(d) ? d : u.MyFiles;
|
|
83
|
+
let r = P(e.map((e) => e.sourceUrl ?? t), n);
|
|
84
|
+
r == null ? N() : _(r).onMoveToFiles(e, t, n);
|
|
85
|
+
}, le = () => f.forEach(({ tab: e }) => _(e).cancelCopyMove());
|
|
86
|
+
if (!p) {
|
|
87
|
+
let e = t.includes(l) ? l : c.MyFiles;
|
|
104
88
|
return {
|
|
105
|
-
...
|
|
89
|
+
..._(e),
|
|
106
90
|
sectionTab: e
|
|
107
91
|
};
|
|
108
92
|
}
|
|
109
|
-
let J =
|
|
93
|
+
let J = f.map(({ tab: e }) => _(e)), Y = _(E), X = _(ae), Z = [Y, ...J].find((e) => e.uploadBatchState != null) ?? Y, ue = J.flatMap((e) => e.downloadBatchState?.files ?? []), de = J.some((e) => e.downloadBatchState?.isOpen) ? {
|
|
110
94
|
isOpen: !0,
|
|
111
|
-
files:
|
|
112
|
-
} : null, Q = (e) => J.some(e), $ = J.map((e) => e.sharedWithMeIds).filter((e) => e != null),
|
|
95
|
+
files: ue
|
|
96
|
+
} : null, Q = (e) => J.some(e), $ = J.map((e) => e.sharedWithMeIds).filter((e) => e != null), fe = new Set(f.filter(({ tab: e }) => e !== E && _(e).isLoading).map(({ tab: e }) => _(e).path));
|
|
113
97
|
return {
|
|
114
98
|
...Y,
|
|
115
99
|
items: J.map((e) => e.items[0]).filter((e) => e != null),
|
|
116
|
-
onPathChange:
|
|
100
|
+
onPathChange: F,
|
|
117
101
|
expandedPaths: i(J.map((e) => e.expandedPaths)),
|
|
118
102
|
loadedPaths: i(J.map((e) => e.loadedPaths)),
|
|
119
|
-
onExpandedPathsChange:
|
|
120
|
-
onFolderPopupPathChange:
|
|
121
|
-
folderPopupLoadingPaths: i([...J.map((e) => e.folderPopupLoadingPaths),
|
|
122
|
-
onUploadFiles:
|
|
123
|
-
onUploadArchive:
|
|
124
|
-
onValidateUpload:
|
|
103
|
+
onExpandedPathsChange: I,
|
|
104
|
+
onFolderPopupPathChange: L,
|
|
105
|
+
folderPopupLoadingPaths: i([...J.map((e) => e.folderPopupLoadingPaths), fe]),
|
|
106
|
+
onUploadFiles: R,
|
|
107
|
+
onUploadArchive: z,
|
|
108
|
+
onValidateUpload: B,
|
|
125
109
|
uploadBatchState: Z.uploadBatchState,
|
|
126
110
|
cancelUpload: Z.cancelUpload,
|
|
127
111
|
cancelUploadFile: Z.cancelUploadFile,
|
|
128
112
|
clearUploadBatch: Z.clearUploadBatch,
|
|
129
|
-
onCreateFolder:
|
|
130
|
-
onCreateFolderValidate:
|
|
113
|
+
onCreateFolder: V,
|
|
114
|
+
onCreateFolderValidate: H,
|
|
131
115
|
isCreatingFolder: Q((e) => e.isCreatingFolder),
|
|
132
|
-
onDownloadFiles:
|
|
116
|
+
onDownloadFiles: U,
|
|
133
117
|
isDownloading: Q((e) => e.isDownloading),
|
|
134
|
-
downloadBatchState:
|
|
118
|
+
downloadBatchState: de,
|
|
135
119
|
cancelDownloadFile: (e) => J.forEach((t) => t.cancelDownloadFile(e)),
|
|
136
120
|
cancelAllDownloads: () => J.forEach((e) => e.cancelAllDownloads()),
|
|
137
121
|
clearDownloadBatch: () => J.forEach((e) => e.clearDownloadBatch()),
|
|
138
|
-
onDeleteFiles:
|
|
122
|
+
onDeleteFiles: W,
|
|
139
123
|
isDeleting: Q((e) => e.isDeleting),
|
|
140
|
-
onRenameValidate:
|
|
141
|
-
onMoveToFiles:
|
|
124
|
+
onRenameValidate: G,
|
|
125
|
+
onMoveToFiles: ce,
|
|
142
126
|
isRenaming: Q((e) => e.isRenaming),
|
|
143
|
-
onCopyFiles:
|
|
127
|
+
onCopyFiles: se,
|
|
144
128
|
isCopying: Q((e) => e.isCopying),
|
|
145
129
|
isMoving: Q((e) => e.isMoving),
|
|
146
|
-
cancelCopyMove:
|
|
130
|
+
cancelCopyMove: le,
|
|
147
131
|
sharedWithMeIds: $.length > 0 ? $.flat() : void 0,
|
|
148
132
|
sharedByMePaths: i(J.map((e) => e.sharedByMePaths)),
|
|
149
|
-
onUnshareFiles:
|
|
133
|
+
onUnshareFiles: K,
|
|
150
134
|
isUnsharing: Q((e) => e.isUnsharing),
|
|
151
|
-
onRemoveFilesAccess:
|
|
135
|
+
onRemoveFilesAccess: q,
|
|
152
136
|
isRemovingAccess: Q((e) => e.isRemovingAccess),
|
|
153
137
|
fileMetadata: X.fileMetadata,
|
|
154
138
|
isFileMetadataLoading: X.isFileMetadataLoading,
|
|
155
|
-
onGetInfo:
|
|
139
|
+
onGetInfo: oe,
|
|
156
140
|
clearMetadata: X.clearMetadata,
|
|
157
141
|
isAnyOperationInProgress: Q((e) => e.isAnyOperationInProgress),
|
|
158
142
|
sectionTab: E
|
|
159
143
|
};
|
|
160
144
|
};
|
|
161
145
|
//#endregion
|
|
162
|
-
export {
|
|
146
|
+
export { l as useDialFileManagerSections };
|
|
@@ -10,7 +10,7 @@ var a = [
|
|
|
10
10
|
], o = 2, s = (s, c, l, u) => {
|
|
11
11
|
let d = t((t) => {
|
|
12
12
|
let n = (e) => u == null || u.includes(e);
|
|
13
|
-
return n(t) ? t
|
|
13
|
+
return n(t) ? t !== i.All || e.filter((e) => n(e)).length >= o : !1;
|
|
14
14
|
}, [u]), f = r(() => l?.filter((e) => d(e.value)), [l, d]);
|
|
15
15
|
return n(() => {
|
|
16
16
|
d(s) || c(a.find((e) => d(e)) ?? i.MyFiles);
|
|
@@ -13,11 +13,11 @@ var o = ({ filesApi: o, bucket: s, rootLabel: c, onNotification: l }) => {
|
|
|
13
13
|
(async () => {
|
|
14
14
|
p(!0);
|
|
15
15
|
try {
|
|
16
|
-
let e = r.bucket ?? s, i = t(r, e, c)
|
|
17
|
-
d(n(await o.getFileMetadata({
|
|
16
|
+
let e = r.bucket ?? s, i = t(r, e, c), a = await o.getFileMetadata({
|
|
18
17
|
bucket: e,
|
|
19
18
|
path: i
|
|
20
|
-
})
|
|
19
|
+
});
|
|
20
|
+
d(n(a, r));
|
|
21
21
|
} catch {
|
|
22
22
|
l?.({
|
|
23
23
|
variant: a.Error,
|
|
@@ -18,7 +18,7 @@ var p = 5, m = (e) => e.error ? `${e.path} (${e.error})` : e.path, h = (e) => {
|
|
|
18
18
|
};
|
|
19
19
|
}, g = (e, t) => `${e}${t}/`, _ = (e) => /\.zip$/i.test(e), v = (e) => {
|
|
20
20
|
let [t] = e;
|
|
21
|
-
if (
|
|
21
|
+
if (e.length === 1 && t != null) return _(t.fileContent.name) && !_(t.name) ? t : void 0;
|
|
22
22
|
}, y = 0, b = () => (y += 1, `${Date.now()}-${y}`), x = (e, t) => ({
|
|
23
23
|
files: [...e?.files ?? [], ...t],
|
|
24
24
|
isOpen: !0
|
|
@@ -24,7 +24,7 @@ var f = ({ fileManagerOptions: f, bucket: p, forbiddenSymbolsRegExp: m, tabLabel
|
|
|
24
24
|
forbiddenSymbolsRegExp: m
|
|
25
25
|
}), [j, M] = c(A.sectionTab);
|
|
26
26
|
j !== A.sectionTab && (M(A.sectionTab), E(/* @__PURE__ */ new Set()));
|
|
27
|
-
let N = o((e) => v == null || v.length === 0
|
|
27
|
+
let N = o((e) => v == null || v.length === 0 || l(e, v), [v]);
|
|
28
28
|
return {
|
|
29
29
|
controller: A,
|
|
30
30
|
activeTab: x,
|
|
@@ -34,7 +34,7 @@ var f = ({ fileManagerOptions: f, bucket: p, forbiddenSymbolsRegExp: m, tabLabel
|
|
|
34
34
|
onSelectedPathsChange: D,
|
|
35
35
|
isRowSelectable: o((e) => {
|
|
36
36
|
let t = e.data;
|
|
37
|
-
return t == null || a(t.path) ? !1 : t.nodeType === u.FOLDER ? b : t.nodeType === u.ITEM
|
|
37
|
+
return t == null || a(t.path) ? !1 : t.nodeType === u.FOLDER ? b : t.nodeType === u.ITEM && !(t.contentType != null && !N(t.contentType) || y != null && t.contentLength != null && t.contentLength > y);
|
|
38
38
|
}, [
|
|
39
39
|
b,
|
|
40
40
|
N,
|
|
@@ -4,18 +4,15 @@ import { collectToolCallNames as i, sanitizeToolName as a } from "@epam/ai-dial-
|
|
|
4
4
|
var o = (o, s, c, l) => {
|
|
5
5
|
let [u, d] = r([]), [f, p] = r([]), m = n(/* @__PURE__ */ new Set());
|
|
6
6
|
e(() => {
|
|
7
|
-
if (m.current = /* @__PURE__ */ new Set(), p([]), s?.features?.mcp !== !0) {
|
|
8
|
-
d([]);
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
if (s.type !== "toolset" && s.type !== "application") {
|
|
7
|
+
if (m.current = /* @__PURE__ */ new Set(), p([]), s?.features?.mcp !== !0 || s.type !== "toolset" && s.type !== "application") {
|
|
12
8
|
d([]);
|
|
13
9
|
return;
|
|
14
10
|
}
|
|
15
11
|
let e = s.id, t = s.type;
|
|
16
12
|
(async () => {
|
|
17
13
|
try {
|
|
18
|
-
|
|
14
|
+
let n = await o.listAppTools(e, t);
|
|
15
|
+
d(n.map(({ resourceUri: n, toolName: r }) => ({
|
|
19
16
|
toolsetId: e,
|
|
20
17
|
resourceUri: n,
|
|
21
18
|
toolName: r,
|
package/oauth/authorize-url.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/oauth/authorize-url.ts
|
|
2
|
-
var e = (e) => `${window.location.origin}${e}`, t = new Set(["http:", "https:"]), n = (e, n, r) => {
|
|
2
|
+
var e = (e) => `${window.location.origin}${e}`, t = /* @__PURE__ */ new Set(["http:", "https:"]), n = (e, n, r) => {
|
|
3
3
|
if (!e.authorizationEndpoint?.trim() || !e.clientId?.trim()) return null;
|
|
4
4
|
try {
|
|
5
5
|
let i = new URL(e.authorizationEndpoint.trim());
|
package/oauth/handshake.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ToolsetOAuthCallbackQuery as e, ToolsetOAuthChannelControlType as t, ToolsetOAuthFailureReason as n, ToolsetOAuthResultType as r } from "./types.js";
|
|
2
2
|
//#region src/oauth/handshake.ts
|
|
3
|
-
var i = "toolset-oauth-", a = (e) => `${i}${e}`, o =
|
|
3
|
+
var i = "toolset-oauth-", a = (e) => `${i}${e}`, o = 3e5, s = 500, c = (e) => {
|
|
4
4
|
switch (e) {
|
|
5
5
|
case n.MissingCode:
|
|
6
6
|
case n.MissingRedirectState:
|
|
@@ -38,11 +38,7 @@ var i = "toolset-oauth-", a = (e) => `${i}${e}`, o = 300 * 1e3, s = 500, c = (e)
|
|
|
38
38
|
return null;
|
|
39
39
|
}, b = () => {
|
|
40
40
|
let e = y();
|
|
41
|
-
|
|
42
|
-
v(e);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
n.closed && _({ type: r.Cancelled });
|
|
41
|
+
e == null ? n.closed && _({ type: r.Cancelled }) : v(e);
|
|
46
42
|
};
|
|
47
43
|
try {
|
|
48
44
|
s = new BroadcastChannel(a(i)), s.onmessage = (e) => {
|
|
@@ -52,10 +48,7 @@ var i = "toolset-oauth-", a = (e) => `${i}${e}`, o = 300 * 1e3, s = 500, c = (e)
|
|
|
52
48
|
window.addEventListener("focus", b);
|
|
53
49
|
let x = setInterval(() => {
|
|
54
50
|
let e = y();
|
|
55
|
-
|
|
56
|
-
v(e);
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
51
|
+
e != null && v(e);
|
|
59
52
|
}, m), S = setTimeout(() => {
|
|
60
53
|
n.close(), _({ type: r.Cancelled });
|
|
61
54
|
}, p), C = y();
|
|
@@ -21,11 +21,8 @@ var d = 500, f = (e) => typeof e == "object" && !!e && "type" in e && e.type ===
|
|
|
21
21
|
} catch {}
|
|
22
22
|
}, h = (e, t) => {
|
|
23
23
|
let r = new URL(window.location.pathname, window.location.origin);
|
|
24
|
-
if (r.searchParams.set(n.Result, t.type), t.type === a.Failure && r.searchParams.set(n.FailureReason, t.reason), m(r), !e)
|
|
25
|
-
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
try {
|
|
24
|
+
if (r.searchParams.set(n.Result, t.type), t.type === a.Failure && r.searchParams.set(n.FailureReason, t.reason), m(r), !e) window.close();
|
|
25
|
+
else try {
|
|
29
26
|
let n = new BroadcastChannel(o(e));
|
|
30
27
|
n.postMessage(t);
|
|
31
28
|
let r = setInterval(() => {
|
|
@@ -40,7 +40,8 @@ var f = /* @__PURE__ */ function(e) {
|
|
|
40
40
|
}), { type: "success" };
|
|
41
41
|
if (S.type === i.Failure) return { type: "failure" };
|
|
42
42
|
try {
|
|
43
|
-
|
|
43
|
+
let e = await h(p);
|
|
44
|
+
if (a(e.authSettings, m) === t.SignedIn) return o({
|
|
44
45
|
toolsetId: p,
|
|
45
46
|
credentialsLevel: m
|
|
46
47
|
}), { type: "success" };
|
|
@@ -3,27 +3,27 @@ import { waitForToolsetOAuthResult as o } from "../../oauth/handshake.js";
|
|
|
3
3
|
import { navigateToolsetOAuthPopup as s, openToolsetOAuthPopup as c } from "../../oauth/popup.js";
|
|
4
4
|
import { useCallback as l } from "react";
|
|
5
5
|
//#region src/offline-credentials/useOfflineCredentialsLogin/useOfflineCredentialsLogin.ts
|
|
6
|
-
var u = "offline-credentials", d =
|
|
6
|
+
var u = "offline-credentials", d = 3e5, f = /* @__PURE__ */ function(e) {
|
|
7
7
|
return e.Success = "success", e.Failure = "failure", e.PopupBlocked = "popup-blocked", e.Cancelled = "cancelled", e.TimedOut = "timed-out", e;
|
|
8
|
-
}({}),
|
|
9
|
-
let
|
|
8
|
+
}({}), p = ({ callbackPath: f }) => ({ login: l(async (l, p, m) => {
|
|
9
|
+
let h = {
|
|
10
10
|
authenticationType: t.OAuth,
|
|
11
11
|
withLogin: a.WithConfig,
|
|
12
12
|
isLoggedIn: !1,
|
|
13
13
|
clientId: l.clientId,
|
|
14
14
|
authorizationEndpoint: l.authorizationEndpoint,
|
|
15
15
|
scopes: l.scopes
|
|
16
|
-
},
|
|
17
|
-
if (!
|
|
18
|
-
let
|
|
19
|
-
if (
|
|
20
|
-
let
|
|
16
|
+
}, g = m ?? c();
|
|
17
|
+
if (!g) return { type: "popup-blocked" };
|
|
18
|
+
let _ = s(g, h, u, f, n.User, e.OfflineCredentials);
|
|
19
|
+
if (_.type !== r.Started) return { type: "failure" };
|
|
20
|
+
let v = Date.now(), y = await o(_.popup, _.flowId, {
|
|
21
21
|
toolsetId: u,
|
|
22
22
|
credentialsLevel: n.User,
|
|
23
|
-
callbackPath:
|
|
23
|
+
callbackPath: f,
|
|
24
24
|
timeoutMs: d
|
|
25
|
-
}),
|
|
26
|
-
return (await
|
|
27
|
-
}, [
|
|
25
|
+
}), b = Date.now() - v;
|
|
26
|
+
return (await p())?.connected ? { type: "success" } : y.type === i.Failure || y.type === i.Success ? { type: "failure" } : b >= 295e3 ? { type: "timed-out" } : { type: "cancelled" };
|
|
27
|
+
}, [f]) });
|
|
28
28
|
//#endregion
|
|
29
|
-
export {
|
|
29
|
+
export { f as OfflineCredentialsLoginOutcomeType, p as useOfflineCredentialsLogin };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-chat-hooks",
|
|
3
3
|
"description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
|
|
4
|
-
"version": "1.3.0-dev.
|
|
4
|
+
"version": "1.3.0-dev.126",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
}
|
|
122
122
|
},
|
|
123
123
|
"dependencies": {
|
|
124
|
-
"@epam/ai-dial-chat-api-client": "1.3.0-dev.
|
|
124
|
+
"@epam/ai-dial-chat-api-client": "1.3.0-dev.126",
|
|
125
125
|
"dompurify": "3.4.16",
|
|
126
126
|
"fflate": "^0.8.3",
|
|
127
127
|
"lru-cache": "^10.4.3",
|
|
@@ -130,22 +130,22 @@
|
|
|
130
130
|
},
|
|
131
131
|
"peerDependencies": {
|
|
132
132
|
"react": "^19.2.8",
|
|
133
|
-
"@epam/ai-dial-attachment-canvas": "1.3.0-dev.
|
|
134
|
-
"@epam/ai-dial-attachment-input": "1.3.0-dev.
|
|
135
|
-
"@epam/ai-dial-catalog": "1.3.0-dev.
|
|
136
|
-
"@epam/ai-dial-chat-overlay": "1.3.0-dev.
|
|
137
|
-
"@epam/ai-dial-chat-shared": "1.3.0-dev.
|
|
138
|
-
"@epam/ai-dial-conversation-input": "1.3.0-dev.
|
|
139
|
-
"@epam/ai-dial-mcp-apps": "1.3.0-dev.
|
|
140
|
-
"@epam/ai-dial-publish-panel": "1.3.0-dev.
|
|
141
|
-
"@epam/ai-dial-quotations": "1.3.0-dev.
|
|
133
|
+
"@epam/ai-dial-attachment-canvas": "1.3.0-dev.126",
|
|
134
|
+
"@epam/ai-dial-attachment-input": "1.3.0-dev.126",
|
|
135
|
+
"@epam/ai-dial-catalog": "1.3.0-dev.126",
|
|
136
|
+
"@epam/ai-dial-chat-overlay": "1.3.0-dev.126",
|
|
137
|
+
"@epam/ai-dial-chat-shared": "1.3.0-dev.126",
|
|
138
|
+
"@epam/ai-dial-conversation-input": "1.3.0-dev.126",
|
|
139
|
+
"@epam/ai-dial-mcp-apps": "1.3.0-dev.126",
|
|
140
|
+
"@epam/ai-dial-publish-panel": "1.3.0-dev.126",
|
|
141
|
+
"@epam/ai-dial-quotations": "1.3.0-dev.126",
|
|
142
142
|
"@epam/ai-dial-react-file-manager": "^0.4.0-dev.11",
|
|
143
|
-
"@epam/ai-dial-scheduled-tasks": "1.3.0-dev.
|
|
144
|
-
"@epam/ai-dial-share": "1.3.0-dev.
|
|
145
|
-
"@epam/ai-dial-skill-editor": "1.3.0-dev.
|
|
146
|
-
"@epam/ai-dial-source-panel": "1.3.0-dev.
|
|
143
|
+
"@epam/ai-dial-scheduled-tasks": "1.3.0-dev.126",
|
|
144
|
+
"@epam/ai-dial-share": "1.3.0-dev.126",
|
|
145
|
+
"@epam/ai-dial-skill-editor": "1.3.0-dev.126",
|
|
146
|
+
"@epam/ai-dial-source-panel": "1.3.0-dev.126",
|
|
147
147
|
"@epam/ai-dial-ui-kit": "^0.16.0-dev.20",
|
|
148
|
-
"@epam/ai-dial-usage-dashboard": "1.3.0-dev.
|
|
148
|
+
"@epam/ai-dial-usage-dashboard": "1.3.0-dev.126",
|
|
149
149
|
"@modelcontextprotocol/sdk": "^1.32.1",
|
|
150
150
|
"@epam/pdf-highlighter-kit": "^0.0.19",
|
|
151
151
|
"@mcp-ui/client": "^7.1.1"
|
|
@@ -33,7 +33,7 @@ var t = /* @__PURE__ */ function(e) {
|
|
|
33
33
|
"minute",
|
|
34
34
|
"day",
|
|
35
35
|
"day_of_week"
|
|
36
|
-
].includes(e) && t !== "*" &&
|
|
36
|
+
].includes(e) && t !== "*" && (e !== "second" || t !== "0")) return o();
|
|
37
37
|
}
|
|
38
38
|
let c = a.hour, l = a.minute, u = a.day === "*" ? void 0 : a.day, d = u === e, f = a.day_of_week === "*" ? void 0 : a.day_of_week, p = f ? [
|
|
39
39
|
"monday",
|
|
@@ -4,7 +4,7 @@ import { getUtcDayShift as n, toLocalDayOfMonth as r, toUtcCronDayOfMonth as i }
|
|
|
4
4
|
import { apSchedulerDayToJsDay as a, jsDayToApSchedulerDay as o } from "../shared/cron-weekday.js";
|
|
5
5
|
import { ScheduledTaskRepeat as s } from "@epam/ai-dial-scheduled-tasks";
|
|
6
6
|
//#region src/scheduled-task/scheduled-task-trigger.ts
|
|
7
|
-
var c = new Set([
|
|
7
|
+
var c = /* @__PURE__ */ new Set([
|
|
8
8
|
"hour",
|
|
9
9
|
"minute",
|
|
10
10
|
"day_of_week",
|
|
@@ -72,7 +72,7 @@ var a = 15e3, o = 48, s = 5e3, c = 2147483647, l = (e, t) => {
|
|
|
72
72
|
if (j.current !== t) return;
|
|
73
73
|
v((e) => {
|
|
74
74
|
let t = new Set(e.map(({ id: e }) => e));
|
|
75
|
-
return [...e, ...r.items.filter(({ id: e }) => t.has(e)
|
|
75
|
+
return [...e, ...r.items.filter(({ id: e }) => !t.has(e) && (t.add(e), !0))];
|
|
76
76
|
}), M.current = n + r.items.length, O(r.next != null || (r.count == null ? r.items.length === m : n + r.items.length < r.count));
|
|
77
77
|
} catch (e) {
|
|
78
78
|
j.current === t && E(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load more scheduled task runs"));
|
|
@@ -111,28 +111,16 @@ var a = 15e3, o = 48, s = 5e3, c = 2147483647, l = (e, t) => {
|
|
|
111
111
|
f,
|
|
112
112
|
m
|
|
113
113
|
]), G = e(() => {
|
|
114
|
-
|
|
115
|
-
V.current = !0;
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
W();
|
|
114
|
+
document.visibilityState === "visible" ? W() : V.current = !0;
|
|
119
115
|
}, [W]);
|
|
120
116
|
return t(() => {
|
|
121
117
|
if (!p || !f || !H) return;
|
|
122
118
|
z.current = 0;
|
|
123
119
|
let e = setInterval(() => {
|
|
124
|
-
|
|
125
|
-
V.current = !0;
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
(async () => {
|
|
120
|
+
document.visibilityState === "visible" ? (async () => {
|
|
129
121
|
let t = await W();
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
(t === "unchanged" || t === "error") && (z.current += 1, z.current >= o && e !== null && (clearInterval(e), e = null));
|
|
135
|
-
})();
|
|
122
|
+
t === "changed" ? z.current = 0 : (t === "unchanged" || t === "error") && (z.current += 1, z.current >= o && e !== null && (clearInterval(e), e = null));
|
|
123
|
+
})() : V.current = !0;
|
|
136
124
|
}, a);
|
|
137
125
|
return () => {
|
|
138
126
|
e !== null && clearInterval(e);
|
|
@@ -156,7 +144,7 @@ var a = 15e3, o = 48, s = 5e3, c = 2147483647, l = (e, t) => {
|
|
|
156
144
|
]), t(() => {
|
|
157
145
|
if (!p || !f) return;
|
|
158
146
|
let e = () => {
|
|
159
|
-
document.visibilityState
|
|
147
|
+
document.visibilityState === "visible" && V.current && (async () => {
|
|
160
148
|
await W() !== "skipped" && (V.current = !1);
|
|
161
149
|
})();
|
|
162
150
|
};
|
|
@@ -59,7 +59,7 @@ var i = (i, { enabled: a = !0, pageSize: o = 20, debounceMs: s = 300, initialSea
|
|
|
59
59
|
if (k.current !== t) return;
|
|
60
60
|
f((e) => {
|
|
61
61
|
let t = new Set(e.map(({ id: e }) => e));
|
|
62
|
-
return [...e, ...r.items.filter(({ id: e }) => t.has(e)
|
|
62
|
+
return [...e, ...r.items.filter(({ id: e }) => !t.has(e) && (t.add(e), !0))];
|
|
63
63
|
}), A.current = n + r.items.length, E(r.next != null);
|
|
64
64
|
} catch (e) {
|
|
65
65
|
k.current === t && w(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load more scheduled tasks"));
|
package/scroll-anchoring.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { e as useConversationScroll };
|
|
1
|
+
export { useConversationScroll } from "./conversation/useConversationScroll/useConversationScroll.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
//#region src/shared/application-schema.ts
|
|
2
|
-
var e =
|
|
2
|
+
var e = (e) => !!e && e.id === "custom_app", t = (e) => !!e && (!!e.id?.endsWith("quickapps2") || e.displayName === "Quick app 2.0"), n = (t) => {
|
|
3
3
|
let n = /* @__PURE__ */ new Set();
|
|
4
|
-
return
|
|
4
|
+
return t.filter((t) => !t.id || e(t) || n.has(t.id) ? !1 : (n.add(t.id), !0));
|
|
5
5
|
};
|
|
6
6
|
//#endregion
|
|
7
|
-
export {
|
|
7
|
+
export { n as getRunnerSchemas, e as isCustomAppSchema, t as isQuickAppSchema };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
//#region src/shared/cron-day-of-month.ts
|
|
2
|
-
var e = "last", t =
|
|
3
|
-
let
|
|
4
|
-
return
|
|
5
|
-
},
|
|
6
|
-
if (e === "last") return
|
|
7
|
-
let
|
|
8
|
-
if (!/^\d+$/.test(e) ||
|
|
9
|
-
let
|
|
10
|
-
return
|
|
2
|
+
var e = "last", t = (e) => Math.round((Date.UTC(e.getUTCFullYear(), e.getUTCMonth(), e.getUTCDate()) - Date.UTC(e.getFullYear(), e.getMonth(), e.getDate())) / 864e5), n = (t, n) => {
|
|
3
|
+
let r = t + n;
|
|
4
|
+
return r < 1 ? e : r > 31 ? "1" : String(r);
|
|
5
|
+
}, r = (e, t) => {
|
|
6
|
+
if (e === "last") return t === -1 ? "1" : void 0;
|
|
7
|
+
let n = Number(e);
|
|
8
|
+
if (!/^\d+$/.test(e) || n < 1 || n > 31) return;
|
|
9
|
+
let r = n - t;
|
|
10
|
+
return r < 1 ? "31" : r > 31 ? "1" : String(r);
|
|
11
11
|
};
|
|
12
12
|
//#endregion
|
|
13
|
-
export { e as CRON_LAST_DAY_OF_MONTH,
|
|
13
|
+
export { e as CRON_LAST_DAY_OF_MONTH, t as getUtcDayShift, r as toLocalDayOfMonth, n as toUtcCronDayOfMonth };
|
package/shared/locale.js
CHANGED
|
@@ -6,14 +6,14 @@ var e = (e) => e.split("-")[0].toLowerCase(), t = (t, n, r) => {
|
|
|
6
6
|
return t[n] ?? t[i] ?? t[r] ?? Object.values(t).find((e) => e !== void 0) ?? "";
|
|
7
7
|
}, n = (t, n) => `${t} [${e(n).toUpperCase()}]`, r = (e, t) => {
|
|
8
8
|
let n = /* @__PURE__ */ new Map();
|
|
9
|
-
for (let r of e)
|
|
9
|
+
for (let r of e) r.language && r.language !== t && (r.name || r.description) && n.set(r.language, {
|
|
10
10
|
language: r.language,
|
|
11
11
|
name: r.name || void 0,
|
|
12
12
|
description: r.description || void 0
|
|
13
13
|
});
|
|
14
14
|
return n.size > 0 ? Array.from(n.values()) : void 0;
|
|
15
15
|
}, i = (e, t, n) => {
|
|
16
|
-
let r = typeof e == "object" ? e : {}, i = typeof t == "object" ? t : {}, a = new Set([...Object.keys(r), ...Object.keys(i)]);
|
|
16
|
+
let r = typeof e == "object" ? e : {}, i = typeof t == "object" ? t : {}, a = /* @__PURE__ */ new Set([...Object.keys(r), ...Object.keys(i)]);
|
|
17
17
|
a.delete(n);
|
|
18
18
|
let o = 0;
|
|
19
19
|
return Array.from(a, (e) => ({
|