@hef2024/llmasaservice-ui 0.18.0 → 0.19.1
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/index.css +15 -1
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +13 -8
- package/dist/index.mjs +13 -8
- package/package.json +1 -1
- package/src/AIChatPanel.tsx +8 -2
- package/src/ChatPanel.tsx +5 -0
package/dist/index.css
CHANGED
|
@@ -1031,8 +1031,10 @@ button[data-pending=true]::after {
|
|
|
1031
1031
|
.ai-agent-panel {
|
|
1032
1032
|
display: flex;
|
|
1033
1033
|
flex-direction: row;
|
|
1034
|
+
flex-wrap: nowrap;
|
|
1034
1035
|
align-self: stretch;
|
|
1035
1036
|
height: 100%;
|
|
1037
|
+
min-height: 400px;
|
|
1036
1038
|
max-height: 100%;
|
|
1037
1039
|
background-color: var(--ai-sidebar-bg);
|
|
1038
1040
|
border-left: 1px solid var(--ai-sidebar-border);
|
|
@@ -1055,7 +1057,7 @@ button[data-pending=true]::after {
|
|
|
1055
1057
|
border-right: 1px solid var(--ai-sidebar-border);
|
|
1056
1058
|
}
|
|
1057
1059
|
.ai-agent-panel--sidebar-left {
|
|
1058
|
-
flex-direction: row;
|
|
1060
|
+
flex-direction: row !important;
|
|
1059
1061
|
}
|
|
1060
1062
|
.ai-agent-panel--sidebar-left .ai-agent-panel__sidebar {
|
|
1061
1063
|
order: 1;
|
|
@@ -1979,6 +1981,18 @@ button[data-pending=true]::after {
|
|
|
1979
1981
|
flex: 1;
|
|
1980
1982
|
border: none;
|
|
1981
1983
|
}
|
|
1984
|
+
.ai-agent-panel__chat-header {
|
|
1985
|
+
display: flex;
|
|
1986
|
+
align-items: center;
|
|
1987
|
+
justify-content: flex-end;
|
|
1988
|
+
padding: 8px;
|
|
1989
|
+
background-color: var(--ai-header-bg);
|
|
1990
|
+
border-bottom: 1px solid var(--ai-header-border);
|
|
1991
|
+
flex-shrink: 0;
|
|
1992
|
+
}
|
|
1993
|
+
.ai-agent-panel__chat-header-spacer {
|
|
1994
|
+
flex: 1;
|
|
1995
|
+
}
|
|
1982
1996
|
.ai-agent-panel__context-notification {
|
|
1983
1997
|
position: absolute;
|
|
1984
1998
|
bottom: 70px;
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1670,6 +1670,7 @@ var ChatPanel = ({
|
|
|
1670
1670
|
const continueChat = (suggestion) => {
|
|
1671
1671
|
setThinkingBlocks([]);
|
|
1672
1672
|
setCurrentThinkingIndex(0);
|
|
1673
|
+
setResponse("");
|
|
1673
1674
|
if (emailInput && isEmailAddress(emailInput) && !emailInputSet) {
|
|
1674
1675
|
const newId = (currentCustomer == null ? void 0 : currentCustomer.customer_id) && currentCustomer.customer_id !== "" && currentCustomer.customer_id !== (currentCustomer == null ? void 0 : currentCustomer.customer_user_email) ? currentCustomer.customer_id : emailInput;
|
|
1675
1676
|
setEmailInputSet(true);
|
|
@@ -3898,6 +3899,7 @@ var AIChatPanel = ({
|
|
|
3898
3899
|
setThinkingBlocks([]);
|
|
3899
3900
|
setCurrentThinkingIndex(0);
|
|
3900
3901
|
setUserHasScrolled(false);
|
|
3902
|
+
setResponse("");
|
|
3901
3903
|
if (!idle) {
|
|
3902
3904
|
stop(lastController);
|
|
3903
3905
|
setHistory((prevHistory) => __spreadProps(__spreadValues({}, prevHistory), {
|
|
@@ -3994,7 +3996,8 @@ ${followOnPrompt}`;
|
|
|
3994
3996
|
ensureConversation,
|
|
3995
3997
|
dataWithExtras,
|
|
3996
3998
|
scrollToBottom,
|
|
3997
|
-
onConversationCreated
|
|
3999
|
+
onConversationCreated,
|
|
4000
|
+
setResponse
|
|
3998
4001
|
]);
|
|
3999
4002
|
const handleSuggestionClick = (0, import_react11.useCallback)((question) => {
|
|
4000
4003
|
continueChat(question);
|
|
@@ -4242,8 +4245,8 @@ ${followOnPrompt}`;
|
|
|
4242
4245
|
))), /* @__PURE__ */ import_react11.default.createElement("div", { className: "ai-chat-thinking__content" }, cleanContentForDisplay(currentBlock.content)));
|
|
4243
4246
|
}, [thinkingBlocks, currentThinkingIndex, cleanContentForDisplay]);
|
|
4244
4247
|
const panelClasses = ["ai-chat-panel", theme === "dark" ? "dark-theme" : ""].filter(Boolean).join(" ");
|
|
4245
|
-
return /* @__PURE__ */ import_react11.default.createElement("div", { className: panelClasses }, title && /* @__PURE__ */ import_react11.default.createElement("div", { className: "ai-chat-panel__title" }, title), /* @__PURE__ */ import_react11.default.createElement(ScrollArea, { className: "ai-chat-panel__messages", ref: responseAreaRef }, initialMessage && /* @__PURE__ */ import_react11.default.createElement("div", { className: "ai-chat-message ai-chat-message--assistant" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "ai-chat-message__content" }, /* @__PURE__ */ import_react11.default.createElement(import_react_markdown2.default, { remarkPlugins: [import_remark_gfm2.default], rehypePlugins: [import_rehype_raw2.default] }, initialMessage))), Object.entries(history).map(([prompt, entry], index) => {
|
|
4246
|
-
const isLastEntry = index ===
|
|
4248
|
+
return /* @__PURE__ */ import_react11.default.createElement("div", { className: panelClasses }, title && /* @__PURE__ */ import_react11.default.createElement("div", { className: "ai-chat-panel__title" }, title), /* @__PURE__ */ import_react11.default.createElement(ScrollArea, { className: "ai-chat-panel__messages", ref: responseAreaRef }, initialMessage && /* @__PURE__ */ import_react11.default.createElement("div", { className: "ai-chat-message ai-chat-message--assistant" }, /* @__PURE__ */ import_react11.default.createElement("div", { className: "ai-chat-message__content" }, /* @__PURE__ */ import_react11.default.createElement(import_react_markdown2.default, { remarkPlugins: [import_remark_gfm2.default], rehypePlugins: [import_rehype_raw2.default] }, initialMessage))), Object.entries(history).map(([prompt, entry], index, entries) => {
|
|
4249
|
+
const isLastEntry = index === entries.length - 1;
|
|
4247
4250
|
const isSystemMessage = prompt.startsWith("__system__:");
|
|
4248
4251
|
const { cleanedText } = processThinkingTags(entry.content);
|
|
4249
4252
|
const processedContent = processActions(cleanedText);
|
|
@@ -4768,6 +4771,7 @@ var AIAgentPanel = import_react13.default.forwardRef(({
|
|
|
4768
4771
|
maxContextTokens = 8e3,
|
|
4769
4772
|
data = [],
|
|
4770
4773
|
theme = "light",
|
|
4774
|
+
collapsible = true,
|
|
4771
4775
|
defaultCollapsed = false,
|
|
4772
4776
|
defaultWidth = 720,
|
|
4773
4777
|
minWidth = 520,
|
|
@@ -4796,7 +4800,7 @@ var AIAgentPanel = import_react13.default.forwardRef(({
|
|
|
4796
4800
|
showConversationHistory = true
|
|
4797
4801
|
}, ref) => {
|
|
4798
4802
|
var _a, _b, _c, _d;
|
|
4799
|
-
const [isCollapsed, setIsCollapsed] = (0, import_react13.useState)(defaultCollapsed);
|
|
4803
|
+
const [isCollapsed, setIsCollapsed] = (0, import_react13.useState)(collapsible && defaultCollapsed);
|
|
4800
4804
|
const [isHistoryCollapsed, setIsHistoryCollapsed] = (0, import_react13.useState)(() => {
|
|
4801
4805
|
if (typeof window !== "undefined") {
|
|
4802
4806
|
const saved = localStorage.getItem("ai-agent-panel-history-collapsed");
|
|
@@ -5561,8 +5565,9 @@ var AIAgentPanel = import_react13.default.forwardRef(({
|
|
|
5561
5565
|
}
|
|
5562
5566
|
}, [onConversationChange]);
|
|
5563
5567
|
const toggleCollapse = (0, import_react13.useCallback)(() => {
|
|
5568
|
+
if (!collapsible) return;
|
|
5564
5569
|
setIsCollapsed((prev) => !prev);
|
|
5565
|
-
}, []);
|
|
5570
|
+
}, [collapsible]);
|
|
5566
5571
|
const toggleHistoryCollapse = (0, import_react13.useCallback)(() => {
|
|
5567
5572
|
setIsHistoryCollapsed((prev) => {
|
|
5568
5573
|
const next = !prev;
|
|
@@ -5578,7 +5583,7 @@ var AIAgentPanel = import_react13.default.forwardRef(({
|
|
|
5578
5583
|
sidebarPosition === "right" ? "ai-agent-panel--sidebar-right" : "ai-agent-panel--sidebar-left",
|
|
5579
5584
|
!showConversationHistory ? "ai-agent-panel--no-history" : ""
|
|
5580
5585
|
].filter(Boolean).join(" ");
|
|
5581
|
-
if (isCollapsed) {
|
|
5586
|
+
if (collapsible && isCollapsed) {
|
|
5582
5587
|
return /* @__PURE__ */ import_react13.default.createElement("div", { className: panelClasses, ref: panelRef }, /* @__PURE__ */ import_react13.default.createElement(
|
|
5583
5588
|
"div",
|
|
5584
5589
|
{
|
|
@@ -5801,7 +5806,7 @@ var AIAgentPanel = import_react13.default.forwardRef(({
|
|
|
5801
5806
|
onClick: handleNewConversation
|
|
5802
5807
|
},
|
|
5803
5808
|
/* @__PURE__ */ import_react13.default.createElement(PlusIcon, null)
|
|
5804
|
-
))), /* @__PURE__ */ import_react13.default.createElement(Tooltip, { content: "Collapse History", side: "bottom" }, /* @__PURE__ */ import_react13.default.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleHistoryCollapse }, /* @__PURE__ */ import_react13.default.createElement(SidebarIcon, null))), /* @__PURE__ */ import_react13.default.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleCollapse }, position === "right" ? /* @__PURE__ */ import_react13.default.createElement(ChevronRightIcon, null) : /* @__PURE__ */ import_react13.default.createElement(ChevronLeftIcon, null))), /* @__PURE__ */ import_react13.default.createElement(ScrollArea, { className: "ai-agent-panel__conversations" }, activeConversationsList.length > 0 && /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__group ai-agent-panel__group--active" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__group-label" }, /* @__PURE__ */ import_react13.default.createElement("span", null, "Active (", activeConversationsList.length, ")")), activeConversationsList.map((activeConv) => /* @__PURE__ */ import_react13.default.createElement(
|
|
5809
|
+
))), /* @__PURE__ */ import_react13.default.createElement(Tooltip, { content: "Collapse History", side: "bottom" }, /* @__PURE__ */ import_react13.default.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleHistoryCollapse }, /* @__PURE__ */ import_react13.default.createElement(SidebarIcon, null))), collapsible && /* @__PURE__ */ import_react13.default.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleCollapse }, position === "right" ? /* @__PURE__ */ import_react13.default.createElement(ChevronRightIcon, null) : /* @__PURE__ */ import_react13.default.createElement(ChevronLeftIcon, null))), /* @__PURE__ */ import_react13.default.createElement(ScrollArea, { className: "ai-agent-panel__conversations" }, activeConversationsList.length > 0 && /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__group ai-agent-panel__group--active" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__group-label" }, /* @__PURE__ */ import_react13.default.createElement("span", null, "Active (", activeConversationsList.length, ")")), activeConversationsList.map((activeConv) => /* @__PURE__ */ import_react13.default.createElement(
|
|
5805
5810
|
"div",
|
|
5806
5811
|
{
|
|
5807
5812
|
key: activeConv.stableKey,
|
|
@@ -5843,7 +5848,7 @@ var AIAgentPanel = import_react13.default.forwardRef(({
|
|
|
5843
5848
|
/* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__conversation-content" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__conversation-title" }, isActive && /* @__PURE__ */ import_react13.default.createElement("span", { className: "ai-agent-panel__active-badge" }, "\u25CF"), conversationFirstPrompts[conv.conversationId] || conv.title))
|
|
5844
5849
|
);
|
|
5845
5850
|
}))))))),
|
|
5846
|
-
/* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__chat" }, showContextNotification && /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__context-notification" }, /* @__PURE__ */ import_react13.default.createElement(SparkleIcon, null), /* @__PURE__ */ import_react13.default.createElement("span", null, "Agent now has new context")), activeConversationsList.map((activeConv) => /* @__PURE__ */ import_react13.default.createElement(
|
|
5851
|
+
/* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__chat" }, !showConversationHistory && collapsible && /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__chat-header" }, /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__chat-header-spacer" }), /* @__PURE__ */ import_react13.default.createElement(Tooltip, { content: "Collapse Panel", side: position === "right" ? "left" : "right" }, /* @__PURE__ */ import_react13.default.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleCollapse }, position === "right" ? /* @__PURE__ */ import_react13.default.createElement(ChevronRightIcon, null) : /* @__PURE__ */ import_react13.default.createElement(ChevronLeftIcon, null)))), showContextNotification && /* @__PURE__ */ import_react13.default.createElement("div", { className: "ai-agent-panel__context-notification" }, /* @__PURE__ */ import_react13.default.createElement(SparkleIcon, null), /* @__PURE__ */ import_react13.default.createElement("span", null, "Agent now has new context")), activeConversationsList.map((activeConv) => /* @__PURE__ */ import_react13.default.createElement(
|
|
5847
5852
|
ChatPanelWrapper,
|
|
5848
5853
|
{
|
|
5849
5854
|
key: `${activeConv.stableKey}-${activeConv.agentId}`,
|
package/dist/index.mjs
CHANGED
|
@@ -1631,6 +1631,7 @@ var ChatPanel = ({
|
|
|
1631
1631
|
const continueChat = (suggestion) => {
|
|
1632
1632
|
setThinkingBlocks([]);
|
|
1633
1633
|
setCurrentThinkingIndex(0);
|
|
1634
|
+
setResponse("");
|
|
1634
1635
|
if (emailInput && isEmailAddress(emailInput) && !emailInputSet) {
|
|
1635
1636
|
const newId = (currentCustomer == null ? void 0 : currentCustomer.customer_id) && currentCustomer.customer_id !== "" && currentCustomer.customer_id !== (currentCustomer == null ? void 0 : currentCustomer.customer_user_email) ? currentCustomer.customer_id : emailInput;
|
|
1636
1637
|
setEmailInputSet(true);
|
|
@@ -3865,6 +3866,7 @@ var AIChatPanel = ({
|
|
|
3865
3866
|
setThinkingBlocks([]);
|
|
3866
3867
|
setCurrentThinkingIndex(0);
|
|
3867
3868
|
setUserHasScrolled(false);
|
|
3869
|
+
setResponse("");
|
|
3868
3870
|
if (!idle) {
|
|
3869
3871
|
stop(lastController);
|
|
3870
3872
|
setHistory((prevHistory) => __spreadProps(__spreadValues({}, prevHistory), {
|
|
@@ -3961,7 +3963,8 @@ ${followOnPrompt}`;
|
|
|
3961
3963
|
ensureConversation,
|
|
3962
3964
|
dataWithExtras,
|
|
3963
3965
|
scrollToBottom,
|
|
3964
|
-
onConversationCreated
|
|
3966
|
+
onConversationCreated,
|
|
3967
|
+
setResponse
|
|
3965
3968
|
]);
|
|
3966
3969
|
const handleSuggestionClick = useCallback2((question) => {
|
|
3967
3970
|
continueChat(question);
|
|
@@ -4209,8 +4212,8 @@ ${followOnPrompt}`;
|
|
|
4209
4212
|
))), /* @__PURE__ */ React11.createElement("div", { className: "ai-chat-thinking__content" }, cleanContentForDisplay(currentBlock.content)));
|
|
4210
4213
|
}, [thinkingBlocks, currentThinkingIndex, cleanContentForDisplay]);
|
|
4211
4214
|
const panelClasses = ["ai-chat-panel", theme === "dark" ? "dark-theme" : ""].filter(Boolean).join(" ");
|
|
4212
|
-
return /* @__PURE__ */ React11.createElement("div", { className: panelClasses }, title && /* @__PURE__ */ React11.createElement("div", { className: "ai-chat-panel__title" }, title), /* @__PURE__ */ React11.createElement(ScrollArea, { className: "ai-chat-panel__messages", ref: responseAreaRef }, initialMessage && /* @__PURE__ */ React11.createElement("div", { className: "ai-chat-message ai-chat-message--assistant" }, /* @__PURE__ */ React11.createElement("div", { className: "ai-chat-message__content" }, /* @__PURE__ */ React11.createElement(ReactMarkdown2, { remarkPlugins: [remarkGfm2], rehypePlugins: [rehypeRaw2] }, initialMessage))), Object.entries(history).map(([prompt, entry], index) => {
|
|
4213
|
-
const isLastEntry = index ===
|
|
4215
|
+
return /* @__PURE__ */ React11.createElement("div", { className: panelClasses }, title && /* @__PURE__ */ React11.createElement("div", { className: "ai-chat-panel__title" }, title), /* @__PURE__ */ React11.createElement(ScrollArea, { className: "ai-chat-panel__messages", ref: responseAreaRef }, initialMessage && /* @__PURE__ */ React11.createElement("div", { className: "ai-chat-message ai-chat-message--assistant" }, /* @__PURE__ */ React11.createElement("div", { className: "ai-chat-message__content" }, /* @__PURE__ */ React11.createElement(ReactMarkdown2, { remarkPlugins: [remarkGfm2], rehypePlugins: [rehypeRaw2] }, initialMessage))), Object.entries(history).map(([prompt, entry], index, entries) => {
|
|
4216
|
+
const isLastEntry = index === entries.length - 1;
|
|
4214
4217
|
const isSystemMessage = prompt.startsWith("__system__:");
|
|
4215
4218
|
const { cleanedText } = processThinkingTags(entry.content);
|
|
4216
4219
|
const processedContent = processActions(cleanedText);
|
|
@@ -4735,6 +4738,7 @@ var AIAgentPanel = React12.forwardRef(({
|
|
|
4735
4738
|
maxContextTokens = 8e3,
|
|
4736
4739
|
data = [],
|
|
4737
4740
|
theme = "light",
|
|
4741
|
+
collapsible = true,
|
|
4738
4742
|
defaultCollapsed = false,
|
|
4739
4743
|
defaultWidth = 720,
|
|
4740
4744
|
minWidth = 520,
|
|
@@ -4763,7 +4767,7 @@ var AIAgentPanel = React12.forwardRef(({
|
|
|
4763
4767
|
showConversationHistory = true
|
|
4764
4768
|
}, ref) => {
|
|
4765
4769
|
var _a, _b, _c, _d;
|
|
4766
|
-
const [isCollapsed, setIsCollapsed] = useState8(defaultCollapsed);
|
|
4770
|
+
const [isCollapsed, setIsCollapsed] = useState8(collapsible && defaultCollapsed);
|
|
4767
4771
|
const [isHistoryCollapsed, setIsHistoryCollapsed] = useState8(() => {
|
|
4768
4772
|
if (typeof window !== "undefined") {
|
|
4769
4773
|
const saved = localStorage.getItem("ai-agent-panel-history-collapsed");
|
|
@@ -5528,8 +5532,9 @@ var AIAgentPanel = React12.forwardRef(({
|
|
|
5528
5532
|
}
|
|
5529
5533
|
}, [onConversationChange]);
|
|
5530
5534
|
const toggleCollapse = useCallback4(() => {
|
|
5535
|
+
if (!collapsible) return;
|
|
5531
5536
|
setIsCollapsed((prev) => !prev);
|
|
5532
|
-
}, []);
|
|
5537
|
+
}, [collapsible]);
|
|
5533
5538
|
const toggleHistoryCollapse = useCallback4(() => {
|
|
5534
5539
|
setIsHistoryCollapsed((prev) => {
|
|
5535
5540
|
const next = !prev;
|
|
@@ -5545,7 +5550,7 @@ var AIAgentPanel = React12.forwardRef(({
|
|
|
5545
5550
|
sidebarPosition === "right" ? "ai-agent-panel--sidebar-right" : "ai-agent-panel--sidebar-left",
|
|
5546
5551
|
!showConversationHistory ? "ai-agent-panel--no-history" : ""
|
|
5547
5552
|
].filter(Boolean).join(" ");
|
|
5548
|
-
if (isCollapsed) {
|
|
5553
|
+
if (collapsible && isCollapsed) {
|
|
5549
5554
|
return /* @__PURE__ */ React12.createElement("div", { className: panelClasses, ref: panelRef }, /* @__PURE__ */ React12.createElement(
|
|
5550
5555
|
"div",
|
|
5551
5556
|
{
|
|
@@ -5768,7 +5773,7 @@ var AIAgentPanel = React12.forwardRef(({
|
|
|
5768
5773
|
onClick: handleNewConversation
|
|
5769
5774
|
},
|
|
5770
5775
|
/* @__PURE__ */ React12.createElement(PlusIcon, null)
|
|
5771
|
-
))), /* @__PURE__ */ React12.createElement(Tooltip, { content: "Collapse History", side: "bottom" }, /* @__PURE__ */ React12.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleHistoryCollapse }, /* @__PURE__ */ React12.createElement(SidebarIcon, null))), /* @__PURE__ */ React12.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleCollapse }, position === "right" ? /* @__PURE__ */ React12.createElement(ChevronRightIcon, null) : /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null))), /* @__PURE__ */ React12.createElement(ScrollArea, { className: "ai-agent-panel__conversations" }, activeConversationsList.length > 0 && /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__group ai-agent-panel__group--active" }, /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__group-label" }, /* @__PURE__ */ React12.createElement("span", null, "Active (", activeConversationsList.length, ")")), activeConversationsList.map((activeConv) => /* @__PURE__ */ React12.createElement(
|
|
5776
|
+
))), /* @__PURE__ */ React12.createElement(Tooltip, { content: "Collapse History", side: "bottom" }, /* @__PURE__ */ React12.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleHistoryCollapse }, /* @__PURE__ */ React12.createElement(SidebarIcon, null))), collapsible && /* @__PURE__ */ React12.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleCollapse }, position === "right" ? /* @__PURE__ */ React12.createElement(ChevronRightIcon, null) : /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null))), /* @__PURE__ */ React12.createElement(ScrollArea, { className: "ai-agent-panel__conversations" }, activeConversationsList.length > 0 && /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__group ai-agent-panel__group--active" }, /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__group-label" }, /* @__PURE__ */ React12.createElement("span", null, "Active (", activeConversationsList.length, ")")), activeConversationsList.map((activeConv) => /* @__PURE__ */ React12.createElement(
|
|
5772
5777
|
"div",
|
|
5773
5778
|
{
|
|
5774
5779
|
key: activeConv.stableKey,
|
|
@@ -5810,7 +5815,7 @@ var AIAgentPanel = React12.forwardRef(({
|
|
|
5810
5815
|
/* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__conversation-content" }, /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__conversation-title" }, isActive && /* @__PURE__ */ React12.createElement("span", { className: "ai-agent-panel__active-badge" }, "\u25CF"), conversationFirstPrompts[conv.conversationId] || conv.title))
|
|
5811
5816
|
);
|
|
5812
5817
|
}))))))),
|
|
5813
|
-
/* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__chat" }, showContextNotification && /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__context-notification" }, /* @__PURE__ */ React12.createElement(SparkleIcon, null), /* @__PURE__ */ React12.createElement("span", null, "Agent now has new context")), activeConversationsList.map((activeConv) => /* @__PURE__ */ React12.createElement(
|
|
5818
|
+
/* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__chat" }, !showConversationHistory && collapsible && /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__chat-header" }, /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__chat-header-spacer" }), /* @__PURE__ */ React12.createElement(Tooltip, { content: "Collapse Panel", side: position === "right" ? "left" : "right" }, /* @__PURE__ */ React12.createElement(Button, { variant: "ghost", size: "icon", onClick: toggleCollapse }, position === "right" ? /* @__PURE__ */ React12.createElement(ChevronRightIcon, null) : /* @__PURE__ */ React12.createElement(ChevronLeftIcon, null)))), showContextNotification && /* @__PURE__ */ React12.createElement("div", { className: "ai-agent-panel__context-notification" }, /* @__PURE__ */ React12.createElement(SparkleIcon, null), /* @__PURE__ */ React12.createElement("span", null, "Agent now has new context")), activeConversationsList.map((activeConv) => /* @__PURE__ */ React12.createElement(
|
|
5814
5819
|
ChatPanelWrapper,
|
|
5815
5820
|
{
|
|
5816
5821
|
key: `${activeConv.stableKey}-${activeConv.agentId}`,
|
package/package.json
CHANGED
package/src/AIChatPanel.tsx
CHANGED
|
@@ -1042,6 +1042,11 @@ const AIChatPanel: React.FC<AIChatPanelProps> = ({
|
|
|
1042
1042
|
// Reset scroll tracking for new message - enable auto-scroll
|
|
1043
1043
|
setUserHasScrolled(false);
|
|
1044
1044
|
|
|
1045
|
+
// IMPORTANT: Clear the response BEFORE setting new lastKey
|
|
1046
|
+
// This prevents the old response from being written to the new history entry
|
|
1047
|
+
// when the history update effect runs
|
|
1048
|
+
setResponse('');
|
|
1049
|
+
|
|
1045
1050
|
// Handle stop if not idle (matches ChatPanel)
|
|
1046
1051
|
if (!idle) {
|
|
1047
1052
|
stop(lastController);
|
|
@@ -1174,6 +1179,7 @@ const AIChatPanel: React.FC<AIChatPanelProps> = ({
|
|
|
1174
1179
|
dataWithExtras,
|
|
1175
1180
|
scrollToBottom,
|
|
1176
1181
|
onConversationCreated,
|
|
1182
|
+
setResponse,
|
|
1177
1183
|
]);
|
|
1178
1184
|
|
|
1179
1185
|
// Handle suggestion click - directly sends like ChatPanel does
|
|
@@ -1635,8 +1641,8 @@ const AIChatPanel: React.FC<AIChatPanelProps> = ({
|
|
|
1635
1641
|
)}
|
|
1636
1642
|
|
|
1637
1643
|
{/* History */}
|
|
1638
|
-
{Object.entries(history).map(([prompt, entry], index) => {
|
|
1639
|
-
const isLastEntry = index ===
|
|
1644
|
+
{Object.entries(history).map(([prompt, entry], index, entries) => {
|
|
1645
|
+
const isLastEntry = index === entries.length - 1;
|
|
1640
1646
|
// Check if this is a system message (injected by page context, etc.)
|
|
1641
1647
|
const isSystemMessage = prompt.startsWith('__system__:');
|
|
1642
1648
|
// Process thinking tags first, then apply actions at render time
|
package/src/ChatPanel.tsx
CHANGED
|
@@ -2154,6 +2154,11 @@ const ChatPanel: React.FC<ChatPanelProps & ExtraProps> = ({
|
|
|
2154
2154
|
setThinkingBlocks([]);
|
|
2155
2155
|
setCurrentThinkingIndex(0);
|
|
2156
2156
|
|
|
2157
|
+
// IMPORTANT: Clear the response BEFORE setting new lastKey
|
|
2158
|
+
// This prevents the old response from being written to the new history entry
|
|
2159
|
+
// when the history update effect runs
|
|
2160
|
+
setResponse("");
|
|
2161
|
+
|
|
2157
2162
|
// Auto-set email if valid before proceeding
|
|
2158
2163
|
if (emailInput && isEmailAddress(emailInput) && !emailInputSet) {
|
|
2159
2164
|
const newId =
|