@kite-copilot/chat-panel 0.2.27 → 0.2.28

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.
package/dist/auto.cjs CHANGED
@@ -1322,6 +1322,11 @@ function ChatPanel({
1322
1322
  const escalationWsRef = React4.useRef(null);
1323
1323
  const resetSession = React4.useCallback(() => {
1324
1324
  setSessionId(crypto.randomUUID());
1325
+ setIsEscalated(false);
1326
+ if (escalationWsRef.current) {
1327
+ escalationWsRef.current.close();
1328
+ escalationWsRef.current = null;
1329
+ }
1325
1330
  }, []);
1326
1331
  const streamIntervals = React4.useRef({});
1327
1332
  const isEmpty = messages.length === 0;
@@ -1555,12 +1560,21 @@ function ChatPanel({
1555
1560
  try {
1556
1561
  const data = JSON.parse(event.data);
1557
1562
  if (data.type === "agent_message") {
1558
- setMessages((prev) => [...prev, {
1559
- id: Date.now(),
1560
- role: "agent",
1561
- kind: "text",
1562
- content: data.content
1563
- }]);
1563
+ setMessages((prev) => {
1564
+ const content = data.content;
1565
+ const recentMessages = prev.slice(-5);
1566
+ const isDuplicate = recentMessages.some((m) => m.content === content);
1567
+ if (isDuplicate) {
1568
+ console.debug("[KiteChat] Skipping duplicate agent message");
1569
+ return prev;
1570
+ }
1571
+ return [...prev, {
1572
+ id: Date.now(),
1573
+ role: "agent",
1574
+ kind: "text",
1575
+ content
1576
+ }];
1577
+ });
1564
1578
  } else if (data.type === "error") {
1565
1579
  console.error("[KiteChat] Escalation error:", data.message);
1566
1580
  }
@@ -1605,7 +1619,7 @@ function ChatPanel({
1605
1619
  }
1606
1620
  }, [isEscalated, sessionId, connectToEscalationWs]);
1607
1621
  function streamAssistantMessage(messageId, fullText, followups) {
1608
- let textToStream = fullText;
1622
+ let textToStream = fullText || "";
1609
1623
  let extractedFollowups = followups;
1610
1624
  if (fullText && fullText.startsWith("{") && fullText.includes('"response"')) {
1611
1625
  try {
@@ -1905,6 +1919,12 @@ function ChatPanel({
1905
1919
  if (data.status === "thinking") {
1906
1920
  setPhase("thinking");
1907
1921
  setProgressSteps([{ message: data.message, completed: false }]);
1922
+ } else if (data.status === "searching") {
1923
+ setPhase("thinking");
1924
+ setProgressSteps([{ message: data.message || "Searching knowledge base...", completed: false }]);
1925
+ } else if (data.status === "evaluating") {
1926
+ setPhase("thinking");
1927
+ setProgressSteps([{ message: data.message || "Evaluating sources...", completed: false }]);
1908
1928
  } else if (data.status === "executing") {
1909
1929
  setPhase("executing");
1910
1930
  setProgressSteps((prev) => {
@@ -2006,7 +2026,7 @@ function ChatPanel({
2006
2026
  setMessages((prev) => [...prev, assistantMessage]);
2007
2027
  streamAssistantMessage(
2008
2028
  assistantMessageId,
2009
- agentResponse.response,
2029
+ agentResponse.response || "Action completed successfully.",
2010
2030
  agentResponse.followups
2011
2031
  );
2012
2032
  streamCompleted = true;
@@ -2028,7 +2048,7 @@ function ChatPanel({
2028
2048
  setMessages((prev) => [...prev, assistantMessage]);
2029
2049
  streamAssistantMessage(
2030
2050
  assistantMessageId,
2031
- agentResponse.response,
2051
+ agentResponse.response || agentResponse.message || "",
2032
2052
  agentResponse.followups
2033
2053
  );
2034
2054
  streamCompleted = true;
@@ -2064,6 +2084,10 @@ function ChatPanel({
2064
2084
  content: data.message || "You've been connected to our support queue. An agent will be with you shortly."
2065
2085
  };
2066
2086
  setMessages((prev) => [...prev, escalationMessage]);
2087
+ } else if (eventType === "token") {
2088
+ if (process.env.NODE_ENV === "development") {
2089
+ console.debug("[SSE] Token delta:", data.delta?.length || 0, "chars");
2090
+ }
2067
2091
  }
2068
2092
  } catch (parseError) {
2069
2093
  console.error("Failed to parse SSE event:", parseError);
package/dist/auto.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createKiteChat
3
- } from "./chunk-4KYS4INW.js";
3
+ } from "./chunk-LYZAMTWZ.js";
4
4
 
5
5
  // src/auto.ts
6
6
  function mountKiteChat(config) {
@@ -1321,6 +1321,11 @@ function ChatPanel({
1321
1321
  const escalationWsRef = React4.useRef(null);
1322
1322
  const resetSession = React4.useCallback(() => {
1323
1323
  setSessionId(crypto.randomUUID());
1324
+ setIsEscalated(false);
1325
+ if (escalationWsRef.current) {
1326
+ escalationWsRef.current.close();
1327
+ escalationWsRef.current = null;
1328
+ }
1324
1329
  }, []);
1325
1330
  const streamIntervals = React4.useRef({});
1326
1331
  const isEmpty = messages.length === 0;
@@ -1554,12 +1559,21 @@ function ChatPanel({
1554
1559
  try {
1555
1560
  const data = JSON.parse(event.data);
1556
1561
  if (data.type === "agent_message") {
1557
- setMessages((prev) => [...prev, {
1558
- id: Date.now(),
1559
- role: "agent",
1560
- kind: "text",
1561
- content: data.content
1562
- }]);
1562
+ setMessages((prev) => {
1563
+ const content = data.content;
1564
+ const recentMessages = prev.slice(-5);
1565
+ const isDuplicate = recentMessages.some((m) => m.content === content);
1566
+ if (isDuplicate) {
1567
+ console.debug("[KiteChat] Skipping duplicate agent message");
1568
+ return prev;
1569
+ }
1570
+ return [...prev, {
1571
+ id: Date.now(),
1572
+ role: "agent",
1573
+ kind: "text",
1574
+ content
1575
+ }];
1576
+ });
1563
1577
  } else if (data.type === "error") {
1564
1578
  console.error("[KiteChat] Escalation error:", data.message);
1565
1579
  }
@@ -1604,7 +1618,7 @@ function ChatPanel({
1604
1618
  }
1605
1619
  }, [isEscalated, sessionId, connectToEscalationWs]);
1606
1620
  function streamAssistantMessage(messageId, fullText, followups) {
1607
- let textToStream = fullText;
1621
+ let textToStream = fullText || "";
1608
1622
  let extractedFollowups = followups;
1609
1623
  if (fullText && fullText.startsWith("{") && fullText.includes('"response"')) {
1610
1624
  try {
@@ -1904,6 +1918,12 @@ function ChatPanel({
1904
1918
  if (data.status === "thinking") {
1905
1919
  setPhase("thinking");
1906
1920
  setProgressSteps([{ message: data.message, completed: false }]);
1921
+ } else if (data.status === "searching") {
1922
+ setPhase("thinking");
1923
+ setProgressSteps([{ message: data.message || "Searching knowledge base...", completed: false }]);
1924
+ } else if (data.status === "evaluating") {
1925
+ setPhase("thinking");
1926
+ setProgressSteps([{ message: data.message || "Evaluating sources...", completed: false }]);
1907
1927
  } else if (data.status === "executing") {
1908
1928
  setPhase("executing");
1909
1929
  setProgressSteps((prev) => {
@@ -2005,7 +2025,7 @@ function ChatPanel({
2005
2025
  setMessages((prev) => [...prev, assistantMessage]);
2006
2026
  streamAssistantMessage(
2007
2027
  assistantMessageId,
2008
- agentResponse.response,
2028
+ agentResponse.response || "Action completed successfully.",
2009
2029
  agentResponse.followups
2010
2030
  );
2011
2031
  streamCompleted = true;
@@ -2027,7 +2047,7 @@ function ChatPanel({
2027
2047
  setMessages((prev) => [...prev, assistantMessage]);
2028
2048
  streamAssistantMessage(
2029
2049
  assistantMessageId,
2030
- agentResponse.response,
2050
+ agentResponse.response || agentResponse.message || "",
2031
2051
  agentResponse.followups
2032
2052
  );
2033
2053
  streamCompleted = true;
@@ -2063,6 +2083,10 @@ function ChatPanel({
2063
2083
  content: data.message || "You've been connected to our support queue. An agent will be with you shortly."
2064
2084
  };
2065
2085
  setMessages((prev) => [...prev, escalationMessage]);
2086
+ } else if (eventType === "token") {
2087
+ if (process.env.NODE_ENV === "development") {
2088
+ console.debug("[SSE] Token delta:", data.delta?.length || 0, "chars");
2089
+ }
2066
2090
  }
2067
2091
  } catch (parseError) {
2068
2092
  console.error("Failed to parse SSE event:", parseError);