@stack-spot/ai-chat-widget 1.5.1 → 1.6.0
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/CHANGELOG.md +19 -0
- package/dist/app-metadata.json +2 -2
- package/dist/chat-interceptors/send-message.d.ts.map +1 -1
- package/dist/chat-interceptors/send-message.js +16 -8
- package/dist/chat-interceptors/send-message.js.map +1 -1
- package/dist/components/AdaptiveTextArea.d.ts.map +1 -1
- package/dist/components/AdaptiveTextArea.js +7 -1
- package/dist/components/AdaptiveTextArea.js.map +1 -1
- package/dist/components/Markdown.js +1 -1
- package/dist/components/Markdown.js.map +1 -1
- package/package.json +1 -1
- package/src/app-metadata.json +2 -2
- package/src/chat-interceptors/send-message.ts +14 -7
- package/src/components/AdaptiveTextArea.tsx +8 -1
- package/src/components/Markdown.tsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.6.0](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget@v1.5.2...ai-chat-widget@v1.6.0) (2025-01-14)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* makes it so cancelation doesn't yield an error ([#48](https://github.com/stack-spot/portal-ai-chat-widget/issues/48)) ([9ccc3af](https://github.com/stack-spot/portal-ai-chat-widget/commit/9ccc3afacd3cdbdd3fc4dd4a22d4b68e2c5e8e61))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* 2211 scroll chat ([#46](https://github.com/stack-spot/portal-ai-chat-widget/issues/46)) ([d1f73af](https://github.com/stack-spot/portal-ai-chat-widget/commit/d1f73afd0f352172b99de3c0b25af30c3b0f1ab9))
|
|
14
|
+
|
|
15
|
+
## [1.5.2](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget@v1.5.1...ai-chat-widget@v1.5.2) (2025-01-08)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* 2199 link css ([#44](https://github.com/stack-spot/portal-ai-chat-widget/issues/44)) ([662f0aa](https://github.com/stack-spot/portal-ai-chat-widget/commit/662f0aa3cc1e0e583512221f7701f4586873fc39))
|
|
21
|
+
|
|
3
22
|
## [1.5.1](https://github.com/stack-spot/portal-ai-chat-widget/compare/ai-chat-widget@v1.5.0...ai-chat-widget@v1.5.1) (2024-11-21)
|
|
4
23
|
|
|
5
24
|
|
package/dist/app-metadata.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/ai-chat-widget",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"date": "
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"date": "Tue Jan 14 2025 23:31:13 GMT+0000 (Coordinated Universal Time)",
|
|
5
5
|
"dependencies": [
|
|
6
6
|
{
|
|
7
7
|
"name": "@stack-spot/app-metadata",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkC,MAAM,oBAAoB,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AA8B9C;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAkC,MAAM,oBAAoB,CAAA;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AA8B9C;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,iBAyDlG"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aiClient, StackspotAPIError } from '@stack-spot/portal-network';
|
|
1
|
+
import { aiClient, StackspotAPIError, StreamCanceledError } from '@stack-spot/portal-network';
|
|
2
2
|
import { ChatEntry } from '../state/ChatEntry.js';
|
|
3
3
|
import { buildConversationContext } from '../utils/chat.js';
|
|
4
4
|
import { genericSourcesToKnowledgeSources } from '../utils/knowledge-source.js';
|
|
@@ -54,8 +54,22 @@ export async function sendMessageInterceptor(entry, chat, signal) {
|
|
|
54
54
|
}
|
|
55
55
|
botEntry.setValue(createEntryValueFromChatResponse(value, knowledgeSources, chat.get('agent')));
|
|
56
56
|
});
|
|
57
|
+
let finalValue;
|
|
57
58
|
try {
|
|
58
|
-
|
|
59
|
+
finalValue = await stream.getValue();
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (error instanceof StreamCanceledError) {
|
|
63
|
+
finalValue = stream.getPartialValue();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
botEntry.setValue({
|
|
67
|
+
...botEntry.getValue(),
|
|
68
|
+
error: error instanceof StackspotAPIError ? error.translate() : (error.message ?? `${error}`),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (finalValue?.answer) {
|
|
59
73
|
botEntry.setValue(createEntryValueFromChatResponse(finalValue, knowledgeSources, chat.get('agent'), true));
|
|
60
74
|
aiClient.chat.invalidate({ conversationId: chat.id });
|
|
61
75
|
if (isFirstMessage) {
|
|
@@ -77,12 +91,6 @@ export async function sendMessageInterceptor(entry, chat, signal) {
|
|
|
77
91
|
aiClient.chats.invalidate();
|
|
78
92
|
}
|
|
79
93
|
}
|
|
80
|
-
catch (error) {
|
|
81
|
-
botEntry.setValue({
|
|
82
|
-
...botEntry.getValue(),
|
|
83
|
-
error: error instanceof StackspotAPIError ? error.translate() : (error.message ?? `${error}`),
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
94
|
chat.set('isLoading', false);
|
|
87
95
|
}
|
|
88
96
|
//# sourceMappingURL=send-message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptiveTextArea.d.ts","sourceRoot":"","sources":["../../src/components/AdaptiveTextArea.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,UAAU,KAAM,SAAQ,OAAO,CAAC,OAAO,QAAQ,CAAC;IAC9C;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"AdaptiveTextArea.d.ts","sourceRoot":"","sources":["../../src/components/AdaptiveTextArea.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,UAAU,KAAM,SAAQ,OAAO,CAAC,OAAO,QAAQ,CAAC;IAC9C;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,oHAkC3B,CAAA"}
|
|
@@ -8,6 +8,12 @@ import { forwardRef, useEffect, useRef } from 'react';
|
|
|
8
8
|
export const AdaptiveTextArea = forwardRef(({ value, onIncreaseSize, onResetSize, maxHeight, style, ...props }, externalRef) => {
|
|
9
9
|
const localRef = useRef(null);
|
|
10
10
|
const ref = externalRef ?? localRef;
|
|
11
|
+
const handleIncreaseSize = (newHeight) => {
|
|
12
|
+
onIncreaseSize?.();
|
|
13
|
+
if (maxHeight && newHeight > maxHeight && ref.current) {
|
|
14
|
+
ref.current.style.overflowY = 'auto';
|
|
15
|
+
}
|
|
16
|
+
};
|
|
11
17
|
useEffect(() => {
|
|
12
18
|
if (!ref.current)
|
|
13
19
|
return;
|
|
@@ -17,7 +23,7 @@ export const AdaptiveTextArea = forwardRef(({ value, onIncreaseSize, onResetSize
|
|
|
17
23
|
ref.current.style.overflowY = 'hidden';
|
|
18
24
|
if (height < scroll) {
|
|
19
25
|
ref.current.style.height = `${scroll}px`;
|
|
20
|
-
|
|
26
|
+
handleIncreaseSize(scroll);
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
else if (maxHeight) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptiveTextArea.js","sourceRoot":"","sources":["../../src/components/AdaptiveTextArea.tsx"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAkBrD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAA6B,CACrE,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAClE,WAAW,EACX,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAA;IAClD,MAAM,GAAG,GAAG,WAAmD,IAAI,QAAQ,CAAA;IAE3E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAM;QACxB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAA;QACvC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;YACrC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAA;YACtC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;gBACpB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAA;gBACxC,
|
|
1
|
+
{"version":3,"file":"AdaptiveTextArea.js","sourceRoot":"","sources":["../../src/components/AdaptiveTextArea.tsx"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAkBrD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAA6B,CACrE,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAClE,WAAW,EACX,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAA;IAClD,MAAM,GAAG,GAAG,WAAmD,IAAI,QAAQ,CAAA;IAE3E,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,EAAE;QAC/C,cAAc,EAAE,EAAE,CAAA;QAClB,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACtD,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;QACtC,CAAC;IACH,CAAC,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAM;QACxB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAA;QACvC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAA;QACvC,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;YACrC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAA;YACtC,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;gBACpB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAA;gBACxC,kBAAkB,CAAC,MAAM,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;QACtC,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAA;YAC7B,WAAW,EAAE,EAAE,CAAA;QACjB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;IAEtB,OAAO,KAAC,QAAQ,OAAK,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,GAAI,CAAA;AACxF,CAAC,CAAC,CAAA"}
|
|
@@ -9,7 +9,7 @@ import { Code } from './Code.js';
|
|
|
9
9
|
const renderP = (child, key) => (_jsx(Fragment, { children: typeof child === 'string'
|
|
10
10
|
? child.split('\n').map((content, subKey, array) => (_jsxs(Fragment, { children: [content, subKey < array.length - 1 ? _jsx("br", {}) : null] }, subKey))) : child }, key));
|
|
11
11
|
export const Markdown = ({ onInsertCode, onNewFile, onCopyCode, children, }) => (_jsx(_Fragment, { children: _jsx(ReactMarkdown, { remarkPlugins: [[remarkGfm]], components: {
|
|
12
|
-
a: props => _jsx("a", { target: "_blank", rel: "noopener noreferrer", ...props }),
|
|
12
|
+
a: props => _jsx("a", { target: "_blank", rel: "noopener noreferrer", style: { textDecoration: 'underline' }, ...props }),
|
|
13
13
|
code: props => _jsx(Code, { ...props, onInsertCode: onInsertCode, onNewFile: onNewFile, onCopyCode: onCopyCode, showActionBar: true }),
|
|
14
14
|
pre: ({ children }) => _jsx(_Fragment, { children: children }),
|
|
15
15
|
p: ({ children }) => _jsx("p", { children: Children.map(children, renderP) }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../src/components/Markdown.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAC1C,OAAO,SAAS,MAAM,YAAY,CAAA;AAElC,OAAO,EAAE,IAAI,EAAsB,MAAM,QAAQ,CAAA;AAIjD,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,GAAW,EAAE,EAAE,CAAC,CAC3C,KAAC,QAAQ,cACN,OAAO,KAAK,KAAK,QAAQ;QACxB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAClD,MAAC,QAAQ,eACN,OAAO,EACP,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAM,CAAC,CAAC,CAAC,IAAI,KAF7B,MAAM,CAGV,CACZ,CAAC,CAAC,CAAC,CAAC,KAAK,IAPC,GAAG,CAQP,CACZ,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,EACE,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,GACF,EACR,EAAE,CAAC,CACH,4BACE,KAAC,aAAa,IACZ,aAAa,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAC5B,UAAU,EAAE;YACV,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,YAAG,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,KAAK,KAAK,GAAI;
|
|
1
|
+
{"version":3,"file":"Markdown.js","sourceRoot":"","sources":["../../src/components/Markdown.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,aAAa,MAAM,gBAAgB,CAAA;AAC1C,OAAO,SAAS,MAAM,YAAY,CAAA;AAElC,OAAO,EAAE,IAAI,EAAsB,MAAM,QAAQ,CAAA;AAIjD,MAAM,OAAO,GAAG,CAAC,KAAU,EAAE,GAAW,EAAE,EAAE,CAAC,CAC3C,KAAC,QAAQ,cACN,OAAO,KAAK,KAAK,QAAQ;QACxB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAClD,MAAC,QAAQ,eACN,OAAO,EACP,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAM,CAAC,CAAC,CAAC,IAAI,KAF7B,MAAM,CAGV,CACZ,CAAC,CAAC,CAAC,CAAC,KAAK,IAPC,GAAG,CAQP,CACZ,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,EACE,YAAY,EACZ,SAAS,EACT,UAAU,EACV,QAAQ,GACF,EACR,EAAE,CAAC,CACH,4BACE,KAAC,aAAa,IACZ,aAAa,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAC5B,UAAU,EAAE;YACV,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,YAAG,MAAM,EAAC,QAAQ,EAAC,GAAG,EAAC,qBAAqB,EAAC,KAAK,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,KAAM,KAAK,GAAI;YAC9G,IAAI,EAAE,KAAK,CAAC,EAAE,CACZ,KAAC,IAAI,OACC,KAAK,EACT,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,aAAa,SACb;YACJ,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,4BAAG,QAAQ,GAAI;YACtC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,sBAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAK;SAC9D,YAEA,QAAQ,GACK,GACf,CACJ,CAAA"}
|
package/package.json
CHANGED
package/src/app-metadata.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stack-spot/ai-chat-widget",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"date": "
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"date": "Tue Jan 14 2025 23:31:13 GMT+0000 (Coordinated Universal Time)",
|
|
5
5
|
"dependencies": [
|
|
6
6
|
{
|
|
7
7
|
"name": "@stack-spot/app-metadata",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aiClient, StackspotAPIError } from '@stack-spot/portal-network'
|
|
1
|
+
import { aiClient, StackspotAPIError, StreamCanceledError } from '@stack-spot/portal-network'
|
|
2
2
|
import { ChatResponse3 } from '@stack-spot/portal-network/api/ai'
|
|
3
3
|
import { ChatEntry, KnowledgeSource, TextChatEntry } from '../state/ChatEntry'
|
|
4
4
|
import { ChatState } from '../state/ChatState'
|
|
@@ -63,8 +63,20 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
|
|
|
63
63
|
}
|
|
64
64
|
botEntry.setValue(createEntryValueFromChatResponse(value, knowledgeSources, chat.get('agent')))
|
|
65
65
|
})
|
|
66
|
+
let finalValue: Partial<ChatResponse3> | undefined
|
|
66
67
|
try {
|
|
67
|
-
|
|
68
|
+
finalValue = await stream.getValue()
|
|
69
|
+
} catch (error: any) {
|
|
70
|
+
if (error instanceof StreamCanceledError) {
|
|
71
|
+
finalValue = stream.getPartialValue()
|
|
72
|
+
} else {
|
|
73
|
+
botEntry.setValue({
|
|
74
|
+
...botEntry.getValue(),
|
|
75
|
+
error: error instanceof StackspotAPIError ? error.translate() : (error.message ?? `${error}`),
|
|
76
|
+
})
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (finalValue?.answer) {
|
|
68
80
|
botEntry.setValue(createEntryValueFromChatResponse(finalValue, knowledgeSources, chat.get('agent'), true))
|
|
69
81
|
aiClient.chat.invalidate({ conversationId: chat.id })
|
|
70
82
|
if (isFirstMessage) {
|
|
@@ -84,11 +96,6 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
|
|
|
84
96
|
// this makes sure to update the chat history
|
|
85
97
|
aiClient.chats.invalidate()
|
|
86
98
|
}
|
|
87
|
-
} catch (error: any) {
|
|
88
|
-
botEntry.setValue({
|
|
89
|
-
...botEntry.getValue(),
|
|
90
|
-
error: error instanceof StackspotAPIError ? error.translate() : (error.message ?? `${error}`),
|
|
91
|
-
})
|
|
92
99
|
}
|
|
93
100
|
chat.set('isLoading', false)
|
|
94
101
|
}
|
|
@@ -28,6 +28,13 @@ export const AdaptiveTextArea = forwardRef<HTMLTextAreaElement, Props>((
|
|
|
28
28
|
const localRef = useRef<HTMLTextAreaElement>(null)
|
|
29
29
|
const ref = externalRef as React.RefObject<HTMLTextAreaElement> ?? localRef
|
|
30
30
|
|
|
31
|
+
const handleIncreaseSize = (newHeight: number) => {
|
|
32
|
+
onIncreaseSize?.()
|
|
33
|
+
if (maxHeight && newHeight > maxHeight && ref.current) {
|
|
34
|
+
ref.current.style.overflowY = 'auto'
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
31
38
|
useEffect(() => {
|
|
32
39
|
if (!ref.current) return
|
|
33
40
|
const height = ref.current.clientHeight
|
|
@@ -36,7 +43,7 @@ export const AdaptiveTextArea = forwardRef<HTMLTextAreaElement, Props>((
|
|
|
36
43
|
ref.current.style.overflowY = 'hidden'
|
|
37
44
|
if (height < scroll) {
|
|
38
45
|
ref.current.style.height = `${scroll}px`
|
|
39
|
-
|
|
46
|
+
handleIncreaseSize(scroll)
|
|
40
47
|
}
|
|
41
48
|
} else if (maxHeight) {
|
|
42
49
|
ref.current.style.overflowY = 'auto'
|
|
@@ -34,7 +34,7 @@ export const Markdown = (
|
|
|
34
34
|
<ReactMarkdown
|
|
35
35
|
remarkPlugins={[[remarkGfm]]}
|
|
36
36
|
components={{
|
|
37
|
-
a: props => <a target="_blank" rel="noopener noreferrer" {...props} />,
|
|
37
|
+
a: props => <a target="_blank" rel="noopener noreferrer" style={{ textDecoration: 'underline' }} {...props} />,
|
|
38
38
|
code: props =>
|
|
39
39
|
<Code
|
|
40
40
|
{...props}
|