@inkeep/agents-ui 0.15.5 → 0.15.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const X=require("@ai-sdk/react"),Y=require("ai"),n=require("react"),Z=require("../../providers/config-provider.cjs"),ee=require("../../hooks/use-media-query.cjs"),R=require("../../utils/generate-uid.cjs"),te=require("../../providers/base-events-provider.cjs"),se=require("../../providers/chat-form-provider.cjs"),ne=require("../../providers/widget-provider.cjs"),re=require("@radix-ui/react-use-controllable-state"),ae=require("../../hooks/use-streaming-events.cjs"),x=`Hmm..
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Y=require("@ai-sdk/react"),Z=require("ai"),s=require("react"),ee=require("../../providers/config-provider.cjs"),te=require("../../hooks/use-media-query.cjs"),k=require("../../utils/generate-uid.cjs"),se=require("../../providers/base-events-provider.cjs"),ne=require("../../providers/chat-form-provider.cjs"),re=require("../../providers/widget-provider.cjs"),ae=require("@radix-ui/react-use-controllable-state"),oe=require("../../hooks/use-streaming-events.cjs"),A=`Hmm..
2
2
 
3
- It seems I might be having some issues right now. Please clear the chat and try again.`,oe=()=>{const{baseSettings:v,aiChatSettings:o}=Z.useInkeepConfig(),[s="",E]=re.useControllableState({prop:o.conversationId,defaultProp:o.conversationId??""}),{logEvent:i}=te.useBaseEvents(),{setConversationId:P,emitToParent:u}=ae.useStreamingEvents(),[a,l]=n.useState(""),k=e=>l(e.target.value),{filters:S}=v,{onInputMessageChange:A,filters:b,agentUrl:D,context:N,headers:U,apiKey:y}=o,T=e=>{switch(e.code){case 400:return e.message;case 403:return`There seems to be a configuration error. Please contact ${v.organizationDisplayName??"Administrator"}`;default:return x}},[O,d]=n.useState([]),[K,C]=n.useState(null),{messages:g,sendMessage:L,status:I,setMessages:w,stop:W,error:p}=X.useChat({transport:new Y.DefaultChatTransport({api:D,headers:{...y?{Authorization:`Bearer ${y}`}:{},...U},body:{requestContext:N}}),onData(e){u(e.type,e.data)},async onFinish(){u("completion",{conversationId:s}),await i({eventName:"assistant_message_received",properties:{conversationId:s}}),i({eventName:"assistant_answer_displayed",properties:{conversationId:s}})},onError(e){console.log("onError",e.message),w(c=>{const r=[...c],t=r[r.length-1];if(t){const F=T(e);t.role==="user"?r.push({id:R.generateUid(16),role:"assistant",parts:[{type:"text",text:F}]}):t.parts=[{type:"text",text:F}]}return r})}}),M=I==="submitted",$=I==="streaming",z=g.length===0,m=!a.trim()||M,B=ee.useMediaQuery("(max-width: 768px)"),[G,h]=n.useState(null);n.useEffect(()=>{p&&h(p)},[p]);const H=()=>h(null),_=n.useRef(null);n.useEffect(()=>{A?.(a)},[a]);const Q=e=>{e.key==="Enter"&&!e.shiftKey&&!m&&!e.nativeEvent.isComposing&&(e.preventDefault(),f())},f=async(e=a)=>{if(m&&(!e||e.trim().length===0))return;d([]),l(""),await i({eventName:"user_message_submitted",properties:{conversationId:s}});const c=S||b?JSON.stringify({...S,...b}):void 0,r={};c&&(r["inkeep-filters"]=c);let t=s;t||(t=`conv_${R.generateUid(16)}`,E(t)),P(t),L({text:e},{headers:r,body:{conversationId:t}})},j=()=>{W().then(()=>{u("aborted",{conversationId:s})})},q=()=>{H(),w([]),E(""),d([]),C(null),i({eventName:"chat_clear_button_clicked",properties:{conversationId:s}})},{openForm:J}=se.useChatForm(),V=ne.useWidget();return n.useImperativeHandle(o.chatFunctionsRef,()=>({submitMessage:f,updateInputMessage(e){l(e)},clearChat:q,openForm:e=>{V?.setView("chat"),J(e,void 0)},focusInput:()=>{_.current?.focus()}})),{messages:g,isLoading:M,isStreaming:$,error:G,setError:h,isSubmitDisabled:m,input:a,handleInputChange:k,handleInputKeyDown:Q,handleSubmit:f,stop:j,clear:q,isEmpty:g.length===0,inputRef:_,isMobile:B,messageAttachments:O,setMessageAttachments:d,selectedWorkflow:K,setSelectedWorkflow:C,isNewChat:z,conversationId:s}};exports.DEFAULT_ERROR_MESSAGE=x;exports.useInkeepChat=oe;
3
+ It seems I might be having some issues right now. Please clear the chat and try again.`,ie=()=>{const{baseSettings:C,aiChatSettings:o}=ee.useInkeepConfig(),[n="",b]=ae.useControllableState({prop:o.conversationId,defaultProp:o.conversationId??""}),{logEvent:i}=se.useBaseEvents(),{setConversationId:D,emitToParent:u}=oe.useStreamingEvents(),[a,l]=s.useState(""),N=e=>l(e.target.value),{filters:y}=C,{onInputMessageChange:U,filters:I,agentUrl:M,context:d,headers:g,apiKey:p}=o,T=e=>{switch(e.code){case 400:return e.message;case 403:return`There seems to be a configuration error. Please contact ${C.organizationDisplayName??"Administrator"}`;default:return A}},[O,m]=s.useState([]),[H,w]=s.useState(null),K=s.useMemo(()=>new Z.DefaultChatTransport({api:M,headers:{...p?{Authorization:`Bearer ${p}`}:{},...g},body:{requestContext:d}}),[M,p,g,d]),{messages:h,sendMessage:L,status:q,setMessages:_,stop:W,error:f}=Y.useChat({transport:K,onData(e){u(e.type,e.data)},async onFinish(){u("completion",{conversationId:n}),await i({eventName:"assistant_message_received",properties:{conversationId:n}}),i({eventName:"assistant_answer_displayed",properties:{conversationId:n}})},onError(e){console.log("onError",e.message),_(c=>{const r=[...c],t=r[r.length-1];if(t){const P=T(e);t.role==="user"?r.push({id:k.generateUid(16),role:"assistant",parts:[{type:"text",text:P}]}):t.parts=[{type:"text",text:P}]}return r})}}),x=q==="submitted",$=q==="streaming",z=h.length===0,v=!a.trim()||x,B=te.useMediaQuery("(max-width: 768px)"),[G,E]=s.useState(null);s.useEffect(()=>{f&&E(f)},[f]);const Q=()=>E(null),F=s.useRef(null);s.useEffect(()=>{U?.(a)},[a]);const j=e=>{e.key==="Enter"&&!e.shiftKey&&!v&&!e.nativeEvent.isComposing&&(e.preventDefault(),S())},S=async(e=a)=>{if(v&&(!e||e.trim().length===0))return;m([]),l(""),await i({eventName:"user_message_submitted",properties:{conversationId:n}});const c=y||I?JSON.stringify({...y,...I}):void 0,r={...g};c&&(r["inkeep-filters"]=c);let t=n;t||(t=`conv_${k.generateUid(16)}`,b(t)),D(t),L({text:e},{headers:r,body:{conversationId:t,requestContext:d}})},J=()=>{W().then(()=>{u("aborted",{conversationId:n})})},R=()=>{Q(),_([]),b(""),m([]),w(null),i({eventName:"chat_clear_button_clicked",properties:{conversationId:n}})},{openForm:V}=ne.useChatForm(),X=re.useWidget();return s.useImperativeHandle(o.chatFunctionsRef,()=>({submitMessage:S,updateInputMessage(e){l(e)},clearChat:R,openForm:e=>{X?.setView("chat"),V(e,void 0)},focusInput:()=>{F.current?.focus()}})),{messages:h,isLoading:x,isStreaming:$,error:G,setError:E,isSubmitDisabled:v,input:a,handleInputChange:N,handleInputKeyDown:j,handleSubmit:S,stop:J,clear:R,isEmpty:h.length===0,inputRef:F,isMobile:B,messageAttachments:O,setMessageAttachments:m,selectedWorkflow:H,setSelectedWorkflow:w,isNewChat:z,conversationId:n}};exports.DEFAULT_ERROR_MESSAGE=A;exports.useInkeepChat=ie;
@@ -1,58 +1,61 @@
1
1
  "use client";
2
- import { useChat as X } from "@ai-sdk/react";
3
- import { DefaultChatTransport as Y } from "ai";
4
- import { useState as c, useEffect as k, useRef as Z, useImperativeHandle as ee } from "react";
5
- import { useInkeepConfig as te } from "../../providers/config-provider.js";
6
- import { useMediaQuery as se } from "../../hooks/use-media-query.js";
7
- import { generateUid as D } from "../../utils/generate-uid.js";
8
- import { useBaseEvents as ne } from "../../providers/base-events-provider.js";
9
- import { useChatForm as oe } from "../../providers/chat-form-provider.js";
10
- import { useWidget as re } from "../../providers/widget-provider.js";
11
- import { useControllableState as ae } from "@radix-ui/react-use-controllable-state";
12
- import { useStreamingEvents as ie } from "../../hooks/use-streaming-events.js";
13
- const ce = `Hmm..
2
+ import { useChat as Y } from "@ai-sdk/react";
3
+ import { DefaultChatTransport as Z } from "ai";
4
+ import { useState as c, useMemo as ee, useEffect as A, useRef as te, useImperativeHandle as se } from "react";
5
+ import { useInkeepConfig as ne } from "../../providers/config-provider.js";
6
+ import { useMediaQuery as oe } from "../../hooks/use-media-query.js";
7
+ import { generateUid as R } from "../../utils/generate-uid.js";
8
+ import { useBaseEvents as re } from "../../providers/base-events-provider.js";
9
+ import { useChatForm as ae } from "../../providers/chat-form-provider.js";
10
+ import { useWidget as ie } from "../../providers/widget-provider.js";
11
+ import { useControllableState as ce } from "@radix-ui/react-use-controllable-state";
12
+ import { useStreamingEvents as me } from "../../hooks/use-streaming-events.js";
13
+ const ue = `Hmm..
14
14
 
15
- It seems I might be having some issues right now. Please clear the chat and try again.`, ye = () => {
16
- const { baseSettings: v, aiChatSettings: r } = te(), [s = "", I] = ae({
15
+ It seems I might be having some issues right now. Please clear the chat and try again.`, be = () => {
16
+ const { baseSettings: y, aiChatSettings: r } = ne(), [s = "", E] = ce({
17
17
  prop: r.conversationId,
18
18
  defaultProp: r.conversationId ?? ""
19
- }), { logEvent: a } = ne(), { setConversationId: N, emitToParent: m } = ie(), [o, l] = c(""), A = (e) => l(e.target.value), {
19
+ }), { logEvent: a } = re(), { setConversationId: P, emitToParent: m } = me(), [o, u] = c(""), T = (e) => u(e.target.value), {
20
20
  /* shouldBypassCaptcha, */
21
- filters: C
22
- } = v, {
23
- onInputMessageChange: R,
24
- filters: y,
25
- agentUrl: P,
26
- context: T,
27
- headers: K,
28
- apiKey: E
29
- } = r, U = (e) => {
21
+ filters: b
22
+ } = y, {
23
+ onInputMessageChange: q,
24
+ filters: w,
25
+ agentUrl: S,
26
+ context: l,
27
+ headers: p,
28
+ apiKey: g
29
+ } = r, H = (e) => {
30
30
  switch (e.code) {
31
31
  case 400:
32
32
  return e.message;
33
33
  case 403:
34
- return `There seems to be a configuration error. Please contact ${v.organizationDisplayName ?? "Administrator"}`;
34
+ return `There seems to be a configuration error. Please contact ${y.organizationDisplayName ?? "Administrator"}`;
35
35
  default:
36
- return ce;
36
+ return ue;
37
37
  }
38
- }, [W, p] = c([]), [$, b] = c(null), {
39
- messages: u,
40
- sendMessage: z,
41
- status: w,
42
- setMessages: S,
43
- stop: B,
44
- error: g
45
- } = X({
46
- transport: new Y({
47
- api: P,
38
+ }, [K, d] = c([]), [U, M] = c(null), W = ee(
39
+ () => new Z({
40
+ api: S,
48
41
  headers: {
49
- ...E ? { Authorization: `Bearer ${E}` } : {},
50
- ...K
42
+ ...g ? { Authorization: `Bearer ${g}` } : {},
43
+ ...p
51
44
  },
52
45
  body: {
53
- requestContext: T
46
+ requestContext: l
54
47
  }
55
48
  }),
49
+ [S, g, p, l]
50
+ ), {
51
+ messages: h,
52
+ sendMessage: $,
53
+ status: _,
54
+ setMessages: x,
55
+ stop: z,
56
+ error: f
57
+ } = Y({
58
+ transport: W,
56
59
  onData(e) {
57
60
  m(e.type, e.data);
58
61
  },
@@ -70,106 +73,107 @@ It seems I might be having some issues right now. Please clear the chat and try
70
73
  });
71
74
  },
72
75
  onError(e) {
73
- console.log("onError", e.message), S((i) => {
76
+ console.log("onError", e.message), x((i) => {
74
77
  const n = [...i], t = n[n.length - 1];
75
78
  if (t) {
76
- const F = U(e);
79
+ const N = H(e);
77
80
  t.role === "user" ? n.push({
78
- id: D(16),
81
+ id: R(16),
79
82
  role: "assistant",
80
- parts: [{ type: "text", text: F }]
81
- }) : t.parts = [{ type: "text", text: F }];
83
+ parts: [{ type: "text", text: N }]
84
+ }) : t.parts = [{ type: "text", text: N }];
82
85
  }
83
86
  return n;
84
87
  });
85
88
  }
86
- }), M = w === "submitted", H = w === "streaming", L = u.length === 0, d = !o.trim() || M, O = se("(max-width: 768px)"), [q, h] = c(null);
87
- k(() => {
88
- g && h(g);
89
- }, [g]);
90
- const G = () => h(null), _ = Z(null);
91
- k(() => {
92
- R?.(o);
89
+ }), F = _ === "submitted", B = _ === "streaming", L = h.length === 0, v = !o.trim() || F, O = oe("(max-width: 768px)"), [G, C] = c(null);
90
+ A(() => {
91
+ f && C(f);
92
+ }, [f]);
93
+ const J = () => C(null), k = te(null);
94
+ A(() => {
95
+ q?.(o);
93
96
  }, [o]);
94
- const J = (e) => {
95
- e.key === "Enter" && !e.shiftKey && !d && !e.nativeEvent.isComposing && (e.preventDefault(), f());
96
- }, f = async (e = o) => {
97
- if (d && (!e || e.trim().length === 0)) return;
98
- p([]), l(""), await a({
97
+ const Q = (e) => {
98
+ e.key === "Enter" && !e.shiftKey && !v && !e.nativeEvent.isComposing && (e.preventDefault(), I());
99
+ }, I = async (e = o) => {
100
+ if (v && (!e || e.trim().length === 0)) return;
101
+ d([]), u(""), await a({
99
102
  eventName: "user_message_submitted",
100
103
  properties: {
101
104
  conversationId: s
102
105
  }
103
106
  });
104
- const i = C || y ? JSON.stringify({
105
- ...C,
106
- ...y
107
- }) : void 0, n = {};
107
+ const i = b || w ? JSON.stringify({
108
+ ...b,
109
+ ...w
110
+ }) : void 0, n = {
111
+ ...p
112
+ };
108
113
  i && (n["inkeep-filters"] = i);
109
114
  let t = s;
110
- t || (t = `conv_${D(16)}`, I(t)), N(t), z(
111
- // { ...userMessage, files },
112
- // { ...userMessage, },
115
+ t || (t = `conv_${R(16)}`, E(t)), P(t), $(
113
116
  {
114
117
  text: e
115
118
  },
116
119
  {
117
120
  headers: n,
118
121
  body: {
119
- conversationId: t
122
+ conversationId: t,
123
+ requestContext: l
120
124
  }
121
125
  }
122
126
  );
123
- }, Q = () => {
124
- B().then(() => {
127
+ }, V = () => {
128
+ z().then(() => {
125
129
  m("aborted", { conversationId: s });
126
130
  });
127
- }, x = () => {
128
- G(), S([]), I(""), p([]), b(null), a({
131
+ }, D = () => {
132
+ J(), x([]), E(""), d([]), M(null), a({
129
133
  eventName: "chat_clear_button_clicked",
130
134
  properties: {
131
135
  conversationId: s
132
136
  }
133
137
  });
134
- }, { openForm: V } = oe(), j = re();
135
- return ee(r.chatFunctionsRef, () => ({
136
- submitMessage: f,
138
+ }, { openForm: j } = ae(), X = ie();
139
+ return se(r.chatFunctionsRef, () => ({
140
+ submitMessage: I,
137
141
  updateInputMessage(e) {
138
- l(e);
142
+ u(e);
139
143
  },
140
- clearChat: x,
144
+ clearChat: D,
141
145
  openForm: (e) => {
142
- j?.setView("chat"), V(e, void 0);
146
+ X?.setView("chat"), j(e, void 0);
143
147
  },
144
148
  focusInput: () => {
145
- _.current?.focus();
149
+ k.current?.focus();
146
150
  }
147
151
  })), {
148
- messages: u,
149
- isLoading: M,
150
- isStreaming: H,
151
- error: q,
152
- setError: h,
153
- isSubmitDisabled: d,
152
+ messages: h,
153
+ isLoading: F,
154
+ isStreaming: B,
155
+ error: G,
156
+ setError: C,
157
+ isSubmitDisabled: v,
154
158
  input: o,
155
- handleInputChange: A,
156
- handleInputKeyDown: J,
157
- handleSubmit: f,
158
- stop: Q,
159
- clear: x,
160
- isEmpty: u.length === 0,
161
- inputRef: _,
159
+ handleInputChange: T,
160
+ handleInputKeyDown: Q,
161
+ handleSubmit: I,
162
+ stop: V,
163
+ clear: D,
164
+ isEmpty: h.length === 0,
165
+ inputRef: k,
162
166
  isMobile: O,
163
167
  // Additional state for attachments and workflow
164
- messageAttachments: W,
165
- setMessageAttachments: p,
166
- selectedWorkflow: $,
167
- setSelectedWorkflow: b,
168
+ messageAttachments: K,
169
+ setMessageAttachments: d,
170
+ selectedWorkflow: U,
171
+ setSelectedWorkflow: M,
168
172
  isNewChat: L,
169
173
  conversationId: s
170
174
  };
171
175
  };
172
176
  export {
173
- ce as DEFAULT_ERROR_MESSAGE,
174
- ye as useInkeepChat
177
+ ue as DEFAULT_ERROR_MESSAGE,
178
+ be as useInkeepChat
175
179
  };
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("react/jsx-runtime"),t=require("react"),l=require("./config-provider.cjs"),a=t.createContext(void 0),p=({children:e})=>{const{baseSettings:s,componentType:n}=l.useInkeepConfig(),{tags:o,analyticsProperties:r}=s,i=t.useMemo(()=>({widgetLibraryVersion:"0.15.4",componentType:n,tags:o}),[n,o]),u={logEvent:t.useCallback(async c=>{const v={...i,...c.properties,...r},d={eventName:c.eventName,properties:v};return s.onEvent?.(d)},[s,i,r])};return E.jsx(a.Provider,{value:u,children:e})},g=()=>{const e=t.useContext(a);if(!e)throw new Error("useBaseEvents must be used within a BaseEventsProvider");return e};exports.BaseEventsProvider=p;exports.useBaseEvents=g;
1
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const E=require("react/jsx-runtime"),t=require("react"),l=require("./config-provider.cjs"),a=t.createContext(void 0),p=({children:e})=>{const{baseSettings:s,componentType:n}=l.useInkeepConfig(),{tags:o,analyticsProperties:r}=s,i=t.useMemo(()=>({widgetLibraryVersion:"0.15.5",componentType:n,tags:o}),[n,o]),u={logEvent:t.useCallback(async c=>{const v={...i,...c.properties,...r},d={eventName:c.eventName,properties:v};return s.onEvent?.(d)},[s,i,r])};return E.jsx(a.Provider,{value:u,children:e})},g=()=>{const e=t.useContext(a);if(!e)throw new Error("useBaseEvents must be used within a BaseEventsProvider");return e};exports.BaseEventsProvider=p;exports.useBaseEvents=g;
@@ -5,7 +5,7 @@ import { useInkeepConfig as g } from "./config-provider.js";
5
5
  const a = d(void 0), P = ({ children: e }) => {
6
6
  const { baseSettings: t, componentType: o } = g(), { tags: s, analyticsProperties: n } = t, r = u(
7
7
  () => ({
8
- widgetLibraryVersion: "0.15.4",
8
+ widgetLibraryVersion: "0.15.5",
9
9
  componentType: o,
10
10
  tags: s
11
11
  }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-ui",
3
- "version": "0.15.5",
3
+ "version": "0.15.6",
4
4
  "description": "",
5
5
  "homepage": "",
6
6
  "repository": {