@epam/ai-dial-chat-hooks 1.2.0-dev.2 → 1.2.0-dev.20

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.
@@ -115,9 +115,9 @@ var c = {
115
115
  if (Number.isFinite(t) && t > 262144) return null;
116
116
  let n = await e.arrayBuffer();
117
117
  return n.byteLength > 262144 ? null : new Uint8Array(n);
118
- }, S = async (e) => {
118
+ }, S = async (e) => new Uint8Array(await e.arrayBuffer()), C = async (e) => {
119
119
  let t = await x(e);
120
120
  return t == null ? null : new TextDecoder().decode(t);
121
121
  };
122
122
  //#endregion
123
- export { b as buildSkillContentTree, _ as buildSkillOverview, u as mapSkillToCatalogItem, x as readSkillFileBytes, S as readSkillManifest, g as resolveSkillFileDownloadPath, m as resolveSkillManifestFileId };
123
+ export { b as buildSkillContentTree, _ as buildSkillOverview, u as mapSkillToCatalogItem, x as readSkillFileBytes, S as readSkillFilePreviewBytes, C as readSkillManifest, g as resolveSkillFileDownloadPath, m as resolveSkillManifestFileId };
@@ -1,6 +1,6 @@
1
1
  import { SKILL_MANIFEST_FILE as e } from "../skill/skill.js";
2
2
  import { parseSkillResourceUrl as t } from "../skill/skill-types.js";
3
- import { buildSkillContentTree as n, buildSkillOverview as r, readSkillFileBytes as i, readSkillManifest as a, resolveSkillFileDownloadPath as o, resolveSkillManifestFileId as s } from "./map-skill-to-catalog-item.js";
3
+ import { buildSkillContentTree as n, buildSkillOverview as r, readSkillFilePreviewBytes as i, readSkillManifest as a, resolveSkillFileDownloadPath as o, resolveSkillManifestFileId as s } from "./map-skill-to-catalog-item.js";
4
4
  import { parseSkillManifestDocument as c } from "../skill/skill-manifest.js";
5
5
  import { useCallback as l, useRef as u } from "react";
6
6
  //#region src/catalog/useSkillItemDetails.ts
@@ -47,9 +47,7 @@ var d = ({ api: d, skills: f, skillOverviewLabels: p }) => {
47
47
  if (n == null) throw Error("A folder cannot be previewed");
48
48
  let r = await d.downloadSkillFile(t.bucket, t.path, n);
49
49
  if (!r.ok) throw Object.assign(/* @__PURE__ */ Error(`File preview failed with status ${r.status}`), { status: r.status });
50
- let a = await i(r);
51
- if (a == null) throw Error("File exceeds the preview size limit");
52
- let s = r.headers.get("content-type")?.split(";")[0].trim() || void 0;
50
+ let a = await i(r), s = r.headers.get("content-type")?.split(";")[0].trim() || void 0;
53
51
  return {
54
52
  bytes: a,
55
53
  mimeType: s === "application/octet-stream" ? void 0 : s
package/catalog.d.ts CHANGED
@@ -652,6 +652,24 @@ export declare interface PublishApiClient {
652
652
  */
653
653
  export declare const readSkillFileBytes: (response: Response) => Promise<Uint8Array | null>;
654
654
 
655
+ /**
656
+ * Reads a skill file response as raw bytes with no size ceiling, for the
657
+ * supporting-file **preview** path.
658
+ *
659
+ * Previews are user-initiated, one file at a time, and a realistic binary
660
+ * (a PDF, an image) routinely exceeds `SKILL_MANIFEST_MAX_BYTES` — a cap
661
+ * sized for `SKILL.md` frontmatter, not for binaries — so applying that cap
662
+ * here rejected virtually every real PDF before it was ever decoded. This
663
+ * reader therefore never returns `null`: file size is not a failure class on
664
+ * the preview path.
665
+ *
666
+ * `readSkillFileBytes` and `readSkillManifest` keep their
667
+ * `SKILL_MANIFEST_MAX_BYTES` ceiling, because they feed the manifest parse
668
+ * and the textual Content-tab read, where an oversized body must never be
669
+ * decoded into a string.
670
+ */
671
+ export declare const readSkillFilePreviewBytes: (response: Response) => Promise<Uint8Array>;
672
+
655
673
  /**
656
674
  * Reads a skill manifest response as text, or `null` when the body is larger
657
675
  * than `SKILL_MANIFEST_MAX_BYTES`. The size is checked before decoding, so an
package/catalog.js CHANGED
@@ -8,17 +8,17 @@ import { mapDeploymentDetailsDtoToEntityDetails as u, mapEntityDetailsToCatalogD
8
8
  import { mapDeploymentToCatalogItem as p, mapDeploymentToolsetCredentials as m, mapToolsetToCatalogItem as h, resolveDeploymentFolder as g } from "./catalog/map-deployment-to-catalog-item.js";
9
9
  import { buildPromptOverview as _, isOrganisationPromptItem as v, mapPromptToCatalogItem as y } from "./catalog/map-prompt-to-catalog-item.js";
10
10
  import { PUBLIC_SKILL_BUCKET as b, SKILL_LISTING_MAX_PAGES as x, SKILL_LISTING_PAGE_SIZE as S, SKILL_MANIFEST_MAX_BYTES as C, SkillSource as w, parseSkillResourceUrl as T } from "./skill/skill-types.js";
11
- import { buildSkillContentTree as E, buildSkillOverview as D, mapSkillToCatalogItem as O, readSkillFileBytes as k, readSkillManifest as A, resolveSkillFileDownloadPath as j, resolveSkillManifestFileId as M } from "./catalog/map-skill-to-catalog-item.js";
12
- import { McpResourceKind as N, buildApplicationMcpUrl as P, buildConnectApi as F, buildToolsetMcpUrl as I, resolveMcpResourceKind as L } from "./catalog/mcp-endpoint-url.js";
13
- import { getPublicCatalogEntityFolderPath as R, isPublicCatalogEntityId as z, mapPublishConversationResultDto as B, mapPublishHistoryEntryDto as V, toPublishEntityType as H } from "./catalog/publish.js";
14
- import { deriveAvailableTabIds as U, deriveFavoriteItems as W, filterCatalogItemsBySelector as G, filterHiddenOwnedItems as K, reconcileFilterTopics as q } from "./catalog/catalog-derivations.js";
15
- import { CatalogPrimaryActionType as J, resolveCatalogPrimaryAction as Y } from "./catalog/catalog-primary-action.js";
16
- import { useCatalogEditNavigation as X } from "./catalog/useCatalogEditNavigation/useCatalogEditNavigation.js";
17
- import { useSkillItemDetails as Z } from "./catalog/useSkillItemDetails.js";
18
- import { useCatalogItemDetails as Q } from "./catalog/useCatalogItemDetails.js";
19
- import { useCatalogToolsetCredentials as $ } from "./catalog/useCatalogToolsetCredentials/useCatalogToolsetCredentials.js";
20
- import { useSkillDetailsPanelData as ee } from "./catalog/useSkillDetailsPanelData/useSkillDetailsPanelData.js";
21
- import { FavoriteEntityType as te, useFavoriteEntitiesState as ne } from "./catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js";
22
- import { usePublishFolders as re } from "./catalog/usePublishFolders/usePublishFolders.js";
23
- import { SkillPreviewErrorKind as ie, useSkillFilePreview as ae } from "./skill/useSkillFilePreview.js";
24
- export { s as AuthenticationType, J as CatalogPrimaryActionType, te as FavoriteEntityType, N as McpResourceKind, b as PUBLIC_SKILL_BUCKET, x as SKILL_LISTING_MAX_PAGES, S as SKILL_LISTING_PAGE_SIZE, C as SKILL_MANIFEST_MAX_BYTES, ie as SkillPreviewErrorKind, w as SkillSource, P as buildApplicationMcpUrl, n as buildChatCompletionsUrl, F as buildConnectApi, r as buildDeploymentConnectApi, _ as buildPromptOverview, i as buildResponsesUrl, E as buildSkillContentTree, D as buildSkillOverview, I as buildToolsetMcpUrl, e as createPublishApiClient, U as deriveAvailableTabIds, W as deriveFavoriteItems, a as encodeDeploymentId, G as filterCatalogItemsBySelector, K as filterHiddenOwnedItems, o as findDeploymentByIdOrReference, R as getPublicCatalogEntityFolderPath, v as isOrganisationPromptItem, z as isPublicCatalogEntityId, u as mapDeploymentDetailsDtoToEntityDetails, c as mapDeploymentLimitsDtoToCatalogLimits, l as mapDeploymentLimitsToInput, p as mapDeploymentToCatalogItem, m as mapDeploymentToolsetCredentials, d as mapEntityDetailsToCatalogDetails, y as mapPromptToCatalogItem, B as mapPublishConversationResultDto, V as mapPublishHistoryEntryDto, O as mapSkillToCatalogItem, f as mapToolsetCredentials, h as mapToolsetToCatalogItem, T as parseSkillResourceUrl, k as readSkillFileBytes, A as readSkillManifest, q as reconcileFilterTopics, Y as resolveCatalogPrimaryAction, g as resolveDeploymentFolder, L as resolveMcpResourceKind, j as resolveSkillFileDownloadPath, M as resolveSkillManifestFileId, H as toPublishEntityType, t as toPublishRuleDto, X as useCatalogEditNavigation, Q as useCatalogItemDetails, $ as useCatalogToolsetCredentials, ne as useFavoriteEntitiesState, re as usePublishFolders, ee as useSkillDetailsPanelData, ae as useSkillFilePreview, Z as useSkillItemDetails };
11
+ import { buildSkillContentTree as E, buildSkillOverview as D, mapSkillToCatalogItem as O, readSkillFileBytes as k, readSkillFilePreviewBytes as A, readSkillManifest as j, resolveSkillFileDownloadPath as M, resolveSkillManifestFileId as N } from "./catalog/map-skill-to-catalog-item.js";
12
+ import { McpResourceKind as P, buildApplicationMcpUrl as F, buildConnectApi as I, buildToolsetMcpUrl as L, resolveMcpResourceKind as R } from "./catalog/mcp-endpoint-url.js";
13
+ import { getPublicCatalogEntityFolderPath as z, isPublicCatalogEntityId as B, mapPublishConversationResultDto as V, mapPublishHistoryEntryDto as H, toPublishEntityType as U } from "./catalog/publish.js";
14
+ import { deriveAvailableTabIds as W, deriveFavoriteItems as G, filterCatalogItemsBySelector as K, filterHiddenOwnedItems as q, reconcileFilterTopics as J } from "./catalog/catalog-derivations.js";
15
+ import { CatalogPrimaryActionType as Y, resolveCatalogPrimaryAction as X } from "./catalog/catalog-primary-action.js";
16
+ import { useCatalogEditNavigation as Z } from "./catalog/useCatalogEditNavigation/useCatalogEditNavigation.js";
17
+ import { useSkillItemDetails as Q } from "./catalog/useSkillItemDetails.js";
18
+ import { useCatalogItemDetails as $ } from "./catalog/useCatalogItemDetails.js";
19
+ import { useCatalogToolsetCredentials as ee } from "./catalog/useCatalogToolsetCredentials/useCatalogToolsetCredentials.js";
20
+ import { useSkillDetailsPanelData as te } from "./catalog/useSkillDetailsPanelData/useSkillDetailsPanelData.js";
21
+ import { FavoriteEntityType as ne, useFavoriteEntitiesState as re } from "./catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js";
22
+ import { usePublishFolders as ie } from "./catalog/usePublishFolders/usePublishFolders.js";
23
+ import { SkillPreviewErrorKind as ae, useSkillFilePreview as oe } from "./skill/useSkillFilePreview.js";
24
+ export { s as AuthenticationType, Y as CatalogPrimaryActionType, ne as FavoriteEntityType, P as McpResourceKind, b as PUBLIC_SKILL_BUCKET, x as SKILL_LISTING_MAX_PAGES, S as SKILL_LISTING_PAGE_SIZE, C as SKILL_MANIFEST_MAX_BYTES, ae as SkillPreviewErrorKind, w as SkillSource, F as buildApplicationMcpUrl, n as buildChatCompletionsUrl, I as buildConnectApi, r as buildDeploymentConnectApi, _ as buildPromptOverview, i as buildResponsesUrl, E as buildSkillContentTree, D as buildSkillOverview, L as buildToolsetMcpUrl, e as createPublishApiClient, W as deriveAvailableTabIds, G as deriveFavoriteItems, a as encodeDeploymentId, K as filterCatalogItemsBySelector, q as filterHiddenOwnedItems, o as findDeploymentByIdOrReference, z as getPublicCatalogEntityFolderPath, v as isOrganisationPromptItem, B as isPublicCatalogEntityId, u as mapDeploymentDetailsDtoToEntityDetails, c as mapDeploymentLimitsDtoToCatalogLimits, l as mapDeploymentLimitsToInput, p as mapDeploymentToCatalogItem, m as mapDeploymentToolsetCredentials, d as mapEntityDetailsToCatalogDetails, y as mapPromptToCatalogItem, V as mapPublishConversationResultDto, H as mapPublishHistoryEntryDto, O as mapSkillToCatalogItem, f as mapToolsetCredentials, h as mapToolsetToCatalogItem, T as parseSkillResourceUrl, k as readSkillFileBytes, A as readSkillFilePreviewBytes, j as readSkillManifest, J as reconcileFilterTopics, X as resolveCatalogPrimaryAction, g as resolveDeploymentFolder, R as resolveMcpResourceKind, M as resolveSkillFileDownloadPath, N as resolveSkillManifestFileId, U as toPublishEntityType, t as toPublishRuleDto, Z as useCatalogEditNavigation, $ as useCatalogItemDetails, ee as useCatalogToolsetCredentials, re as useFavoriteEntitiesState, ie as usePublishFolders, te as useSkillDetailsPanelData, oe as useSkillFilePreview, Q as useSkillItemDetails };
@@ -34,9 +34,20 @@ var t = {
34
34
  e.addHook("afterSanitizeAttributes", (e) => {
35
35
  e.tagName === "A" && e.getAttribute("target") === "_blank" && e.setAttribute("rel", "noopener noreferrer");
36
36
  });
37
- var r = (n) => e.sanitize(n, t), i = (t) => e.sanitize(t, n), a = (e) => typeof e == "string" && e.length > 0, o = ({ title: e, description: t }) => a(e) || a(t), s = (e) => o(e) || a(e.html), c = (e) => o(e) ? JSON.stringify({
38
- title: e.title ?? "",
39
- description: e.description ?? ""
40
- }) : e.html ?? "";
37
+ var r = (n) => e.sanitize(n, t), i = (t) => e.sanitize(t, n), a = (e) => typeof e == "string" && e.length > 0, o = ({ title: e, description: t }) => a(e) || a(t), s = (e) => o(e) || a(e.html), c = (e) => e.map((e) => ({
38
+ title: e.title,
39
+ description: e.description ?? "",
40
+ link: e.link ? {
41
+ label: e.link.label,
42
+ href: e.link.href
43
+ } : null
44
+ })), l = (e) => {
45
+ if (!o(e)) return e.html ?? "";
46
+ let t = {
47
+ title: e.title ?? "",
48
+ description: e.description ?? ""
49
+ }, n = e.items ?? [];
50
+ return n.length > 0 && (t.items = c(n)), JSON.stringify(t);
51
+ };
41
52
  //#endregion
42
- export { c as buildAnnouncementSignature, s as hasAnnouncementContent, o as hasStructuredAnnouncement, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml };
53
+ export { l as buildAnnouncementSignature, s as hasAnnouncementContent, o as hasStructuredAnnouncement, r as sanitizeAnnouncementHtml, i as sanitizeAnnouncementMessageHtml };
@@ -26,9 +26,16 @@ var o = 700, s = 5, c = (e) => t(e.split("/").filter(Boolean).pop() ?? "file").r
26
26
  })).url,
27
27
  name: a.fileName
28
28
  };
29
- } catch (t) {
30
- if (l(t)) {
29
+ } catch (c) {
30
+ if (l(c)) {
31
31
  if (i.markTaken(a.fileName), o < s) {
32
+ if (t.listFiles) try {
33
+ let e = await t.listFiles({
34
+ bucket: u,
35
+ path: a.path.slice(0, a.path.lastIndexOf("/"))
36
+ });
37
+ for (let t of e.items) i.markTaken(t.name);
38
+ } catch {}
32
39
  a = i.allocate(n);
33
40
  continue;
34
41
  }
@@ -38,10 +45,10 @@ var o = 700, s = 5, c = (e) => t(e.split("/").filter(Boolean).pop() ?? "file").r
38
45
  let e = p.current.splice(0);
39
46
  d?.(e), m.current = null;
40
47
  }, f);
41
- let n = t instanceof Error ? t : /* @__PURE__ */ Error("Network upload failed");
42
- throw n.errorReason = r.Network, n;
48
+ let t = c instanceof Error ? c : /* @__PURE__ */ Error("Network upload failed");
49
+ throw t.errorReason = r.Network, t;
43
50
  }
44
- throw t;
51
+ throw c;
45
52
  }
46
53
  }, [
47
54
  u,
@@ -44,23 +44,19 @@ var p = ({ conversation: p, conversationId: m, bucket: h, isStreaming: g, startS
44
44
  if (g || !m || !p || e === -1 || p.messages[e]?.role !== c.Assistant) return;
45
45
  let t = p.messages[e - 1];
46
46
  if (!t || t.role !== c.User) return;
47
- let n = C();
48
- v((t) => {
49
- if (!t) return t;
50
- let r = {
51
- ...t.messages[e],
52
- content: "",
53
- custom_content: void 0,
54
- wasStoppedByUser: void 0,
55
- stoppedWithoutContent: void 0,
56
- streamErrorMessage: void 0,
57
- deploymentId: n
58
- }, i = {
59
- ...t,
60
- messages: [...t.messages.slice(0, e), r]
61
- };
62
- return y.current = i, i;
63
- }), A((t) => new Set([...t].filter((t) => t < e))), _(m, t.content, e, n, t.custom_content, l(), f.Regenerate);
47
+ let n = C(), r = {
48
+ ...p.messages[e],
49
+ content: "",
50
+ custom_content: void 0,
51
+ wasStoppedByUser: void 0,
52
+ stoppedWithoutContent: void 0,
53
+ streamErrorMessage: void 0,
54
+ deploymentId: n
55
+ }, i = {
56
+ ...p,
57
+ messages: [...p.messages.slice(0, e), r]
58
+ };
59
+ y.current = i, v(i), A((t) => new Set([...t].filter((t) => t < e))), _(m, t.content, e, n, t.custom_content, l(), f.Regenerate);
64
60
  }, [
65
61
  p,
66
62
  m,
@@ -1,6 +1,6 @@
1
1
  import { AudioTranscriptionError as e, AudioTranscriptionErrorReason as t } from "./audio-transcription-error.js";
2
2
  //#region src/conversation/useTranscribeAudio/transcription-retry.ts
3
- var n = 2, r = 9e4, i = (e, t) => (t.throwIfAborted(), new Promise((n, r) => {
3
+ var n = 2, r = 6e3, i = (e, t) => (t.throwIfAborted(), new Promise((n, r) => {
4
4
  let i = () => {
5
5
  clearTimeout(a), r(t.reason);
6
6
  }, a = setTimeout(() => {
@@ -28,9 +28,10 @@ var n = 2, r = 9e4, i = (e, t) => (t.throwIfAborted(), new Promise((n, r) => {
28
28
  503,
29
29
  504
30
30
  ].includes(u.status)) throw o;
31
- let d = [429, 503].includes(u.status) ? 3e4 : 2e3, f = Math.max(1e3, a(u.headers.get("retry-after")) ?? d * 2 ** l);
32
- if (l >= n || c + f > r) throw new e(t.Busy);
33
- c += f, await i(f, s);
31
+ if ([429, 503].includes(u.status)) throw new e(t.Busy);
32
+ let d = Math.max(1e3, a(u.headers.get("retry-after")) ?? 2e3 * 2 ** l);
33
+ if (l >= n || c + d > r) throw new e(t.Busy);
34
+ c += d, await i(d, s);
34
35
  }
35
36
  }
36
37
  };
package/conversation.d.ts CHANGED
@@ -36,6 +36,26 @@ export declare interface AnnouncementContent {
36
36
  title: string | null;
37
37
  description: string | null;
38
38
  html: string | null;
39
+ /** Entries of the popover the banner opens. */
40
+ items?: readonly AnnouncementListItem[];
41
+ }
42
+
43
+ /** One entry of the announcements popover behind the banner's `+N` pill. */
44
+ export declare interface AnnouncementListItem {
45
+ /** Plain-text heading of the entry. */
46
+ title: string;
47
+ /** Supporting copy of the entry, sanitized before it is rendered. */
48
+ description?: string | null;
49
+ /** Optional call to action shown at the end of the entry. */
50
+ link?: AnnouncementListItemLink | null;
51
+ }
52
+
53
+ /** A link rendered as the call to action of an announcements-popover entry. */
54
+ export declare interface AnnouncementListItemLink {
55
+ /** Visible text of the call to action. */
56
+ label: string;
57
+ /** Absolute `http`/`https` target the call to action opens. */
58
+ href: string;
39
59
  }
40
60
 
41
61
  /** State and controls returned by `useAsyncConfirmDialog`. */
@@ -95,7 +115,7 @@ export declare enum AudioTranscriptionErrorReason {
95
115
  Unavailable = "unavailable",
96
116
  /** The recording exceeds the caller's configured size limit. */
97
117
  TooLarge = "tooLarge",
98
- /** The upstream ASR provider stayed rate-limited or unavailable after retrying. */
118
+ /** Recognition is rate-limited, unavailable, or exhausted short gateway retries. */
99
119
  Busy = "busy",
100
120
  /** Recognition failed for any other reason. */
101
121
  Failed = "failed"
@@ -107,9 +127,18 @@ export declare enum AudioTranscriptionErrorReason {
107
127
  * hidden only while the current announcement produces the same signature, so
108
128
  * editing any part of it brings the banner back with no version counter.
109
129
  *
130
+ * Every piece of content the banner surface renders feeds the signature — the
131
+ * title, the description, and the popover entries behind the pill, which live
132
+ * inside the banner and are hidden along with it. Publishing a new entry in
133
+ * that list therefore invalidates an earlier dismissal on its own, even when
134
+ * the banner line itself is untouched.
135
+ *
110
136
  * A legacy-only announcement returns the raw HTML string — byte-identical to
111
137
  * what shipped before the structured fields existed — so dismissals recorded
112
- * by older builds keep working without a storage migration.
138
+ * by older builds keep working without a storage migration. `items` is left
139
+ * out of the payload entirely when the list is empty for the same reason: a
140
+ * deployment that never configured the popover keeps matching the signatures
141
+ * its users already have stored.
113
142
  */
114
143
  export declare const buildAnnouncementSignature: (content: AnnouncementContent) => string;
115
144
 
@@ -699,8 +728,8 @@ export declare const useAttachmentUpload: ({ filesApi, bucket, onNetworkError, d
699
728
 
700
729
  /** Parameters for {@link useAttachmentUpload}. */
701
730
  export declare interface UseAttachmentUploadParams {
702
- /** Already-configured generated-client instance used to upload the file. */
703
- filesApi: Pick<FilesApi, 'uploadFile'>;
731
+ /** Already-configured client; optional listing skips stored names after a conflict. */
732
+ filesApi: Pick<FilesApi, 'uploadFile'> & Partial<Pick<FilesApi, 'listFiles'>>;
704
733
  /** DIAL Core bucket the file is uploaded into. */
705
734
  bucket: string | undefined;
706
735
  /** Called with batched filenames after a burst of network-error upload failures. */
package/file-manager.d.ts CHANGED
@@ -699,7 +699,7 @@ declare interface OoxmlDocxHighlightLocation {
699
699
  text: string;
700
700
  }
701
701
 
702
- /** Supported document formats rendered by the bundled `@silurus/ooxml` runtime. */
702
+ /** Supported document formats rendered by the installed `@silurus/ooxml` runtime. */
703
703
  declare enum OoxmlFileType {
704
704
  Docx = 'docx',
705
705
  Xlsx = 'xlsx',
@@ -880,10 +880,12 @@ export declare const resolveHtmlCanvasContent: (attachment: DisplayAttachment, r
880
880
 
881
881
  /**
882
882
  * Resolves an image canvas content payload from a DisplayAttachment without
883
- * fetching — returns the BFF download URL (or a local/inline blob URL)
884
- * directly so the browser cache can be shared with the conversation view's
885
- * `<img>` element. Error detection is delegated to `<img onError>` in the
886
- * canvas renderer. Returns `null` if no URL source is available.
883
+ * fetching — returns a local blob URL or the BFF download URL directly so the
884
+ * browser cache can be shared with the conversation view's `<img>` element.
885
+ * A local `File` with bytes takes precedence over the DIAL download URL; a
886
+ * 0-byte `File` (the file-manager placeholder) does not. Error detection is
887
+ * delegated to `<img onError>` in the canvas renderer. Returns `null` if no
888
+ * URL source is available.
887
889
  */
888
890
  export declare const resolveImageCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => ImageCanvasContent | null;
889
891
 
@@ -69,14 +69,14 @@ var g = (e, t) => URL.createObjectURL(s(e, t)), _ = (e) => {
69
69
  if (t.url != null && e(t.url)) return E(t.url);
70
70
  if (t.referenceUrl != null && e(t.referenceUrl)) return E(t.referenceUrl);
71
71
  }, O = async (e, t) => {
72
- if ("file" in e) return URL.createObjectURL(e.file);
73
- let n = t.resolveDialUrl(e);
74
- if (n != null) try {
75
- let r = await w(n, D(e) ?? "", t);
76
- return URL.createObjectURL(r);
72
+ let n = "file" in e ? e.file : void 0, r = n != null && n.size === 0, i = n != null && !r ? void 0 : t.resolveDialUrl(e);
73
+ if (n != null && i == null) return URL.createObjectURL(n);
74
+ if (i != null) try {
75
+ let n = await w(i, D(e) ?? "", t);
76
+ return URL.createObjectURL(n);
77
77
  } catch (e) {
78
78
  let t = e.status;
79
- return t == null ? y(n) : v(t, n);
79
+ return t == null ? y(i) : v(t, i);
80
80
  }
81
81
  if (e.previewUrl != null) return e.previewUrl;
82
82
  if (e.data != null) return g(e.data, e.contentType);
@@ -91,12 +91,11 @@ var g = (e, t) => URL.createObjectURL(s(e, t)), _ = (e) => {
91
91
  }
92
92
  if ("file" in e) return e.file.text();
93
93
  }, A = (e, t) => e.data != null || t.resolveDialUrl(e) != null || "file" in e, j = (e, n) => {
94
- if ("file" in e) return {
94
+ let r = "file" in e ? e.file : void 0, i = r != null && r.size === 0, a = r != null && !i ? void 0 : n.resolveDialUrl(e);
95
+ return r != null && a == null ? {
95
96
  type: t.Image,
96
- url: URL.createObjectURL(e.file)
97
- };
98
- let r = n.resolveDialUrl(e);
99
- return r == null ? e.previewUrl == null ? e.data == null ? null : {
97
+ url: URL.createObjectURL(r)
98
+ } : a == null ? e.previewUrl == null ? e.data == null ? null : {
100
99
  type: t.Image,
101
100
  url: g(e.data, e.contentType)
102
101
  } : {
@@ -104,7 +103,7 @@ var g = (e, t) => URL.createObjectURL(s(e, t)), _ = (e) => {
104
103
  url: e.previewUrl
105
104
  } : {
106
105
  type: t.Image,
107
- url: r
106
+ url: a
108
107
  };
109
108
  }, M = async (e, n) => {
110
109
  let r = await k(e, n);
package/index.d.ts CHANGED
@@ -212,6 +212,26 @@ export declare interface AnnouncementContent {
212
212
  title: string | null;
213
213
  description: string | null;
214
214
  html: string | null;
215
+ /** Entries of the popover the banner opens. */
216
+ items?: readonly AnnouncementListItem[];
217
+ }
218
+
219
+ /** One entry of the announcements popover behind the banner's `+N` pill. */
220
+ export declare interface AnnouncementListItem {
221
+ /** Plain-text heading of the entry. */
222
+ title: string;
223
+ /** Supporting copy of the entry, sanitized before it is rendered. */
224
+ description?: string | null;
225
+ /** Optional call to action shown at the end of the entry. */
226
+ link?: AnnouncementListItemLink | null;
227
+ }
228
+
229
+ /** A link rendered as the call to action of an announcements-popover entry. */
230
+ export declare interface AnnouncementListItemLink {
231
+ /** Visible text of the call to action. */
232
+ label: string;
233
+ /** Absolute `http`/`https` target the call to action opens. */
234
+ href: string;
215
235
  }
216
236
 
217
237
  /** Normalized shape returned by {@link getApiErrorDetails}. */
@@ -353,7 +373,7 @@ export declare enum AudioTranscriptionErrorReason {
353
373
  Unavailable = "unavailable",
354
374
  /** The recording exceeds the caller's configured size limit. */
355
375
  TooLarge = "tooLarge",
356
- /** The upstream ASR provider stayed rate-limited or unavailable after retrying. */
376
+ /** Recognition is rate-limited, unavailable, or exhausted short gateway retries. */
357
377
  Busy = "busy",
358
378
  /** Recognition failed for any other reason. */
359
379
  Failed = "failed"
@@ -379,9 +399,18 @@ export declare const buildAdditionalLocaleOptions: (additionalLocaleCodes: strin
379
399
  * hidden only while the current announcement produces the same signature, so
380
400
  * editing any part of it brings the banner back with no version counter.
381
401
  *
402
+ * Every piece of content the banner surface renders feeds the signature — the
403
+ * title, the description, and the popover entries behind the pill, which live
404
+ * inside the banner and are hidden along with it. Publishing a new entry in
405
+ * that list therefore invalidates an earlier dismissal on its own, even when
406
+ * the banner line itself is untouched.
407
+ *
382
408
  * A legacy-only announcement returns the raw HTML string — byte-identical to
383
409
  * what shipped before the structured fields existed — so dismissals recorded
384
- * by older builds keep working without a storage migration.
410
+ * by older builds keep working without a storage migration. `items` is left
411
+ * out of the payload entirely when the list is empty for the same reason: a
412
+ * deployment that never configured the popover keeps matching the signatures
413
+ * its users already have stored.
385
414
  */
386
415
  export declare const buildAnnouncementSignature: (content: AnnouncementContent) => string;
387
416
 
@@ -2515,7 +2544,7 @@ declare interface OoxmlDocxHighlightLocation {
2515
2544
  text: string;
2516
2545
  }
2517
2546
 
2518
- /** Supported document formats rendered by the bundled `@silurus/ooxml` runtime. */
2547
+ /** Supported document formats rendered by the installed `@silurus/ooxml` runtime. */
2519
2548
  declare enum OoxmlFileType {
2520
2549
  Docx = 'docx',
2521
2550
  Xlsx = 'xlsx',
@@ -2827,6 +2856,24 @@ export declare interface QuickAppSchemaLike {
2827
2856
  */
2828
2857
  export declare const readSkillFileBytes: (response: Response) => Promise<Uint8Array | null>;
2829
2858
 
2859
+ /**
2860
+ * Reads a skill file response as raw bytes with no size ceiling, for the
2861
+ * supporting-file **preview** path.
2862
+ *
2863
+ * Previews are user-initiated, one file at a time, and a realistic binary
2864
+ * (a PDF, an image) routinely exceeds `SKILL_MANIFEST_MAX_BYTES` — a cap
2865
+ * sized for `SKILL.md` frontmatter, not for binaries — so applying that cap
2866
+ * here rejected virtually every real PDF before it was ever decoded. This
2867
+ * reader therefore never returns `null`: file size is not a failure class on
2868
+ * the preview path.
2869
+ *
2870
+ * `readSkillFileBytes` and `readSkillManifest` keep their
2871
+ * `SKILL_MANIFEST_MAX_BYTES` ceiling, because they feed the manifest parse
2872
+ * and the textual Content-tab read, where an oversized body must never be
2873
+ * decoded into a string.
2874
+ */
2875
+ export declare const readSkillFilePreviewBytes: (response: Response) => Promise<Uint8Array>;
2876
+
2830
2877
  /**
2831
2878
  * Reads a skill manifest response as text, or `null` when the body is larger
2832
2879
  * than `SKILL_MANIFEST_MAX_BYTES`. The size is checked before decoding, so an
@@ -2937,10 +2984,12 @@ export declare const resolveHtmlCanvasContent: (attachment: DisplayAttachment, r
2937
2984
 
2938
2985
  /**
2939
2986
  * Resolves an image canvas content payload from a DisplayAttachment without
2940
- * fetching — returns the BFF download URL (or a local/inline blob URL)
2941
- * directly so the browser cache can be shared with the conversation view's
2942
- * `<img>` element. Error detection is delegated to `<img onError>` in the
2943
- * canvas renderer. Returns `null` if no URL source is available.
2987
+ * fetching — returns a local blob URL or the BFF download URL directly so the
2988
+ * browser cache can be shared with the conversation view's `<img>` element.
2989
+ * A local `File` with bytes takes precedence over the DIAL download URL; a
2990
+ * 0-byte `File` (the file-manager placeholder) does not. Error detection is
2991
+ * delegated to `<img onError>` in the canvas renderer. Returns `null` if no
2992
+ * URL source is available.
2944
2993
  */
2945
2994
  export declare const resolveImageCanvasContent: (attachment: DisplayAttachment, resolvers: AttachmentCanvasUrlResolvers) => ImageCanvasContent | null;
2946
2995
 
@@ -3862,8 +3911,8 @@ export declare const useAttachmentUpload: ({ filesApi, bucket, onNetworkError, d
3862
3911
 
3863
3912
  /** Parameters for {@link useAttachmentUpload}. */
3864
3913
  export declare interface UseAttachmentUploadParams {
3865
- /** Already-configured generated-client instance used to upload the file. */
3866
- filesApi: Pick<FilesApi, 'uploadFile'>;
3914
+ /** Already-configured client; optional listing skips stored names after a conflict. */
3915
+ filesApi: Pick<FilesApi, 'uploadFile'> & Partial<Pick<FilesApi, 'listFiles'>>;
3867
3916
  /** DIAL Core bucket the file is uploaded into. */
3868
3917
  bucket: string | undefined;
3869
3918
  /** Called with batched filenames after a burst of network-error upload failures. */
package/index.js CHANGED
@@ -25,112 +25,112 @@ import { PromptSource as ae, parsePromptResourceUrl as oe } from "./prompt/promp
25
25
  import { buildPromptOverview as se, isOrganisationPromptItem as ce, mapPromptToCatalogItem as le } from "./catalog/map-prompt-to-catalog-item.js";
26
26
  import { SKILL_FILE_UPLOAD_MAX_BYTES as ue, SKILL_MANIFEST_FILE as de, SKILL_UPLOAD_MAX_FILES as fe, SKILL_UPLOAD_MAX_TOTAL_BYTES as pe, buildSkillFilesPayload as me, buildSkillManifest as he, buildSkillManifestForSubmit as ge, buildSkillManifestFromFrontmatter as _e, isValidSkillRelativePath as ve, nameFromPath as ye, normalizeSkillName as be, parseSkillManifest as xe, skillFileBytesToBlob as Se, unpackSkillArchive as Ce } from "./skill/skill.js";
27
27
  import { PUBLIC_SKILL_BUCKET as we, SKILL_LISTING_MAX_PAGES as Te, SKILL_LISTING_PAGE_SIZE as Ee, SKILL_MANIFEST_MAX_BYTES as De, SkillSource as Oe, parseSkillResourceUrl as ke } from "./skill/skill-types.js";
28
- import { buildSkillContentTree as Ae, buildSkillOverview as je, mapSkillToCatalogItem as Me, readSkillFileBytes as Ne, readSkillManifest as Pe, resolveSkillFileDownloadPath as Fe, resolveSkillManifestFileId as Ie } from "./catalog/map-skill-to-catalog-item.js";
29
- import { McpResourceKind as Le, buildApplicationMcpUrl as Re, buildConnectApi as ze, buildToolsetMcpUrl as Be, resolveMcpResourceKind as Ve } from "./catalog/mcp-endpoint-url.js";
30
- import { getPublicCatalogEntityFolderPath as He, isPublicCatalogEntityId as Ue, mapPublishConversationResultDto as We, mapPublishHistoryEntryDto as Ge, toPublishEntityType as Ke } from "./catalog/publish.js";
31
- import { deriveAvailableTabIds as qe, deriveFavoriteItems as Je, filterCatalogItemsBySelector as Ye, filterHiddenOwnedItems as Xe, reconcileFilterTopics as Ze } from "./catalog/catalog-derivations.js";
32
- import { CatalogPrimaryActionType as Qe, resolveCatalogPrimaryAction as $e } from "./catalog/catalog-primary-action.js";
33
- import { useCatalogEditNavigation as et } from "./catalog/useCatalogEditNavigation/useCatalogEditNavigation.js";
34
- import { parseSkillManifestDocument as tt } from "./skill/skill-manifest.js";
35
- import { useSkillItemDetails as nt } from "./catalog/useSkillItemDetails.js";
36
- import { useCatalogItemDetails as rt } from "./catalog/useCatalogItemDetails.js";
37
- import { OAuthResourceKind as it, TOOLSET_REDIRECT_STATE_KEY as at, ToolsetAuthStatus as ot, ToolsetAuthTypes as st, ToolsetCredentialsLevel as ct, ToolsetOAuthCallbackQuery as lt, ToolsetOAuthChannelControlType as ut, ToolsetOAuthFailureReason as dt, ToolsetOAuthInitiationResultType as ft, ToolsetOAuthResultType as pt, WithLogin as mt } from "./oauth/types.js";
38
- import { emitToolsetLoginSuccess as ht, subscribeToolsetLoginSuccess as gt } from "./shared/toolset-login-events.js";
39
- import { getToolsetOAuthChannelName as _t, waitForToolsetOAuthResult as vt } from "./oauth/handshake.js";
40
- import { buildToolsetAuthorizeUrl as yt, getToolsetRedirectUri as bt } from "./oauth/authorize-url.js";
41
- import { initiateOAuthLogin as xt, navigateToolsetOAuthPopup as St, openToolsetOAuthPopup as Ct } from "./oauth/popup.js";
42
- import { ToolsetLoginOutcomeType as wt, useToolsetLogin as Tt } from "./oauth/useToolsetLogin/useToolsetLogin.js";
43
- import { useCatalogToolsetCredentials as Et } from "./catalog/useCatalogToolsetCredentials/useCatalogToolsetCredentials.js";
44
- import { useSkillDetailsPanelData as Dt } from "./catalog/useSkillDetailsPanelData/useSkillDetailsPanelData.js";
45
- import { FavoriteEntityType as Ot, useFavoriteEntitiesState as kt } from "./catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js";
46
- import { usePublishFolders as At } from "./catalog/usePublishFolders/usePublishFolders.js";
47
- import { buildAnnouncementSignature as jt, hasAnnouncementContent as Mt, hasStructuredAnnouncement as Nt, sanitizeAnnouncementHtml as Pt, sanitizeAnnouncementMessageHtml as Ft } from "./conversation/announcement-message.js";
48
- import { DEFAULT_GENERATION_CONFLICT_MESSAGE as It, GenerationConflictError as Lt, createChatStreamApi as Rt } from "./conversation/create-chat-stream-api.js";
49
- import { shouldWatchForDisplayNameUpdate as zt } from "./conversation/display-name-watch.js";
50
- import { formatAppVersion as Bt, sanitizeFooterHtml as Vt } from "./conversation/footer-message.js";
51
- import { getModelIdFromConversationId as Ht } from "./conversation/get-model-id-from-conversation-id.js";
52
- import { getTimeOfDayGreeting as Ut } from "./conversation/greeting.js";
53
- import { createDeploymentChangedMessage as Wt } from "./conversation/message-factory.js";
54
- import { getLastDeploymentId as Gt, getLastUserMessageToolConfiguration as Kt, isMessageStreaming as qt, messageHasStages as Jt, normalizeResponseFormat as Yt } from "./conversation/message-utils.js";
55
- import { toOverlayMessages as Xt } from "./conversation/overlay-messages.js";
56
- import { getQuickAppConversationStarters as Zt } from "./conversation/quick-app-conversation-starters.js";
57
- import { getStarterPopulateText as Qt, getStartersFromSchema as $t } from "./conversation/starter-option.js";
58
- import { useOAuthCallbackCompletion as en } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
59
- import { buildPromptExportEnvelope as tn, buildPromptExportFileName as nn, serializePromptExport as rn } from "./prompt/export-prompt.js";
60
- import { PROMPT_CONTENT_MAX_LENGTH as an, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as on, PROMPT_DESCRIPTION_MAX_LENGTH as sn, PROMPT_NAME_MAX_LENGTH as cn, PromptFieldError as ln, buildPromptPath as un, getRemainingCharacters as dn, validatePromptContent as fn, validatePromptDescription as pn, validatePromptName as mn } from "./prompt/prompt.js";
61
- import { usePromptsState as hn } from "./prompt/usePromptsState/usePromptsState.js";
62
- import { UnsupportedTriggerReason as gn } from "./scheduled-task/scheduled-task-mapping.js";
63
- import { apSchedulerDayToJsDay as _n, jsDayToApSchedulerDay as vn } from "./shared/cron-weekday.js";
64
- import { mapFormValuesToCreateBody as yn, mapFormValuesToUpdateBody as bn, mapScheduledTaskDtoToFormValues as xn } from "./scheduled-task/scheduled-task-trigger.js";
65
- import { validateSkillFileBatch as Sn } from "./skill/skill-file-batch-validation.js";
66
- import { skillFileToAttachment as Cn } from "./skill/skill-file-preview.js";
67
- import { SkillEditorLoadState as wn, useSkillEditorLoad as Tn } from "./skill/useSkillEditorLoad.js";
68
- import { useSkillEditorSubmit as En } from "./skill/useSkillEditorSubmit.js";
69
- import { useSkillFileActions as Dn } from "./skill/useSkillFileActions.js";
70
- import { SkillPreviewErrorKind as On, useSkillFilePreview as kn } from "./skill/useSkillFilePreview.js";
71
- import { useSkillsState as An } from "./skill/useSkillsState/useSkillsState.js";
72
- import { RecipientsCountStatus as jn, useShareRecipientsCount as Mn } from "./useShareRecipientsCount/useShareRecipientsCount.js";
73
- import { deriveConversationRowActionState as Nn } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
74
- import { useActiveConversationSync as Pn } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
75
- import { useAsyncConfirmDialog as Fn } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
76
- import { useConversationLookupMaps as In } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
77
- import { getConversationSource as Ln, useConversationPanelItems as Rn } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
78
- import { useImportFilePicker as zn } from "./conversation/useImportFilePicker/useImportFilePicker.js";
79
- import { sanitizeFileName as Bn, splitFileNameExtension as Vn, trimFileNameToByteLimit as Hn } from "./files/file-name.js";
80
- import { useAttachmentUpload as Un } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
81
- import { AudioTranscriptionError as Wn, AudioTranscriptionErrorReason as Gn } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
82
- import { useTranscribeAudio as Kn } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
83
- import { DEFAULT_MAX_ARCHIVE_BYTES as qn, useConversationExport as Jn } from "./conversation/useConversationExport/useConversationExport.js";
84
- import { attachmentToDto as Yn, attachmentsToDtos as Xn } from "./conversation/useConversationHandlers/attachment-to-dto.js";
85
- import { createMessagePair as Zn } from "./conversation/useConversationHandlers/message-factory.js";
86
- import { hasActiveToolConfig as Qn, isAnswerIncomplete as $n, isMessageChanged as er, shouldRerunGenerationOnEdit as tr } from "./conversation/useConversationHandlers/message-utils.js";
87
- import { getStarterConversationText as nr, getStarterDisplayText as rr, getStarterSubmitText as ir } from "./conversation/useConversationHandlers/starter-option.js";
88
- import { getConversationPath as ar } from "./conversation/useConversationStream/conversation-path.js";
89
- import { useConversationHandlers as or } from "./conversation/useConversationHandlers/useConversationHandlers.js";
90
- import { useConversationImport as sr } from "./conversation/useConversationImport/useConversationImport.js";
91
- import { useConversationScroll as cr } from "./conversation/useConversationScroll/useConversationScroll.js";
92
- import { isAwaitingGenerationResume as lr } from "./conversation/useConversationStream/generation-resume.js";
93
- import { useConversationStream as ur } from "./conversation/useConversationStream/useConversationStream.js";
94
- import { useConversationSources as dr } from "./conversation-sources/useConversationSources/useConversationSources.js";
95
- import { DialFilesApiUploadMode as fr } from "./files/dial-files-api.js";
96
- import { FileManagerNotificationReason as pr, FileNameValidationErrorReason as mr, FileOperationKind as hr } from "./files/dial-file-manager.types.js";
97
- import { COLUMNS_WITHOUT_AUTHOR as gr, COLUMNS_WITH_AUTHOR as _r, CORE_PERMISSION_MAP as vr, DATE_OPTIONS as yr, PATH_SEPARATOR_REGEXP as br, RESERVED_MARKER_NAME as xr, UPLOAD_CONCURRENCY as Sr } from "./files/dial-file-manager.model.js";
98
- import { DialFileManagerActionProfile as Cr, DialFileManagerVariant as wr, deriveActionProfile as Tr } from "./files/file-manager-variant.js";
99
- import { buildSharedItemVirtualPath as Er, dialCorePathToRelative as Dr, findDialFileByPath as Or, findFolderByVirtualPath as kr, formatOperationFolderName as Ar, getVirtualPathName as jr, hasDialFileWritePermission as Mr, hasForbiddenNameSymbols as Nr, isCopyMoveDuplicateAllowed as Pr, isShareActionsAllowed as Fr, normalizeVirtualPath as Ir, parseNewFolderVirtualPath as Lr, resolveOwnerCoords as Rr } from "./files/dial-file-manager-path.util.js";
100
- import { getParentFolderPath as zr, resolveDialFileApiPath as Br, virtualPathToApiPath as Vr } from "./files/resolve-dial-file-api-path.js";
101
- import { prepareCopyItems as Hr, prepareMoveRenameItems as Ur } from "./files/dial-file-manager-copy-move.util.js";
102
- import { buildFromCache as Wr, fetchByTab as Gr, fetchForSearch as Kr, findFirstSuccessfulCopyMoveItem as qr, mapCorePermissions as Jr, mapFileMetadataToDialFile as Yr, mapSearchItem as Xr, mergeCreatedFolderIntoCache as Zr, updateEntry as Qr } from "./files/dial-file-manager-mapping.util.js";
103
- import { createFilesApiClient as $r } from "./files/create-files-api.js";
104
- import { createUploadFileWithProgress as ei } from "./files/create-upload-file-with-progress.js";
105
- import { openAnnotationAttachment as ti } from "./files/annotation.js";
106
- import { annotationToOoxmlCanvasContent as ni, annotationToPdfCanvasContent as ri, clearAttachmentCache as ii, hasAttachmentTextSource as ai, referenceAttachmentToPdfCanvasContent as oi, resolveCodeCanvasContent as si, resolveHtmlCanvasContent as ci, resolveImageCanvasContent as li, resolveJsonCanvasContent as ui, resolveMarkdownCanvasContent as di, resolveOoxmlCanvasContent as fi, resolvePdfCanvasContent as pi, resolveTextCanvasContent as mi, resolveVisualizerCanvasContent as hi } from "./files/attachment-canvas.js";
107
- import { getUrlFileName as gi, isExternalSourcePreviewable as _i, resolveExternalSourceContentType as vi } from "./files/source-content.js";
108
- import { annotationToDisplayAttachment as yi, attachmentDtoToDisplayAttachment as bi, attachmentDtosToDisplayAttachments as xi } from "./files/attachment-dto-to-display.js";
109
- import { dialFileToAttachment as Si, dialFilesToAttachments as Ci, dialFolderPathToAttachment as wi } from "./files/dial-file-to-attachment.js";
110
- import { DownloadDestinationType as Ti } from "./files/download-destination.js";
111
- import { prepareDownloadDestination as Ei } from "./files/prepare-download-destination.js";
112
- import { useDialFileListing as Di } from "./files/useDialFileListing/useDialFileListing.js";
113
- import { useDialFileMetadata as Oi } from "./files/useDialFileMetadata/useDialFileMetadata.js";
114
- import { useDialFileMutations as ki } from "./files/useDialFileMutations/useDialFileMutations.js";
115
- import { useDialFileSharing as Ai } from "./files/useDialFileSharing/useDialFileSharing.js";
116
- import { useDialFileUploadBatch as ji } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
117
- import { useDialFileManager as Mi } from "./files/useDialFileManager/useDialFileManager.js";
118
- import { useDialFileManagerTabConfig as Ni } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
119
- import { isCustomAppSchema as Pi, isQuickAppSchema as Fi } from "./shared/application-schema.js";
120
- import { getBrowserTimezone as Ii } from "./shared/browser-timezone.js";
121
- import { isValidAbsoluteUrl as Li, isValidFeaturesData as Ri, parseFeaturesData as zi } from "./shared/custom-apps.js";
122
- import { buildExternalServiceScopeId as Bi, getExternalServiceFallbackName as Vi, parseExternalServiceUrl as Hi } from "./shared/external-services.js";
123
- import { useChatSettingsFormConfig as Ui } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
124
- import { usePageFileDrag as Wi } from "./usePageFileDrag/usePageFileDrag.js";
125
- import { useViewportWidth as Gi } from "./useViewportWidth/useViewportWidth.js";
126
- import { usePanelMaxWidth as Ki } from "./usePanelMaxWidth/usePanelMaxWidth.js";
127
- import { useShareLink as qi } from "./useShareLink/useShareLink.js";
128
- import { useToolsMenu as Ji } from "./useToolsMenu/useToolsMenu.js";
129
- import { useUsageData as Yi } from "./usage/useUsageData/useUsageData.js";
130
- import { McpAppResourceFetchError as Xi, createMcpAppsApiClient as Zi } from "./mcp-apps/mcp-apps-api-client.js";
131
- import { useMcpAppTools as Qi } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
132
- import { useMcpAppHostContext as $i } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
133
- import { useMcpAppHostAdapter as ea } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
134
- import { useOpenMcpAppCanvas as ta } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
135
- import { useGridEditingScroll as na } from "@epam/ai-dial-chat-shared";
136
- export { x as AttachmentValidationErrorReason, Wn as AudioTranscriptionError, Gn as AudioTranscriptionErrorReason, R as AuthenticationType, gr as COLUMNS_WITHOUT_AUTHOR, _r as COLUMNS_WITH_AUTHOR, vr as CORE_PERMISSION_MAP, Qe as CatalogPrimaryActionType, T as ConversationExportMode, E as ConversationTransferErrorCode, D as ConversationTransferWarningCode, yr as DATE_OPTIONS, It as DEFAULT_GENERATION_CONFLICT_MESSAGE, qn as DEFAULT_MAX_ARCHIVE_BYTES, Cr as DialFileManagerActionProfile, wr as DialFileManagerVariant, fr as DialFilesApiUploadMode, Ti as DownloadDestinationType, k as EXPORT_APP_NAME, O as ExportFileNameKind, Ot as FavoriteEntityType, pr as FileManagerNotificationReason, mr as FileNameValidationErrorReason, hr as FileOperationKind, Lt as GenerationConflictError, Xi as McpAppResourceFetchError, Le as McpResourceKind, it as OAuthResourceKind, br as PATH_SEPARATOR_REGEXP, an as PROMPT_CONTENT_MAX_LENGTH, on as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, sn as PROMPT_DESCRIPTION_MAX_LENGTH, cn as PROMPT_NAME_MAX_LENGTH, we as PUBLIC_SKILL_BUCKET, ln as PromptFieldError, ae as PromptSource, xr as RESERVED_MARKER_NAME, jn as RecipientsCountStatus, ue as SKILL_FILE_UPLOAD_MAX_BYTES, Te as SKILL_LISTING_MAX_PAGES, Ee as SKILL_LISTING_PAGE_SIZE, de as SKILL_MANIFEST_FILE, De as SKILL_MANIFEST_MAX_BYTES, fe as SKILL_UPLOAD_MAX_FILES, pe as SKILL_UPLOAD_MAX_TOTAL_BYTES, wn as SkillEditorLoadState, On as SkillPreviewErrorKind, Oe as SkillSource, at as TOOLSET_REDIRECT_STATE_KEY, ot as ToolsetAuthStatus, st as ToolsetAuthTypes, ct as ToolsetCredentialsLevel, wt as ToolsetLoginOutcomeType, lt as ToolsetOAuthCallbackQuery, ut as ToolsetOAuthChannelControlType, dt as ToolsetOAuthFailureReason, ft as ToolsetOAuthInitiationResultType, pt as ToolsetOAuthResultType, Sr as UPLOAD_CONCURRENCY, gn as UnsupportedTriggerReason, mt as WithLogin, yi as annotationToDisplayAttachment, ni as annotationToOoxmlCanvasContent, ri as annotationToPdfCanvasContent, _n as apSchedulerDayToJsDay, W as appendLocaleCode, bi as attachmentDtoToDisplayAttachment, xi as attachmentDtosToDisplayAttachments, Yn as attachmentToDto, Xn as attachmentsToDtos, G as buildAdditionalLocaleOptions, jt as buildAnnouncementSignature, Re as buildApplicationMcpUrl, N as buildChatCompletionsUrl, ze as buildConnectApi, P as buildDeploymentConnectApi, Bi as buildExternalServiceScopeId, Wr as buildFromCache, tn as buildPromptExportEnvelope, nn as buildPromptExportFileName, se as buildPromptOverview, un as buildPromptPath, F as buildResponsesUrl, Er as buildSharedItemVirtualPath, Ae as buildSkillContentTree, me as buildSkillFilesPayload, he as buildSkillManifest, ge as buildSkillManifestForSubmit, _e as buildSkillManifestFromFrontmatter, je as buildSkillOverview, yt as buildToolsetAuthorizeUrl, Be as buildToolsetMcpUrl, ii as clearAttachmentCache, K as composeLocalePayload, Rt as createChatStreamApi, i as createCsrfMiddleware, Wt as createDeploymentChangedMessage, $r as createFilesApiClient, Zi as createMcpAppsApiClient, Zn as createMessagePair, j as createPublishApiClient, a as createUnauthorizedMiddleware, ei as createUploadFileWithProgress, V as decodeToolsetId, q as decomposeLocalizedFields, Tr as deriveActionProfile, qe as deriveAvailableTabIds, Nn as deriveConversationRowActionState, Je as deriveFavoriteItems, Dr as dialCorePathToRelative, Si as dialFileToAttachment, Ci as dialFilesToAttachments, wi as dialFolderPathToAttachment, m as downloadAttachment, ht as emitToolsetLoginSuccess, I as encodeDeploymentId, H as encodeToolsetId, Gr as fetchByTab, Kr as fetchForSearch, Ye as filterCatalogItemsBySelector, Xe as filterHiddenOwnedItems, L as findDeploymentByIdOrReference, Or as findDialFileByPath, qr as findFirstSuccessfulCopyMoveItem, kr as findFolderByVirtualPath, Bt as formatAppVersion, X as formatCalendarDate, C as formatDateYM, w as formatDateYMD, Ar as formatOperationFolderName, A as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Ii as getBrowserTimezone, ar as getConversationPath, Ln as getConversationSource, Vi as getExternalServiceFallbackName, Gt as getLastDeploymentId, Kt as getLastUserMessageToolConfiguration, Ht as getModelIdFromConversationId, zr as getParentFolderPath, He as getPublicCatalogEntityFolderPath, Zt as getQuickAppConversationStarters, dn as getRemainingCharacters, nr as getStarterConversationText, rr as getStarterDisplayText, Qt as getStarterPopulateText, ir as getStarterSubmitText, $t as getStartersFromSchema, Ut as getTimeOfDayGreeting, _t as getToolsetOAuthChannelName, bt as getToolsetRedirectUri, gi as getUrlFileName, jr as getVirtualPathName, Qn as hasActiveToolConfig, Mt as hasAnnouncementContent, ai as hasAttachmentTextSource, Mr as hasDialFileWritePermission, Nr as hasForbiddenNameSymbols, Nt as hasStructuredAnnouncement, o as includesIgnoreCase, xt as initiateOAuthLogin, $n as isAnswerIncomplete, lr as isAwaitingGenerationResume, r as isConversationNotFoundError, Pr as isCopyMoveDuplicateAllowed, Pi as isCustomAppSchema, _ as isDialFileAcceptType, d as isDialFileId, h as isDownloadableAttachment, _i as isExternalSourcePreviewable, er as isMessageChanged, qt as isMessageStreaming, ce as isOrganisationPromptItem, Ue as isPublicCatalogEntityId, U as isPublicToolsetId, Fi as isQuickAppSchema, Fr as isShareActionsAllowed, Li as isValidAbsoluteUrl, Ri as isValidFeaturesData, ve as isValidSkillRelativePath, vn as jsDayToApSchedulerDay, Jr as mapCorePermissions, Q as mapDeploymentDetailsDtoToEntityDetails, z as mapDeploymentLimitsDtoToCatalogLimits, B as mapDeploymentLimitsToInput, te as mapDeploymentToCatalogItem, ne as mapDeploymentToolsetCredentials, $ as mapEntityDetailsToCatalogDetails, Yr as mapFileMetadataToDialFile, yn as mapFormValuesToCreateBody, bn as mapFormValuesToUpdateBody, le as mapPromptToCatalogItem, We as mapPublishConversationResultDto, Ge as mapPublishHistoryEntryDto, xn as mapScheduledTaskDtoToFormValues, Xr as mapSearchItem, Me as mapSkillToCatalogItem, ee as mapToolsetCredentials, re as mapToolsetToCatalogItem, Zr as mergeCreatedFolderIntoCache, Jt as messageHasStages, v as mimeTypesToAttachmentExtensionLabels, y as mimeTypesToDialFileAcceptTypes, b as mimeTypesToFileAccept, ye as nameFromPath, St as navigateToolsetOAuthPopup, Yt as normalizeResponseFormat, be as normalizeSkillName, Ir as normalizeVirtualPath, ti as openAnnotationAttachment, Ct as openToolsetOAuthPopup, Z as padTwoDigits, Hi as parseExternalServiceUrl, zi as parseFeaturesData, Lr as parseNewFolderVirtualPath, oe as parsePromptResourceUrl, xe as parseSkillManifest, tt as parseSkillManifestDocument, ke as parseSkillResourceUrl, Hr as prepareCopyItems, Ei as prepareDownloadDestination, Ur as prepareMoveRenameItems, Ne as readSkillFileBytes, Pe as readSkillManifest, Ze as reconcileFilterTopics, oi as referenceAttachmentToPdfCanvasContent, $e as resolveCatalogPrimaryAction, si as resolveCodeCanvasContent, ie as resolveDeploymentFolder, Br as resolveDialFileApiPath, f as resolveDialFileBucketAndPath, vi as resolveExternalSourceContentType, ci as resolveHtmlCanvasContent, li as resolveImageCanvasContent, ui as resolveJsonCanvasContent, J as resolveLocalizedText, di as resolveMarkdownCanvasContent, Ve as resolveMcpResourceKind, fi as resolveOoxmlCanvasContent, Rr as resolveOwnerCoords, pi as resolvePdfCanvasContent, p as resolveRelativeDialFilePath, Fe as resolveSkillFileDownloadPath, Ie as resolveSkillManifestFileId, mi as resolveTextCanvasContent, hi as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Pt as sanitizeAnnouncementHtml, Ft as sanitizeAnnouncementMessageHtml, Bn as sanitizeFileName, Vt as sanitizeFooterHtml, rn as serializePromptExport, tr as shouldRerunGenerationOnEdit, zt as shouldWatchForDisplayNameUpdate, Se as skillFileBytesToBlob, Cn as skillFileToAttachment, Vn as splitFileNameExtension, l as stripSurroundingSlashes, u as stripTrailingSlashes, gt as subscribeToolsetLoginSuccess, Y as toBaseLocale, Xt as toOverlayMessages, Ke as toPublishEntityType, M as toPublishRuleDto, Hn as trimFileNameToByteLimit, Ce as unpackSkillArchive, Qr as updateEntry, Pn as useActiveConversationSync, Fn as useAsyncConfirmDialog, g as useAttachmentAction, Un as useAttachmentUpload, S as useAttachmentValidation, et as useCatalogEditNavigation, rt as useCatalogItemDetails, Et as useCatalogToolsetCredentials, Ui as useChatSettingsFormConfig, Jn as useConversationExport, or as useConversationHandlers, sr as useConversationImport, In as useConversationLookupMaps, Rn as useConversationPanelItems, cr as useConversationScroll, dr as useConversationSources, ur as useConversationStream, Di as useDialFileListing, Mi as useDialFileManager, Ni as useDialFileManagerTabConfig, Oi as useDialFileMetadata, ki as useDialFileMutations, Ai as useDialFileSharing, ji as useDialFileUploadBatch, kt as useFavoriteEntitiesState, na as useGridEditingScroll, zn as useImportFilePicker, ea as useMcpAppHostAdapter, $i as useMcpAppHostContext, Qi as useMcpAppTools, en as useOAuthCallbackCompletion, ta as useOpenMcpAppCanvas, Wi as usePageFileDrag, Ki as usePanelMaxWidth, hn as usePromptsState, At as usePublishFolders, qi as useShareLink, Mn as useShareRecipientsCount, Dt as useSkillDetailsPanelData, Tn as useSkillEditorLoad, En as useSkillEditorSubmit, Dn as useSkillFileActions, kn as useSkillFilePreview, nt as useSkillItemDetails, An as useSkillsState, Ji as useToolsMenu, Tt as useToolsetLogin, Kn as useTranscribeAudio, Yi as useUsageData, Gi as useViewportWidth, fn as validatePromptContent, pn as validatePromptDescription, mn as validatePromptName, Sn as validateSkillFileBatch, Vr as virtualPathToApiPath, vt as waitForToolsetOAuthResult };
28
+ import { buildSkillContentTree as Ae, buildSkillOverview as je, mapSkillToCatalogItem as Me, readSkillFileBytes as Ne, readSkillFilePreviewBytes as Pe, readSkillManifest as Fe, resolveSkillFileDownloadPath as Ie, resolveSkillManifestFileId as Le } from "./catalog/map-skill-to-catalog-item.js";
29
+ import { McpResourceKind as Re, buildApplicationMcpUrl as ze, buildConnectApi as Be, buildToolsetMcpUrl as Ve, resolveMcpResourceKind as He } from "./catalog/mcp-endpoint-url.js";
30
+ import { getPublicCatalogEntityFolderPath as Ue, isPublicCatalogEntityId as We, mapPublishConversationResultDto as Ge, mapPublishHistoryEntryDto as Ke, toPublishEntityType as qe } from "./catalog/publish.js";
31
+ import { deriveAvailableTabIds as Je, deriveFavoriteItems as Ye, filterCatalogItemsBySelector as Xe, filterHiddenOwnedItems as Ze, reconcileFilterTopics as Qe } from "./catalog/catalog-derivations.js";
32
+ import { CatalogPrimaryActionType as $e, resolveCatalogPrimaryAction as et } from "./catalog/catalog-primary-action.js";
33
+ import { useCatalogEditNavigation as tt } from "./catalog/useCatalogEditNavigation/useCatalogEditNavigation.js";
34
+ import { parseSkillManifestDocument as nt } from "./skill/skill-manifest.js";
35
+ import { useSkillItemDetails as rt } from "./catalog/useSkillItemDetails.js";
36
+ import { useCatalogItemDetails as it } from "./catalog/useCatalogItemDetails.js";
37
+ import { OAuthResourceKind as at, TOOLSET_REDIRECT_STATE_KEY as ot, ToolsetAuthStatus as st, ToolsetAuthTypes as ct, ToolsetCredentialsLevel as lt, ToolsetOAuthCallbackQuery as ut, ToolsetOAuthChannelControlType as dt, ToolsetOAuthFailureReason as ft, ToolsetOAuthInitiationResultType as pt, ToolsetOAuthResultType as mt, WithLogin as ht } from "./oauth/types.js";
38
+ import { emitToolsetLoginSuccess as gt, subscribeToolsetLoginSuccess as _t } from "./shared/toolset-login-events.js";
39
+ import { getToolsetOAuthChannelName as vt, waitForToolsetOAuthResult as yt } from "./oauth/handshake.js";
40
+ import { buildToolsetAuthorizeUrl as bt, getToolsetRedirectUri as xt } from "./oauth/authorize-url.js";
41
+ import { initiateOAuthLogin as St, navigateToolsetOAuthPopup as Ct, openToolsetOAuthPopup as wt } from "./oauth/popup.js";
42
+ import { ToolsetLoginOutcomeType as Tt, useToolsetLogin as Et } from "./oauth/useToolsetLogin/useToolsetLogin.js";
43
+ import { useCatalogToolsetCredentials as Dt } from "./catalog/useCatalogToolsetCredentials/useCatalogToolsetCredentials.js";
44
+ import { useSkillDetailsPanelData as Ot } from "./catalog/useSkillDetailsPanelData/useSkillDetailsPanelData.js";
45
+ import { FavoriteEntityType as kt, useFavoriteEntitiesState as At } from "./catalog/useFavoriteEntitiesState/useFavoriteEntitiesState.js";
46
+ import { usePublishFolders as jt } from "./catalog/usePublishFolders/usePublishFolders.js";
47
+ import { buildAnnouncementSignature as Mt, hasAnnouncementContent as Nt, hasStructuredAnnouncement as Pt, sanitizeAnnouncementHtml as Ft, sanitizeAnnouncementMessageHtml as It } from "./conversation/announcement-message.js";
48
+ import { DEFAULT_GENERATION_CONFLICT_MESSAGE as Lt, GenerationConflictError as Rt, createChatStreamApi as zt } from "./conversation/create-chat-stream-api.js";
49
+ import { shouldWatchForDisplayNameUpdate as Bt } from "./conversation/display-name-watch.js";
50
+ import { formatAppVersion as Vt, sanitizeFooterHtml as Ht } from "./conversation/footer-message.js";
51
+ import { getModelIdFromConversationId as Ut } from "./conversation/get-model-id-from-conversation-id.js";
52
+ import { getTimeOfDayGreeting as Wt } from "./conversation/greeting.js";
53
+ import { createDeploymentChangedMessage as Gt } from "./conversation/message-factory.js";
54
+ import { getLastDeploymentId as Kt, getLastUserMessageToolConfiguration as qt, isMessageStreaming as Jt, messageHasStages as Yt, normalizeResponseFormat as Xt } from "./conversation/message-utils.js";
55
+ import { toOverlayMessages as Zt } from "./conversation/overlay-messages.js";
56
+ import { getQuickAppConversationStarters as Qt } from "./conversation/quick-app-conversation-starters.js";
57
+ import { getStarterPopulateText as $t, getStartersFromSchema as en } from "./conversation/starter-option.js";
58
+ import { useOAuthCallbackCompletion as tn } from "./oauth/useOAuthCallbackCompletion/useOAuthCallbackCompletion.js";
59
+ import { buildPromptExportEnvelope as nn, buildPromptExportFileName as rn, serializePromptExport as an } from "./prompt/export-prompt.js";
60
+ import { PROMPT_CONTENT_MAX_LENGTH as on, PROMPT_COUNTER_ANNOUNCE_THRESHOLD as sn, PROMPT_DESCRIPTION_MAX_LENGTH as cn, PROMPT_NAME_MAX_LENGTH as ln, PromptFieldError as un, buildPromptPath as dn, getRemainingCharacters as fn, validatePromptContent as pn, validatePromptDescription as mn, validatePromptName as hn } from "./prompt/prompt.js";
61
+ import { usePromptsState as gn } from "./prompt/usePromptsState/usePromptsState.js";
62
+ import { UnsupportedTriggerReason as _n } from "./scheduled-task/scheduled-task-mapping.js";
63
+ import { apSchedulerDayToJsDay as vn, jsDayToApSchedulerDay as yn } from "./shared/cron-weekday.js";
64
+ import { mapFormValuesToCreateBody as bn, mapFormValuesToUpdateBody as xn, mapScheduledTaskDtoToFormValues as Sn } from "./scheduled-task/scheduled-task-trigger.js";
65
+ import { validateSkillFileBatch as Cn } from "./skill/skill-file-batch-validation.js";
66
+ import { skillFileToAttachment as wn } from "./skill/skill-file-preview.js";
67
+ import { SkillEditorLoadState as Tn, useSkillEditorLoad as En } from "./skill/useSkillEditorLoad.js";
68
+ import { useSkillEditorSubmit as Dn } from "./skill/useSkillEditorSubmit.js";
69
+ import { useSkillFileActions as On } from "./skill/useSkillFileActions.js";
70
+ import { SkillPreviewErrorKind as kn, useSkillFilePreview as An } from "./skill/useSkillFilePreview.js";
71
+ import { useSkillsState as jn } from "./skill/useSkillsState/useSkillsState.js";
72
+ import { RecipientsCountStatus as Mn, useShareRecipientsCount as Nn } from "./useShareRecipientsCount/useShareRecipientsCount.js";
73
+ import { deriveConversationRowActionState as Pn } from "./conversation/deriveConversationRowActionState/deriveConversationRowActionState.js";
74
+ import { useActiveConversationSync as Fn } from "./conversation/useActiveConversationSync/useActiveConversationSync.js";
75
+ import { useAsyncConfirmDialog as In } from "./conversation/useAsyncConfirmDialog/useAsyncConfirmDialog.js";
76
+ import { useConversationLookupMaps as Ln } from "./conversation/useConversationLookupMaps/useConversationLookupMaps.js";
77
+ import { getConversationSource as Rn, useConversationPanelItems as zn } from "./conversation/useConversationPanelItems/useConversationPanelItems.js";
78
+ import { useImportFilePicker as Bn } from "./conversation/useImportFilePicker/useImportFilePicker.js";
79
+ import { sanitizeFileName as Vn, splitFileNameExtension as Hn, trimFileNameToByteLimit as Un } from "./files/file-name.js";
80
+ import { useAttachmentUpload as Wn } from "./conversation/useAttachmentUpload/useAttachmentUpload.js";
81
+ import { AudioTranscriptionError as Gn, AudioTranscriptionErrorReason as Kn } from "./conversation/useTranscribeAudio/audio-transcription-error.js";
82
+ import { useTranscribeAudio as qn } from "./conversation/useTranscribeAudio/useTranscribeAudio.js";
83
+ import { DEFAULT_MAX_ARCHIVE_BYTES as Jn, useConversationExport as Yn } from "./conversation/useConversationExport/useConversationExport.js";
84
+ import { attachmentToDto as Xn, attachmentsToDtos as Zn } from "./conversation/useConversationHandlers/attachment-to-dto.js";
85
+ import { createMessagePair as Qn } from "./conversation/useConversationHandlers/message-factory.js";
86
+ import { hasActiveToolConfig as $n, isAnswerIncomplete as er, isMessageChanged as tr, shouldRerunGenerationOnEdit as nr } from "./conversation/useConversationHandlers/message-utils.js";
87
+ import { getStarterConversationText as rr, getStarterDisplayText as ir, getStarterSubmitText as ar } from "./conversation/useConversationHandlers/starter-option.js";
88
+ import { getConversationPath as or } from "./conversation/useConversationStream/conversation-path.js";
89
+ import { useConversationHandlers as sr } from "./conversation/useConversationHandlers/useConversationHandlers.js";
90
+ import { useConversationImport as cr } from "./conversation/useConversationImport/useConversationImport.js";
91
+ import { useConversationScroll as lr } from "./conversation/useConversationScroll/useConversationScroll.js";
92
+ import { isAwaitingGenerationResume as ur } from "./conversation/useConversationStream/generation-resume.js";
93
+ import { useConversationStream as dr } from "./conversation/useConversationStream/useConversationStream.js";
94
+ import { useConversationSources as fr } from "./conversation-sources/useConversationSources/useConversationSources.js";
95
+ import { DialFilesApiUploadMode as pr } from "./files/dial-files-api.js";
96
+ import { FileManagerNotificationReason as mr, FileNameValidationErrorReason as hr, FileOperationKind as gr } from "./files/dial-file-manager.types.js";
97
+ import { COLUMNS_WITHOUT_AUTHOR as _r, COLUMNS_WITH_AUTHOR as vr, CORE_PERMISSION_MAP as yr, DATE_OPTIONS as br, PATH_SEPARATOR_REGEXP as xr, RESERVED_MARKER_NAME as Sr, UPLOAD_CONCURRENCY as Cr } from "./files/dial-file-manager.model.js";
98
+ import { DialFileManagerActionProfile as wr, DialFileManagerVariant as Tr, deriveActionProfile as Er } from "./files/file-manager-variant.js";
99
+ import { buildSharedItemVirtualPath as Dr, dialCorePathToRelative as Or, findDialFileByPath as kr, findFolderByVirtualPath as Ar, formatOperationFolderName as jr, getVirtualPathName as Mr, hasDialFileWritePermission as Nr, hasForbiddenNameSymbols as Pr, isCopyMoveDuplicateAllowed as Fr, isShareActionsAllowed as Ir, normalizeVirtualPath as Lr, parseNewFolderVirtualPath as Rr, resolveOwnerCoords as zr } from "./files/dial-file-manager-path.util.js";
100
+ import { getParentFolderPath as Br, resolveDialFileApiPath as Vr, virtualPathToApiPath as Hr } from "./files/resolve-dial-file-api-path.js";
101
+ import { prepareCopyItems as Ur, prepareMoveRenameItems as Wr } from "./files/dial-file-manager-copy-move.util.js";
102
+ import { buildFromCache as Gr, fetchByTab as Kr, fetchForSearch as qr, findFirstSuccessfulCopyMoveItem as Jr, mapCorePermissions as Yr, mapFileMetadataToDialFile as Xr, mapSearchItem as Zr, mergeCreatedFolderIntoCache as Qr, updateEntry as $r } from "./files/dial-file-manager-mapping.util.js";
103
+ import { createFilesApiClient as ei } from "./files/create-files-api.js";
104
+ import { createUploadFileWithProgress as ti } from "./files/create-upload-file-with-progress.js";
105
+ import { openAnnotationAttachment as ni } from "./files/annotation.js";
106
+ import { annotationToOoxmlCanvasContent as ri, annotationToPdfCanvasContent as ii, clearAttachmentCache as ai, hasAttachmentTextSource as oi, referenceAttachmentToPdfCanvasContent as si, resolveCodeCanvasContent as ci, resolveHtmlCanvasContent as li, resolveImageCanvasContent as ui, resolveJsonCanvasContent as di, resolveMarkdownCanvasContent as fi, resolveOoxmlCanvasContent as pi, resolvePdfCanvasContent as mi, resolveTextCanvasContent as hi, resolveVisualizerCanvasContent as gi } from "./files/attachment-canvas.js";
107
+ import { getUrlFileName as _i, isExternalSourcePreviewable as vi, resolveExternalSourceContentType as yi } from "./files/source-content.js";
108
+ import { annotationToDisplayAttachment as bi, attachmentDtoToDisplayAttachment as xi, attachmentDtosToDisplayAttachments as Si } from "./files/attachment-dto-to-display.js";
109
+ import { dialFileToAttachment as Ci, dialFilesToAttachments as wi, dialFolderPathToAttachment as Ti } from "./files/dial-file-to-attachment.js";
110
+ import { DownloadDestinationType as Ei } from "./files/download-destination.js";
111
+ import { prepareDownloadDestination as Di } from "./files/prepare-download-destination.js";
112
+ import { useDialFileListing as Oi } from "./files/useDialFileListing/useDialFileListing.js";
113
+ import { useDialFileMetadata as ki } from "./files/useDialFileMetadata/useDialFileMetadata.js";
114
+ import { useDialFileMutations as Ai } from "./files/useDialFileMutations/useDialFileMutations.js";
115
+ import { useDialFileSharing as ji } from "./files/useDialFileSharing/useDialFileSharing.js";
116
+ import { useDialFileUploadBatch as Mi } from "./files/useDialFileUploadBatch/useDialFileUploadBatch.js";
117
+ import { useDialFileManager as Ni } from "./files/useDialFileManager/useDialFileManager.js";
118
+ import { useDialFileManagerTabConfig as Pi } from "./files/useDialFileManagerTabConfig/useDialFileManagerTabConfig.js";
119
+ import { isCustomAppSchema as Fi, isQuickAppSchema as Ii } from "./shared/application-schema.js";
120
+ import { getBrowserTimezone as Li } from "./shared/browser-timezone.js";
121
+ import { isValidAbsoluteUrl as Ri, isValidFeaturesData as zi, parseFeaturesData as Bi } from "./shared/custom-apps.js";
122
+ import { buildExternalServiceScopeId as Vi, getExternalServiceFallbackName as Hi, parseExternalServiceUrl as Ui } from "./shared/external-services.js";
123
+ import { useChatSettingsFormConfig as Wi } from "./useChatSettingsFormConfig/useChatSettingsFormConfig.js";
124
+ import { usePageFileDrag as Gi } from "./usePageFileDrag/usePageFileDrag.js";
125
+ import { useViewportWidth as Ki } from "./useViewportWidth/useViewportWidth.js";
126
+ import { usePanelMaxWidth as qi } from "./usePanelMaxWidth/usePanelMaxWidth.js";
127
+ import { useShareLink as Ji } from "./useShareLink/useShareLink.js";
128
+ import { useToolsMenu as Yi } from "./useToolsMenu/useToolsMenu.js";
129
+ import { useUsageData as Xi } from "./usage/useUsageData/useUsageData.js";
130
+ import { McpAppResourceFetchError as Zi, createMcpAppsApiClient as Qi } from "./mcp-apps/mcp-apps-api-client.js";
131
+ import { useMcpAppTools as $i } from "./mcp-apps/useMcpAppTools/useMcpAppTools.js";
132
+ import { useMcpAppHostContext as ea } from "./mcp-apps/useMcpAppHostContext/useMcpAppHostContext.js";
133
+ import { useMcpAppHostAdapter as ta } from "./mcp-apps/useMcpAppHostAdapter/useMcpAppHostAdapter.js";
134
+ import { useOpenMcpAppCanvas as na } from "./mcp-apps/useOpenMcpAppCanvas/useOpenMcpAppCanvas.js";
135
+ import { useGridEditingScroll as ra } from "@epam/ai-dial-chat-shared";
136
+ export { x as AttachmentValidationErrorReason, Gn as AudioTranscriptionError, Kn as AudioTranscriptionErrorReason, R as AuthenticationType, _r as COLUMNS_WITHOUT_AUTHOR, vr as COLUMNS_WITH_AUTHOR, yr as CORE_PERMISSION_MAP, $e as CatalogPrimaryActionType, T as ConversationExportMode, E as ConversationTransferErrorCode, D as ConversationTransferWarningCode, br as DATE_OPTIONS, Lt as DEFAULT_GENERATION_CONFLICT_MESSAGE, Jn as DEFAULT_MAX_ARCHIVE_BYTES, wr as DialFileManagerActionProfile, Tr as DialFileManagerVariant, pr as DialFilesApiUploadMode, Ei as DownloadDestinationType, k as EXPORT_APP_NAME, O as ExportFileNameKind, kt as FavoriteEntityType, mr as FileManagerNotificationReason, hr as FileNameValidationErrorReason, gr as FileOperationKind, Rt as GenerationConflictError, Zi as McpAppResourceFetchError, Re as McpResourceKind, at as OAuthResourceKind, xr as PATH_SEPARATOR_REGEXP, on as PROMPT_CONTENT_MAX_LENGTH, sn as PROMPT_COUNTER_ANNOUNCE_THRESHOLD, cn as PROMPT_DESCRIPTION_MAX_LENGTH, ln as PROMPT_NAME_MAX_LENGTH, we as PUBLIC_SKILL_BUCKET, un as PromptFieldError, ae as PromptSource, Sr as RESERVED_MARKER_NAME, Mn as RecipientsCountStatus, ue as SKILL_FILE_UPLOAD_MAX_BYTES, Te as SKILL_LISTING_MAX_PAGES, Ee as SKILL_LISTING_PAGE_SIZE, de as SKILL_MANIFEST_FILE, De as SKILL_MANIFEST_MAX_BYTES, fe as SKILL_UPLOAD_MAX_FILES, pe as SKILL_UPLOAD_MAX_TOTAL_BYTES, Tn as SkillEditorLoadState, kn as SkillPreviewErrorKind, Oe as SkillSource, ot as TOOLSET_REDIRECT_STATE_KEY, st as ToolsetAuthStatus, ct as ToolsetAuthTypes, lt as ToolsetCredentialsLevel, Tt as ToolsetLoginOutcomeType, ut as ToolsetOAuthCallbackQuery, dt as ToolsetOAuthChannelControlType, ft as ToolsetOAuthFailureReason, pt as ToolsetOAuthInitiationResultType, mt as ToolsetOAuthResultType, Cr as UPLOAD_CONCURRENCY, _n as UnsupportedTriggerReason, ht as WithLogin, bi as annotationToDisplayAttachment, ri as annotationToOoxmlCanvasContent, ii as annotationToPdfCanvasContent, vn as apSchedulerDayToJsDay, W as appendLocaleCode, xi as attachmentDtoToDisplayAttachment, Si as attachmentDtosToDisplayAttachments, Xn as attachmentToDto, Zn as attachmentsToDtos, G as buildAdditionalLocaleOptions, Mt as buildAnnouncementSignature, ze as buildApplicationMcpUrl, N as buildChatCompletionsUrl, Be as buildConnectApi, P as buildDeploymentConnectApi, Vi as buildExternalServiceScopeId, Gr as buildFromCache, nn as buildPromptExportEnvelope, rn as buildPromptExportFileName, se as buildPromptOverview, dn as buildPromptPath, F as buildResponsesUrl, Dr as buildSharedItemVirtualPath, Ae as buildSkillContentTree, me as buildSkillFilesPayload, he as buildSkillManifest, ge as buildSkillManifestForSubmit, _e as buildSkillManifestFromFrontmatter, je as buildSkillOverview, bt as buildToolsetAuthorizeUrl, Ve as buildToolsetMcpUrl, ai as clearAttachmentCache, K as composeLocalePayload, zt as createChatStreamApi, i as createCsrfMiddleware, Gt as createDeploymentChangedMessage, ei as createFilesApiClient, Qi as createMcpAppsApiClient, Qn as createMessagePair, j as createPublishApiClient, a as createUnauthorizedMiddleware, ti as createUploadFileWithProgress, V as decodeToolsetId, q as decomposeLocalizedFields, Er as deriveActionProfile, Je as deriveAvailableTabIds, Pn as deriveConversationRowActionState, Ye as deriveFavoriteItems, Or as dialCorePathToRelative, Ci as dialFileToAttachment, wi as dialFilesToAttachments, Ti as dialFolderPathToAttachment, m as downloadAttachment, gt as emitToolsetLoginSuccess, I as encodeDeploymentId, H as encodeToolsetId, Kr as fetchByTab, qr as fetchForSearch, Xe as filterCatalogItemsBySelector, Ze as filterHiddenOwnedItems, L as findDeploymentByIdOrReference, kr as findDialFileByPath, Jr as findFirstSuccessfulCopyMoveItem, Ar as findFolderByVirtualPath, Vt as formatAppVersion, X as formatCalendarDate, C as formatDateYM, w as formatDateYMD, jr as formatOperationFolderName, A as formatQuotedNameList, e as getApiErrorDetails, t as getApiErrorMessage, n as getApiErrorStatus, Li as getBrowserTimezone, or as getConversationPath, Rn as getConversationSource, Hi as getExternalServiceFallbackName, Kt as getLastDeploymentId, qt as getLastUserMessageToolConfiguration, Ut as getModelIdFromConversationId, Br as getParentFolderPath, Ue as getPublicCatalogEntityFolderPath, Qt as getQuickAppConversationStarters, fn as getRemainingCharacters, rr as getStarterConversationText, ir as getStarterDisplayText, $t as getStarterPopulateText, ar as getStarterSubmitText, en as getStartersFromSchema, Wt as getTimeOfDayGreeting, vt as getToolsetOAuthChannelName, xt as getToolsetRedirectUri, _i as getUrlFileName, Mr as getVirtualPathName, $n as hasActiveToolConfig, Nt as hasAnnouncementContent, oi as hasAttachmentTextSource, Nr as hasDialFileWritePermission, Pr as hasForbiddenNameSymbols, Pt as hasStructuredAnnouncement, o as includesIgnoreCase, St as initiateOAuthLogin, er as isAnswerIncomplete, ur as isAwaitingGenerationResume, r as isConversationNotFoundError, Fr as isCopyMoveDuplicateAllowed, Fi as isCustomAppSchema, _ as isDialFileAcceptType, d as isDialFileId, h as isDownloadableAttachment, vi as isExternalSourcePreviewable, tr as isMessageChanged, Jt as isMessageStreaming, ce as isOrganisationPromptItem, We as isPublicCatalogEntityId, U as isPublicToolsetId, Ii as isQuickAppSchema, Ir as isShareActionsAllowed, Ri as isValidAbsoluteUrl, zi as isValidFeaturesData, ve as isValidSkillRelativePath, yn as jsDayToApSchedulerDay, Yr as mapCorePermissions, Q as mapDeploymentDetailsDtoToEntityDetails, z as mapDeploymentLimitsDtoToCatalogLimits, B as mapDeploymentLimitsToInput, te as mapDeploymentToCatalogItem, ne as mapDeploymentToolsetCredentials, $ as mapEntityDetailsToCatalogDetails, Xr as mapFileMetadataToDialFile, bn as mapFormValuesToCreateBody, xn as mapFormValuesToUpdateBody, le as mapPromptToCatalogItem, Ge as mapPublishConversationResultDto, Ke as mapPublishHistoryEntryDto, Sn as mapScheduledTaskDtoToFormValues, Zr as mapSearchItem, Me as mapSkillToCatalogItem, ee as mapToolsetCredentials, re as mapToolsetToCatalogItem, Qr as mergeCreatedFolderIntoCache, Yt as messageHasStages, v as mimeTypesToAttachmentExtensionLabels, y as mimeTypesToDialFileAcceptTypes, b as mimeTypesToFileAccept, ye as nameFromPath, Ct as navigateToolsetOAuthPopup, Xt as normalizeResponseFormat, be as normalizeSkillName, Lr as normalizeVirtualPath, ni as openAnnotationAttachment, wt as openToolsetOAuthPopup, Z as padTwoDigits, Ui as parseExternalServiceUrl, Bi as parseFeaturesData, Rr as parseNewFolderVirtualPath, oe as parsePromptResourceUrl, xe as parseSkillManifest, nt as parseSkillManifestDocument, ke as parseSkillResourceUrl, Ur as prepareCopyItems, Di as prepareDownloadDestination, Wr as prepareMoveRenameItems, Ne as readSkillFileBytes, Pe as readSkillFilePreviewBytes, Fe as readSkillManifest, Qe as reconcileFilterTopics, si as referenceAttachmentToPdfCanvasContent, et as resolveCatalogPrimaryAction, ci as resolveCodeCanvasContent, ie as resolveDeploymentFolder, Vr as resolveDialFileApiPath, f as resolveDialFileBucketAndPath, yi as resolveExternalSourceContentType, li as resolveHtmlCanvasContent, ui as resolveImageCanvasContent, di as resolveJsonCanvasContent, J as resolveLocalizedText, fi as resolveMarkdownCanvasContent, He as resolveMcpResourceKind, pi as resolveOoxmlCanvasContent, zr as resolveOwnerCoords, mi as resolvePdfCanvasContent, p as resolveRelativeDialFilePath, Ie as resolveSkillFileDownloadPath, Le as resolveSkillManifestFileId, hi as resolveTextCanvasContent, gi as resolveVisualizerCanvasContent, s as safeDecodeURI, c as safeDecodeURIComponent, Ft as sanitizeAnnouncementHtml, It as sanitizeAnnouncementMessageHtml, Vn as sanitizeFileName, Ht as sanitizeFooterHtml, an as serializePromptExport, nr as shouldRerunGenerationOnEdit, Bt as shouldWatchForDisplayNameUpdate, Se as skillFileBytesToBlob, wn as skillFileToAttachment, Hn as splitFileNameExtension, l as stripSurroundingSlashes, u as stripTrailingSlashes, _t as subscribeToolsetLoginSuccess, Y as toBaseLocale, Zt as toOverlayMessages, qe as toPublishEntityType, M as toPublishRuleDto, Un as trimFileNameToByteLimit, Ce as unpackSkillArchive, $r as updateEntry, Fn as useActiveConversationSync, In as useAsyncConfirmDialog, g as useAttachmentAction, Wn as useAttachmentUpload, S as useAttachmentValidation, tt as useCatalogEditNavigation, it as useCatalogItemDetails, Dt as useCatalogToolsetCredentials, Wi as useChatSettingsFormConfig, Yn as useConversationExport, sr as useConversationHandlers, cr as useConversationImport, Ln as useConversationLookupMaps, zn as useConversationPanelItems, lr as useConversationScroll, fr as useConversationSources, dr as useConversationStream, Oi as useDialFileListing, Ni as useDialFileManager, Pi as useDialFileManagerTabConfig, ki as useDialFileMetadata, Ai as useDialFileMutations, ji as useDialFileSharing, Mi as useDialFileUploadBatch, At as useFavoriteEntitiesState, ra as useGridEditingScroll, Bn as useImportFilePicker, ta as useMcpAppHostAdapter, ea as useMcpAppHostContext, $i as useMcpAppTools, tn as useOAuthCallbackCompletion, na as useOpenMcpAppCanvas, Gi as usePageFileDrag, qi as usePanelMaxWidth, gn as usePromptsState, jt as usePublishFolders, Ji as useShareLink, Nn as useShareRecipientsCount, Ot as useSkillDetailsPanelData, En as useSkillEditorLoad, Dn as useSkillEditorSubmit, On as useSkillFileActions, An as useSkillFilePreview, rt as useSkillItemDetails, jn as useSkillsState, Yi as useToolsMenu, Et as useToolsetLogin, qn as useTranscribeAudio, Xi as useUsageData, Ki as useViewportWidth, pn as validatePromptContent, mn as validatePromptDescription, hn as validatePromptName, Cn as validateSkillFileBatch, Hr as virtualPathToApiPath, yt as waitForToolsetOAuthResult };
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.2.0-dev.2",
4
+ "version": "1.2.0-dev.20",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -96,7 +96,7 @@
96
96
  }
97
97
  },
98
98
  "dependencies": {
99
- "@epam/ai-dial-chat-api-client": "1.2.0-dev.2",
99
+ "@epam/ai-dial-chat-api-client": "1.2.0-dev.20",
100
100
  "dompurify": "3.4.15",
101
101
  "fflate": "^0.8.3",
102
102
  "lru-cache": "^10.4.3",
@@ -105,20 +105,20 @@
105
105
  },
106
106
  "peerDependencies": {
107
107
  "react": "^19.2.8",
108
- "@epam/ai-dial-attachment-canvas": "1.2.0-dev.2",
109
- "@epam/ai-dial-attachment-input": "1.2.0-dev.2",
110
- "@epam/ai-dial-builder-form": "1.2.0-dev.2",
111
- "@epam/ai-dial-catalog": "1.2.0-dev.2",
112
- "@epam/ai-dial-chat-overlay": "1.2.0-dev.2",
113
- "@epam/ai-dial-chat-shared": "1.2.0-dev.2",
114
- "@epam/ai-dial-mcp-apps": "1.2.0-dev.2",
115
- "@epam/ai-dial-publish-panel": "1.2.0-dev.2",
116
- "@epam/ai-dial-quotations": "1.2.0-dev.2",
108
+ "@epam/ai-dial-attachment-canvas": "1.2.0-dev.20",
109
+ "@epam/ai-dial-attachment-input": "1.2.0-dev.20",
110
+ "@epam/ai-dial-builder-form": "1.2.0-dev.20",
111
+ "@epam/ai-dial-catalog": "1.2.0-dev.20",
112
+ "@epam/ai-dial-chat-overlay": "1.2.0-dev.20",
113
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.20",
114
+ "@epam/ai-dial-mcp-apps": "1.2.0-dev.20",
115
+ "@epam/ai-dial-publish-panel": "1.2.0-dev.20",
116
+ "@epam/ai-dial-quotations": "1.2.0-dev.20",
117
117
  "@epam/ai-dial-react-file-manager": "^0.2.0",
118
- "@epam/ai-dial-scheduled-tasks": "1.2.0-dev.2",
119
- "@epam/ai-dial-share": "1.2.0-dev.2",
120
- "@epam/ai-dial-skill-editor": "1.2.0-dev.2",
121
- "@epam/ai-dial-source-panel": "1.2.0-dev.2",
118
+ "@epam/ai-dial-scheduled-tasks": "1.2.0-dev.20",
119
+ "@epam/ai-dial-share": "1.2.0-dev.20",
120
+ "@epam/ai-dial-skill-editor": "1.2.0-dev.20",
121
+ "@epam/ai-dial-source-panel": "1.2.0-dev.20",
122
122
  "@epam/ai-dial-ui-kit": "^0.14.2",
123
123
  "@modelcontextprotocol/sdk": "^1.29.0",
124
124
  "@epam/pdf-highlighter-kit": "^0.0.19",