@inkeep/agents-ui 0.0.0-dev-20260402200940 → 0.0.0-dev-20260402205727

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 (53) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.js +165 -174
  3. package/dist/primitives/components/embedded-chat/use-inkeep-chat.cjs +3 -3
  4. package/dist/primitives/components/embedded-chat/use-inkeep-chat.d.ts +1 -5
  5. package/dist/primitives/components/embedded-chat/use-inkeep-chat.js +198 -203
  6. package/dist/primitives/components/embedded-chat.cjs +5 -5
  7. package/dist/primitives/components/embedded-chat.d.ts +2 -112
  8. package/dist/primitives/components/embedded-chat.js +1082 -1511
  9. package/dist/primitives/index.cjs +1 -1
  10. package/dist/primitives/index.js +146 -155
  11. package/dist/primitives/providers/feedback-provider.cjs +1 -1
  12. package/dist/primitives/providers/feedback-provider.js +37 -38
  13. package/dist/primitives/providers/index.cjs +1 -1
  14. package/dist/primitives/providers/index.d.ts +0 -3
  15. package/dist/primitives/providers/index.js +54 -63
  16. package/dist/primitives/utils/component-ids.cjs +1 -1
  17. package/dist/primitives/utils/component-ids.d.ts +0 -98
  18. package/dist/primitives/utils/component-ids.js +7 -56
  19. package/dist/primitives/utils/default-settings.cjs +1 -1
  20. package/dist/primitives/utils/default-settings.d.ts +0 -2
  21. package/dist/primitives/utils/default-settings.js +6 -8
  22. package/dist/react/embedded-chat.cjs +1 -1
  23. package/dist/react/embedded-chat.js +261 -310
  24. package/dist/react/index.cjs +1 -1
  25. package/dist/react/index.js +165 -174
  26. package/dist/styled/components/embedded-chat.cjs +1 -1
  27. package/dist/styled/components/embedded-chat.d.ts +2 -50
  28. package/dist/styled/components/embedded-chat.js +568 -1041
  29. package/dist/styled/components/ui/recipes/citation.d.ts +1 -1
  30. package/dist/styled/components/ui/recipes/index.cjs +1 -1
  31. package/dist/styled/components/ui/recipes/index.d.ts +0 -1
  32. package/dist/styled/components/ui/recipes/index.js +31 -33
  33. package/dist/styled/index.cjs +1 -1
  34. package/dist/styled/index.js +150 -159
  35. package/dist/styled/inkeep.css.cjs +0 -66
  36. package/dist/styled/inkeep.css.js +0 -66
  37. package/dist/types/config/ai.d.ts +1 -10
  38. package/dist/types/index.d.ts +0 -1
  39. package/package.json +1 -1
  40. package/dist/primitives/providers/attachment-item-provider.cjs +0 -1
  41. package/dist/primitives/providers/attachment-item-provider.d.ts +0 -9
  42. package/dist/primitives/providers/attachment-item-provider.js +0 -13
  43. package/dist/primitives/providers/attachments-bar-provider.cjs +0 -1
  44. package/dist/primitives/providers/attachments-bar-provider.d.ts +0 -30
  45. package/dist/primitives/providers/attachments-bar-provider.js +0 -57
  46. package/dist/primitives/providers/message-attachments-provider.cjs +0 -1
  47. package/dist/primitives/providers/message-attachments-provider.d.ts +0 -13
  48. package/dist/primitives/providers/message-attachments-provider.js +0 -27
  49. package/dist/primitives/utils/get-message-metadata.d.ts +0 -8
  50. package/dist/styled/components/ui/recipes/attachment.cjs +0 -1
  51. package/dist/styled/components/ui/recipes/attachment.d.ts +0 -4
  52. package/dist/styled/components/ui/recipes/attachment.js +0 -28
  53. package/dist/types/config/settings/workflow.d.ts +0 -86
@@ -1,26 +1,26 @@
1
1
  "use client";
2
- import { useChat as nt } from "@ai-sdk/react";
3
- import { normalizeFileType as Te } from "./file-upload-input.js";
4
- import { DefaultChatTransport as ot } from "ai";
5
- import { useRef as l, useEffect as M, useState as C, useMemo as xe, useCallback as B, useImperativeHandle as at } from "react";
6
- import { useModal as it } from "../modal/modal-provider.js";
7
- import { useOptionalChatBubble as lt } from "../../providers/chat-bubble-provider.js";
8
- import { useOptionalSidebarChat as ct } from "../../providers/sidebar-chat-provider.js";
9
- import { useInkeepConfig as ut } from "../../providers/config-provider.js";
10
- import { useCaptcha as pt } from "./use-captcha.js";
11
- import { useMediaQuery as dt } from "../../hooks/use-media-query.js";
12
- import { useAnonymousSession as ft } from "../../hooks/use-anonymous-session.js";
13
- import { useAuthToken as mt } from "../../hooks/use-auth-token.js";
14
- import { useConversationLoader as ht } from "../../hooks/use-conversation-loader.js";
15
- import { generateUid as U } from "../../utils/generate-uid.js";
16
- import { useBaseEvents as gt } from "../../providers/base-events-provider.js";
17
- import { useChatForm as yt } from "../../providers/chat-form-provider.js";
18
- import { useWidget as vt } from "../../providers/widget-provider.js";
19
- import { useControllableState as bt } from "@radix-ui/react-use-controllable-state";
20
- import { useStreamingEvents as Ct } from "../../hooks/use-streaming-events.js";
21
- import { parseAuthError as wt } from "../../hooks/use-inkeep-api-client.js";
22
- import { useInputNotification as St } from "../../hooks/use-input-notification.js";
23
- function At(h) {
2
+ import { useChat as et } from "@ai-sdk/react";
3
+ import { normalizeFileType as Re } from "./file-upload-input.js";
4
+ import { DefaultChatTransport as tt } from "ai";
5
+ import { useRef as l, useEffect as k, useState as D, useMemo as Te, useCallback as $, useImperativeHandle as st } from "react";
6
+ import { useModal as rt } from "../modal/modal-provider.js";
7
+ import { useOptionalChatBubble as nt } from "../../providers/chat-bubble-provider.js";
8
+ import { useOptionalSidebarChat as ot } from "../../providers/sidebar-chat-provider.js";
9
+ import { useInkeepConfig as at } from "../../providers/config-provider.js";
10
+ import { useCaptcha as it } from "./use-captcha.js";
11
+ import { useMediaQuery as lt } from "../../hooks/use-media-query.js";
12
+ import { useAnonymousSession as ct } from "../../hooks/use-anonymous-session.js";
13
+ import { useAuthToken as ut } from "../../hooks/use-auth-token.js";
14
+ import { useConversationLoader as pt } from "../../hooks/use-conversation-loader.js";
15
+ import { generateUid as L } from "../../utils/generate-uid.js";
16
+ import { useBaseEvents as dt } from "../../providers/base-events-provider.js";
17
+ import { useChatForm as ft } from "../../providers/chat-form-provider.js";
18
+ import { useWidget as mt } from "../../providers/widget-provider.js";
19
+ import { useControllableState as ht } from "@radix-ui/react-use-controllable-state";
20
+ import { useStreamingEvents as gt } from "../../hooks/use-streaming-events.js";
21
+ import { parseAuthError as yt } from "../../hooks/use-inkeep-api-client.js";
22
+ import { useInputNotification as vt } from "../../hooks/use-input-notification.js";
23
+ function bt(h) {
24
24
  const g = h.message ?? "";
25
25
  let s = Number(h.code) || Number(h.statusCode);
26
26
  if (Number.isNaN(s))
@@ -28,19 +28,19 @@ function At(h) {
28
28
  s = Number(JSON.parse(g).status);
29
29
  } catch {
30
30
  }
31
- const p = wt(s, { detail: g });
31
+ const p = yt(s, { detail: g });
32
32
  return p !== null ? p : s === 401 ? "session" : null;
33
33
  }
34
- const re = `Hmm..
34
+ const te = `Hmm..
35
35
 
36
- It seems I might be having some issues right now. Please clear the chat and try again.`, Wt = () => {
37
- const { baseSettings: h, aiChatSettings: g } = ut(), [s = "", p] = bt({
36
+ It seems I might be having some issues right now. Please clear the chat and try again.`, zt = () => {
37
+ const { baseSettings: h, aiChatSettings: g } = at(), [s = "", p] = ht({
38
38
  prop: g.conversationId,
39
39
  defaultProp: g.conversationId ?? ""
40
- }), Me = it(), Ee = lt(), Fe = ct(), { logEvent: y } = gt(), { setConversationId: Ne, emitToParent: E } = Ct(), ne = l(s);
41
- M(() => {
42
- const e = ne.current;
43
- ne.current = s, e !== s && y({
40
+ }), ke = rt(), xe = nt(), Me = ot(), { logEvent: y } = dt(), { setConversationId: Ee, emitToParent: x } = gt(), se = l(s);
41
+ k(() => {
42
+ const e = se.current;
43
+ se.current = s, e !== s && y({
44
44
  eventName: "chat_conversation_changed",
45
45
  properties: {
46
46
  conversationId: s,
@@ -48,79 +48,79 @@ It seems I might be having some issues right now. Please clear the chat and try
48
48
  }
49
49
  });
50
50
  }, [s, y]);
51
- const [w, F] = C(""), Pe = (e) => F(e.target.value), { shouldBypassCaptcha: oe, filters: ae, privacyPreferences: Oe, userProperties: z } = h, { authToken: N, isLoading: _e, refreshToken: ie } = mt(), le = !!h.getAuthToken, d = !!N, {
52
- onInputMessageChange: De,
53
- filters: ce,
54
- baseUrl: P,
55
- agentUrl: $e,
56
- context: ue,
57
- headers: pe,
58
- appId: S,
51
+ const [C, M] = D(""), Fe = (e) => M(e.target.value), { shouldBypassCaptcha: re, filters: ne, privacyPreferences: Ne, userProperties: B } = h, { authToken: E, isLoading: Pe, refreshToken: oe } = ut(), ae = !!h.getAuthToken, d = !!E, {
52
+ onInputMessageChange: Oe,
53
+ filters: ie,
54
+ baseUrl: F,
55
+ agentUrl: _e,
56
+ context: le,
57
+ headers: ce,
58
+ appId: w,
59
59
  apiKey: v,
60
- files: A
61
- } = g, Le = Me?.isOpen ?? Ee?.isOpen ?? Fe?.isOpen ?? !0, { getCaptchaHeader: I, invalidate: c } = pt({
62
- baseUrl: P,
63
- shouldBypassCaptcha: oe || !!v,
64
- shouldMakeInitialRequest: Le
65
- }), de = l(I);
66
- de.current = I;
67
- const fe = $e || `${P}/run/api/chat`, { sessionToken: H, refreshSession: q } = ft({
68
- baseUrl: P,
69
- appId: S,
60
+ files: S
61
+ } = g, De = ke?.isOpen ?? xe?.isOpen ?? Me?.isOpen ?? !0, { getCaptchaHeader: I, invalidate: c } = it({
62
+ baseUrl: F,
63
+ shouldBypassCaptcha: re || !!v,
64
+ shouldMakeInitialRequest: De
65
+ }), ue = l(I);
66
+ ue.current = I;
67
+ const pe = _e || `${F}/run/api/chat`, { sessionToken: U, refreshSession: z } = ct({
68
+ baseUrl: F,
69
+ appId: w,
70
70
  getCaptchaHeader: I,
71
71
  invalidateCaptcha: c,
72
- optOutAllAnalytics: Oe?.optOutAllAnalytics,
73
- enabled: !d && !_e
74
- }), { loadConversation: me } = ht({
75
- baseUrl: P,
76
- appId: S,
77
- authToken: v ?? (d ? N : H),
72
+ optOutAllAnalytics: Ne?.optOutAllAnalytics,
73
+ enabled: !d && !Pe
74
+ }), { loadConversation: de } = pt({
75
+ baseUrl: F,
76
+ appId: w,
77
+ authToken: v ?? (d ? E : U),
78
78
  getCaptchaHeader: I,
79
79
  invalidateCaptcha: c,
80
- refreshSession: v || d ? void 0 : q
81
- }), [Be, he] = C(!1), K = l(null);
82
- K.current = H;
83
- const W = l(null);
84
- W.current = N;
85
- const J = l(void 0);
86
- J.current = z && Object.keys(z).length > 0 ? JSON.stringify(z) : void 0;
87
- const b = l(0), ge = l(null), j = l(null), k = l(void 0), Ue = A?.map((e) => `${e.filename ?? ""}:${e.mediaType}:${e.url.length}:${e.url.slice(0, 64)}:${e.url.slice(-32)}`).join(`
80
+ refreshSession: v || d ? void 0 : z
81
+ }), [$e, fe] = D(!1), H = l(null);
82
+ H.current = U;
83
+ const q = l(null);
84
+ q.current = E;
85
+ const K = l(void 0);
86
+ K.current = B && Object.keys(B).length > 0 ? JSON.stringify(B) : void 0;
87
+ const b = l(0), me = l(null), J = l(null), A = l(void 0), Le = S?.map((e) => `${e.filename ?? ""}:${e.mediaType}:${e.url.length}:${e.url.slice(0, 64)}:${e.url.slice(-32)}`).join(`
88
88
  `) ?? "";
89
- M(() => {
90
- k.current = A?.length ? A : void 0;
91
- }, [Ue]);
92
- const ye = l(pe);
93
- ye.current = pe;
94
- const G = l(void 0);
95
- G.current = ae || ce ? JSON.stringify({ ...ae, ...ce }) : void 0;
96
- const ze = (e) => {
89
+ k(() => {
90
+ A.current = S?.length ? S : void 0;
91
+ }, [Le]);
92
+ const he = l(ce);
93
+ he.current = ce;
94
+ const j = l(void 0);
95
+ j.current = ne || ie ? JSON.stringify({ ...ne, ...ie }) : void 0;
96
+ const Be = (e) => {
97
97
  switch (e.code) {
98
98
  case 400:
99
99
  return e.message;
100
100
  case 401:
101
- return le ? "Authentication failed. Please try again." : re;
101
+ return ae ? "Authentication failed. Please try again." : te;
102
102
  case 403:
103
103
  return `There seems to be a configuration error. Please contact ${h.organizationDisplayName ?? "Administrator"}`;
104
104
  default:
105
- return re;
105
+ return te;
106
106
  }
107
- }, [He, R] = C([]), [qe, O] = C(null), [_, Q] = C([]), Ke = xe(
108
- () => new ot({
109
- api: fe,
107
+ }, [N, W] = D([]), Ue = Te(
108
+ () => new tt({
109
+ api: pe,
110
110
  headers: () => {
111
- const e = v ?? W.current ?? K.current;
111
+ const e = v ?? q.current ?? H.current;
112
112
  return {
113
113
  "x-inkeep-client-timezone": Intl.DateTimeFormat().resolvedOptions().timeZone,
114
114
  "x-inkeep-client-timestamp": (/* @__PURE__ */ new Date()).toISOString(),
115
- ...S ? { "x-inkeep-app-id": S } : {},
115
+ ...w ? { "x-inkeep-app-id": w } : {},
116
116
  ...e ? { Authorization: `Bearer ${e}` } : {},
117
- ...G.current ? { "inkeep-filters": G.current } : {},
118
- ...J.current ? { "x-inkeep-user-properties": J.current } : {},
119
- ...ye.current
117
+ ...j.current ? { "inkeep-filters": j.current } : {},
118
+ ...K.current ? { "x-inkeep-user-properties": K.current } : {},
119
+ ...he.current
120
120
  };
121
121
  },
122
122
  prepareSendMessagesRequest: async (e) => {
123
- const i = await de.current(), t = e.messages[e.messages.length - 1];
123
+ const i = await ue.current(), t = e.messages[e.messages.length - 1];
124
124
  return t || console.warn("[useInkeepChat] prepareSendMessagesRequest called with empty messages array"), {
125
125
  body: {
126
126
  ...e.body,
@@ -136,25 +136,25 @@ It seems I might be having some issues right now. Please clear the chat and try
136
136
  };
137
137
  },
138
138
  body: {
139
- requestContext: ue
139
+ requestContext: le
140
140
  }
141
141
  }),
142
- [fe, ue, S, v]
142
+ [pe, le, w, v]
143
143
  ), {
144
- messages: D,
145
- sendMessage: V,
146
- addToolApprovalResponse: Z,
147
- status: ve,
144
+ messages: P,
145
+ sendMessage: G,
146
+ addToolApprovalResponse: Q,
147
+ status: ge,
148
148
  setMessages: m,
149
- stop: $,
150
- error: X
151
- } = nt({
152
- transport: Ke,
149
+ stop: O,
150
+ error: V
151
+ } = et({
152
+ transport: Ue,
153
153
  onData(e) {
154
- E(e.type, e.data);
154
+ x(e.type, e.data);
155
155
  },
156
156
  async onFinish() {
157
- E("completion", { conversationId: s }), await y({
157
+ x("completion", { conversationId: s }), await y({
158
158
  eventName: "assistant_message_received",
159
159
  properties: {
160
160
  conversationId: s
@@ -168,28 +168,28 @@ It seems I might be having some issues right now. Please clear the chat and try
168
168
  },
169
169
  onError(e) {
170
170
  console.error("onError", { code: e.code, message: e.message });
171
- const i = oe || v ? null : At(e);
171
+ const i = re || v ? null : bt(e);
172
172
  if (i !== null && b.current < 1) {
173
173
  b.current++;
174
- const t = j.current, r = ge.current;
174
+ const t = J.current, r = me.current;
175
175
  (async () => {
176
- if (i === "session" && le) {
177
- const n = await ie();
176
+ if (i === "session" && ae) {
177
+ const n = await oe();
178
178
  if (!n) throw new Error("Auth token refresh failed");
179
- W.current = n;
179
+ q.current = n;
180
180
  } else if (i === "session") {
181
- const n = await q();
182
- n && (K.current = n);
181
+ const n = await z();
182
+ n && (H.current = n);
183
183
  } else
184
184
  c();
185
185
  if (t) {
186
- Z(t);
186
+ Q(t);
187
187
  return;
188
188
  }
189
189
  r && (m((n) => {
190
190
  let o = [...n];
191
191
  return o.at(-1)?.role === "assistant" && (o = o.slice(0, -1)), o.at(-1)?.role === "user" && (o = o.slice(0, -1)), o;
192
- }), V(
192
+ }), G(
193
193
  r.files?.length ? { parts: [{ type: "text", text: r.content }, ...r.files] } : { text: r.content },
194
194
  { body: r.body }
195
195
  ));
@@ -197,9 +197,9 @@ It seems I might be having some issues right now. Please clear the chat and try
197
197
  b.current = 0, c(), m((n) => {
198
198
  const o = [...n], f = o[o.length - 1];
199
199
  if (!f) return o;
200
- const u = re;
200
+ const u = te;
201
201
  return f.role === "user" ? o.push({
202
- id: U(16),
202
+ id: L(16),
203
203
  role: "assistant",
204
204
  parts: [{ type: "text", text: u }]
205
205
  }) : f.parts = [{ type: "text", text: u }], o;
@@ -216,9 +216,9 @@ It seems I might be having some issues right now. Please clear the chat and try
216
216
  }), m((t) => {
217
217
  const r = [...t], a = r[r.length - 1];
218
218
  if (a) {
219
- const n = ze(e);
219
+ const n = Be(e);
220
220
  a.role === "user" ? r.push({
221
- id: U(16),
221
+ id: L(16),
222
222
  role: "assistant",
223
223
  parts: [{ type: "text", text: n }]
224
224
  }) : a.parts = [{ type: "text", text: n }];
@@ -226,69 +226,69 @@ It seems I might be having some issues right now. Please clear the chat and try
226
226
  return r;
227
227
  });
228
228
  }
229
- }), be = l(d);
230
- M(() => {
231
- const e = be.current;
232
- be.current = d, e !== d && ($(), T(null), m([]), p(""), F(""), R([]), Q([]), O(null), c());
233
- }, [d, $, m, p, c]);
234
- const Ce = ve === "submitted", Y = ve === "streaming", We = xe(() => {
229
+ }), ye = l(d);
230
+ k(() => {
231
+ const e = ye.current;
232
+ ye.current = d, e !== d && (O(), R(null), m([]), p(""), M(""), W([]), c());
233
+ }, [d, O, m, p, c]);
234
+ const ve = ge === "submitted", Z = ge === "streaming", ze = Te(() => {
235
235
  const e = (a) => {
236
236
  if (!a || typeof a != "object") return !1;
237
237
  const n = a;
238
238
  return typeof n.type == "string" && n.type.startsWith("tool-");
239
- }, t = [...D ?? []].reverse().find((a) => a.role === "assistant");
239
+ }, t = [...P ?? []].reverse().find((a) => a.role === "assistant");
240
240
  if (!t) return !1;
241
241
  const r = t.parts?.at(-1);
242
- return !(!e(r) || r.state !== "output-available" || !r.approval?.id || Y);
243
- }, [D, Y]), we = Y || We, Se = Ce || we, Je = D.length === 0, ee = !w.trim() && _.length === 0 || Se, je = dt("(max-width: 768px)"), [Ge, T] = C(null);
244
- M(() => {
245
- X && T(X);
246
- }, [X]);
247
- const Qe = () => T(null), { inputNotification: Ve, showInputNotification: Ae, clearInputNotification: Ze } = St(), Ie = l(null);
248
- M(() => {
249
- De?.(w);
250
- }, [w]);
251
- const Xe = (e) => {
252
- e.key === "Enter" && !e.shiftKey && !ee && !e.nativeEvent.isComposing && (e.preventDefault(), te());
253
- }, te = async (e = w) => {
254
- if (ee && (!e || e.trim().length === 0) && _.length === 0) return;
255
- const i = _;
256
- Q([]), R([]), F(""), b.current = 0, j.current = null, await y({
242
+ return !(!e(r) || r.state !== "output-available" || !r.approval?.id || Z);
243
+ }, [P, Z]), be = Z || ze, Ce = ve || be, He = P.length === 0, X = !C.trim() && N.length === 0 || Ce, qe = lt("(max-width: 768px)"), [Ke, R] = D(null);
244
+ k(() => {
245
+ V && R(V);
246
+ }, [V]);
247
+ const Je = () => R(null), { inputNotification: je, showInputNotification: we, clearInputNotification: We } = vt(), Se = l(null);
248
+ k(() => {
249
+ Oe?.(C);
250
+ }, [C]);
251
+ const Ge = (e) => {
252
+ e.key === "Enter" && !e.shiftKey && !X && !e.nativeEvent.isComposing && (e.preventDefault(), Y());
253
+ }, Y = async (e = C) => {
254
+ if (X && (!e || e.trim().length === 0) && N.length === 0) return;
255
+ const i = N;
256
+ W([]), M(""), b.current = 0, J.current = null, await y({
257
257
  eventName: "user_message_submitted",
258
258
  properties: {
259
259
  conversationId: s
260
260
  }
261
261
  });
262
262
  let t = s;
263
- t || (t = `conv_${U(16)}`, p(t)), Ne(t);
264
- const r = k.current;
265
- k.current = void 0;
263
+ t || (t = `conv_${L(16)}`, p(t)), Ee(t);
264
+ const r = A.current;
265
+ A.current = void 0;
266
266
  let a, n;
267
267
  if (r?.length) {
268
268
  let o;
269
269
  try {
270
270
  o = await Promise.all(
271
271
  i.map((f) => {
272
- const u = Te(f);
273
- return new Promise((rt, Re) => {
274
- const x = new FileReader();
275
- x.onload = () => {
276
- if (typeof x.result != "string") {
277
- Re(new Error(`Failed to read file "${u.name}"`));
272
+ const u = Re(f);
273
+ return new Promise((Ye, Ae) => {
274
+ const T = new FileReader();
275
+ T.onload = () => {
276
+ if (typeof T.result != "string") {
277
+ Ae(new Error(`Failed to read file "${u.name}"`));
278
278
  return;
279
279
  }
280
- rt({
280
+ Ye({
281
281
  type: "file",
282
- url: x.result,
282
+ url: T.result,
283
283
  mediaType: u.type,
284
284
  filename: u.name
285
285
  });
286
- }, x.onerror = () => Re(new Error(`Failed to read file "${u.name}"`)), x.readAsDataURL(u);
286
+ }, T.onerror = () => Ae(new Error(`Failed to read file "${u.name}"`)), T.readAsDataURL(u);
287
287
  });
288
288
  })
289
289
  );
290
290
  } catch {
291
- Ae({
291
+ we({
292
292
  title: "Failed to attach files",
293
293
  message: "Could not read one or more files. Please try again."
294
294
  });
@@ -297,107 +297,102 @@ It seems I might be having some issues right now. Please clear the chat and try
297
297
  n = [...o, ...r], a = e.trim() ? { parts: [{ type: "text", text: e }, ...n] } : { parts: n };
298
298
  } else if (i.length > 0) {
299
299
  const o = new DataTransfer();
300
- for (const u of i) o.items.add(Te(u));
300
+ for (const u of i) o.items.add(Re(u));
301
301
  const f = o.files;
302
302
  a = e.trim() ? { text: e, files: f } : { files: f };
303
303
  } else
304
304
  a = { text: e };
305
- ge.current = {
305
+ me.current = {
306
306
  content: e,
307
307
  body: { conversationId: t },
308
308
  files: n
309
- }, V(a, {
309
+ }, G(a, {
310
310
  body: { conversationId: t }
311
311
  });
312
- }, Ye = B(
312
+ }, Qe = $(
313
313
  (e) => {
314
- b.current = 0, j.current = e, Z(e);
314
+ b.current = 0, J.current = e, Q(e);
315
315
  },
316
- [Z]
317
- ), se = B(() => {
318
- $().then(() => {
319
- E("aborted", { conversationId: s });
316
+ [Q]
317
+ ), ee = $(() => {
318
+ O().then(() => {
319
+ x("aborted", { conversationId: s });
320
320
  });
321
- }, [$, s, E]), ke = () => {
322
- Qe(), m([]), p(""), R([]), O(null), c(), k.current = A?.length ? A : void 0, y({
321
+ }, [O, s, x]), Ie = () => {
322
+ Je(), m([]), p(""), c(), A.current = S?.length ? S : void 0, y({
323
323
  eventName: "chat_clear_button_clicked",
324
324
  properties: {
325
325
  conversationId: s
326
326
  }
327
327
  });
328
- }, L = B(
328
+ }, _ = $(
329
329
  (e, i) => {
330
- T(null), m(i), p(e), R([]), O(null), c(), k.current = void 0;
330
+ R(null), m(i), p(e), c(), A.current = void 0;
331
331
  },
332
332
  [m, p, c]
333
- ), et = B(
333
+ ), Ve = $(
334
334
  async (e, i) => {
335
- se(), L(e, []), he(!0);
335
+ ee(), _(e, []), fe(!0);
336
336
  try {
337
- const t = await me(e, i), r = t?.[t.length - 1], a = t !== null && r?.role === "user" ? [...t, {
338
- id: U(16),
337
+ const t = await de(e, i), r = t?.[t.length - 1], a = t !== null && r?.role === "user" ? [...t, {
338
+ id: L(16),
339
339
  role: "assistant",
340
340
  parts: [{ type: "text", text: "This session was interrupted. Please check back in a few minutes or start a new conversation." }]
341
341
  }] : t;
342
- a !== null && L(e, a);
342
+ a !== null && _(e, a);
343
343
  } finally {
344
- i?.aborted || he(!1);
344
+ i?.aborted || fe(!1);
345
345
  }
346
346
  },
347
- [L, me, se]
348
- ), { openForm: tt } = yt(), st = vt();
349
- return at(g.chatFunctionsRef, () => ({
350
- submitMessage: te,
347
+ [_, de, ee]
348
+ ), { openForm: Ze } = ft(), Xe = mt();
349
+ return st(g.chatFunctionsRef, () => ({
350
+ submitMessage: Y,
351
351
  updateInputMessage(e) {
352
- F(e);
352
+ M(e);
353
353
  },
354
- clearChat: ke,
354
+ clearChat: Ie,
355
355
  openForm: (e) => {
356
- st?.setView("chat"), tt(e, void 0);
356
+ Xe?.setView("chat"), Ze(e, void 0);
357
357
  },
358
358
  focusInput: () => {
359
- Ie.current?.focus();
359
+ Se.current?.focus();
360
360
  }
361
361
  })), {
362
- messages: D,
363
- sendMessage: V,
364
- addToolApprovalResponse: Ye,
365
- isLoading: Ce,
366
- isStreaming: we,
367
- isBusy: Se,
368
- error: Ge,
369
- setError: T,
370
- isSubmitDisabled: ee,
371
- input: w,
372
- handleInputChange: Pe,
373
- handleInputKeyDown: Xe,
374
- handleSubmit: te,
375
- stop: se,
376
- clear: ke,
377
- inputRef: Ie,
378
- isMobile: je,
379
- // Additional state for attachments and workflow
380
- messageAttachments: He,
381
- setMessageAttachments: R,
382
- selectedWorkflow: qe,
383
- setSelectedWorkflow: O,
384
- files: _,
385
- setFiles: Q,
386
- isNewChat: Je,
362
+ messages: P,
363
+ sendMessage: G,
364
+ addToolApprovalResponse: Qe,
365
+ isLoading: ve,
366
+ isStreaming: be,
367
+ isBusy: Ce,
368
+ error: Ke,
369
+ setError: R,
370
+ isSubmitDisabled: X,
371
+ input: C,
372
+ handleInputChange: Fe,
373
+ handleInputKeyDown: Ge,
374
+ handleSubmit: Y,
375
+ stop: ee,
376
+ clear: Ie,
377
+ inputRef: Se,
378
+ isMobile: qe,
379
+ files: N,
380
+ setFiles: W,
381
+ isNewChat: He,
387
382
  conversationId: s,
388
- restoreSession: L,
389
- loadAndRestoreSession: et,
390
- isSessionLoading: Be,
391
- authToken: d ? N : H,
392
- refreshSession: d ? ie : q,
383
+ restoreSession: _,
384
+ loadAndRestoreSession: Ve,
385
+ isSessionLoading: $e,
386
+ authToken: d ? E : U,
387
+ refreshSession: d ? oe : z,
393
388
  getCaptchaHeader: I,
394
389
  invalidateCaptcha: c,
395
- inputNotification: Ve,
396
- showInputNotification: Ae,
397
- clearInputNotification: Ze
390
+ inputNotification: je,
391
+ showInputNotification: we,
392
+ clearInputNotification: We
398
393
  };
399
394
  };
400
395
  export {
401
- re as DEFAULT_ERROR_MESSAGE,
402
- Wt as useInkeepChat
396
+ te as DEFAULT_ERROR_MESSAGE,
397
+ zt as useInkeepChat
403
398
  };