@kite-copilot/chat-panel 0.2.27 → 0.2.29
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 +35 -9
- package/dist/auto.js +1 -1
- package/dist/{chunk-4KYS4INW.js → chunk-DGU3KTFD.js} +35 -9
- package/dist/embed.global.js +11 -11
- package/dist/index.cjs +35 -9
- package/dist/index.js +1 -1
- package/package.json +1 -1
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,23 @@ function ChatPanel({
|
|
|
1555
1560
|
try {
|
|
1556
1561
|
const data = JSON.parse(event.data);
|
|
1557
1562
|
if (data.type === "agent_message") {
|
|
1558
|
-
setMessages((prev) =>
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1563
|
+
setMessages((prev) => {
|
|
1564
|
+
const content = data.content;
|
|
1565
|
+
const messageId = data.message_id;
|
|
1566
|
+
const isDuplicate = messageId ? prev.some((m) => m.serverMessageId === messageId) : prev.slice(-5).some((m) => m.content === content);
|
|
1567
|
+
if (isDuplicate) {
|
|
1568
|
+
console.debug("[KiteChat] Skipping duplicate agent message:", messageId || content.slice(0, 30));
|
|
1569
|
+
return prev;
|
|
1570
|
+
}
|
|
1571
|
+
return [...prev, {
|
|
1572
|
+
id: Date.now(),
|
|
1573
|
+
role: "agent",
|
|
1574
|
+
kind: "text",
|
|
1575
|
+
content,
|
|
1576
|
+
serverMessageId: messageId
|
|
1577
|
+
// Store server ID for deduplication
|
|
1578
|
+
}];
|
|
1579
|
+
});
|
|
1564
1580
|
} else if (data.type === "error") {
|
|
1565
1581
|
console.error("[KiteChat] Escalation error:", data.message);
|
|
1566
1582
|
}
|
|
@@ -1605,7 +1621,7 @@ function ChatPanel({
|
|
|
1605
1621
|
}
|
|
1606
1622
|
}, [isEscalated, sessionId, connectToEscalationWs]);
|
|
1607
1623
|
function streamAssistantMessage(messageId, fullText, followups) {
|
|
1608
|
-
let textToStream = fullText;
|
|
1624
|
+
let textToStream = fullText || "";
|
|
1609
1625
|
let extractedFollowups = followups;
|
|
1610
1626
|
if (fullText && fullText.startsWith("{") && fullText.includes('"response"')) {
|
|
1611
1627
|
try {
|
|
@@ -1905,6 +1921,12 @@ function ChatPanel({
|
|
|
1905
1921
|
if (data.status === "thinking") {
|
|
1906
1922
|
setPhase("thinking");
|
|
1907
1923
|
setProgressSteps([{ message: data.message, completed: false }]);
|
|
1924
|
+
} else if (data.status === "searching") {
|
|
1925
|
+
setPhase("thinking");
|
|
1926
|
+
setProgressSteps([{ message: data.message || "Searching knowledge base...", completed: false }]);
|
|
1927
|
+
} else if (data.status === "evaluating") {
|
|
1928
|
+
setPhase("thinking");
|
|
1929
|
+
setProgressSteps([{ message: data.message || "Evaluating sources...", completed: false }]);
|
|
1908
1930
|
} else if (data.status === "executing") {
|
|
1909
1931
|
setPhase("executing");
|
|
1910
1932
|
setProgressSteps((prev) => {
|
|
@@ -2006,7 +2028,7 @@ function ChatPanel({
|
|
|
2006
2028
|
setMessages((prev) => [...prev, assistantMessage]);
|
|
2007
2029
|
streamAssistantMessage(
|
|
2008
2030
|
assistantMessageId,
|
|
2009
|
-
agentResponse.response,
|
|
2031
|
+
agentResponse.response || "Action completed successfully.",
|
|
2010
2032
|
agentResponse.followups
|
|
2011
2033
|
);
|
|
2012
2034
|
streamCompleted = true;
|
|
@@ -2028,7 +2050,7 @@ function ChatPanel({
|
|
|
2028
2050
|
setMessages((prev) => [...prev, assistantMessage]);
|
|
2029
2051
|
streamAssistantMessage(
|
|
2030
2052
|
assistantMessageId,
|
|
2031
|
-
agentResponse.response,
|
|
2053
|
+
agentResponse.response || agentResponse.message || "",
|
|
2032
2054
|
agentResponse.followups
|
|
2033
2055
|
);
|
|
2034
2056
|
streamCompleted = true;
|
|
@@ -2064,6 +2086,10 @@ function ChatPanel({
|
|
|
2064
2086
|
content: data.message || "You've been connected to our support queue. An agent will be with you shortly."
|
|
2065
2087
|
};
|
|
2066
2088
|
setMessages((prev) => [...prev, escalationMessage]);
|
|
2089
|
+
} else if (eventType === "token") {
|
|
2090
|
+
if (process.env.NODE_ENV === "development") {
|
|
2091
|
+
console.debug("[SSE] Token delta:", data.delta?.length || 0, "chars");
|
|
2092
|
+
}
|
|
2067
2093
|
}
|
|
2068
2094
|
} catch (parseError) {
|
|
2069
2095
|
console.error("Failed to parse SSE event:", parseError);
|
package/dist/auto.js
CHANGED
|
@@ -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,23 @@ function ChatPanel({
|
|
|
1554
1559
|
try {
|
|
1555
1560
|
const data = JSON.parse(event.data);
|
|
1556
1561
|
if (data.type === "agent_message") {
|
|
1557
|
-
setMessages((prev) =>
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1562
|
+
setMessages((prev) => {
|
|
1563
|
+
const content = data.content;
|
|
1564
|
+
const messageId = data.message_id;
|
|
1565
|
+
const isDuplicate = messageId ? prev.some((m) => m.serverMessageId === messageId) : prev.slice(-5).some((m) => m.content === content);
|
|
1566
|
+
if (isDuplicate) {
|
|
1567
|
+
console.debug("[KiteChat] Skipping duplicate agent message:", messageId || content.slice(0, 30));
|
|
1568
|
+
return prev;
|
|
1569
|
+
}
|
|
1570
|
+
return [...prev, {
|
|
1571
|
+
id: Date.now(),
|
|
1572
|
+
role: "agent",
|
|
1573
|
+
kind: "text",
|
|
1574
|
+
content,
|
|
1575
|
+
serverMessageId: messageId
|
|
1576
|
+
// Store server ID for deduplication
|
|
1577
|
+
}];
|
|
1578
|
+
});
|
|
1563
1579
|
} else if (data.type === "error") {
|
|
1564
1580
|
console.error("[KiteChat] Escalation error:", data.message);
|
|
1565
1581
|
}
|
|
@@ -1604,7 +1620,7 @@ function ChatPanel({
|
|
|
1604
1620
|
}
|
|
1605
1621
|
}, [isEscalated, sessionId, connectToEscalationWs]);
|
|
1606
1622
|
function streamAssistantMessage(messageId, fullText, followups) {
|
|
1607
|
-
let textToStream = fullText;
|
|
1623
|
+
let textToStream = fullText || "";
|
|
1608
1624
|
let extractedFollowups = followups;
|
|
1609
1625
|
if (fullText && fullText.startsWith("{") && fullText.includes('"response"')) {
|
|
1610
1626
|
try {
|
|
@@ -1904,6 +1920,12 @@ function ChatPanel({
|
|
|
1904
1920
|
if (data.status === "thinking") {
|
|
1905
1921
|
setPhase("thinking");
|
|
1906
1922
|
setProgressSteps([{ message: data.message, completed: false }]);
|
|
1923
|
+
} else if (data.status === "searching") {
|
|
1924
|
+
setPhase("thinking");
|
|
1925
|
+
setProgressSteps([{ message: data.message || "Searching knowledge base...", completed: false }]);
|
|
1926
|
+
} else if (data.status === "evaluating") {
|
|
1927
|
+
setPhase("thinking");
|
|
1928
|
+
setProgressSteps([{ message: data.message || "Evaluating sources...", completed: false }]);
|
|
1907
1929
|
} else if (data.status === "executing") {
|
|
1908
1930
|
setPhase("executing");
|
|
1909
1931
|
setProgressSteps((prev) => {
|
|
@@ -2005,7 +2027,7 @@ function ChatPanel({
|
|
|
2005
2027
|
setMessages((prev) => [...prev, assistantMessage]);
|
|
2006
2028
|
streamAssistantMessage(
|
|
2007
2029
|
assistantMessageId,
|
|
2008
|
-
agentResponse.response,
|
|
2030
|
+
agentResponse.response || "Action completed successfully.",
|
|
2009
2031
|
agentResponse.followups
|
|
2010
2032
|
);
|
|
2011
2033
|
streamCompleted = true;
|
|
@@ -2027,7 +2049,7 @@ function ChatPanel({
|
|
|
2027
2049
|
setMessages((prev) => [...prev, assistantMessage]);
|
|
2028
2050
|
streamAssistantMessage(
|
|
2029
2051
|
assistantMessageId,
|
|
2030
|
-
agentResponse.response,
|
|
2052
|
+
agentResponse.response || agentResponse.message || "",
|
|
2031
2053
|
agentResponse.followups
|
|
2032
2054
|
);
|
|
2033
2055
|
streamCompleted = true;
|
|
@@ -2063,6 +2085,10 @@ function ChatPanel({
|
|
|
2063
2085
|
content: data.message || "You've been connected to our support queue. An agent will be with you shortly."
|
|
2064
2086
|
};
|
|
2065
2087
|
setMessages((prev) => [...prev, escalationMessage]);
|
|
2088
|
+
} else if (eventType === "token") {
|
|
2089
|
+
if (process.env.NODE_ENV === "development") {
|
|
2090
|
+
console.debug("[SSE] Token delta:", data.delta?.length || 0, "chars");
|
|
2091
|
+
}
|
|
2066
2092
|
}
|
|
2067
2093
|
} catch (parseError) {
|
|
2068
2094
|
console.error("Failed to parse SSE event:", parseError);
|