@epam/ai-dial-chat-hooks 1.3.0-dev.256 → 1.3.0-dev.259

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":"generation-resume.d.ts","sourceRoot":"","sources":["../../../src/conversation/useConversationStream/generation-resume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generation-resume.d.ts","sourceRoot":"","sources":["../../../src/conversation/useConversationStream/generation-resume.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,OAAO,EAEb,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAQxE,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAE3E;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,OAAO,KAAG,OAWtD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,GAC5C,cAAc,YAAY,KACzB,MAKA,CAAC;AAEJ;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,GACrC,cAAc,YAAY,KACzB,OAUF,CAAC;AA6BF,eAAO,MAAM,0BAA0B,UAAkC,CAAC;AAe1E;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACvC,MAAM,MAAM,OAAO,CAAC,YAAY,CAAC,EACjC,YAAY,MAAM,OAAO,EACzB,YAAY,CAAC,YAAY,EAAE,YAAY,KAAK,OAAO,KAClD,OAAO,CAAC,YAAY,GAAG,IAAI,CAiB7B,CAAC;AAUF,sGAAsG;AACtG,MAAM,WAAW,uBAAuB;IACtC,qIAAqI;IACrI,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oGAAoG;IACpG,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,2GAA2G;IAC3G,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,sFAAsF;AACtF,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,2BAA2B,CAAC;IACvC,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;IAC/D,eAAe,EAAE,gBAAgB,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACvD,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,sBAAsB,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1E,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,iCAAiC,CAAC,EAAE,MAAM,CAAC;IAC3C,uEAAuE;IACvE,aAAa,CAAC,EAAE,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAC1B,SAAS,EAAE,MAAM,OAAO,KACrB,IAAI,CAAC;IACV,2DAA2D;IAC3D,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,iFAAiF;IACjF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,kGAAkG;IAClG,2BAA2B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3E;;;OAGG;IACH,yBAAyB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1E;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gCAAgC,GAAI,wTAgB9C,8BAA8B,MAE7B,uBAAuB,MAAM,EAC7B,cAAc,YAAY,EAC1B,UAAS,uBAA4B,KACpC,IA6SJ,CAAC"}
@@ -1,83 +1,55 @@
1
1
  import { safeDecodeURI as e } from "../../shared/string-utils.js";
2
2
  import { DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as t, GenerationPersistenceError as n } from "../create-chat-stream-api.js";
3
- import { getConversationPath as r } from "./conversation-path.js";
4
- import { applyChunkToMessages as i } from "./apply-chunk.js";
5
- import { restoreBufferedMessage as a } from "./buffered-generation.js";
6
- import { BackgroundGenerationStatus as o, MessageRole as s } from "@epam/ai-dial-chat-shared";
3
+ import { readSseEvents as r } from "../../shared/read-sse-events.js";
4
+ import { getConversationPath as i } from "./conversation-path.js";
5
+ import { applyChunkToMessages as a } from "./apply-chunk.js";
6
+ import { restoreBufferedMessage as o } from "./buffered-generation.js";
7
+ import { BackgroundGenerationStatus as s, MessageRole as c } from "@epam/ai-dial-chat-shared";
7
8
  //#region src/conversation/useConversationStream/generation-resume.ts
8
- var c = (e) => {
9
+ var l = (e) => {
9
10
  let t = e.custom_content;
10
11
  return !!e.content || e.responseId != null || !!t?.attachments?.length || !!t?.stages?.length || !!t?.annotations?.length || !!t?.form_schema || t?.state != null;
11
- }, l = (e) => e.messages.findIndex((e) => e.backgroundGeneration?.status === o.Pending), u = (e) => {
12
- if (l(e) !== -1) return !0;
12
+ }, u = (e) => e.messages.findIndex((e) => e.backgroundGeneration?.status === s.Pending), d = (e) => {
13
+ if (u(e) !== -1) return !0;
13
14
  let t = e.messages[e.messages.length - 1];
14
- return !!t && t.role === s.Assistant && !c(t) && t.streamErrorMessage == null && !t.wasStoppedByUser;
15
- }, d = 3e5, f = "awaiting-resume", p = [
15
+ return !!t && t.role === c.Assistant && !l(t) && t.streamErrorMessage == null && !t.wasStoppedByUser;
16
+ }, f = 3e5, p = "awaiting-resume", m = [
16
17
  1e3,
17
18
  2e3,
18
19
  4e3,
19
20
  8e3,
20
21
  16e3
21
- ], m = (e) => new Promise((t) => {
22
+ ], h = (e) => new Promise((t) => {
22
23
  let n = typeof window < "u", r = () => {
23
24
  clearTimeout(i), n && window.removeEventListener("online", r), t();
24
25
  }, i = setTimeout(r, e);
25
26
  n && window.addEventListener("online", r);
26
- }), h = async (e, t, n) => {
27
- for (let r = 0; r <= p.length; r++) {
27
+ }), g = async (e, t, n) => {
28
+ for (let r = 0; r <= m.length; r++) {
28
29
  if (t()) return null;
29
30
  try {
30
31
  let t = await e();
31
32
  if (!n?.(t)) return t;
32
33
  } catch {}
33
- if (r === p.length) return null;
34
- await m(p[r]);
34
+ if (r === m.length) return null;
35
+ await h(m[r]);
35
36
  }
36
37
  return null;
37
- }, g = async (e, t) => {
38
- let n = e.getReader(), r = new TextDecoder(), i = "";
39
- try {
40
- for (;;) {
41
- let { done: e, value: a } = await n.read();
42
- if (e) break;
43
- i += r.decode(a, { stream: !0 });
44
- let o = i.split("\n");
45
- i = o.pop() ?? "";
46
- let s = !1;
47
- for (let e of o) {
48
- let n = e.trim();
49
- if (!n.startsWith("data:")) continue;
50
- let r = n.slice(5).trim(), i;
51
- try {
52
- i = JSON.parse(r);
53
- } catch {
54
- continue;
55
- }
56
- if (await t(i)) {
57
- s = !0;
58
- break;
59
- }
60
- }
61
- if (s) break;
62
- }
63
- } catch {} finally {
64
- n.releaseLock();
65
- }
66
- }, _ = ({ transport: o, setConversation: s, conversationRef: p, resumingPathsRef: m, bufferedGenerationsRef: h, addStreamingPath: _, removeStreamingPath: v, isPathDisplayed: y, generationPersistenceErrorMessage: b = t, frameScheduler: x, stoppedGenerationIdsRef: S, rememberResumedGenerationId: C, forgetResumedGenerationId: w, onReloadError: T, onReloadSuccess: E }) => (t, D, O = {}) => {
67
- if (!u(D)) {
38
+ }, _ = ({ transport: s, setConversation: c, conversationRef: m, resumingPathsRef: h, bufferedGenerationsRef: g, addStreamingPath: _, removeStreamingPath: v, isPathDisplayed: y, generationPersistenceErrorMessage: b = t, frameScheduler: x, stoppedGenerationIdsRef: S, rememberResumedGenerationId: C, forgetResumedGenerationId: w, onReloadError: T, onReloadSuccess: E }) => (t, D, O = {}) => {
39
+ if (!d(D)) {
68
40
  O.onSettled?.();
69
41
  return;
70
42
  }
71
- let k = r(t);
72
- if (!O.skipDedupe && m.current.has(k)) return;
73
- m.current.add(k), _(k);
74
- let A = l(D), j = A !== -1, M = j ? A : D.messages.length - 1, N = {
75
- generationId: f,
43
+ let k = i(t);
44
+ if (!O.skipDedupe && h.current.has(k)) return;
45
+ h.current.add(k), _(k);
46
+ let A = u(D), j = A !== -1, M = j ? A : D.messages.length - 1, N = {
47
+ generationId: p,
76
48
  messageIndex: M,
77
49
  message: O.seedMessage ?? D.messages[M]
78
50
  };
79
- h.current.set(k, N);
80
- let P = () => h.current.get(k) === N, F = j ? D.messages[M].backgroundGeneration?.generationId : void 0, I, L = () => {
51
+ g.current.set(k, N);
52
+ let P = () => g.current.get(k) === N, F = j ? D.messages[M].backgroundGeneration?.generationId : void 0, I, L = () => {
81
53
  let e = F ?? I;
82
54
  return e != null && (S?.current.has(e) ?? !1);
83
55
  }, R = (e) => {
@@ -88,88 +60,88 @@ var c = (e) => {
88
60
  I = void 0, S?.current.delete(e), w?.(k, e);
89
61
  }, B = (e, t = !1) => {
90
62
  if (x?.flush(k), F != null && S?.current.delete(F), z(), !P()) return;
91
- m.current.delete(k), v(k);
92
- let n = !j && e && e.messages.length - 1 === M && u(e) && c(N.message);
63
+ h.current.delete(k), v(k);
64
+ let n = !j && e && e.messages.length - 1 === M && d(e) && l(N.message);
93
65
  t || n ? (N.message = {
94
66
  ...N.message,
95
67
  streamErrorMessage: b
96
- }, y(k) && s((e) => {
68
+ }, y(k) && c((e) => {
97
69
  if (!e || !P() || !y(k)) return e;
98
- let t = a(e, N);
99
- return p.current = t, t;
100
- })) : (h.current.delete(k), e && y(k) && (s(e), p.current = e));
70
+ let t = o(e, N);
71
+ return m.current = t, t;
72
+ })) : (g.current.delete(k), e && y(k) && (c(e), m.current = e));
101
73
  }, V = async () => {
102
74
  if (P()) try {
103
- let n = await o.getConversation(e(t));
75
+ let n = await s.getConversation(e(t));
104
76
  if (!P()) return;
105
77
  E?.(k), B(n);
106
78
  } catch {
107
79
  if (!P()) return;
108
- x?.flush(k), m.current.delete(k), v(k), F != null && S?.current.delete(F), z(), T?.(k, V, P);
80
+ x?.flush(k), h.current.delete(k), v(k), F != null && S?.current.delete(F), z(), T?.(k, V, P);
109
81
  }
110
82
  }, H = (e) => {
111
- x?.cancel(k), P() && (N.message = e, y(k) && s((e) => {
83
+ x?.cancel(k), P() && (N.message = e, y(k) && c((e) => {
112
84
  if (!e || !P() || !y(k)) return e;
113
- let t = a(e, N);
114
- return p.current = t, t;
85
+ let t = o(e, N);
86
+ return m.current = t, t;
115
87
  }));
116
- }, U = () => s((e) => {
88
+ }, U = () => c((e) => {
117
89
  if (!e || !P() || !y(k)) return e;
118
- let t = a(e, N);
119
- return p.current = t, t;
90
+ let t = o(e, N);
91
+ return m.current = t, t;
120
92
  }), W = (e) => {
121
93
  if (!P() || L()) return;
122
- let t = i([N.message], 0, e);
94
+ let t = a([N.message], 0, e);
123
95
  t && (N.message = t[0]), y(k) && (x ? x.schedule(k, U) : U());
124
96
  }, G = async () => {
125
- let n = new AbortController(), r;
97
+ let n = new AbortController(), i;
126
98
  try {
127
- r = await o.watchConversation(k, n.signal);
99
+ i = await s.watchConversation(k, n.signal);
128
100
  } catch {
129
101
  await V();
130
102
  return;
131
103
  }
132
104
  try {
133
- let i = await o.getConversation(e(t));
134
- if (!u(i)) {
135
- n.abort(), r.cancel().catch(() => void 0), B(i);
105
+ let r = await s.getConversation(e(t));
106
+ if (!d(r)) {
107
+ n.abort(), i.cancel().catch(() => void 0), B(r);
136
108
  return;
137
109
  }
138
110
  } catch {}
139
- let i = !1, a = window.setTimeout(() => {
111
+ let a = !1, o = window.setTimeout(() => {
140
112
  n.abort();
141
- }, d);
113
+ }, f);
142
114
  try {
143
- await g(r, async (n) => {
115
+ await r(i, async (n) => {
144
116
  if (n?.action !== "UPDATE") return !1;
145
117
  try {
146
- let n = await o.getConversation(e(t));
147
- if (!u(n)) return B(n), i = !0, !0;
118
+ let n = await s.getConversation(e(t));
119
+ if (!d(n)) return B(n), a = !0, !0;
148
120
  } catch {}
149
121
  return !1;
150
122
  });
151
123
  } finally {
152
- clearTimeout(a);
124
+ clearTimeout(o);
153
125
  }
154
- i || await V();
126
+ a || await V();
155
127
  }, K = async () => {
156
128
  let e = new AbortController(), t;
157
129
  try {
158
- t = await o.attachToGeneration(k, e.signal);
130
+ t = await s.attachToGeneration(k, e.signal);
159
131
  } catch {
160
132
  return !1;
161
133
  }
162
- let r = !1, i = !1;
163
- return await g(t, (e) => {
134
+ let i = !1, a = !1;
135
+ return await r(t, (e) => {
164
136
  if (!P()) return !0;
165
137
  switch (e.type) {
166
138
  case "snapshot": return R(e.generationId), H(e.message), !1;
167
139
  case "chunk": return W(e.chunk), !1;
168
140
  case "done":
169
141
  case "error":
170
- case "stopped": return i = e.type === "error" && e.errorType === n.type, r = !0, !0;
142
+ case "stopped": return a = e.type === "error" && e.errorType === n.type, i = !0, !0;
171
143
  }
172
- }), r ? (i ? B(void 0, !0) : await V(), !0) : (z(), !P());
144
+ }), i ? (a ? B(void 0, !0) : await V(), !0) : (z(), !P());
173
145
  };
174
146
  (async () => {
175
147
  try {
@@ -180,4 +152,4 @@ var c = (e) => {
180
152
  })();
181
153
  };
182
154
  //#endregion
183
- export { p as RECOVERY_REFETCH_DELAYS_MS, _ as createResumeIfAwaitingGeneration, h as fetchConversationForRecovery, l as findPendingBackgroundMessageIndex, c as hasGeneratedPayload, u as isAwaitingGenerationResume };
155
+ export { m as RECOVERY_REFETCH_DELAYS_MS, _ as createResumeIfAwaitingGeneration, g as fetchConversationForRecovery, u as findPendingBackgroundMessageIndex, l as hasGeneratedPayload, d as isAwaitingGenerationResume };
package/file-manager.js CHANGED
@@ -7,25 +7,25 @@ import { COLUMNS_MY_FILES as h, COLUMNS_ORGANIZATION as g, COLUMNS_SHARED as _,
7
7
  import { buildSharedItemVirtualPath as w, dialCorePathToRelative as T, findDialFileByPath as E, findFolderByVirtualPath as D, formatOperationFolderName as O, getVirtualPathName as k, hasDialFileWritePermission as A, hasForbiddenNameSymbols as j, hasSamePaths as M, isCopyMoveDuplicateAllowed as N, isShareActionsAllowed as P, normalizeVirtualPath as F, parseNewFolderVirtualPath as I, resolveOwnerCoords as L, resolveSectionByPath as R, unionPathSets as z, withRoutableRootLabels as B } from "./files/dial-file-manager-path.util.js";
8
8
  import { resolveDialFileApiPath as V, virtualPathToApiPath as H } from "./files/resolve-dial-file-api-path.js";
9
9
  import { prepareCopyItems as U, prepareMoveRenameItems as W } from "./files/dial-file-manager-copy-move.util.js";
10
- import { UploadNetworkError as G, createUploadFileWithProgress as K } from "./files/create-upload-file-with-progress.js";
11
- import { buildFromCache as q, buildSharedSearchScope as J, fetchByTab as Y, fetchForSearch as X, findFirstSuccessfulCopyMoveItem as Z, mapCorePermissions as Q, mapFileMetadataToDialFile as $, mapSearchItem as ee, mergeCreatedFolderIntoCache as te, resolveTransferFailureReason as ne, resolveUploadFailureReason as re, updateEntry as ie } from "./files/dial-file-manager-mapping.util.js";
12
- import { createFilesApiClient as ae } from "./files/create-files-api.js";
13
- import { openAnnotationAttachment as oe } from "./files/annotation.js";
14
- import { getUrlFileName as se, isExternalSourcePreviewable as ce, resolveExternalSourceContentType as le } from "./files/source-content.js";
15
- import { annotationToDisplayAttachment as ue, attachmentDtoToDisplayAttachment as de, attachmentDtosToDisplayAttachments as fe } from "./files/attachment-dto-to-display.js";
16
- import { dialFileToAttachment as pe, dialFilesToAttachments as me, dialFolderPathToAttachment as he } from "./files/dial-file-to-attachment.js";
17
- import { DownloadDestinationType as ge } from "./files/download-destination.js";
18
- import { prepareDownloadDestination as _e } from "./files/prepare-download-destination.js";
19
- import { deriveActionProfile as ve } from "./files/file-manager-variant.js";
20
- import { useDialFileListing as ye } from "./files/useDialFileListing/useDialFileListing.js";
21
- import { useDialFileMetadata as be } from "./files/useDialFileMetadata/useDialFileMetadata.js";
22
- import { useDialFileMutations as xe } from "./files/useDialFileMutations/useDialFileMutations.js";
23
- import { useDialFileSharing as Se } from "./files/useDialFileSharing/useDialFileSharing.js";
24
- import { useDialFileUploadBatch as Ce } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
25
- import { useDialFileManager as we } from "./files/useDialFileManager/useDialFileManager.js";
26
- import { useDialFileManagerSections as Te } from "./files/useDialFileManagerSections/useDialFileManagerSections.js";
27
- import { useDialFileManagerTabConfig as Ee } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
28
- import { useFileAttachmentPicker as De } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
29
- import { useFileAttachmentModalState as Oe } from "./files/useFileAttachmentModalState/useFileAttachmentModalState.js";
30
- import { useGridEditingScroll as ke } from "@epam/ai-dial-chat-shared";
31
- export { h as COLUMNS_MY_FILES, g as COLUMNS_ORGANIZATION, _ as COLUMNS_SHARED, v as CORE_PERMISSION_MAP, y as DATE_OPTIONS, b as DIAL_FILE_MANAGER_SECTION_TABS, d as DialFilesApiUploadMode, ge as DownloadDestinationType, f as FileManagerNotificationReason, p as FileNameValidationErrorReason, m as FileOperationKind, x as PATH_SEPARATOR_REGEXP, S as RESERVED_MARKER_NAME, C as UPLOAD_CONCURRENCY, G as UploadNetworkError, ue as annotationToDisplayAttachment, de as attachmentDtoToDisplayAttachment, fe as attachmentDtosToDisplayAttachments, q as buildFromCache, w as buildSharedItemVirtualPath, J as buildSharedSearchScope, ae as createFilesApiClient, K as createUploadFileWithProgress, ve as deriveActionProfile, T as dialCorePathToRelative, pe as dialFileToAttachment, me as dialFilesToAttachments, he as dialFolderPathToAttachment, Y as fetchByTab, X as fetchForSearch, E as findDialFileByPath, Z as findFirstSuccessfulCopyMoveItem, D as findFolderByVirtualPath, O as formatOperationFolderName, se as getUrlFileName, k as getVirtualPathName, A as hasDialFileWritePermission, j as hasForbiddenNameSymbols, M as hasSamePaths, N as isCopyMoveDuplicateAllowed, i as isDialFileAcceptType, e as isDialFileId, t as isDialFolderId, ce as isExternalSourcePreviewable, P as isShareActionsAllowed, Q as mapCorePermissions, $ as mapFileMetadataToDialFile, ee as mapSearchItem, te as mergeCreatedFolderIntoCache, a as mimeTypesToAttachmentExtensionLabels, o as mimeTypesToDialFileAcceptTypes, s as mimeTypesToFileAccept, F as normalizeVirtualPath, oe as openAnnotationAttachment, I as parseNewFolderVirtualPath, U as prepareCopyItems, _e as prepareDownloadDestination, W as prepareMoveRenameItems, V as resolveDialFileApiPath, n as resolveDialFileBucketAndPath, le as resolveExternalSourceContentType, L as resolveOwnerCoords, r as resolveRelativeDialFilePath, R as resolveSectionByPath, ne as resolveTransferFailureReason, re as resolveUploadFailureReason, c as sanitizeFileName, l as splitFileNameExtension, u as trimFileNameToByteLimit, z as unionPathSets, ie as updateEntry, ye as useDialFileListing, we as useDialFileManager, Te as useDialFileManagerSections, Ee as useDialFileManagerTabConfig, be as useDialFileMetadata, xe as useDialFileMutations, Se as useDialFileSharing, Ce as useDialFileUploadBatch, Oe as useFileAttachmentModalState, De as useFileAttachmentPicker, ke as useGridEditingScroll, H as virtualPathToApiPath, B as withRoutableRootLabels };
10
+ import { UploadBodyEncoding as G, UploadNetworkError as K, createUploadFileWithProgress as q } from "./files/create-upload-file-with-progress.js";
11
+ import { buildFromCache as J, buildSharedSearchScope as Y, fetchByTab as X, fetchForSearch as Z, findFirstSuccessfulCopyMoveItem as Q, mapCorePermissions as $, mapFileMetadataToDialFile as ee, mapSearchItem as te, mergeCreatedFolderIntoCache as ne, resolveTransferFailureReason as re, resolveUploadFailureReason as ie, updateEntry as ae } from "./files/dial-file-manager-mapping.util.js";
12
+ import { createFilesApiClient as oe } from "./files/create-files-api.js";
13
+ import { openAnnotationAttachment as se } from "./files/annotation.js";
14
+ import { getUrlFileName as ce, isExternalSourcePreviewable as le, resolveExternalSourceContentType as ue } from "./files/source-content.js";
15
+ import { annotationToDisplayAttachment as de, attachmentDtoToDisplayAttachment as fe, attachmentDtosToDisplayAttachments as pe } from "./files/attachment-dto-to-display.js";
16
+ import { dialFileToAttachment as me, dialFilesToAttachments as he, dialFolderPathToAttachment as ge } from "./files/dial-file-to-attachment.js";
17
+ import { DownloadDestinationType as _e } from "./files/download-destination.js";
18
+ import { prepareDownloadDestination as ve } from "./files/prepare-download-destination.js";
19
+ import { deriveActionProfile as ye } from "./files/file-manager-variant.js";
20
+ import { useDialFileListing as be } from "./files/useDialFileListing/useDialFileListing.js";
21
+ import { useDialFileMetadata as xe } from "./files/useDialFileMetadata/useDialFileMetadata.js";
22
+ import { useDialFileMutations as Se } from "./files/useDialFileMutations/useDialFileMutations.js";
23
+ import { useDialFileSharing as Ce } from "./files/useDialFileSharing/useDialFileSharing.js";
24
+ import { useDialFileUploadBatch as we } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
25
+ import { useDialFileManager as Te } from "./files/useDialFileManager/useDialFileManager.js";
26
+ import { useDialFileManagerSections as Ee } from "./files/useDialFileManagerSections/useDialFileManagerSections.js";
27
+ import { useDialFileManagerTabConfig as De } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
28
+ import { useFileAttachmentPicker as Oe } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
29
+ import { useFileAttachmentModalState as ke } from "./files/useFileAttachmentModalState/useFileAttachmentModalState.js";
30
+ import { useGridEditingScroll as Ae } from "@epam/ai-dial-chat-shared";
31
+ export { h as COLUMNS_MY_FILES, g as COLUMNS_ORGANIZATION, _ as COLUMNS_SHARED, v as CORE_PERMISSION_MAP, y as DATE_OPTIONS, b as DIAL_FILE_MANAGER_SECTION_TABS, d as DialFilesApiUploadMode, _e as DownloadDestinationType, f as FileManagerNotificationReason, p as FileNameValidationErrorReason, m as FileOperationKind, x as PATH_SEPARATOR_REGEXP, S as RESERVED_MARKER_NAME, C as UPLOAD_CONCURRENCY, G as UploadBodyEncoding, K as UploadNetworkError, de as annotationToDisplayAttachment, fe as attachmentDtoToDisplayAttachment, pe as attachmentDtosToDisplayAttachments, J as buildFromCache, w as buildSharedItemVirtualPath, Y as buildSharedSearchScope, oe as createFilesApiClient, q as createUploadFileWithProgress, ye as deriveActionProfile, T as dialCorePathToRelative, me as dialFileToAttachment, he as dialFilesToAttachments, ge as dialFolderPathToAttachment, X as fetchByTab, Z as fetchForSearch, E as findDialFileByPath, Q as findFirstSuccessfulCopyMoveItem, D as findFolderByVirtualPath, O as formatOperationFolderName, ce as getUrlFileName, k as getVirtualPathName, A as hasDialFileWritePermission, j as hasForbiddenNameSymbols, M as hasSamePaths, N as isCopyMoveDuplicateAllowed, i as isDialFileAcceptType, e as isDialFileId, t as isDialFolderId, le as isExternalSourcePreviewable, P as isShareActionsAllowed, $ as mapCorePermissions, ee as mapFileMetadataToDialFile, te as mapSearchItem, ne as mergeCreatedFolderIntoCache, a as mimeTypesToAttachmentExtensionLabels, o as mimeTypesToDialFileAcceptTypes, s as mimeTypesToFileAccept, F as normalizeVirtualPath, se as openAnnotationAttachment, I as parseNewFolderVirtualPath, U as prepareCopyItems, ve as prepareDownloadDestination, W as prepareMoveRenameItems, V as resolveDialFileApiPath, n as resolveDialFileBucketAndPath, ue as resolveExternalSourceContentType, L as resolveOwnerCoords, r as resolveRelativeDialFilePath, R as resolveSectionByPath, re as resolveTransferFailureReason, ie as resolveUploadFailureReason, c as sanitizeFileName, l as splitFileNameExtension, u as trimFileNameToByteLimit, z as unionPathSets, ae as updateEntry, be as useDialFileListing, Te as useDialFileManager, Ee as useDialFileManagerSections, De as useDialFileManagerTabConfig, xe as useDialFileMetadata, Se as useDialFileMutations, Ce as useDialFileSharing, we as useDialFileUploadBatch, ke as useFileAttachmentModalState, Oe as useFileAttachmentPicker, Ae as useGridEditingScroll, H as virtualPathToApiPath, B as withRoutableRootLabels };
@@ -3,6 +3,18 @@ import { UploadFileWithProgressFn } from './create-files-api';
3
3
  export declare class UploadNetworkError extends Error {
4
4
  constructor();
5
5
  }
6
+ /** How {@link createUploadFileWithProgress} encodes the upload request. */
7
+ export declare enum UploadBodyEncoding {
8
+ /** `POST` with a `FormData` body carrying `file`, `bucket`, `path` and `uploadMode`. */
9
+ Multipart = "multipart",
10
+ /**
11
+ * `PUT` with the `File` itself as the body (`Content-Type:
12
+ * application/octet-stream`) and `bucket`, `path`, `uploadMode` and
13
+ * `contentType` in the query string, so the server can stream the body
14
+ * without parsing it.
15
+ */
16
+ Raw = "raw"
17
+ }
6
18
  export interface CreateUploadFileWithProgressDeps {
7
19
  /** Returns the currently held CSRF token, or `null` when none is set. */
8
20
  getCsrfToken: () => string | null;
@@ -14,6 +26,11 @@ export interface CreateUploadFileWithProgressDeps {
14
26
  createUnauthorizedError: (url: string) => Error;
15
27
  /** The upload endpoint's URL. */
16
28
  uploadUrl: string;
29
+ /**
30
+ * How the request carries the file and its fields; must match what the
31
+ * endpoint at `uploadUrl` accepts. Defaults to {@link UploadBodyEncoding.Multipart}.
32
+ */
33
+ bodyEncoding?: UploadBodyEncoding;
17
34
  /** Builds the `XMLHttpRequest` instance to upload through. Defaults to `() => new XMLHttpRequest()`. */
18
35
  xhrFactory?: () => XMLHttpRequest;
19
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-upload-file-with-progress.d.ts","sourceRoot":"","sources":["../../src/files/create-upload-file-with-progress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,oBAAoB,CAAC;AA2B5B,mFAAmF;AACnF,qBAAa,kBAAmB,SAAQ,KAAK;;CAK5C;AAED,MAAM,WAAW,gCAAgC;IAC/C,yEAAyE;IACzE,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,oEAAoE;IACpE,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,kEAAkE;IAClE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,oEAAoE;IACpE,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC;IAChD,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,UAAU,CAAC,EAAE,MAAM,cAAc,CAAC;CACnC;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACvC,MAAM,gCAAgC,KACrC,wBA8EF,CAAC"}
1
+ {"version":3,"file":"create-upload-file-with-progress.d.ts","sourceRoot":"","sources":["../../src/files/create-upload-file-with-progress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,oBAAoB,CAAC;AA2B5B,mFAAmF;AACnF,qBAAa,kBAAmB,SAAQ,KAAK;;CAK5C;AAED,2EAA2E;AAC3E,oBAAY,kBAAkB;IAC5B,wFAAwF;IACxF,SAAS,cAAc;IACvB;;;;;OAKG;IACH,GAAG,QAAQ;CACZ;AAED,MAAM,WAAW,gCAAgC;IAC/C,yEAAyE;IACzE,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,oEAAoE;IACpE,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7C,kEAAkE;IAClE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,oEAAoE;IACpE,uBAAuB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,CAAC;IAChD,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,wGAAwG;IACxG,UAAU,CAAC,EAAE,MAAM,cAAc,CAAC;CACnC;AAED;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACvC,MAAM,gCAAgC,KACrC,wBA+FF,CAAC"}
@@ -14,37 +14,45 @@ var e = class extends Error {
14
14
  constructor() {
15
15
  super("Upload failed"), this.name = "UploadNetworkError";
16
16
  }
17
- }, n = (n) => {
18
- let { uploadUrl: r, xhrFactory: i = () => new XMLHttpRequest() } = n;
19
- return (a, o, s, { signal: c, onProgress: l, uploadMode: u } = {}) => new Promise((d, f) => {
20
- let p = i();
21
- p.open("POST", r), p.withCredentials = !0;
22
- let m = n.getCsrfToken();
23
- m != null && p.setRequestHeader("X-CSRF-Token", m);
24
- let h = new FormData();
25
- if (h.append("file", s), h.append("bucket", a), h.append("path", o), u != null && h.append("uploadMode", u), p.upload.addEventListener("progress", (e) => {
26
- !l || !e.lengthComputable || e.total <= 0 || l(Math.min(100, Math.round(e.loaded / e.total * 100)));
27
- }), p.addEventListener("load", () => {
28
- let t = p.getResponseHeader("x-csrf-token");
29
- if (t && n.setCsrfToken(t), p.status >= 200 && p.status < 300) try {
30
- d(JSON.parse(p.responseText));
17
+ }, n = /* @__PURE__ */ function(e) {
18
+ return e.Multipart = "multipart", e.Raw = "raw", e;
19
+ }({}), r = (n) => {
20
+ let { uploadUrl: r, bodyEncoding: i = "multipart", xhrFactory: a = () => new XMLHttpRequest() } = n;
21
+ return (o, s, c, { signal: l, onProgress: u, uploadMode: d } = {}) => new Promise((f, p) => {
22
+ let m = a(), h = i === "raw", g = new URLSearchParams({
23
+ bucket: o,
24
+ path: s
25
+ });
26
+ d != null && g.append("uploadMode", d), h ? (c.type !== "" && g.append("contentType", c.type), m.open("PUT", `${r}?${g.toString()}`), m.setRequestHeader("Content-Type", "application/octet-stream")) : m.open("POST", r), m.withCredentials = !0;
27
+ let _ = n.getCsrfToken();
28
+ if (_ != null && m.setRequestHeader("X-CSRF-Token", _), m.upload.addEventListener("progress", (e) => {
29
+ !u || !e.lengthComputable || e.total <= 0 || u(Math.min(100, Math.round(e.loaded / e.total * 100)));
30
+ }), m.addEventListener("load", () => {
31
+ let t = m.getResponseHeader("x-csrf-token");
32
+ if (t && n.setCsrfToken(t), m.status >= 200 && m.status < 300) try {
33
+ f(JSON.parse(m.responseText));
31
34
  } catch {
32
- f(/* @__PURE__ */ Error("Upload response was not valid JSON"));
35
+ p(/* @__PURE__ */ Error("Upload response was not valid JSON"));
33
36
  }
34
- else p.status === 401 ? (n.notifyUnauthorized(r), f(n.createUnauthorizedError(r))) : f(new e(p));
35
- }), p.addEventListener("error", () => {
36
- f(new t());
37
- }), p.addEventListener("abort", () => {
38
- f(new DOMException("Upload aborted", "AbortError"));
39
- }), c != null) {
40
- if (c.aborted) {
41
- p.abort();
37
+ else m.status === 401 ? (n.notifyUnauthorized(r), p(n.createUnauthorizedError(r))) : p(new e(m));
38
+ }), m.addEventListener("error", () => {
39
+ p(new t());
40
+ }), m.addEventListener("abort", () => {
41
+ p(new DOMException("Upload aborted", "AbortError"));
42
+ }), l != null) {
43
+ if (l.aborted) {
44
+ m.abort();
42
45
  return;
43
46
  }
44
- c.addEventListener("abort", () => p.abort(), { once: !0 });
47
+ l.addEventListener("abort", () => m.abort(), { once: !0 });
45
48
  }
46
- p.send(h);
49
+ if (h) {
50
+ m.send(c);
51
+ return;
52
+ }
53
+ let v = new FormData();
54
+ v.append("file", c), g.forEach((e, t) => v.append(t, e)), m.send(v);
47
55
  });
48
56
  };
49
57
  //#endregion
50
- export { t as UploadNetworkError, n as createUploadFileWithProgress };
58
+ export { n as UploadBodyEncoding, t as UploadNetworkError, r as createUploadFileWithProgress };
package/index.js CHANGED
@@ -125,67 +125,67 @@ import { COLUMNS_MY_FILES as Ji, COLUMNS_ORGANIZATION as Yi, COLUMNS_SHARED as X
125
125
  import { buildSharedItemVirtualPath as ra, dialCorePathToRelative as ia, findDialFileByPath as aa, findFolderByVirtualPath as oa, formatOperationFolderName as sa, getVirtualPathName as ca, hasDialFileWritePermission as la, hasForbiddenNameSymbols as ua, hasSamePaths as da, isCopyMoveDuplicateAllowed as fa, isShareActionsAllowed as pa, normalizeVirtualPath as ma, parseNewFolderVirtualPath as ha, resolveOwnerCoords as ga, resolveSectionByPath as _a, unionPathSets as va, withRoutableRootLabels as ya } from "./files/dial-file-manager-path.util.js";
126
126
  import { resolveDialFileApiPath as ba, virtualPathToApiPath as xa } from "./files/resolve-dial-file-api-path.js";
127
127
  import { prepareCopyItems as Sa, prepareMoveRenameItems as Ca } from "./files/dial-file-manager-copy-move.util.js";
128
- import { UploadNetworkError as wa, createUploadFileWithProgress as Ta } from "./files/create-upload-file-with-progress.js";
129
- import { buildFromCache as Ea, buildSharedSearchScope as Da, fetchByTab as Oa, fetchForSearch as ka, findFirstSuccessfulCopyMoveItem as Aa, mapCorePermissions as ja, mapFileMetadataToDialFile as Ma, mapSearchItem as Na, mergeCreatedFolderIntoCache as Pa, resolveTransferFailureReason as Fa, resolveUploadFailureReason as Ia, updateEntry as La } from "./files/dial-file-manager-mapping.util.js";
130
- import { createFilesApiClient as Ra } from "./files/create-files-api.js";
131
- import { openAnnotationAttachment as za } from "./files/annotation.js";
132
- import { annotationToOoxmlCanvasContent as Ba, annotationToPdfCanvasContent as Va, clearAttachmentCache as Ha, hasAttachmentTextSource as Ua, referenceAttachmentToPdfCanvasContent as Wa, resolveCodeCanvasContent as Ga, resolveGroupedVisualizerCanvasContent as Ka, resolveHtmlCanvasContent as qa, resolveImageCanvasContent as Ja, resolveJsonCanvasContent as Ya, resolveMarkdownCanvasContent as Xa, resolveOoxmlCanvasContent as Za, resolvePdfCanvasContent as Qa, resolveTextCanvasContent as $a, resolveVisualizerCanvasContent as eo } from "./files/attachment-canvas.js";
133
- import { getUrlFileName as to, isExternalSourcePreviewable as no, resolveExternalSourceContentType as ro } from "./files/source-content.js";
134
- import { annotationToDisplayAttachment as io, attachmentDtoToDisplayAttachment as ao, attachmentDtosToDisplayAttachments as oo } from "./files/attachment-dto-to-display.js";
135
- import { dialFileToAttachment as so, dialFilesToAttachments as co, dialFolderPathToAttachment as lo } from "./files/dial-file-to-attachment.js";
136
- import { DownloadDestinationType as uo } from "./files/download-destination.js";
137
- import { prepareDownloadDestination as fo } from "./files/prepare-download-destination.js";
138
- import { deriveActionProfile as po } from "./files/file-manager-variant.js";
139
- import { useDialFileListing as mo } from "./files/useDialFileListing/useDialFileListing.js";
140
- import { useDialFileMetadata as ho } from "./files/useDialFileMetadata/useDialFileMetadata.js";
141
- import { useDialFileMutations as go } from "./files/useDialFileMutations/useDialFileMutations.js";
142
- import { useDialFileSharing as _o } from "./files/useDialFileSharing/useDialFileSharing.js";
143
- import { useDialFileUploadBatch as vo } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
144
- import { useDialFileManager as yo } from "./files/useDialFileManager/useDialFileManager.js";
145
- import { useDialFileManagerSections as bo } from "./files/useDialFileManagerSections/useDialFileManagerSections.js";
146
- import { useDialFileManagerTabConfig as xo } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
147
- import { useFileAttachmentPicker as So } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
148
- import { getBrowserTimezone as Co } from "./shared/browser-timezone.js";
149
- import { isValidAbsoluteUrl as wo, isValidFeaturesData as To, parseFeaturesData as Eo } from "./shared/custom-apps.js";
150
- import { buildExternalServiceScopeId as Do, getExternalServiceFallbackName as Oo, parseExternalServiceUrl as ko } from "./shared/external-services.js";
151
- import { useChatSettingsFormConfig as Ao } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
152
- import { usePageFileDrag as jo } from "./usePageFileDrag/usePageFileDrag.js";
153
- import { useViewportWidth as Mo } from "./useViewportWidth/useViewportWidth.js";
154
- import { usePanelMaxWidth as No } from "./usePanelMaxWidth/usePanelMaxWidth.js";
155
- import { useShareLink as Po } from "./useShareLink/useShareLink.js";
156
- import { useToolsMenu as Fo } from "./useToolsMenu/useToolsMenu.js";
157
- import { USAGE_DATA_I18N_KEYS as Io, mapUsageDataToDashboard as Lo } from "./usage/map-usage-data-to-dashboard.js";
158
- import { USAGE_MODEL_LIMITS_I18N_KEYS as Ro, mapOverallCostLimitsToPeriodStatuses as zo, mapUserUsageToModelLimits as Bo } from "./usage/map-user-usage-to-model-limits.js";
159
- import { UsagePeriod as Vo } from "./usage/usage-period.js";
160
- import { isCappedStat as Ho, selectUsageBannerSource as Uo } from "./usage/usage-banner-source.js";
161
- import { USAGE_RESET_I18N_KEYS as Wo, UsageResetOffsetPolicy as Go, formatUsageResetShort as Ko, formatUsageResetTime as qo } from "./usage/usage-reset-time.js";
162
- import { useDeploymentUsageLimits as Jo } from "./usage/useDeploymentUsageLimits/useDeploymentUsageLimits.js";
163
- import { useRefreshUsageAfterGeneration as Yo } from "./usage/useRefreshUsageAfterGeneration/useRefreshUsageAfterGeneration.js";
164
- import { resetUsageLimitBannerDismissals as Xo, useUsageLimitBannerDismissal as Zo } from "./usage/useUsageLimitBannerDismissal/useUsageLimitBannerDismissal.js";
165
- import { USAGE_BANNER_I18N_KEYS as Qo, useUsageLimitBanner as $o } from "./usage/useUsageLimitBanner/useUsageLimitBanner.js";
166
- import { useUsageData as es } from "./usage/useUsageData/useUsageData.js";
167
- import { McpAppResourceFetchError as ts, createMcpAppsApiClient as ns } from "./mcp-apps/mcp-apps-api-client.js";
168
- import { useMcpAppTools as rs } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
169
- import { useMcpAppHostContext as is } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
170
- import { useMcpAppHostAdapter as as } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
171
- import { useOpenMcpAppCanvas as os } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
172
- import { triggerBrowserDownload as ss } from "./files/browser-download.js";
173
- import { applyActiveScheduledTaskRun as cs, collapseScheduledTaskConversations as ls, groupScheduledTaskConversations as us } from "./conversation/scheduled-task-grouping.js";
174
- import { useConversationDiscovery as ds } from "./conversation/useConversationDiscovery/useConversationDiscovery.js";
175
- import { useScheduledTaskSkillDisplayNames as fs } from "./scheduled-task/useScheduledTaskSkillDisplayNames/useScheduledTaskSkillDisplayNames.js";
176
- import { useSkillFileSystemPicker as ps } from "./skill-editor/useSkillFileSystemPicker/useSkillFileSystemPicker.js";
177
- import { useFileAttachmentModalState as ms } from "./files/useFileAttachmentModalState/useFileAttachmentModalState.js";
178
- import { useDialFilePreview as hs } from "./files/useDialFilePreview/useDialFilePreview.js";
179
- import { EntityPreselectionOutcome as gs, EntityPreselectionSource as _s, useEntityPreselection as vs } from "./conversation/useEntityPreselection/useEntityPreselection.js";
180
- import { CanvasWidthMode as ys, resolveCanvasWidth as bs } from "./viewport-layout/canvas-width.js";
181
- import { usePersistedState as xs } from "./shared/usePersistedState/usePersistedState.js";
182
- import { ClientGenerationStatus as Ss, createGenerationRegistry as Cs } from "./conversation/generation-registry.js";
183
- import { ActiveScheduledTaskDetailState as ws, ActiveScheduledTaskStatus as Ts, resolveActiveScheduledTask as Es } from "./scheduled-task/active-scheduled-task.js";
184
- import { useActiveScheduledTaskDetails as Ds } from "./scheduled-task/useActiveScheduledTaskDetails.js";
185
- import { ConversationTitleRequestEnd as Os, useConversationTitleEnrichmentController as ks } from "./conversation/useConversationTitleEnrichmentController.js";
186
- import { SkillFilePreviewState as As, useSkillFilePreviewSyncController as js } from "./skill-editor/useSkillFilePreviewSyncController.js";
187
- import { ExternalServiceAuthType as Ms, ExternalServiceCredentialsLevel as Ns, ExternalServiceLoginOutcomeType as Ps, useExternalServiceLogin as Fs } from "./external-services/useExternalServiceLogin.js";
188
- import { useDeploymentChangeTracking as Is } from "./conversation/useDeploymentChangeTracking.js";
189
- import { useGridEditingScroll as Ls } from "@epam/ai-dial-chat-shared";
190
- import { SchedulerServiceConsentStatus as Rs } from "@epam/ai-dial-chat-api-client";
191
- export { ws as ActiveScheduledTaskDetailState, Ts as ActiveScheduledTaskStatus, S as AttachmentValidationErrorReason, yi as AudioTranscriptionError, bi as AudioTranscriptionErrorReason, H as AuthenticationType, Ji as COLUMNS_MY_FILES, Yi as COLUMNS_ORGANIZATION, Xi as COLUMNS_SHARED, Zi as CORE_PERMISSION_MAP, ys as CanvasWidthMode, Et as CatalogPrimaryActionType, Ss as ClientGenerationStatus, E as ConversationExportMode, Os as ConversationTitleRequestEnd, D as ConversationTransferErrorCode, O as ConversationTransferWarningCode, Qi as DATE_OPTIONS, _e as DEFAULT_ENTITY_DETAILS_LABELS, on as DEFAULT_GENERATION_CONFLICT_MESSAGE, sn as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, Ci as DEFAULT_MAX_ARCHIVE_BYTES, yr as DEFAULT_PROJECT_CONTEXT_ALLOWED_EXTENSIONS, br as DEFAULT_PROJECT_CONTEXT_FILE_MAX_BYTES, xr as DEFAULT_PROJECT_CONTEXT_TOTAL_MAX_BYTES, cn as DEFAULT_STREAM_IDLE_TIMEOUT_MS, $i as DIAL_FILE_MANAGER_SECTION_TABS, Wi as DialFilesApiUploadMode, uo as DownloadDestinationType, A as EXPORT_APP_NAME, gs as EntityPreselectionOutcome, _s as EntityPreselectionSource, k as ExportFileNameKind, Ms as ExternalServiceAuthType, Ns as ExternalServiceCredentialsLevel, Ps as ExternalServiceLoginOutcomeType, Yt as FavoriteEntityType, Gi as FileManagerNotificationReason, Ki as FileNameValidationErrorReason, qi as FileOperationKind, ln as GenerationConflictError, un as GenerationPersistenceError, ts as McpAppResourceFetchError, dt as McpResourceKind, K as OAuthResourceKind, Br as OfflineCredentialsGateStatus, Hr as OfflineCredentialsLoginOutcomeType, Wr as OfflineCredentialsLogoutOutcomeType, ea as PATH_SEPARATOR_REGEXP, Vn as PROMPT_CONTENT_MAX_LENGTH, Hn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, Un as PROMPT_DESCRIPTION_MAX_LENGTH, Wn as PROMPT_NAME_MAX_LENGTH, Ze as PUBLIC_SKILL_BUCKET, Ir as ProjectActionError, Tr as ProjectFormErrorField, Er as ProjectFormErrorReason, Gn as PromptFieldError, Ee as PromptSource, ta as RESERVED_MARKER_NAME, si as RecipientsCountStatus, je as SKILL_FILE_UPLOAD_MAX_BYTES, Me as SKILL_FOLDER_MARKER, Qe as SKILL_LISTING_MAX_PAGES, $e as SKILL_LISTING_PAGE_SIZE, Ne as SKILL_MANIFEST_FILE, et as SKILL_MANIFEST_MAX_BYTES, Pe as SKILL_TEXT_FIELD_MAX_LENGTHS, Fe as SKILL_UPLOAD_MAX_FILES, Ie as SKILL_UPLOAD_MAX_TOTAL_BYTES, $n as ScheduledTaskTriggerDescriptionKind, Rs as SchedulerServiceConsentStatus, ni as SkillArchiveImportErrorKind, ri as SkillArchiveImportStatus, ii as SkillArchiveSelectionRejectionReason, Yr as SkillEditorLoadState, As as SkillFilePreviewState, $r as SkillPreviewErrorKind, tt as SkillSource, dn as StopCompletionError, fn as StreamInterruptedError, pn as StreamUpstreamError, q as TOOLSET_REDIRECT_STATE_KEY, J as ToolsetAuthStatus, Y as ToolsetAuthTypes, X as ToolsetCredentialsLevel, Wt as ToolsetLoginOutcomeType, Z as ToolsetOAuthCallbackQuery, Q as ToolsetOAuthChannelControlType, $ as ToolsetOAuthFailureReason, ee as ToolsetOAuthInitiationResultType, te as ToolsetOAuthResultType, na as UPLOAD_CONCURRENCY, Qo as USAGE_BANNER_I18N_KEYS, Io as USAGE_DATA_I18N_KEYS, Ro as USAGE_MODEL_LIMITS_I18N_KEYS, Wo as USAGE_RESET_I18N_KEYS, Qn as UnsupportedTriggerReason, xi as UploadMimeTypePolicy, wa as UploadNetworkError, Vo as UsagePeriod, Go as UsageResetOffsetPolicy, ne as WithLogin, io as annotationToDisplayAttachment, Ba as annotationToOoxmlCanvasContent, Va as annotationToPdfCanvasContent, tr as apSchedulerDayToJsDay, le as appendLocaleCode, cs as applyActiveScheduledTaskRun, zi as applyChunkToMessages, ao as attachmentDtoToDisplayAttachment, oo as attachmentDtosToDisplayAttachments, Ti as attachmentToDto, Ei as attachmentsToDtos, ue as buildAdditionalLocaleOptions, Qt as buildAnnouncementSignature, ft as buildApplicationMcpUrl, P as buildChatCompletionsUrl, pt as buildConnectApi, fr as buildCreateConversationDto, F as buildDeploymentConnectApi, Do as buildExternalServiceScopeId, Ea as buildFromCache, Rn as buildPromptExportEnvelope, zn as buildPromptExportFileName, Oe as buildPromptOverview, Kn as buildPromptPath, U as buildResetFields, I as buildResponsesUrl, ra as buildSharedItemVirtualPath, Da as buildSharedSearchScope, rt as buildSkillContentTree, Le as buildSkillFilesPayload, Re as buildSkillManifest, ze as buildSkillManifestForSubmit, Be as buildSkillManifestFromFrontmatter, it as buildSkillOverview, zt as buildToolsetAuthorizeUrl, mt as buildToolsetMcpUrl, Kr as checkScheduledTaskAuthSessionError, ai as classifySkillArchiveImportError, Ha as clearAttachmentCache, ls as collapseScheduledTaskConversations, de as composeLocalePayload, mn as createChatStreamApi, i as createCsrfMiddleware, Sn as createDeploymentChangedMessage, L as createDeploymentLookup, Ra as createFilesApiClient, Cs as createGenerationRegistry, ns as createMcpAppsApiClient, rn as createMemoryConversationDraftStore, Di as createMessagePair, pr as createProjectsApiClient, M as createPublishApiClient, cr as createScheduledTasksApiClient, a as createUnauthorizedMiddleware, Ta as createUploadFileWithProgress, an as createWebStorageConversationDraftStore, R as decodeDeploymentId, re as decodeToolsetId, fe as decomposeLocalizedFields, po as deriveActionProfile, xt as deriveAvailableTabIds, li as deriveConversationRowActionState, St as deriveFavoriteItems, er as describeScheduledTaskTrigger, ia as dialCorePathToRelative, so as dialFileToAttachment, co as dialFilesToAttachments, lo as dialFolderPathToAttachment, h as downloadAttachment, Ft as emitToolsetLoginSuccess, z as encodeDeploymentId, ie as encodeToolsetId, Oa as fetchByTab, ka as fetchForSearch, Ct as filterCatalogItemsBySelector, wt as filterHiddenOwnedItems, B as findDeploymentByIdOrReference, vn as findDeploymentForConversationId, aa as findDialFileByPath, Aa as findFirstSuccessfulCopyMoveItem, oa as findFolderByVirtualPath, gn as formatAppVersion, he as formatCalendarDate, w as formatDateYM, T as formatDateYMD, sa as formatOperationFolderName, j as formatQuotedNameList, Ko as formatUsageResetShort, qo as formatUsageResetTime, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Co as getBrowserTimezone, Fi as getConversationPath, mi as getConversationSource, Oo as getExternalServiceFallbackName, Cn as getFormSchemaToolSyncKey, wn as getLastDeploymentId, Tn as getLastUserMessageToolConfiguration, En as getLatestToolConfiguration, Sr as getMimeTypesForExtensions, yn as getModelIdCandidatesFromConversationId, bn as getModelIdFromConversationId, Dr as getProjectFormError, gt as getPublicCatalogEntityFolderPath, Mn as getQuickAppConversationStarters, qn as getRemainingCharacters, Ot as getRunnerSchemas, Ve as getSkillFieldLengthViolations, Mi as getStarterConversationText, Ni as getStarterDisplayText, Fn as getStarterPopulateText, Pi as getStarterSubmitText, In as getStartersFromSchema, xn as getTimeOfDayGreeting, Dn as getToolConfigurationFromFormSchema, Lt as getToolsetOAuthChannelName, Bt as getToolsetRedirectUri, to as getUrlFileName, ca as getVirtualPathName, us as groupScheduledTaskConversations, Oi as hasActiveToolConfig, $t as hasAnnouncementContent, Ua as hasAttachmentTextSource, la as hasDialFileWritePermission, ua as hasForbiddenNameSymbols, da as hasSamePaths, en as hasStructuredAnnouncement, o as includesIgnoreCase, Vt as initiateOAuthLogin, ki as isAnswerIncomplete, Vi as isAwaitingGenerationResume, Ho as isCappedStat, r as isConversationNotFoundError, fa as isCopyMoveDuplicateAllowed, kt as isCustomAppSchema, v as isDialFileAcceptType, d as isDialFileId, f as isDialFolderId, g as isDownloadableAttachment, no as isExternalSourcePreviewable, Ai as isMessageChanged, On as isMessageStreaming, ke as isOrganisationPromptItem, _t as isPublicCatalogEntityId, ae as isPublicToolsetId, At as isQuickAppSchema, pa as isShareActionsAllowed, He as isSkillFolderMarkerPath, wo as isValidAbsoluteUrl, To as isValidFeaturesData, Ue as isValidSkillRelativePath, nr as jsDayToApSchedulerDay, ja as mapCorePermissions, ve as mapDeploymentDetailsDtoToEntityDetails, G as mapDeploymentLimitsDtoToCatalogLimits, W as mapDeploymentLimitsToInput, xe as mapDeploymentToCatalogItem, Se as mapDeploymentToolsetCredentials, ye as mapEntityDetailsToCatalogDetails, Ma as mapFileMetadataToDialFile, rr as mapFormValuesToCreateBody, ir as mapFormValuesToUpdateBody, Rr as mapOfflineCredentialsResponse, zo as mapOverallCostLimitsToPeriodStatuses, hr as mapProjectDetailsToViewModel, gr as mapProjectDtoToItem, _r as mapProjectSource, Ae as mapPromptToCatalogItem, vt as mapPublishConversationResultDto, yt as mapPublishHistoryEntryDto, ar as mapScheduledTaskDtoToFormValues, Na as mapSearchItem, at as mapSkillToCatalogItem, Nn as mapStages, vr as mapStoredContextFiles, be as mapToolsetCredentials, Ce as mapToolsetToCatalogItem, Lo as mapUsageDataToDashboard, Bo as mapUserUsageToModelLimits, Pa as mergeCreatedFolderIntoCache, ur as mergeRunsById, Bi as mergeStages, kn as messageHasStages, y as mimeTypesToAttachmentExtensionLabels, b as mimeTypesToDialFileAcceptTypes, x as mimeTypesToFileAccept, We as nameFromPath, Ht as navigateToolsetOAuthPopup, V as normalizeDeploymentId, zr as normalizeOfflineCredentialsConnectSettings, An as normalizeResponseFormat, Ge as normalizeSkillName, oe as normalizeToolsetId, ma as normalizeVirtualPath, za as openAnnotationAttachment, Ut as openToolsetOAuthPopup, ge as padTwoDigits, ko as parseExternalServiceUrl, Eo as parseFeaturesData, ha as parseNewFolderVirtualPath, De as parsePromptResourceUrl, Ke as parseSkillManifest, Mt as parseSkillManifestDocument, nt as parseSkillResourceUrl, Sa as prepareCopyItems, fo as prepareDownloadDestination, Ca as prepareMoveRenameItems, or as prepareScheduledTaskCreateBody, sr as prepareScheduledTaskUpdateBody, ot as readSkillFileBytes, st as readSkillFilePreviewBytes, ct as readSkillManifest, Tt as reconcileFilterTopics, Wa as referenceAttachmentToPdfCanvasContent, Xo as resetUsageLimitBannerDismissals, Es as resolveActiveScheduledTask, Cr as resolveByteLimit, bs as resolveCanvasWidth, Dt as resolveCatalogPrimaryAction, Ga as resolveCodeCanvasContent, we as resolveDeploymentFolder, ba as resolveDialFileApiPath, p as resolveDialFileBucketAndPath, wr as resolveExtensionList, ro as resolveExternalSourceContentType, Ka as resolveGroupedVisualizerCanvasContent, qa as resolveHtmlCanvasContent, Ja as resolveImageCanvasContent, Ya as resolveJsonCanvasContent, pe as resolveLocalizedText, Xa as resolveMarkdownCanvasContent, ht as resolveMcpResourceKind, Za as resolveOoxmlCanvasContent, ga as resolveOwnerCoords, Qa as resolvePdfCanvasContent, m as resolveRelativeDialFilePath, _a as resolveSectionByPath, lt as resolveSkillFileDownloadPath, ut as resolveSkillManifestFileId, $a as resolveTextCanvasContent, se as resolveToolsetCredentialsLevel, Fa as resolveTransferFailureReason, Ia as resolveUploadFailureReason, eo as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, tn as sanitizeAnnouncementHtml, nn as sanitizeAnnouncementMessageHtml, Nr as sanitizeFileName, _n as sanitizeFooterHtml, ce as selectToolsetAuthStatus, Uo as selectUsageBannerSource, Bn as serializePromptExport, ji as shouldRerunGenerationOnEdit, hn as shouldWatchForDisplayNameUpdate, qe as skillFileBytesToBlob, Jr as skillFileToAttachment, Je as skillFolderMarkerParent, Pr as splitFileNameExtension, mr as splitProjectConversationId, Ye as startsWithFrontmatterBlock, l as stripSurroundingSlashes, u as stripTrailingSlashes, It as subscribeToolsetLoginSuccess, Te as supportsChatInterface, me as toBaseLocale, jn as toOverlayMessages, bt as toPublishEntityType, N as toPublishRuleDto, Pn as toStage, ss as triggerBrowserDownload, Fr as trimFileNameToByteLimit, va as unionPathSets, Xe as unpackSkillArchive, La as updateEntry, ui as useActiveConversationSync, Ds as useActiveScheduledTaskDetails, qt as useApplicationCredentials, di as useAsyncConfirmDialog, _ as useAttachmentAction, vi as useAttachmentUpload, C as useAttachmentValidation, jt as useCatalogEditNavigation, Pt as useCatalogItemDetails, Kt as useCatalogToolsetCredentials, Ao as useChatSettingsFormConfig, fi as useConversationComposerDraft, ds as useConversationDiscovery, wi as useConversationExport, Ii as useConversationHandlers, Li as useConversationImport, pi as useConversationLookupMaps, hi as useConversationPanelItems, Ri as useConversationScroll, Ui as useConversationSources, Hi as useConversationStream, ks as useConversationTitleEnrichmentController, Ar as useCreateProject, Is as useDeploymentChangeTracking, Jo as useDeploymentUsageLimits, mo as useDialFileListing, yo as useDialFileManager, bo as useDialFileManagerSections, xo as useDialFileManagerTabConfig, ho as useDialFileMetadata, go as useDialFileMutations, hs as useDialFilePreview, _o as useDialFileSharing, vo as useDialFileUploadBatch, vs as useEntityPreselection, Fs as useExternalServiceLogin, Xt as useFavoriteEntitiesState, ms as useFileAttachmentModalState, So as useFileAttachmentPicker, Ls as useGridEditingScroll, gi as useImportFilePicker, as as useMcpAppHostAdapter, is as useMcpAppHostContext, rs as useMcpAppTools, _i as useMessageSelectionReply, Ln as useOAuthCallbackCompletion, Gr as useOfflineCredentialsAuth, Vr as useOfflineCredentialsGate, Ur as useOfflineCredentialsLogin, os as useOpenMcpAppCanvas, jo as usePageFileDrag, No as usePanelMaxWidth, xs as usePersistedState, kr as useProject, Lr as useProjectActions, Mr as useProjectConversations, Or as useProjects, Zn as usePromptsState, Zt as usePublishFolders, Yo as useRefreshUsageAfterGeneration, jr as useSaveProject, dr as useScheduledTaskRuns, fs as useScheduledTaskSkillDisplayNames, lr as useScheduledTasks, Po as useShareLink, ci as useShareRecipientsCount, oi as useSkillArchiveImport, Jt as useSkillDetailsPanelData, Xr as useSkillEditorLoad, Zr as useSkillEditorSubmit, Qr as useSkillFileActions, ei as useSkillFilePreview, js as useSkillFilePreviewSyncController, ps as useSkillFileSystemPicker, Nt as useSkillItemDetails, ti as useSkillsState, Fo as useToolsMenu, Gt as useToolsetLogin, Si as useTranscribeAudio, es as useUsageData, $o as useUsageLimitBanner, Zo as useUsageLimitBannerDismissal, Mo as useViewportWidth, Jn as validatePromptContent, Yn as validatePromptDescription, Xn as validatePromptName, qr as validateSkillFileBatch, xa as virtualPathToApiPath, Rt as waitForToolsetOAuthResult, ya as withRoutableRootLabels };
128
+ import { UploadBodyEncoding as wa, UploadNetworkError as Ta, createUploadFileWithProgress as Ea } from "./files/create-upload-file-with-progress.js";
129
+ import { buildFromCache as Da, buildSharedSearchScope as Oa, fetchByTab as ka, fetchForSearch as Aa, findFirstSuccessfulCopyMoveItem as ja, mapCorePermissions as Ma, mapFileMetadataToDialFile as Na, mapSearchItem as Pa, mergeCreatedFolderIntoCache as Fa, resolveTransferFailureReason as Ia, resolveUploadFailureReason as La, updateEntry as Ra } from "./files/dial-file-manager-mapping.util.js";
130
+ import { createFilesApiClient as za } from "./files/create-files-api.js";
131
+ import { openAnnotationAttachment as Ba } from "./files/annotation.js";
132
+ import { annotationToOoxmlCanvasContent as Va, annotationToPdfCanvasContent as Ha, clearAttachmentCache as Ua, hasAttachmentTextSource as Wa, referenceAttachmentToPdfCanvasContent as Ga, resolveCodeCanvasContent as Ka, resolveGroupedVisualizerCanvasContent as qa, resolveHtmlCanvasContent as Ja, resolveImageCanvasContent as Ya, resolveJsonCanvasContent as Xa, resolveMarkdownCanvasContent as Za, resolveOoxmlCanvasContent as Qa, resolvePdfCanvasContent as $a, resolveTextCanvasContent as eo, resolveVisualizerCanvasContent as to } from "./files/attachment-canvas.js";
133
+ import { getUrlFileName as no, isExternalSourcePreviewable as ro, resolveExternalSourceContentType as io } from "./files/source-content.js";
134
+ import { annotationToDisplayAttachment as ao, attachmentDtoToDisplayAttachment as oo, attachmentDtosToDisplayAttachments as so } from "./files/attachment-dto-to-display.js";
135
+ import { dialFileToAttachment as co, dialFilesToAttachments as lo, dialFolderPathToAttachment as uo } from "./files/dial-file-to-attachment.js";
136
+ import { DownloadDestinationType as fo } from "./files/download-destination.js";
137
+ import { prepareDownloadDestination as po } from "./files/prepare-download-destination.js";
138
+ import { deriveActionProfile as mo } from "./files/file-manager-variant.js";
139
+ import { useDialFileListing as ho } from "./files/useDialFileListing/useDialFileListing.js";
140
+ import { useDialFileMetadata as go } from "./files/useDialFileMetadata/useDialFileMetadata.js";
141
+ import { useDialFileMutations as _o } from "./files/useDialFileMutations/useDialFileMutations.js";
142
+ import { useDialFileSharing as vo } from "./files/useDialFileSharing/useDialFileSharing.js";
143
+ import { useDialFileUploadBatch as yo } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
144
+ import { useDialFileManager as bo } from "./files/useDialFileManager/useDialFileManager.js";
145
+ import { useDialFileManagerSections as xo } from "./files/useDialFileManagerSections/useDialFileManagerSections.js";
146
+ import { useDialFileManagerTabConfig as So } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
147
+ import { useFileAttachmentPicker as Co } from "./files/useFileAttachmentPicker/useFileAttachmentPicker.js";
148
+ import { getBrowserTimezone as wo } from "./shared/browser-timezone.js";
149
+ import { isValidAbsoluteUrl as To, isValidFeaturesData as Eo, parseFeaturesData as Do } from "./shared/custom-apps.js";
150
+ import { buildExternalServiceScopeId as Oo, getExternalServiceFallbackName as ko, parseExternalServiceUrl as Ao } from "./shared/external-services.js";
151
+ import { useChatSettingsFormConfig as jo } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
152
+ import { usePageFileDrag as Mo } from "./usePageFileDrag/usePageFileDrag.js";
153
+ import { useViewportWidth as No } from "./useViewportWidth/useViewportWidth.js";
154
+ import { usePanelMaxWidth as Po } from "./usePanelMaxWidth/usePanelMaxWidth.js";
155
+ import { useShareLink as Fo } from "./useShareLink/useShareLink.js";
156
+ import { useToolsMenu as Io } from "./useToolsMenu/useToolsMenu.js";
157
+ import { USAGE_DATA_I18N_KEYS as Lo, mapUsageDataToDashboard as Ro } from "./usage/map-usage-data-to-dashboard.js";
158
+ import { USAGE_MODEL_LIMITS_I18N_KEYS as zo, mapOverallCostLimitsToPeriodStatuses as Bo, mapUserUsageToModelLimits as Vo } from "./usage/map-user-usage-to-model-limits.js";
159
+ import { UsagePeriod as Ho } from "./usage/usage-period.js";
160
+ import { isCappedStat as Uo, selectUsageBannerSource as Wo } from "./usage/usage-banner-source.js";
161
+ import { USAGE_RESET_I18N_KEYS as Go, UsageResetOffsetPolicy as Ko, formatUsageResetShort as qo, formatUsageResetTime as Jo } from "./usage/usage-reset-time.js";
162
+ import { useDeploymentUsageLimits as Yo } from "./usage/useDeploymentUsageLimits/useDeploymentUsageLimits.js";
163
+ import { useRefreshUsageAfterGeneration as Xo } from "./usage/useRefreshUsageAfterGeneration/useRefreshUsageAfterGeneration.js";
164
+ import { resetUsageLimitBannerDismissals as Zo, useUsageLimitBannerDismissal as Qo } from "./usage/useUsageLimitBannerDismissal/useUsageLimitBannerDismissal.js";
165
+ import { USAGE_BANNER_I18N_KEYS as $o, useUsageLimitBanner as es } from "./usage/useUsageLimitBanner/useUsageLimitBanner.js";
166
+ import { useUsageData as ts } from "./usage/useUsageData/useUsageData.js";
167
+ import { McpAppResourceFetchError as ns, createMcpAppsApiClient as rs } from "./mcp-apps/mcp-apps-api-client.js";
168
+ import { useMcpAppTools as is } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
169
+ import { useMcpAppHostContext as as } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
170
+ import { useMcpAppHostAdapter as os } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
171
+ import { useOpenMcpAppCanvas as ss } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
172
+ import { triggerBrowserDownload as cs } from "./files/browser-download.js";
173
+ import { applyActiveScheduledTaskRun as ls, collapseScheduledTaskConversations as us, groupScheduledTaskConversations as ds } from "./conversation/scheduled-task-grouping.js";
174
+ import { useConversationDiscovery as fs } from "./conversation/useConversationDiscovery/useConversationDiscovery.js";
175
+ import { useScheduledTaskSkillDisplayNames as ps } from "./scheduled-task/useScheduledTaskSkillDisplayNames/useScheduledTaskSkillDisplayNames.js";
176
+ import { useSkillFileSystemPicker as ms } from "./skill-editor/useSkillFileSystemPicker/useSkillFileSystemPicker.js";
177
+ import { useFileAttachmentModalState as hs } from "./files/useFileAttachmentModalState/useFileAttachmentModalState.js";
178
+ import { useDialFilePreview as gs } from "./files/useDialFilePreview/useDialFilePreview.js";
179
+ import { EntityPreselectionOutcome as _s, EntityPreselectionSource as vs, useEntityPreselection as ys } from "./conversation/useEntityPreselection/useEntityPreselection.js";
180
+ import { CanvasWidthMode as bs, resolveCanvasWidth as xs } from "./viewport-layout/canvas-width.js";
181
+ import { usePersistedState as Ss } from "./shared/usePersistedState/usePersistedState.js";
182
+ import { ClientGenerationStatus as Cs, createGenerationRegistry as ws } from "./conversation/generation-registry.js";
183
+ import { ActiveScheduledTaskDetailState as Ts, ActiveScheduledTaskStatus as Es, resolveActiveScheduledTask as Ds } from "./scheduled-task/active-scheduled-task.js";
184
+ import { useActiveScheduledTaskDetails as Os } from "./scheduled-task/useActiveScheduledTaskDetails.js";
185
+ import { ConversationTitleRequestEnd as ks, useConversationTitleEnrichmentController as As } from "./conversation/useConversationTitleEnrichmentController.js";
186
+ import { SkillFilePreviewState as js, useSkillFilePreviewSyncController as Ms } from "./skill-editor/useSkillFilePreviewSyncController.js";
187
+ import { ExternalServiceAuthType as Ns, ExternalServiceCredentialsLevel as Ps, ExternalServiceLoginOutcomeType as Fs, useExternalServiceLogin as Is } from "./external-services/useExternalServiceLogin.js";
188
+ import { useDeploymentChangeTracking as Ls } from "./conversation/useDeploymentChangeTracking.js";
189
+ import { useGridEditingScroll as Rs } from "@epam/ai-dial-chat-shared";
190
+ import { SchedulerServiceConsentStatus as zs } from "@epam/ai-dial-chat-api-client";
191
+ export { Ts as ActiveScheduledTaskDetailState, Es as ActiveScheduledTaskStatus, S as AttachmentValidationErrorReason, yi as AudioTranscriptionError, bi as AudioTranscriptionErrorReason, H as AuthenticationType, Ji as COLUMNS_MY_FILES, Yi as COLUMNS_ORGANIZATION, Xi as COLUMNS_SHARED, Zi as CORE_PERMISSION_MAP, bs as CanvasWidthMode, Et as CatalogPrimaryActionType, Cs as ClientGenerationStatus, E as ConversationExportMode, ks as ConversationTitleRequestEnd, D as ConversationTransferErrorCode, O as ConversationTransferWarningCode, Qi as DATE_OPTIONS, _e as DEFAULT_ENTITY_DETAILS_LABELS, on as DEFAULT_GENERATION_CONFLICT_MESSAGE, sn as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, Ci as DEFAULT_MAX_ARCHIVE_BYTES, yr as DEFAULT_PROJECT_CONTEXT_ALLOWED_EXTENSIONS, br as DEFAULT_PROJECT_CONTEXT_FILE_MAX_BYTES, xr as DEFAULT_PROJECT_CONTEXT_TOTAL_MAX_BYTES, cn as DEFAULT_STREAM_IDLE_TIMEOUT_MS, $i as DIAL_FILE_MANAGER_SECTION_TABS, Wi as DialFilesApiUploadMode, fo as DownloadDestinationType, A as EXPORT_APP_NAME, _s as EntityPreselectionOutcome, vs as EntityPreselectionSource, k as ExportFileNameKind, Ns as ExternalServiceAuthType, Ps as ExternalServiceCredentialsLevel, Fs as ExternalServiceLoginOutcomeType, Yt as FavoriteEntityType, Gi as FileManagerNotificationReason, Ki as FileNameValidationErrorReason, qi as FileOperationKind, ln as GenerationConflictError, un as GenerationPersistenceError, ns as McpAppResourceFetchError, dt as McpResourceKind, K as OAuthResourceKind, Br as OfflineCredentialsGateStatus, Hr as OfflineCredentialsLoginOutcomeType, Wr as OfflineCredentialsLogoutOutcomeType, ea as PATH_SEPARATOR_REGEXP, Vn as PROMPT_CONTENT_MAX_LENGTH, Hn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, Un as PROMPT_DESCRIPTION_MAX_LENGTH, Wn as PROMPT_NAME_MAX_LENGTH, Ze as PUBLIC_SKILL_BUCKET, Ir as ProjectActionError, Tr as ProjectFormErrorField, Er as ProjectFormErrorReason, Gn as PromptFieldError, Ee as PromptSource, ta as RESERVED_MARKER_NAME, si as RecipientsCountStatus, je as SKILL_FILE_UPLOAD_MAX_BYTES, Me as SKILL_FOLDER_MARKER, Qe as SKILL_LISTING_MAX_PAGES, $e as SKILL_LISTING_PAGE_SIZE, Ne as SKILL_MANIFEST_FILE, et as SKILL_MANIFEST_MAX_BYTES, Pe as SKILL_TEXT_FIELD_MAX_LENGTHS, Fe as SKILL_UPLOAD_MAX_FILES, Ie as SKILL_UPLOAD_MAX_TOTAL_BYTES, $n as ScheduledTaskTriggerDescriptionKind, zs as SchedulerServiceConsentStatus, ni as SkillArchiveImportErrorKind, ri as SkillArchiveImportStatus, ii as SkillArchiveSelectionRejectionReason, Yr as SkillEditorLoadState, js as SkillFilePreviewState, $r as SkillPreviewErrorKind, tt as SkillSource, dn as StopCompletionError, fn as StreamInterruptedError, pn as StreamUpstreamError, q as TOOLSET_REDIRECT_STATE_KEY, J as ToolsetAuthStatus, Y as ToolsetAuthTypes, X as ToolsetCredentialsLevel, Wt as ToolsetLoginOutcomeType, Z as ToolsetOAuthCallbackQuery, Q as ToolsetOAuthChannelControlType, $ as ToolsetOAuthFailureReason, ee as ToolsetOAuthInitiationResultType, te as ToolsetOAuthResultType, na as UPLOAD_CONCURRENCY, $o as USAGE_BANNER_I18N_KEYS, Lo as USAGE_DATA_I18N_KEYS, zo as USAGE_MODEL_LIMITS_I18N_KEYS, Go as USAGE_RESET_I18N_KEYS, Qn as UnsupportedTriggerReason, wa as UploadBodyEncoding, xi as UploadMimeTypePolicy, Ta as UploadNetworkError, Ho as UsagePeriod, Ko as UsageResetOffsetPolicy, ne as WithLogin, ao as annotationToDisplayAttachment, Va as annotationToOoxmlCanvasContent, Ha as annotationToPdfCanvasContent, tr as apSchedulerDayToJsDay, le as appendLocaleCode, ls as applyActiveScheduledTaskRun, zi as applyChunkToMessages, oo as attachmentDtoToDisplayAttachment, so as attachmentDtosToDisplayAttachments, Ti as attachmentToDto, Ei as attachmentsToDtos, ue as buildAdditionalLocaleOptions, Qt as buildAnnouncementSignature, ft as buildApplicationMcpUrl, P as buildChatCompletionsUrl, pt as buildConnectApi, fr as buildCreateConversationDto, F as buildDeploymentConnectApi, Oo as buildExternalServiceScopeId, Da as buildFromCache, Rn as buildPromptExportEnvelope, zn as buildPromptExportFileName, Oe as buildPromptOverview, Kn as buildPromptPath, U as buildResetFields, I as buildResponsesUrl, ra as buildSharedItemVirtualPath, Oa as buildSharedSearchScope, rt as buildSkillContentTree, Le as buildSkillFilesPayload, Re as buildSkillManifest, ze as buildSkillManifestForSubmit, Be as buildSkillManifestFromFrontmatter, it as buildSkillOverview, zt as buildToolsetAuthorizeUrl, mt as buildToolsetMcpUrl, Kr as checkScheduledTaskAuthSessionError, ai as classifySkillArchiveImportError, Ua as clearAttachmentCache, us as collapseScheduledTaskConversations, de as composeLocalePayload, mn as createChatStreamApi, i as createCsrfMiddleware, Sn as createDeploymentChangedMessage, L as createDeploymentLookup, za as createFilesApiClient, ws as createGenerationRegistry, rs as createMcpAppsApiClient, rn as createMemoryConversationDraftStore, Di as createMessagePair, pr as createProjectsApiClient, M as createPublishApiClient, cr as createScheduledTasksApiClient, a as createUnauthorizedMiddleware, Ea as createUploadFileWithProgress, an as createWebStorageConversationDraftStore, R as decodeDeploymentId, re as decodeToolsetId, fe as decomposeLocalizedFields, mo as deriveActionProfile, xt as deriveAvailableTabIds, li as deriveConversationRowActionState, St as deriveFavoriteItems, er as describeScheduledTaskTrigger, ia as dialCorePathToRelative, co as dialFileToAttachment, lo as dialFilesToAttachments, uo as dialFolderPathToAttachment, h as downloadAttachment, Ft as emitToolsetLoginSuccess, z as encodeDeploymentId, ie as encodeToolsetId, ka as fetchByTab, Aa as fetchForSearch, Ct as filterCatalogItemsBySelector, wt as filterHiddenOwnedItems, B as findDeploymentByIdOrReference, vn as findDeploymentForConversationId, aa as findDialFileByPath, ja as findFirstSuccessfulCopyMoveItem, oa as findFolderByVirtualPath, gn as formatAppVersion, he as formatCalendarDate, w as formatDateYM, T as formatDateYMD, sa as formatOperationFolderName, j as formatQuotedNameList, qo as formatUsageResetShort, Jo as formatUsageResetTime, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, wo as getBrowserTimezone, Fi as getConversationPath, mi as getConversationSource, ko as getExternalServiceFallbackName, Cn as getFormSchemaToolSyncKey, wn as getLastDeploymentId, Tn as getLastUserMessageToolConfiguration, En as getLatestToolConfiguration, Sr as getMimeTypesForExtensions, yn as getModelIdCandidatesFromConversationId, bn as getModelIdFromConversationId, Dr as getProjectFormError, gt as getPublicCatalogEntityFolderPath, Mn as getQuickAppConversationStarters, qn as getRemainingCharacters, Ot as getRunnerSchemas, Ve as getSkillFieldLengthViolations, Mi as getStarterConversationText, Ni as getStarterDisplayText, Fn as getStarterPopulateText, Pi as getStarterSubmitText, In as getStartersFromSchema, xn as getTimeOfDayGreeting, Dn as getToolConfigurationFromFormSchema, Lt as getToolsetOAuthChannelName, Bt as getToolsetRedirectUri, no as getUrlFileName, ca as getVirtualPathName, ds as groupScheduledTaskConversations, Oi as hasActiveToolConfig, $t as hasAnnouncementContent, Wa as hasAttachmentTextSource, la as hasDialFileWritePermission, ua as hasForbiddenNameSymbols, da as hasSamePaths, en as hasStructuredAnnouncement, o as includesIgnoreCase, Vt as initiateOAuthLogin, ki as isAnswerIncomplete, Vi as isAwaitingGenerationResume, Uo as isCappedStat, r as isConversationNotFoundError, fa as isCopyMoveDuplicateAllowed, kt as isCustomAppSchema, v as isDialFileAcceptType, d as isDialFileId, f as isDialFolderId, g as isDownloadableAttachment, ro as isExternalSourcePreviewable, Ai as isMessageChanged, On as isMessageStreaming, ke as isOrganisationPromptItem, _t as isPublicCatalogEntityId, ae as isPublicToolsetId, At as isQuickAppSchema, pa as isShareActionsAllowed, He as isSkillFolderMarkerPath, To as isValidAbsoluteUrl, Eo as isValidFeaturesData, Ue as isValidSkillRelativePath, nr as jsDayToApSchedulerDay, Ma as mapCorePermissions, ve as mapDeploymentDetailsDtoToEntityDetails, G as mapDeploymentLimitsDtoToCatalogLimits, W as mapDeploymentLimitsToInput, xe as mapDeploymentToCatalogItem, Se as mapDeploymentToolsetCredentials, ye as mapEntityDetailsToCatalogDetails, Na as mapFileMetadataToDialFile, rr as mapFormValuesToCreateBody, ir as mapFormValuesToUpdateBody, Rr as mapOfflineCredentialsResponse, Bo as mapOverallCostLimitsToPeriodStatuses, hr as mapProjectDetailsToViewModel, gr as mapProjectDtoToItem, _r as mapProjectSource, Ae as mapPromptToCatalogItem, vt as mapPublishConversationResultDto, yt as mapPublishHistoryEntryDto, ar as mapScheduledTaskDtoToFormValues, Pa as mapSearchItem, at as mapSkillToCatalogItem, Nn as mapStages, vr as mapStoredContextFiles, be as mapToolsetCredentials, Ce as mapToolsetToCatalogItem, Ro as mapUsageDataToDashboard, Vo as mapUserUsageToModelLimits, Fa as mergeCreatedFolderIntoCache, ur as mergeRunsById, Bi as mergeStages, kn as messageHasStages, y as mimeTypesToAttachmentExtensionLabels, b as mimeTypesToDialFileAcceptTypes, x as mimeTypesToFileAccept, We as nameFromPath, Ht as navigateToolsetOAuthPopup, V as normalizeDeploymentId, zr as normalizeOfflineCredentialsConnectSettings, An as normalizeResponseFormat, Ge as normalizeSkillName, oe as normalizeToolsetId, ma as normalizeVirtualPath, Ba as openAnnotationAttachment, Ut as openToolsetOAuthPopup, ge as padTwoDigits, Ao as parseExternalServiceUrl, Do as parseFeaturesData, ha as parseNewFolderVirtualPath, De as parsePromptResourceUrl, Ke as parseSkillManifest, Mt as parseSkillManifestDocument, nt as parseSkillResourceUrl, Sa as prepareCopyItems, po as prepareDownloadDestination, Ca as prepareMoveRenameItems, or as prepareScheduledTaskCreateBody, sr as prepareScheduledTaskUpdateBody, ot as readSkillFileBytes, st as readSkillFilePreviewBytes, ct as readSkillManifest, Tt as reconcileFilterTopics, Ga as referenceAttachmentToPdfCanvasContent, Zo as resetUsageLimitBannerDismissals, Ds as resolveActiveScheduledTask, Cr as resolveByteLimit, xs as resolveCanvasWidth, Dt as resolveCatalogPrimaryAction, Ka as resolveCodeCanvasContent, we as resolveDeploymentFolder, ba as resolveDialFileApiPath, p as resolveDialFileBucketAndPath, wr as resolveExtensionList, io as resolveExternalSourceContentType, qa as resolveGroupedVisualizerCanvasContent, Ja as resolveHtmlCanvasContent, Ya as resolveImageCanvasContent, Xa as resolveJsonCanvasContent, pe as resolveLocalizedText, Za as resolveMarkdownCanvasContent, ht as resolveMcpResourceKind, Qa as resolveOoxmlCanvasContent, ga as resolveOwnerCoords, $a as resolvePdfCanvasContent, m as resolveRelativeDialFilePath, _a as resolveSectionByPath, lt as resolveSkillFileDownloadPath, ut as resolveSkillManifestFileId, eo as resolveTextCanvasContent, se as resolveToolsetCredentialsLevel, Ia as resolveTransferFailureReason, La as resolveUploadFailureReason, to as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, tn as sanitizeAnnouncementHtml, nn as sanitizeAnnouncementMessageHtml, Nr as sanitizeFileName, _n as sanitizeFooterHtml, ce as selectToolsetAuthStatus, Wo as selectUsageBannerSource, Bn as serializePromptExport, ji as shouldRerunGenerationOnEdit, hn as shouldWatchForDisplayNameUpdate, qe as skillFileBytesToBlob, Jr as skillFileToAttachment, Je as skillFolderMarkerParent, Pr as splitFileNameExtension, mr as splitProjectConversationId, Ye as startsWithFrontmatterBlock, l as stripSurroundingSlashes, u as stripTrailingSlashes, It as subscribeToolsetLoginSuccess, Te as supportsChatInterface, me as toBaseLocale, jn as toOverlayMessages, bt as toPublishEntityType, N as toPublishRuleDto, Pn as toStage, cs as triggerBrowserDownload, Fr as trimFileNameToByteLimit, va as unionPathSets, Xe as unpackSkillArchive, Ra as updateEntry, ui as useActiveConversationSync, Os as useActiveScheduledTaskDetails, qt as useApplicationCredentials, di as useAsyncConfirmDialog, _ as useAttachmentAction, vi as useAttachmentUpload, C as useAttachmentValidation, jt as useCatalogEditNavigation, Pt as useCatalogItemDetails, Kt as useCatalogToolsetCredentials, jo as useChatSettingsFormConfig, fi as useConversationComposerDraft, fs as useConversationDiscovery, wi as useConversationExport, Ii as useConversationHandlers, Li as useConversationImport, pi as useConversationLookupMaps, hi as useConversationPanelItems, Ri as useConversationScroll, Ui as useConversationSources, Hi as useConversationStream, As as useConversationTitleEnrichmentController, Ar as useCreateProject, Ls as useDeploymentChangeTracking, Yo as useDeploymentUsageLimits, ho as useDialFileListing, bo as useDialFileManager, xo as useDialFileManagerSections, So as useDialFileManagerTabConfig, go as useDialFileMetadata, _o as useDialFileMutations, gs as useDialFilePreview, vo as useDialFileSharing, yo as useDialFileUploadBatch, ys as useEntityPreselection, Is as useExternalServiceLogin, Xt as useFavoriteEntitiesState, hs as useFileAttachmentModalState, Co as useFileAttachmentPicker, Rs as useGridEditingScroll, gi as useImportFilePicker, os as useMcpAppHostAdapter, as as useMcpAppHostContext, is as useMcpAppTools, _i as useMessageSelectionReply, Ln as useOAuthCallbackCompletion, Gr as useOfflineCredentialsAuth, Vr as useOfflineCredentialsGate, Ur as useOfflineCredentialsLogin, ss as useOpenMcpAppCanvas, Mo as usePageFileDrag, Po as usePanelMaxWidth, Ss as usePersistedState, kr as useProject, Lr as useProjectActions, Mr as useProjectConversations, Or as useProjects, Zn as usePromptsState, Zt as usePublishFolders, Xo as useRefreshUsageAfterGeneration, jr as useSaveProject, dr as useScheduledTaskRuns, ps as useScheduledTaskSkillDisplayNames, lr as useScheduledTasks, Fo as useShareLink, ci as useShareRecipientsCount, oi as useSkillArchiveImport, Jt as useSkillDetailsPanelData, Xr as useSkillEditorLoad, Zr as useSkillEditorSubmit, Qr as useSkillFileActions, ei as useSkillFilePreview, Ms as useSkillFilePreviewSyncController, ms as useSkillFileSystemPicker, Nt as useSkillItemDetails, ti as useSkillsState, Io as useToolsMenu, Gt as useToolsetLogin, Si as useTranscribeAudio, ts as useUsageData, es as useUsageLimitBanner, Qo as useUsageLimitBannerDismissal, No as useViewportWidth, Jn as validatePromptContent, Yn as validatePromptDescription, Xn as validatePromptName, qr as validateSkillFileBatch, xa as virtualPathToApiPath, Rt as waitForToolsetOAuthResult, ya as withRoutableRootLabels };
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.256",
4
+ "version": "1.3.0-dev.259",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -131,7 +131,7 @@
131
131
  }
132
132
  },
133
133
  "dependencies": {
134
- "@epam/ai-dial-chat-api-client": "1.3.0-dev.256",
134
+ "@epam/ai-dial-chat-api-client": "1.3.0-dev.259",
135
135
  "dompurify": "3.4.17",
136
136
  "fflate": "^0.8.3",
137
137
  "lru-cache": "^10.4.3",
@@ -140,23 +140,23 @@
140
140
  },
141
141
  "peerDependencies": {
142
142
  "react": "^19.2.8",
143
- "@epam/ai-dial-attachment-canvas": "1.3.0-dev.256",
144
- "@epam/ai-dial-attachment-input": "1.3.0-dev.256",
145
- "@epam/ai-dial-catalog": "1.3.0-dev.256",
146
- "@epam/ai-dial-chat-overlay": "1.3.0-dev.256",
147
- "@epam/ai-dial-chat-shared": "1.3.0-dev.256",
148
- "@epam/ai-dial-conversation-input": "1.3.0-dev.256",
149
- "@epam/ai-dial-mcp-apps": "1.3.0-dev.256",
150
- "@epam/ai-dial-projects": "1.3.0-dev.256",
151
- "@epam/ai-dial-publish-panel": "1.3.0-dev.256",
152
- "@epam/ai-dial-quotations": "1.3.0-dev.256",
143
+ "@epam/ai-dial-attachment-canvas": "1.3.0-dev.259",
144
+ "@epam/ai-dial-attachment-input": "1.3.0-dev.259",
145
+ "@epam/ai-dial-catalog": "1.3.0-dev.259",
146
+ "@epam/ai-dial-chat-overlay": "1.3.0-dev.259",
147
+ "@epam/ai-dial-chat-shared": "1.3.0-dev.259",
148
+ "@epam/ai-dial-conversation-input": "1.3.0-dev.259",
149
+ "@epam/ai-dial-mcp-apps": "1.3.0-dev.259",
150
+ "@epam/ai-dial-projects": "1.3.0-dev.259",
151
+ "@epam/ai-dial-publish-panel": "1.3.0-dev.259",
152
+ "@epam/ai-dial-quotations": "1.3.0-dev.259",
153
153
  "@epam/ai-dial-react-file-manager": "^0.4.0-dev.19",
154
- "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.256",
155
- "@epam/ai-dial-share": "1.3.0-dev.256",
156
- "@epam/ai-dial-skill-editor": "1.3.0-dev.256",
157
- "@epam/ai-dial-source-panel": "1.3.0-dev.256",
154
+ "@epam/ai-dial-scheduled-tasks": "1.3.0-dev.259",
155
+ "@epam/ai-dial-share": "1.3.0-dev.259",
156
+ "@epam/ai-dial-skill-editor": "1.3.0-dev.259",
157
+ "@epam/ai-dial-source-panel": "1.3.0-dev.259",
158
158
  "@epam/ai-dial-ui-kit": "^0.16.0-dev.56",
159
- "@epam/ai-dial-usage-dashboard": "1.3.0-dev.256",
159
+ "@epam/ai-dial-usage-dashboard": "1.3.0-dev.259",
160
160
  "@modelcontextprotocol/sdk": "^1.32.1",
161
161
  "@epam/pdf-highlighter-kit": "^0.0.19"
162
162
  },
@@ -0,0 +1,14 @@
1
+ import { ProjectWatchEventDto } from '@epam/ai-dial-chat-api-client';
2
+ import { ProjectItem } from '@epam/ai-dial-projects';
3
+ /** The part of a projects watch event the list reacts to. */
4
+ export type ProjectWatchEvent = Pick<ProjectWatchEventDto, 'id' | 'action' | 'timestamp'>;
5
+ /** Returns the payload as a {@link ProjectWatchEvent}, or `undefined` when it is not one. */
6
+ export declare const parseProjectWatchEvent: (payload: unknown) => ProjectWatchEvent | undefined;
7
+ /**
8
+ * Returns the projects after one watch event: a create or update moves the
9
+ * project's `updatedAt` forward (never back), a delete removes it, and an
10
+ * event for an unlisted project is ignored. Returns `items` itself when
11
+ * nothing changed.
12
+ */
13
+ export declare const applyProjectEvent: (items: ProjectItem[], event: ProjectWatchEvent) => ProjectItem[];
14
+ //# sourceMappingURL=project-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-events.d.ts","sourceRoot":"","sources":["../../src/project/project-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,oBAAoB,EACpB,IAAI,GAAG,QAAQ,GAAG,WAAW,CAC9B,CAAC;AAMF,6FAA6F;AAC7F,eAAO,MAAM,sBAAsB,GACjC,SAAS,OAAO,KACf,iBAAiB,GAAG,SAYtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,WAAW,EAAE,EACpB,OAAO,iBAAiB,KACvB,WAAW,EAab,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { ProjectWatchAction as e } from "@epam/ai-dial-chat-api-client";
2
+ //#region src/project/project-events.ts
3
+ var t = new Set(Object.values(e)), n = (e) => {
4
+ if (typeof e != "object" || !e) return;
5
+ let { id: n, action: r, timestamp: i } = e;
6
+ if (typeof n == "string" && typeof r == "string" && t.has(r) && typeof i == "number") return {
7
+ id: n,
8
+ action: r,
9
+ timestamp: i
10
+ };
11
+ }, r = (t, n) => {
12
+ let r = t.findIndex((e) => e.id === n.id);
13
+ if (r < 0) return t;
14
+ if (n.action === e.Delete) return t.filter((e, t) => t !== r);
15
+ let i = t[r];
16
+ if ((i.updatedAt ?? 0) >= n.timestamp) return t;
17
+ let a = [...t];
18
+ return a[r] = {
19
+ ...i,
20
+ updatedAt: n.timestamp
21
+ }, a;
22
+ };
23
+ //#endregion
24
+ export { r as applyProjectEvent, n as parseProjectWatchEvent };
@@ -75,6 +75,11 @@ export interface ProjectsConfiguredClient {
75
75
  path: string;
76
76
  };
77
77
  }, options?: RequestInit) => Promise<RawApiResponse>;
78
+ watchProjectsRaw: (request: {
79
+ watchProjectsBodyDto: {
80
+ ids: string[];
81
+ };
82
+ }, options?: RequestInit) => Promise<RawApiResponse>;
78
83
  }
79
84
  /** Text fields of a project create or edit request. */
80
85
  export interface ProjectFields {
@@ -136,6 +141,8 @@ export interface ProjectsApiClient {
136
141
  renameProjectConversation: (conversationId: string, newTitle: string) => Promise<RenameConversationResponseDto>;
137
142
  deleteProjectConversation: (conversationId: string) => Promise<void>;
138
143
  attachToProjectGeneration: (projectId: string, path: string, signal?: AbortSignal) => Promise<ReadableStream<Uint8Array>>;
144
+ /** Opens the SSE stream of changes to the given projects; a host without it gets no live updates. */
145
+ watchProjects?: (ids: string[], signal?: AbortSignal) => Promise<ReadableStream<Uint8Array>>;
139
146
  }
140
147
  /**
141
148
  * Splits a project conversation id `projects/{bucket}/{projectPath…}/conversations/{name}`
@@ -152,6 +159,6 @@ export declare const buildCreateConversationDto: ({ firstMessage, deploymentId,
152
159
  * File names travel as JSON fields, positionally paired with `files`,
153
160
  * because the BFF never trusts a multipart part's own filename.
154
161
  */
155
- export declare const createProjectsApiClient: (client: ProjectsConfiguredClient) => ProjectsApiClient;
162
+ export declare const createProjectsApiClient: (client: ProjectsConfiguredClient) => Required<ProjectsApiClient>;
156
163
  export {};
157
164
  //# sourceMappingURL=projects-api-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,11 @@ var e = (e) => {
75
75
  }, ...n(i));
76
76
  if (!a.body) throw Error("Attach endpoint returned no response body");
77
77
  return a.body;
78
+ },
79
+ watchProjects: async (t, r) => {
80
+ let { raw: i } = await e.watchProjectsRaw({ watchProjectsBodyDto: { ids: t } }, ...n(r));
81
+ if (!i.body) throw Error("Watch endpoint returned no response body");
82
+ return i.body;
78
83
  }
79
84
  });
80
85
  //#endregion
@@ -2,14 +2,22 @@ import { ProjectItem, ProjectSource } from '@epam/ai-dial-projects';
2
2
  import { ProjectsApiClient } from './projects-api-client';
3
3
  /**
4
4
  * Loads the projects the session user can see, mapped to the Projects lib's
5
- * cards. Loading is derived from whether a result answers the current reload
6
- * token, so an enabled page is loading from its very first render. The
7
- * request is aborted on unmount or when `enabled` turns false.
5
+ * cards, and keeps them current while mounted. Loading is derived from
6
+ * whether a result answers the current reload token, so an enabled page is
7
+ * loading from its very first render. The request is aborted on unmount or
8
+ * when `enabled` turns false.
9
+ *
10
+ * When the client offers `watchProjects`, a successful load opens one watch
11
+ * stream for the listed projects: an update moves a card's `updatedAt`
12
+ * forward and a delete removes it. A stream that drops is reopened with a
13
+ * bounded backoff and followed by a silent reload, so changes made during
14
+ * the gap are not lost; a watch that cannot be opened at all is not retried
15
+ * for the rest of the visit.
8
16
  *
9
17
  * @param client - Configured project requests, from `createProjectsApiClient`; it must be referentially stable, because a new object reloads.
10
18
  * @param enabled - Whether the page is enabled; no request is sent while `false`.
11
19
  */
12
- export declare const useProjects: (client: Pick<ProjectsApiClient, "listProjects">, enabled: boolean) => {
20
+ export declare const useProjects: (client: Pick<ProjectsApiClient, "listProjects" | "watchProjects">, enabled: boolean) => {
13
21
  projects: ProjectItem[];
14
22
  incompleteSources: ProjectSource[];
15
23
  isLoading: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"use-projects.d.ts","sourceRoot":"","sources":["../../src/project/use-projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU/D;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,EAC/C,SAAS,OAAO;;;;;;CAiDjB,CAAC"}
1
+ {"version":3,"file":"use-projects.d.ts","sourceRoot":"","sources":["../../src/project/use-projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAuC/D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,IAAI,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,CAAC,EACjE,SAAS,OAAO;;;;;;CAoIjB,CAAC"}
@@ -1,46 +1,111 @@
1
1
  import { mapProjectDtoToItem as e, mapProjectSource as t } from "./project-mapping.js";
2
- import { useCallback as n, useEffect as r, useState as i } from "react";
2
+ import { readSseEvents as n } from "../shared/read-sse-events.js";
3
+ import { applyProjectEvent as r, parseProjectWatchEvent as i } from "./project-events.js";
4
+ import { useCallback as a, useEffect as o, useRef as s, useState as c } from "react";
3
5
  //#region src/project/use-projects.ts
4
- var a = (a, o) => {
5
- let [s, c] = i(0), [l, u] = i();
6
- r(() => {
7
- if (!o) return;
6
+ var l = 1e3, u = [
7
+ 1e3,
8
+ 2e3,
9
+ 4e3,
10
+ 8e3,
11
+ 16e3
12
+ ], d = "\n", f = ({ items: n, incompleteSources: r }, i) => {
13
+ let a = n.map(e);
14
+ return {
15
+ reloadToken: i,
16
+ projects: a,
17
+ incompleteSources: r.map(t),
18
+ hasError: !1,
19
+ watchKey: a.slice(0, l).map(({ id: e }) => e).sort().join(d)
20
+ };
21
+ }, p = (e, t) => {
22
+ let [l, p] = c(0), [m, h] = c(), g = s(!1), _ = s(void 0);
23
+ o(() => {
24
+ if (!t) return;
8
25
  let n = new AbortController();
9
26
  return (async () => {
10
27
  try {
11
- let { items: r, incompleteSources: i } = await a.listProjects(n.signal);
28
+ let t = await e.listProjects(n.signal);
12
29
  if (n.signal.aborted) return;
13
- u({
14
- reloadToken: s,
15
- projects: r.map(e),
16
- incompleteSources: i.map(t),
17
- hasError: !1
18
- });
30
+ h(f(t, l));
19
31
  } catch {
20
32
  if (n.signal.aborted) return;
21
- u({
22
- reloadToken: s,
33
+ h({
34
+ reloadToken: l,
23
35
  projects: [],
24
36
  incompleteSources: [],
25
- hasError: !0
37
+ hasError: !0,
38
+ watchKey: ""
26
39
  });
27
40
  }
28
41
  })(), () => n.abort();
29
42
  }, [
30
- a,
31
- o,
32
- s
43
+ e,
44
+ t,
45
+ l
46
+ ]);
47
+ let v = a(async () => {
48
+ _.current?.abort();
49
+ let t = new AbortController();
50
+ _.current = t;
51
+ try {
52
+ let n = await e.listProjects(t.signal);
53
+ if (t.signal.aborted) return;
54
+ h((e) => e == null || e.hasError ? e : f(n, e.reloadToken));
55
+ } catch {}
56
+ }, [e]);
57
+ o(() => () => _.current?.abort(), []);
58
+ let y = m?.reloadToken === l ? m : void 0, b = t ? y?.watchKey ?? "" : "", { watchProjects: x } = e;
59
+ o(() => {
60
+ if (x == null || b === "" || g.current) return;
61
+ let e = b.split(d), t = new AbortController(), a, o = (e) => {
62
+ let n = i(e);
63
+ return n != null && h((e) => {
64
+ if (e == null) return e;
65
+ let t = r(e.projects, n);
66
+ return t === e.projects ? e : {
67
+ ...e,
68
+ projects: t
69
+ };
70
+ }), t.signal.aborted;
71
+ }, s = async (r, i) => {
72
+ let a;
73
+ try {
74
+ a = await x(e, t.signal);
75
+ } catch {
76
+ if (t.signal.aborted) return;
77
+ if (!i) {
78
+ g.current = !0;
79
+ return;
80
+ }
81
+ c(r + 1);
82
+ return;
83
+ }
84
+ i && v(), await n(a, o), !t.signal.aborted && c(0);
85
+ }, c = (e) => {
86
+ let t = u[e];
87
+ t == null ? g.current = !0 : a = setTimeout(() => {
88
+ s(e, !0);
89
+ }, t);
90
+ };
91
+ return s(0, !1), () => {
92
+ t.abort(), clearTimeout(a);
93
+ };
94
+ }, [
95
+ x,
96
+ b,
97
+ v
33
98
  ]);
34
- let d = n(() => {
35
- c((e) => e + 1);
36
- }, []), f = l?.reloadToken === s ? l : void 0;
99
+ let S = a(() => {
100
+ p((e) => e + 1);
101
+ }, []);
37
102
  return {
38
- projects: f?.projects ?? [],
39
- incompleteSources: f?.incompleteSources ?? [],
40
- isLoading: o && f == null,
41
- hasError: f?.hasError ?? !1,
42
- retry: d
103
+ projects: y?.projects ?? [],
104
+ incompleteSources: y?.incompleteSources ?? [],
105
+ isLoading: t && y == null,
106
+ hasError: y?.hasError ?? !1,
107
+ retry: S
43
108
  };
44
109
  };
45
110
  //#endregion
46
- export { a as useProjects };
111
+ export { p as useProjects };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Reads a newline-delimited SSE stream, JSON-decoding each `data:` line and
3
+ * passing it to `onEvent`. Stops reading — and always releases the reader —
4
+ * as soon as `onEvent` returns `true`, when the stream ends, or when
5
+ * `reader.read()` rejects (a network error, or the caller aborting the
6
+ * stream's own `AbortSignal`, e.g. on timeout). Malformed lines and
7
+ * non-`data:` lines (comments, keepalives) are skipped silently.
8
+ */
9
+ export declare const readSseEvents: <TEvent>(stream: ReadableStream<Uint8Array>, onEvent: (event: TEvent) => Promise<boolean> | boolean) => Promise<void>;
10
+ //# sourceMappingURL=read-sse-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-sse-events.d.ts","sourceRoot":"","sources":["../../src/shared/read-sse-events.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAU,MAAM,EACxC,QAAQ,cAAc,CAAC,UAAU,CAAC,EAClC,SAAS,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,KACrD,OAAO,CAAC,IAAI,CAyCd,CAAC"}
@@ -0,0 +1,33 @@
1
+ //#region src/shared/read-sse-events.ts
2
+ var e = async (e, t) => {
3
+ let n = e.getReader(), r = new TextDecoder(), i = "";
4
+ try {
5
+ for (;;) {
6
+ let { done: e, value: a } = await n.read();
7
+ if (e) break;
8
+ i += r.decode(a, { stream: !0 });
9
+ let o = i.split("\n");
10
+ i = o.pop() ?? "";
11
+ let s = !1;
12
+ for (let e of o) {
13
+ let n = e.trim();
14
+ if (!n.startsWith("data:")) continue;
15
+ let r = n.slice(5).trim(), i;
16
+ try {
17
+ i = JSON.parse(r);
18
+ } catch {
19
+ continue;
20
+ }
21
+ if (await t(i)) {
22
+ s = !0;
23
+ break;
24
+ }
25
+ }
26
+ if (s) break;
27
+ }
28
+ } catch {} finally {
29
+ n.releaseLock();
30
+ }
31
+ };
32
+ //#endregion
33
+ export { e as readSseEvents };