@epam/ai-dial-chat-hooks 1.3.0-dev.358 → 1.3.0-dev.364

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.
Files changed (35) hide show
  1. package/catalog/resource-name-conflict.d.ts +22 -0
  2. package/catalog/resource-name-conflict.d.ts.map +1 -0
  3. package/catalog/resource-name-conflict.js +32 -0
  4. package/catalog.js +6 -5
  5. package/conversation/create-chat-stream-api.d.ts +2 -0
  6. package/conversation/create-chat-stream-api.d.ts.map +1 -1
  7. package/conversation/create-chat-stream-api.js +33 -33
  8. package/conversation/useConversationStream/conversation-stream.types.d.ts +6 -0
  9. package/conversation/useConversationStream/conversation-stream.types.d.ts.map +1 -1
  10. package/conversation/useConversationStream/generation-resume.d.ts +10 -1
  11. package/conversation/useConversationStream/generation-resume.d.ts.map +1 -1
  12. package/conversation/useConversationStream/generation-resume.js +110 -92
  13. package/conversation/useConversationStream/useConversationStream.d.ts +1 -1
  14. package/conversation/useConversationStream/useConversationStream.d.ts.map +1 -1
  15. package/conversation/useConversationStream/useConversationStream.js +106 -101
  16. package/conversation.js +43 -43
  17. package/entry-points/catalog.d.ts +1 -0
  18. package/entry-points/catalog.d.ts.map +1 -1
  19. package/index.d.ts +1 -0
  20. package/index.d.ts.map +1 -1
  21. package/index.js +178 -177
  22. package/package.json +17 -17
  23. package/project/project-file-preview.d.ts +4 -0
  24. package/project/project-file-preview.d.ts.map +1 -1
  25. package/project/project-file-preview.js +15 -10
  26. package/project/projects-api-client.d.ts +7 -1
  27. package/project/projects-api-client.d.ts.map +1 -1
  28. package/project/projects-api-client.js +1 -0
  29. package/project/use-project-conversations.d.ts +2 -1
  30. package/project/use-project-conversations.d.ts.map +1 -1
  31. package/project/use-project-conversations.js +11 -7
  32. package/project/use-project-file-preview.d.ts +6 -1
  33. package/project/use-project-file-preview.d.ts.map +1 -1
  34. package/project/use-project-file-preview.js +35 -31
  35. package/project.js +16 -16
@@ -0,0 +1,22 @@
1
+ import { ResourceSaveAdapter } from './resource-save-adapter';
2
+ /** The kind of entity that already holds a displayed name and version a write asked for. */
3
+ export declare enum ResourceNameConflictKind {
4
+ /** An application shown as an agent. */
5
+ Agent = "agent",
6
+ /** A toolset resource. */
7
+ Toolset = "toolset"
8
+ }
9
+ /** The translated message for each kind of entity a duplicate can collide with. */
10
+ export type ResourceNameConflictMessages = Record<ResourceNameConflictKind, string>;
11
+ /**
12
+ * Returns the kind of entity holding the requested name and version when `error` is a duplicate `409`, otherwise `undefined`.
13
+ * @param error - the rejection of a generated-client call
14
+ */
15
+ export declare const getResourceNameConflictKind: (error: unknown) => Promise<ResourceNameConflictKind | undefined>;
16
+ /**
17
+ * Returns `adapter` with its create, in-place and new-version steps rejecting a duplicate `409` as a `ResourceSaveError` carrying the matching message.
18
+ * @param adapter - the editor's Save panel adapter
19
+ * @param messages - the translated message for each kind of conflicting entity
20
+ */
21
+ export declare const withResourceNameConflictMessages: (adapter: ResourceSaveAdapter, messages: ResourceNameConflictMessages) => ResourceSaveAdapter;
22
+ //# sourceMappingURL=resource-name-conflict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-name-conflict.d.ts","sourceRoot":"","sources":["../../src/catalog/resource-name-conflict.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAEjC,4FAA4F;AAC5F,oBAAY,wBAAwB;IAClC,wCAAwC;IACxC,KAAK,UAAU;IACf,0BAA0B;IAC1B,OAAO,YAAY;CACpB;AAED,mFAAmF;AACnF,MAAM,MAAM,4BAA4B,GAAG,MAAM,CAC/C,wBAAwB,EACxB,MAAM,CACP,CAAC;AAUF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GACtC,OAAO,OAAO,KACb,OAAO,CAAC,wBAAwB,GAAG,SAAS,CAI9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAC3C,SAAS,mBAAmB,EAC5B,UAAU,4BAA4B,KACrC,mBA+BF,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { getApiErrorDetails as e } from "../api-error/api-error.js";
2
+ import { ResourceSaveError as t, isResourceCreateAdapter as n } from "./resource-save-adapter.js";
3
+ import { ResourceNameConflictCode as r } from "@epam/ai-dial-chat-api-client";
4
+ //#region src/catalog/resource-name-conflict.ts
5
+ var i = /* @__PURE__ */ function(e) {
6
+ return e.Agent = "agent", e.Toolset = "toolset", e;
7
+ }({}), a = {
8
+ [r.NameTakenAgent]: "agent",
9
+ [r.NameTakenToolset]: "toolset"
10
+ }, o = async (t) => {
11
+ let { status: n, code: r } = await e(t);
12
+ if (n === 409 && r != null) return a[r];
13
+ }, s = (e, r) => {
14
+ let i = (e) => async (...n) => {
15
+ try {
16
+ return await e(...n);
17
+ } catch (e) {
18
+ let n = await o(e);
19
+ throw n == null ? e : new t(r[n]);
20
+ }
21
+ };
22
+ return n(e) ? {
23
+ ...e,
24
+ createIn: i(e.createIn)
25
+ } : {
26
+ ...e,
27
+ saveInPlace: i(e.saveInPlace),
28
+ ...e.saveAsNewVersion && { saveAsNewVersion: i(e.saveAsNewVersion) }
29
+ };
30
+ };
31
+ //#endregion
32
+ export { i as ResourceNameConflictKind, o as getResourceNameConflictKind, s as withResourceNameConflictMessages };
package/catalog.js CHANGED
@@ -32,8 +32,9 @@ import { hasPublishFolderWriteAccess as Ee, rememberPublishFolderKey as De, useP
32
32
  import { useResourceFolders as ke } from "./catalog/useResourceFolders/useResourceFolders.js";
33
33
  import { parseResourceFolderPath as Ae } from "./catalog/resource-folder.js";
34
34
  import { ResourceSaveError as je, isResourceCreateAdapter as Me } from "./catalog/resource-save-adapter.js";
35
- import { ResourceSaveOutcome as Ne, ResourceSaveVersionError as Pe, SaveDestinationRoot as Fe, createPublishSavedResource as Ie, runResourceSave as Le } from "./catalog/resource-save.js";
36
- import { createEmbeddedApplicationSaveAdapter as Re, createHostApplicationSaveAdapter as ze, createPromptCreateAdapter as Be, createPromptFolderLister as Ve, createPromptSaveAdapter as He, createSkillFolderLister as Ue, createToolsetCreateAdapter as We, createToolsetSaveAdapter as Ge } from "./catalog/resource-save-adapters.js";
37
- import { useResourceSavePanel as Ke } from "./catalog/useResourceSavePanel/useResourceSavePanel.js";
38
- import { SkillPreviewErrorKind as qe, useSkillFilePreview as Je } from "./skill/useSkillFilePreview.js";
39
- export { u as AuthenticationType, re as CatalogEntityKind, pe as CatalogPrimaryActionType, Ce as DEFAULT_APPLICATION_CREDENTIAL_ACTIONS_LABELS, m as DEFAULT_ENTITY_DETAILS_LABELS, oe as FavoriteEntityType, B as McpResourceKind, E as PUBLIC_SKILL_BUCKET, je as ResourceSaveError, Ne as ResourceSaveOutcome, Pe as ResourceSaveVersionError, D as SKILL_LISTING_MAX_PAGES, O as SKILL_LISTING_PAGE_SIZE, k as SKILL_MANIFEST_MAX_BYTES, Fe as SaveDestinationRoot, qe as SkillPreviewErrorKind, A as SkillSource, be as buildApplicationCredentialLoginParams, V as buildApplicationMcpUrl, n as buildChatCompletionsUrl, H as buildConnectApi, r as buildDeploymentConnectApi, C as buildPromptOverview, d as buildResetFields, i as buildResponsesUrl, M as buildSkillContentTree, N as buildSkillOverview, U as buildToolsetMcpUrl, Z as canEditShareAccess, a as createDeploymentLookup, Re as createEmbeddedApplicationSaveAdapter, ze as createHostApplicationSaveAdapter, Be as createPromptCreateAdapter, Ve as createPromptFolderLister, He as createPromptSaveAdapter, e as createPublishApiClient, Ie as createPublishSavedResource, Ue as createSkillFolderLister, We as createToolsetCreateAdapter, Ge as createToolsetSaveAdapter, o as decodeDeploymentId, Q as deriveAvailableTabIds, $ as deriveFavoriteItems, s as encodeDeploymentId, ee as filterCatalogItemsBySelector, te as filterHiddenOwnedItems, c as findDeploymentByIdOrReference, ie as findSchemaDisplayName, fe as findWorstCappedRow, G as getPublicCatalogEntityFolderPath, Ee as hasPublishFolderWriteAccess, w as isOrganisationPromptItem, K as isPublicCatalogEntityId, Me as isResourceCreateAdapter, xe as mapApplicationCredentials, h as mapDeploymentDetailsDtoToEntityDetails, p as mapDeploymentLimitsDtoToCatalogLimits, f as mapDeploymentLimitsToInput, v as mapDeploymentToCatalogItem, y as mapDeploymentToolsetCredentials, g as mapEntityDetailsToCatalogDetails, T as mapPromptToCatalogItem, q as mapPublishConversationResultDto, J as mapPublishHistoryEntryDto, P as mapSkillToCatalogItem, _ as mapToolsetCredentials, b as mapToolsetToCatalogItem, l as normalizeDeploymentId, le as parseCatalogFilterTopics, Ae as parseResourceFolderPath, j as parseSkillResourceUrl, F as readSkillFileBytes, I as readSkillFilePreviewBytes, L as readSkillManifest, ne as reconcileFilterTopics, De as rememberPublishFolderKey, ue as resolveCatalogActiveTab, ae as resolveCatalogEntityKind, me as resolveCatalogPrimaryAction, de as resolveCatalogSortKey, x as resolveDeploymentFolder, ce as resolveFavoriteEntityType, W as resolveMcpResourceKind, R as resolveSkillFileDownloadPath, z as resolveSkillManifestFileId, Le as runResourceSave, S as supportsChatInterface, Y as toPublishEntityType, t as toPublishRuleDto, we as useApplicationCredentialActions, Se as useApplicationCredentials, ge as useCatalogEditNavigation, he as useCatalogItemDelete, ve as useCatalogItemDetails, ye as useCatalogToolsetCredentials, se as useFavoriteEntitiesState, Oe as usePublishFolders, X as usePublishHistory, ke as useResourceFolders, Ke as useResourceSavePanel, Te as useSkillDetailsPanelData, Je as useSkillFilePreview, _e as useSkillItemDetails };
35
+ import { ResourceNameConflictKind as Ne, getResourceNameConflictKind as Pe, withResourceNameConflictMessages as Fe } from "./catalog/resource-name-conflict.js";
36
+ import { ResourceSaveOutcome as Ie, ResourceSaveVersionError as Le, SaveDestinationRoot as Re, createPublishSavedResource as ze, runResourceSave as Be } from "./catalog/resource-save.js";
37
+ import { createEmbeddedApplicationSaveAdapter as Ve, createHostApplicationSaveAdapter as He, createPromptCreateAdapter as Ue, createPromptFolderLister as We, createPromptSaveAdapter as Ge, createSkillFolderLister as Ke, createToolsetCreateAdapter as qe, createToolsetSaveAdapter as Je } from "./catalog/resource-save-adapters.js";
38
+ import { useResourceSavePanel as Ye } from "./catalog/useResourceSavePanel/useResourceSavePanel.js";
39
+ import { SkillPreviewErrorKind as Xe, useSkillFilePreview as Ze } from "./skill/useSkillFilePreview.js";
40
+ export { u as AuthenticationType, re as CatalogEntityKind, pe as CatalogPrimaryActionType, Ce as DEFAULT_APPLICATION_CREDENTIAL_ACTIONS_LABELS, m as DEFAULT_ENTITY_DETAILS_LABELS, oe as FavoriteEntityType, B as McpResourceKind, E as PUBLIC_SKILL_BUCKET, Ne as ResourceNameConflictKind, je as ResourceSaveError, Ie as ResourceSaveOutcome, Le as ResourceSaveVersionError, D as SKILL_LISTING_MAX_PAGES, O as SKILL_LISTING_PAGE_SIZE, k as SKILL_MANIFEST_MAX_BYTES, Re as SaveDestinationRoot, Xe as SkillPreviewErrorKind, A as SkillSource, be as buildApplicationCredentialLoginParams, V as buildApplicationMcpUrl, n as buildChatCompletionsUrl, H as buildConnectApi, r as buildDeploymentConnectApi, C as buildPromptOverview, d as buildResetFields, i as buildResponsesUrl, M as buildSkillContentTree, N as buildSkillOverview, U as buildToolsetMcpUrl, Z as canEditShareAccess, a as createDeploymentLookup, Ve as createEmbeddedApplicationSaveAdapter, He as createHostApplicationSaveAdapter, Ue as createPromptCreateAdapter, We as createPromptFolderLister, Ge as createPromptSaveAdapter, e as createPublishApiClient, ze as createPublishSavedResource, Ke as createSkillFolderLister, qe as createToolsetCreateAdapter, Je as createToolsetSaveAdapter, o as decodeDeploymentId, Q as deriveAvailableTabIds, $ as deriveFavoriteItems, s as encodeDeploymentId, ee as filterCatalogItemsBySelector, te as filterHiddenOwnedItems, c as findDeploymentByIdOrReference, ie as findSchemaDisplayName, fe as findWorstCappedRow, G as getPublicCatalogEntityFolderPath, Pe as getResourceNameConflictKind, Ee as hasPublishFolderWriteAccess, w as isOrganisationPromptItem, K as isPublicCatalogEntityId, Me as isResourceCreateAdapter, xe as mapApplicationCredentials, h as mapDeploymentDetailsDtoToEntityDetails, p as mapDeploymentLimitsDtoToCatalogLimits, f as mapDeploymentLimitsToInput, v as mapDeploymentToCatalogItem, y as mapDeploymentToolsetCredentials, g as mapEntityDetailsToCatalogDetails, T as mapPromptToCatalogItem, q as mapPublishConversationResultDto, J as mapPublishHistoryEntryDto, P as mapSkillToCatalogItem, _ as mapToolsetCredentials, b as mapToolsetToCatalogItem, l as normalizeDeploymentId, le as parseCatalogFilterTopics, Ae as parseResourceFolderPath, j as parseSkillResourceUrl, F as readSkillFileBytes, I as readSkillFilePreviewBytes, L as readSkillManifest, ne as reconcileFilterTopics, De as rememberPublishFolderKey, ue as resolveCatalogActiveTab, ae as resolveCatalogEntityKind, me as resolveCatalogPrimaryAction, de as resolveCatalogSortKey, x as resolveDeploymentFolder, ce as resolveFavoriteEntityType, W as resolveMcpResourceKind, R as resolveSkillFileDownloadPath, z as resolveSkillManifestFileId, Be as runResourceSave, S as supportsChatInterface, Y as toPublishEntityType, t as toPublishRuleDto, we as useApplicationCredentialActions, Se as useApplicationCredentials, ge as useCatalogEditNavigation, he as useCatalogItemDelete, ve as useCatalogItemDetails, ye as useCatalogToolsetCredentials, se as useFavoriteEntitiesState, Oe as usePublishFolders, X as usePublishHistory, ke as useResourceFolders, Ye as useResourceSavePanel, Te as useSkillDetailsPanelData, Ze as useSkillFilePreview, _e as useSkillItemDetails, Fe as withResourceNameConflictMessages };
@@ -2,6 +2,8 @@ import { SendCompletionDtoModeEnum } from '@epam/ai-dial-chat-api-client';
2
2
  import { MessageCustomContent, StreamChunk } from '@epam/ai-dial-chat-shared';
3
3
  /** Safe fallback for hosts that do not supply a translated persistence warning. */
4
4
  export declare const DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE = "The response could not be saved. It is still shown here, but may be lost if you reload or leave this page. Copy it before continuing.";
5
+ /** Safe fallback for hosts that do not supply a translated interrupted-generation text. */
6
+ export declare const DEFAULT_GENERATION_INTERRUPTED_ERROR_MESSAGE = "No answer was received for this message. The response may have been interrupted. Try again.";
5
7
  /** Terminal markers the rejected write of a stopped, aborted, or failed answer carried. */
6
8
  export interface GenerationPersistenceTerminalMarker {
7
9
  /** Error text the failed write stored; `''` asks the host for its localized fallback. */
@@ -1 +1 @@
1
- {"version":3,"file":"create-chat-stream-api.d.ts","sourceRoot":"","sources":["../../src/conversation/create-chat-stream-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-chat-stream-api.d.ts","sourceRoot":"","sources":["../../src/conversation/create-chat-stream-api.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,29 @@
1
1
  //#region src/conversation/create-chat-stream-api.ts
2
- var e = { "Content-Type": "application/json" }, t = 409, n = "The response could not be saved. It is still shown here, but may be lost if you reload or leave this page. Copy it before continuing.", r = class extends Error {
2
+ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could not be saved. It is still shown here, but may be lost if you reload or leave this page. Copy it before continuing.", r = "No answer was received for this message. The response may have been interrupted. Try again.", i = class extends Error {
3
3
  static type = "conversation_save_failed";
4
4
  status;
5
5
  terminalMarker;
6
6
  constructor(e, t) {
7
7
  super(n), this.name = "GenerationPersistenceError", this.status = e, this.terminalMarker = t;
8
8
  }
9
- }, i = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.", a = class extends Error {
10
- constructor(e = i) {
9
+ }, a = "A response is already being generated in this conversation. Wait for it to finish or stop it before sending another message.", o = class extends Error {
10
+ constructor(e = a) {
11
11
  super(e), this.name = "GenerationConflictError";
12
12
  }
13
- }, o = class extends Error {
13
+ }, s = class extends Error {
14
14
  constructor(e) {
15
15
  super(e), this.name = "StreamUpstreamError";
16
16
  }
17
- }, s = class extends Error {
17
+ }, c = class extends Error {
18
18
  constructor(e) {
19
19
  super("The completion stream was interrupted", { cause: e }), this.name = "StreamInterruptedError";
20
20
  }
21
- }, c = class extends Error {
21
+ }, l = class extends Error {
22
22
  status;
23
23
  constructor(e) {
24
24
  super(`stopCompletion failed: ${e}`), this.name = "StopCompletionError", this.status = e;
25
25
  }
26
- }, l = 45e3, u = (e, t) => {
26
+ }, u = 45e3, d = (e, t) => {
27
27
  let n = Date.now(), r, i = !1, a = () => {
28
28
  if (i) return;
29
29
  let o = Date.now() - n;
@@ -39,34 +39,34 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
39
39
  i || (i = !0, clearTimeout(r), s && (document.removeEventListener("visibilitychange", o), window.removeEventListener("online", a), window.removeEventListener("pageshow", a)));
40
40
  }
41
41
  };
42
- }, d = (e) => typeof e == "object" && !!e && e.name === "AbortError", f = (e) => {
42
+ }, f = (e) => typeof e == "object" && !!e && e.name === "AbortError", p = (e) => {
43
43
  let { status: t } = e;
44
44
  return typeof t == "number" ? t : void 0;
45
- }, p = (e) => {
45
+ }, m = (e) => {
46
46
  let { streamErrorMessage: t, wasStoppedByUser: n } = e;
47
47
  if (n === !0) return { wasStoppedByUser: !0 };
48
48
  if (typeof t == "string") return { streamErrorMessage: t };
49
- }, m = (e, t, n) => {
50
- let i = e.trim();
51
- if (!i || i.startsWith(":") || !i.startsWith("data: ")) return;
52
- let a = i.slice(6);
49
+ }, h = (e, t, n) => {
50
+ let r = e.trim();
51
+ if (!r || r.startsWith(":") || !r.startsWith("data: ")) return;
52
+ let a = r.slice(6);
53
53
  if (a !== "[DONE]") try {
54
54
  let e = JSON.parse(a);
55
55
  if (e.error) {
56
- n(e.error.type === r.type ? new r(f(e.error), p(e.error)) : new o(e.error.display_message ?? e.error.message));
56
+ n(e.error.type === i.type ? new i(p(e.error), m(e.error)) : new s(e.error.display_message ?? e.error.message));
57
57
  return;
58
58
  }
59
59
  t(e);
60
60
  } catch {}
61
- }, h = (n) => {
61
+ }, g = (n) => {
62
62
  let { completionsBasePath: r } = n, i = (...e) => (n.fetchImpl ?? fetch)(...e);
63
63
  return {
64
- streamCompletion: (c, l, f, p, h, g, _, v, y) => {
64
+ streamCompletion: (a, l, u, p, m, g, _, v, y) => {
65
65
  let { onChunk: b, onComplete: x, onError: S, signal: C } = p;
66
66
  (async () => {
67
67
  let p;
68
68
  try {
69
- let t = n.getTimezone?.(), a = n.getLanguage?.();
69
+ let t = n.getTimezone?.(), o = n.getLanguage?.();
70
70
  p = await i(`${r}/completions`, {
71
71
  method: "POST",
72
72
  credentials: "include",
@@ -75,13 +75,13 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
75
75
  ...e,
76
76
  ...n.getCsrfToken() == null ? {} : { "X-CSRF-Token": n.getCsrfToken() },
77
77
  ...t ? { "X-Timezone": t } : {},
78
- ...a ? { "X-Lang": a } : {}
78
+ ...o ? { "X-Lang": o } : {}
79
79
  },
80
80
  body: JSON.stringify({
81
- path: c,
81
+ path: a,
82
82
  message: l ?? "",
83
- model: f,
84
- custom_content: h || {},
83
+ model: u,
84
+ custom_content: m || {},
85
85
  ...g != null && { generationId: g },
86
86
  ..._ != null && { mode: _ },
87
87
  ...v != null && { messageIndex: v },
@@ -89,14 +89,14 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
89
89
  })
90
90
  });
91
91
  } catch (e) {
92
- if (d(e)) return;
93
- S(new s(e));
92
+ if (f(e)) return;
93
+ S(new c(e));
94
94
  return;
95
95
  }
96
96
  let w = p.headers.get("x-csrf-token");
97
97
  if (w && n.setCsrfToken(w), !p.ok) {
98
98
  if (p.status === t) {
99
- S(new a());
99
+ S(new o());
100
100
  return;
101
101
  }
102
102
  S(/* @__PURE__ */ Error(`Stream request failed with status ${p.status}`));
@@ -109,29 +109,29 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
109
109
  let T = p.body.getReader(), E = new TextDecoder(), D = "", O = !1, k = !1, A, j = (e) => {
110
110
  O || (O = !0, P.stop(), S(e));
111
111
  }, M = (e) => {
112
- e instanceof o ? A ??= e : j(e);
112
+ e instanceof s ? A ??= e : j(e);
113
113
  }, N = (e) => {
114
114
  A ?? b(e);
115
- }, P = u(n.idleTimeoutMs ?? 45e3, () => {
116
- k = !0, j(A ?? new s()), T.cancel().catch(() => void 0);
115
+ }, P = d(n.idleTimeoutMs ?? 45e3, () => {
116
+ k = !0, j(A ?? new c()), T.cancel().catch(() => void 0);
117
117
  });
118
118
  try {
119
119
  for (;;) {
120
120
  let { done: e, value: t } = await T.read();
121
121
  if (k) break;
122
122
  if (e) {
123
- D.trim() && m(D, N, M);
123
+ D.trim() && h(D, N, M);
124
124
  break;
125
125
  }
126
126
  P.touch(), D += E.decode(t, { stream: !0 });
127
127
  let n = D.split("\n");
128
128
  D = n.pop() ?? "";
129
- for (let e of n) m(e, N, M);
129
+ for (let e of n) h(e, N, M);
130
130
  }
131
131
  A ? j(A) : O || (O = !0, x());
132
132
  } catch (e) {
133
- if (d(e)) return;
134
- j(A ?? new s(e));
133
+ if (f(e)) return;
134
+ j(A ?? new c(e));
135
135
  } finally {
136
136
  P.stop(), T.releaseLock();
137
137
  }
@@ -147,9 +147,9 @@ var e = { "Content-Type": "application/json" }, t = 409, n = "The response could
147
147
  },
148
148
  body: JSON.stringify(t)
149
149
  }), o = a.headers.get("x-csrf-token");
150
- if (o && n.setCsrfToken(o), !a.ok) throw new c(a.status);
150
+ if (o && n.setCsrfToken(o), !a.ok) throw new l(a.status);
151
151
  }
152
152
  };
153
153
  };
154
154
  //#endregion
155
- export { i as DEFAULT_GENERATION_CONFLICT_MESSAGE, n as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, l as DEFAULT_STREAM_IDLE_TIMEOUT_MS, a as GenerationConflictError, r as GenerationPersistenceError, c as StopCompletionError, s as StreamInterruptedError, o as StreamUpstreamError, h as createChatStreamApi };
155
+ export { a as DEFAULT_GENERATION_CONFLICT_MESSAGE, r as DEFAULT_GENERATION_INTERRUPTED_ERROR_MESSAGE, n as DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE, u as DEFAULT_STREAM_IDLE_TIMEOUT_MS, o as GenerationConflictError, i as GenerationPersistenceError, l as StopCompletionError, c as StreamInterruptedError, s as StreamUpstreamError, g as createChatStreamApi };
@@ -91,6 +91,12 @@ export interface UseConversationStreamParams {
91
91
  generationConflictMessage?: string;
92
92
  /** Host-translated warning shown when the received answer could not be saved. */
93
93
  generationPersistenceErrorMessage?: string;
94
+ /**
95
+ * Host-translated text shown on an assistant message whose generation was lost: a reloaded
96
+ * chat whose stored copy still ends in the empty placeholder while attach finds nothing
97
+ * running. Defaults to {@link DEFAULT_GENERATION_INTERRUPTED_ERROR_MESSAGE}.
98
+ */
99
+ generationInterruptedMessage?: string;
94
100
  /**
95
101
  * Receives the original error of every failed stream. The hook shows only
96
102
  * host-supplied or upstream-supplied text on the message bubble and hides
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-stream.types.d.ts","sourceRoot":"","sources":["../../../src/conversation/useConversationStream/conversation-stream.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation-stream.types.d.ts","sourceRoot":"","sources":["../../../src/conversation/useConversationStream/conversation-stream.types.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,13 @@ export interface ResumeGenerationOptions {
48
48
  * already knows its local id, and the conflict handover keeps Stop unavailable.
49
49
  */
50
50
  trackAttachGenerationId?: boolean;
51
+ /**
52
+ * Releases the chat and shows an unresolved placeholder as interrupted once nothing is
53
+ * producing the answer here (attach unavailable, stored copy still the placeholder). Set
54
+ * only by the public entry point: stream recovery and the conflict handover know a
55
+ * generation exists, so they keep their own behaviour.
56
+ */
57
+ shouldMarkOrphanedAsInterrupted?: boolean;
51
58
  }
52
59
  /** Host-owned state {@link createResumeIfAwaitingGeneration} reads/writes through. */
53
60
  export interface ResumeIfAwaitingGenerationDeps {
@@ -60,6 +67,8 @@ export interface ResumeIfAwaitingGenerationDeps {
60
67
  removeStreamingPath: (path: string) => void;
61
68
  isPathDisplayed: (path: string) => boolean;
62
69
  generationPersistenceErrorMessage?: string;
70
+ /** Host-translated text shown on a placeholder nothing is producing. Defaults to {@link DEFAULT_GENERATION_INTERRUPTED_ERROR_MESSAGE}. */
71
+ generationInterruptedMessage?: string;
63
72
  /** Records a terminal read failure and its guarded read-only retry. */
64
73
  onReloadError?: (path: string, retry: () => Promise<void>, isCurrent: () => boolean) => void;
65
74
  /** Clears a previous read failure after reconciliation. */
@@ -94,5 +103,5 @@ export interface ResumeIfAwaitingGenerationDeps {
94
103
  * backend's finalize save resolves the placeholder whenever attach is
95
104
  * unavailable or ends without a terminal event.
96
105
  */
97
- export declare const createResumeIfAwaitingGeneration: ({ transport, setConversation, conversationRef, resumingPathsRef, bufferedGenerationsRef, addStreamingPath, removeStreamingPath, isPathDisplayed, generationPersistenceErrorMessage, frameScheduler, stoppedGenerationIdsRef, rememberResumedGenerationId, forgetResumedGenerationId, onReloadError, onReloadSuccess, }: ResumeIfAwaitingGenerationDeps) => (currentConversationId: string, conversation: Conversation, options?: ResumeGenerationOptions) => void;
106
+ export declare const createResumeIfAwaitingGeneration: ({ transport, setConversation, conversationRef, resumingPathsRef, bufferedGenerationsRef, addStreamingPath, removeStreamingPath, isPathDisplayed, generationPersistenceErrorMessage, generationInterruptedMessage, frameScheduler, stoppedGenerationIdsRef, rememberResumedGenerationId, forgetResumedGenerationId, onReloadError, onReloadSuccess, }: ResumeIfAwaitingGenerationDeps) => (currentConversationId: string, conversation: Conversation, options?: ResumeGenerationOptions) => void;
98
107
  //# sourceMappingURL=generation-resume.d.ts.map
@@ -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":"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"}
@@ -1,155 +1,173 @@
1
1
  import { safeDecodeURI as e } from "../../shared/string-utils.js";
2
- import { DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as t, GenerationPersistenceError as n } from "../create-chat-stream-api.js";
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";
2
+ import { DEFAULT_GENERATION_INTERRUPTED_ERROR_MESSAGE as t, DEFAULT_GENERATION_PERSISTENCE_ERROR_MESSAGE as n, GenerationPersistenceError as r } from "../create-chat-stream-api.js";
3
+ import { readSseEvents as i } from "../../shared/read-sse-events.js";
4
+ import { getConversationPath as a } from "./conversation-path.js";
5
+ import { applyChunkToMessages as o } from "./apply-chunk.js";
6
+ import { restoreBufferedMessage as s } from "./buffered-generation.js";
7
+ import { BackgroundGenerationStatus as c, MessageRole as l } from "@epam/ai-dial-chat-shared";
8
8
  //#region src/conversation/useConversationStream/generation-resume.ts
9
- var l = (e) => {
9
+ var u = (e) => {
10
10
  let t = e.custom_content;
11
11
  return !!e.content || e.responseId != null || !!t?.attachments?.length || !!t?.stages?.length || !!t?.annotations?.length || !!t?.form_schema || t?.state != null;
12
- }, u = (e) => e.messages.findIndex((e) => e.backgroundGeneration?.status === s.Pending), d = (e) => {
13
- if (u(e) !== -1) return !0;
12
+ }, d = (e) => e.messages.findIndex((e) => e.backgroundGeneration?.status === c.Pending), f = (e) => {
13
+ if (d(e) !== -1) return !0;
14
14
  let t = e.messages[e.messages.length - 1];
15
- return !!t && t.role === c.Assistant && !l(t) && t.streamErrorMessage == null && !t.wasStoppedByUser;
16
- }, f = 3e5, p = "awaiting-resume", m = [
15
+ return !!t && t.role === l.Assistant && !u(t) && t.streamErrorMessage == null && !t.wasStoppedByUser;
16
+ }, p = 3e5, m = "awaiting-resume", h = [
17
17
  1e3,
18
18
  2e3,
19
19
  4e3,
20
20
  8e3,
21
21
  16e3
22
- ], h = (e) => new Promise((t) => {
22
+ ], g = (e) => new Promise((t) => {
23
23
  let n = typeof window < "u", r = () => {
24
24
  clearTimeout(i), n && window.removeEventListener("online", r), t();
25
25
  }, i = setTimeout(r, e);
26
26
  n && window.addEventListener("online", r);
27
- }), g = async (e, t, n) => {
28
- for (let r = 0; r <= m.length; r++) {
27
+ }), _ = async (e, t, n) => {
28
+ for (let r = 0; r <= h.length; r++) {
29
29
  if (t()) return null;
30
30
  try {
31
31
  let t = await e();
32
32
  if (!n?.(t)) return t;
33
33
  } catch {}
34
- if (r === m.length) return null;
35
- await h(m[r]);
34
+ if (r === h.length) return null;
35
+ await g(h[r]);
36
36
  }
37
37
  return null;
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)) {
40
- O.onSettled?.();
38
+ }, v = ({ transport: c, setConversation: l, conversationRef: h, resumingPathsRef: g, bufferedGenerationsRef: _, addStreamingPath: v, removeStreamingPath: y, isPathDisplayed: b, generationPersistenceErrorMessage: x = n, generationInterruptedMessage: S = t, frameScheduler: C, stoppedGenerationIdsRef: w, rememberResumedGenerationId: T, forgetResumedGenerationId: E, onReloadError: D, onReloadSuccess: O }) => (t, n, k = {}) => {
39
+ if (!f(n)) {
40
+ k.onSettled?.();
41
41
  return;
42
42
  }
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,
48
- messageIndex: M,
49
- message: O.seedMessage ?? D.messages[M]
43
+ let A = a(t);
44
+ if (!k.skipDedupe && g.current.has(A)) return;
45
+ g.current.add(A), v(A);
46
+ let j = d(n), M = j !== -1, N = M ? j : n.messages.length - 1, P = {
47
+ generationId: m,
48
+ messageIndex: N,
49
+ message: k.seedMessage ?? n.messages[N]
50
50
  };
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 = () => {
53
- let e = F ?? I;
54
- return e != null && (S?.current.has(e) ?? !1);
55
- }, R = (e) => {
56
- O.trackAttachGenerationId && !j && e != null && P() && (I = e, C?.(k, e));
57
- }, z = () => {
58
- if (I == null) return;
59
- let e = I;
60
- I = void 0, S?.current.delete(e), w?.(k, e);
61
- }, B = (e, t = !1) => {
62
- if (x?.flush(k), F != null && S?.current.delete(F), z(), !P()) return;
63
- h.current.delete(k), v(k);
64
- let n = !j && e && e.messages.length - 1 === M && d(e) && l(N.message);
65
- t || n ? (N.message = {
66
- ...N.message,
67
- streamErrorMessage: b
68
- }, y(k) && c((e) => {
69
- if (!e || !P() || !y(k)) return 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));
73
- }, V = async () => {
74
- if (P()) try {
75
- let n = await s.getConversation(e(t));
76
- if (!P()) return;
77
- E?.(k), B(n);
51
+ _.current.set(A, P);
52
+ let F = () => _.current.get(A) === P, I = M ? n.messages[N].backgroundGeneration?.generationId : void 0, L, R = () => {
53
+ let e = I ?? L;
54
+ return e != null && (w?.current.has(e) ?? !1);
55
+ }, z = (e) => {
56
+ k.trackAttachGenerationId && !M && e != null && F() && (L = e, T?.(A, e));
57
+ }, B = () => {
58
+ if (L == null) return;
59
+ let e = L;
60
+ L = void 0, w?.current.delete(e), E?.(A, e);
61
+ }, V = (e) => !!k.shouldMarkOrphanedAsInterrupted && !M && !!e && e.messages.length - 1 === N && d(e) === -1 && f(e) && !u(P.message), H = () => {
62
+ P.message = {
63
+ ...P.message,
64
+ streamErrorMessage: S
65
+ };
66
+ }, U = () => {
67
+ F() && (H(), g.current.delete(A), y(A), B(), b(A) && l((e) => {
68
+ if (!e || !F() || !b(A)) return e;
69
+ let t = s(e, P);
70
+ return h.current = t, t;
71
+ }));
72
+ }, W = (e, t = !1) => {
73
+ if (C?.flush(A), I != null && w?.current.delete(I), B(), !F()) return;
74
+ g.current.delete(A), y(A);
75
+ let n = !M && e && e.messages.length - 1 === N && f(e) && u(P.message);
76
+ if (t || n) P.message = {
77
+ ...P.message,
78
+ streamErrorMessage: x
79
+ }, b(A) && l((e) => {
80
+ if (!e || !F() || !b(A)) return e;
81
+ let t = s(e, P);
82
+ return h.current = t, t;
83
+ });
84
+ else if (_.current.delete(A), e && b(A)) {
85
+ let t = V(e);
86
+ t && H();
87
+ let n = t ? s(e, P) : e;
88
+ l(n), h.current = n;
89
+ }
90
+ }, G = async () => {
91
+ if (F()) try {
92
+ let n = await c.getConversation(e(t));
93
+ if (!F()) return;
94
+ O?.(A), W(n);
78
95
  } catch {
79
- if (!P()) return;
80
- x?.flush(k), h.current.delete(k), v(k), F != null && S?.current.delete(F), z(), T?.(k, V, P);
96
+ if (!F()) return;
97
+ C?.flush(A), g.current.delete(A), y(A), I != null && w?.current.delete(I), B(), D?.(A, G, F);
81
98
  }
82
- }, H = (e) => {
83
- x?.cancel(k), P() && (N.message = e, y(k) && c((e) => {
84
- if (!e || !P() || !y(k)) return e;
85
- let t = o(e, N);
86
- return m.current = t, t;
99
+ }, K = (e) => {
100
+ C?.cancel(A), F() && (P.message = e, b(A) && l((e) => {
101
+ if (!e || !F() || !b(A)) return e;
102
+ let t = s(e, P);
103
+ return h.current = t, t;
87
104
  }));
88
- }, U = () => c((e) => {
89
- if (!e || !P() || !y(k)) return e;
90
- let t = o(e, N);
91
- return m.current = t, t;
92
- }), W = (e) => {
93
- if (!P() || L()) return;
94
- let t = a([N.message], 0, e);
95
- t && (N.message = t[0]), y(k) && (x ? x.schedule(k, U) : U());
96
- }, G = async () => {
97
- let n = new AbortController(), i;
105
+ }, q = () => l((e) => {
106
+ if (!e || !F() || !b(A)) return e;
107
+ let t = s(e, P);
108
+ return h.current = t, t;
109
+ }), J = (e) => {
110
+ if (!F() || R()) return;
111
+ let t = o([P.message], 0, e);
112
+ t && (P.message = t[0]), b(A) && (C ? C.schedule(A, q) : q());
113
+ }, Y = async () => {
114
+ let n = new AbortController(), r;
98
115
  try {
99
- i = await s.watchConversation(k, n.signal);
116
+ r = await c.watchConversation(A, n.signal);
100
117
  } catch {
101
- await V();
118
+ await G();
102
119
  return;
103
120
  }
104
121
  try {
105
- let r = await s.getConversation(e(t));
106
- if (!d(r)) {
107
- n.abort(), i.cancel().catch(() => void 0), B(r);
122
+ let i = await c.getConversation(e(t));
123
+ if (!f(i)) {
124
+ n.abort(), r.cancel().catch(() => void 0), W(i);
108
125
  return;
109
126
  }
127
+ V(i) && U();
110
128
  } catch {}
111
129
  let a = !1, o = window.setTimeout(() => {
112
130
  n.abort();
113
- }, f);
131
+ }, p);
114
132
  try {
115
- await r(i, async (n) => {
133
+ await i(r, async (n) => {
116
134
  if (n?.action !== "UPDATE") return !1;
117
135
  try {
118
- let n = await s.getConversation(e(t));
119
- if (!d(n)) return B(n), a = !0, !0;
136
+ let n = await c.getConversation(e(t));
137
+ if (!f(n)) return W(n), a = !0, !0;
120
138
  } catch {}
121
139
  return !1;
122
140
  });
123
141
  } finally {
124
142
  clearTimeout(o);
125
143
  }
126
- a || await V();
127
- }, K = async () => {
144
+ a || await G();
145
+ }, X = async () => {
128
146
  let e = new AbortController(), t;
129
147
  try {
130
- t = await s.attachToGeneration(k, e.signal);
148
+ t = await c.attachToGeneration(A, e.signal);
131
149
  } catch {
132
150
  return !1;
133
151
  }
134
- let i = !1, a = !1;
135
- return await r(t, (e) => {
136
- if (!P()) return !0;
152
+ let n = !1, a = !1;
153
+ return await i(t, (e) => {
154
+ if (!F()) return !0;
137
155
  switch (e.type) {
138
- case "snapshot": return R(e.generationId), H(e.message), !1;
139
- case "chunk": return W(e.chunk), !1;
156
+ case "snapshot": return z(e.generationId), K(e.message), !1;
157
+ case "chunk": return J(e.chunk), !1;
140
158
  case "done":
141
159
  case "error":
142
- case "stopped": return a = e.type === "error" && e.errorType === n.type, i = !0, !0;
160
+ case "stopped": return a = e.type === "error" && e.errorType === r.type, n = !0, !0;
143
161
  }
144
- }), i ? (a ? B(void 0, !0) : await V(), !0) : (z(), !P());
162
+ }), n ? (a ? W(void 0, !0) : await G(), !0) : (B(), !F());
145
163
  };
146
164
  (async () => {
147
165
  try {
148
- await K() || await G();
166
+ await X() || await Y();
149
167
  } finally {
150
- O.onSettled?.();
168
+ k.onSettled?.();
151
169
  }
152
170
  })();
153
171
  };
154
172
  //#endregion
155
- export { m as RECOVERY_REFETCH_DELAYS_MS, _ as createResumeIfAwaitingGeneration, g as fetchConversationForRecovery, u as findPendingBackgroundMessageIndex, l as hasGeneratedPayload, d as isAwaitingGenerationResume };
173
+ export { h as RECOVERY_REFETCH_DELAYS_MS, v as createResumeIfAwaitingGeneration, _ as fetchConversationForRecovery, d as findPendingBackgroundMessageIndex, u as hasGeneratedPayload, f as isAwaitingGenerationResume };