@servicetitan/titan-chat-ui-anvil2 5.2.3 → 5.3.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 CHANGED
@@ -1,3 +1,27 @@
1
+ # v5.3.0 (Fri Jan 09 2026)
2
+
3
+ #### 🚀 Enhancement
4
+
5
+ - SPA-7821: ISH: chatbot input sanitization [#80](https://github.com/servicetitan/titan-chatbot-client/pull/80) ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
6
+
7
+ #### Authors: 1
8
+
9
+ - Alexandr Yarmolchuk ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
10
+
11
+ ---
12
+
13
+ # v5.2.4 (Fri Jan 09 2026)
14
+
15
+ #### 🐛 Bug Fix
16
+
17
+ - SPA-7821: File send error state [#81](https://github.com/servicetitan/titan-chatbot-client/pull/81) ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
18
+
19
+ #### Authors: 1
20
+
21
+ - Alexandr Yarmolchuk ([@AlexYarmolchuk](https://github.com/AlexYarmolchuk))
22
+
23
+ ---
24
+
1
25
  # v5.1.0 (Tue Dec 02 2025)
2
26
 
3
27
  #### 🚀 Enhancement
@@ -1 +1 @@
1
- {"version":3,"file":"chat-message.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-message.tsx"],"names":[],"mappings":"AACA,OAAO,EAIH,iBAAiB,EAEpB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAC;AAMzD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CA8D7C,CAAC"}
1
+ {"version":3,"file":"chat-message.d.ts","sourceRoot":"","sources":["../../../src/components/chat/chat-message.tsx"],"names":[],"mappings":"AACA,OAAO,EAIH,iBAAiB,EAEpB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAC;AAMzD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CA+D7C,CAAC"}
@@ -24,7 +24,7 @@ export const ChatMessage = observer(({ message, omitAvatar, omitTimestamp }) =>
24
24
  switch (message.type) {
25
25
  case 'message':
26
26
  case 'welcome':
27
- messageContentNode = (_jsx(MessageContentText, { message: message }));
27
+ messageContentNode = (_jsx(MessageContentText, { useMarkdown: message.participant.isAgent, message: message }));
28
28
  break;
29
29
  case 'file':
30
30
  messageContentNode = (_jsx(MessageContentFile, { message: message }));
@@ -1 +1 @@
1
- {"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"message-content-file.d.ts","sourceRoot":"","sources":["../../../src/components/message-content/message-content-file.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,oCAAoC,CAAC;AAE5F,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAErC,UAAU,wBAAwB;IAC9B,OAAO,EAAE,oBAAoB,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,wBAAwB,CAiB1D,CAAC"}
1
+ {"version":3,"file":"message-content-file.d.ts","sourceRoot":"","sources":["../../../src/components/message-content/message-content-file.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,oCAAoC,CAAC;AAE5F,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAErC,UAAU,wBAAwB;IAC9B,OAAO,EAAE,oBAAoB,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,wBAAwB,CAuB1D,CAAC"}
@@ -5,8 +5,10 @@ import { ChatMessageState } from '@servicetitan/titan-chat-ui-common';
5
5
  import { observer } from 'mobx-react';
6
6
  import { Fragment } from 'react';
7
7
  export const MessageContentFile = observer(({ message }) => {
8
+ var _a;
8
9
  const isDelivering = message.state === ChatMessageState.Delivering;
9
10
  const isDelivered = message.state === ChatMessageState.Delivered;
10
- return (_jsxs(Fragment, { children: [_jsxs(Flex, { direction: "row", gap: "2", alignItems: "center", children: [_jsx(Icon, { svg: IconFileAttach }), _jsx("span", { children: message.fileName })] }), (isDelivering || isDelivered) && (_jsx(Text, { variant: "body", size: "small", className: "ta-right", subdued: true, children: isDelivered ? 'File uploaded' : 'Please wait while uploading...' }))] }));
11
+ const isFailed = message.state === ChatMessageState.Failed;
12
+ return (_jsxs(Fragment, { children: [_jsxs(Flex, { direction: "row", gap: "2", alignItems: "center", children: [_jsx(Icon, { svg: IconFileAttach }), _jsx("span", { children: message.fileName })] }), isFailed && (_jsxs(Text, { variant: "body", size: "small", className: "ta-right c-red-500", children: ["File upload failed: ", (_a = message.error) !== null && _a !== void 0 ? _a : 'Unknown error'] })), (isDelivering || isDelivered) && (_jsx(Text, { variant: "body", size: "small", className: "ta-right", subdued: true, children: isDelivered ? 'File uploaded' : 'Please wait while uploading...' }))] }));
11
13
  });
12
14
  //# sourceMappingURL=message-content-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-content-file.js","sourceRoot":"","sources":["../../../src/components/message-content/message-content-file.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,cAAc,MAAM,kEAAkE,CAAC;AAC9F,OAAO,EAAwB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMrC,MAAM,CAAC,MAAM,kBAAkB,GAAiC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACrF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,SAAS,CAAC;IAEjE,OAAO,CACH,MAAC,QAAQ,eACL,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,IAAI,IAAC,GAAG,EAAE,cAAc,GAAI,EAC7B,yBAAO,OAAO,CAAC,QAAQ,GAAQ,IAC5B,EACN,CAAC,YAAY,IAAI,WAAW,CAAC,IAAI,CAC9B,KAAC,IAAI,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,UAAU,EAAC,OAAO,kBACzD,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gCAAgC,GAC9D,CACV,IACM,CACd,CAAC;AACN,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"message-content-file.js","sourceRoot":"","sources":["../../../src/components/message-content/message-content-file.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,cAAc,MAAM,kEAAkE,CAAC;AAC9F,OAAO,EAAwB,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAM,QAAQ,EAAE,MAAM,OAAO,CAAC;AAMrC,MAAM,CAAC,MAAM,kBAAkB,GAAiC,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;;IACrF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,UAAU,CAAC;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,SAAS,CAAC;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,KAAK,gBAAgB,CAAC,MAAM,CAAC;IAE3D,OAAO,CACH,MAAC,QAAQ,eACL,MAAC,IAAI,IAAC,SAAS,EAAC,KAAK,EAAC,GAAG,EAAC,GAAG,EAAC,UAAU,EAAC,QAAQ,aAC7C,KAAC,IAAI,IAAC,GAAG,EAAE,cAAc,GAAI,EAC7B,yBAAO,OAAO,CAAC,QAAQ,GAAQ,IAC5B,EACN,QAAQ,IAAI,CACT,MAAC,IAAI,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,oBAAoB,qCACvC,MAAA,OAAO,CAAC,KAAK,mCAAI,eAAe,IAClD,CACV,EACA,CAAC,YAAY,IAAI,WAAW,CAAC,IAAI,CAC9B,KAAC,IAAI,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,UAAU,EAAC,OAAO,kBACzD,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gCAAgC,GAC9D,CACV,IACM,CACd,CAAC;AACN,CAAC,CAAC,CAAC"}
@@ -3,6 +3,7 @@ import { FC } from 'react';
3
3
  interface IMessageContentTextProps {
4
4
  className?: string;
5
5
  message: ChatMessageModelText | ChatMessageModelWelcome;
6
+ useMarkdown?: boolean;
6
7
  ['data-cy']?: string;
7
8
  }
8
9
  export declare const MessageContentText: FC<IMessageContentTextProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"message-content-text.d.ts","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAG3B,UAAU,wBAAwB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,GAAG,uBAAuB,CAAC;IACxD,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,wBAAwB,CAK3D,CAAC"}
1
+ {"version":3,"file":"message-content-text.d.ts","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAEnG,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAI3B,UAAU,wBAAwB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,oBAAoB,GAAG,uBAAuB,CAAC;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,wBAAwB,CAa3D,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { observer } from 'mobx-react';
3
3
  import { MarkdownText } from '../common/markdown-text';
4
- export const MessageContentText = observer(({ className, message, ...rest }) => {
4
+ import { MultilineText } from '../common/multiline-text';
5
+ export const MessageContentText = observer(({ className, message, useMarkdown = true, ...rest }) => {
5
6
  var _a;
6
7
  const dataCy = (_a = rest['data-cy']) !== null && _a !== void 0 ? _a : 'titan-chat-text';
7
- return _jsx(MarkdownText, { className: className, text: message.message, "data-cy": dataCy });
8
+ return (_jsx("div", { className: className, "data-cy": dataCy, children: useMarkdown ? (_jsx(MarkdownText, { text: message.message, "data-cy": "titan-chat-text-markdown" })) : (_jsx(MultilineText, { text: message.message, "data-cy": "titan-chat-text-multiline" })) }));
8
9
  });
9
10
  //# sourceMappingURL=message-content-text.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-content-text.js","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAQvD,MAAM,CAAC,MAAM,kBAAkB,GAAiC,QAAQ,CACpE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;;IAChC,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,mCAAI,iBAAiB,CAAC;IACpD,OAAO,KAAC,YAAY,IAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,aAAW,MAAM,GAAI,CAAC;AAC1F,CAAC,CACJ,CAAC"}
1
+ {"version":3,"file":"message-content-text.js","sourceRoot":"","sources":["../../../src/components/message-content/message-content-text.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AASzD,MAAM,CAAC,MAAM,kBAAkB,GAAiC,QAAQ,CACpE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE;;IACpD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,SAAS,CAAC,mCAAI,iBAAiB,CAAC;IACpD,OAAO,CACH,cAAK,SAAS,EAAE,SAAS,aAAW,MAAM,YACrC,WAAW,CAAC,CAAC,CAAC,CACX,KAAC,YAAY,IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,aAAU,0BAA0B,GAAG,CAC7E,CAAC,CAAC,CAAC,CACA,KAAC,aAAa,IAAC,IAAI,EAAE,OAAO,CAAC,OAAO,aAAU,2BAA2B,GAAG,CAC/E,GACC,CACT,CAAC;AACN,CAAC,CACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/titan-chat-ui-anvil2",
3
- "version": "5.2.3",
3
+ "version": "5.3.0",
4
4
  "description": "Chat experience UI package (Anvil2 version)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -17,7 +17,7 @@
17
17
  "push:local": "yalc push"
18
18
  },
19
19
  "dependencies": {
20
- "@servicetitan/titan-chat-ui-common": "^5.2.3",
20
+ "@servicetitan/titan-chat-ui-common": "^5.3.0",
21
21
  "dompurify": "^3.2.6",
22
22
  "lodash": "4.17.21",
23
23
  "nanoid": "^5.1.5",
@@ -39,7 +39,7 @@
39
39
  "react-dom": ">=18"
40
40
  },
41
41
  "devDependencies": {
42
- "@servicetitan/cypress-shared": "^5.2.3",
42
+ "@servicetitan/cypress-shared": "^5.3.0",
43
43
  "cypress": "^15.2.0"
44
44
  },
45
45
  "keywords": [
@@ -52,5 +52,5 @@
52
52
  "cli": {
53
53
  "webpack": false
54
54
  },
55
- "gitHead": "e55c913f13784a374207c09c3f9e9c0b2cabf665"
55
+ "gitHead": "8b6cbe5dd27a1c2a8bcbfe755f7eed15228b35fa"
56
56
  }
@@ -34,6 +34,7 @@ export const ChatMessage: FC<IChatMessageProps> = observer(
34
34
  case 'welcome':
35
35
  messageContentNode = (
36
36
  <MessageContentText
37
+ useMarkdown={message.participant.isAgent}
37
38
  message={message as ChatMessageModelText | ChatMessageModelWelcome}
38
39
  />
39
40
  );
@@ -11,6 +11,7 @@ interface IMessageContentFileProps {
11
11
  export const MessageContentFile: FC<IMessageContentFileProps> = observer(({ message }) => {
12
12
  const isDelivering = message.state === ChatMessageState.Delivering;
13
13
  const isDelivered = message.state === ChatMessageState.Delivered;
14
+ const isFailed = message.state === ChatMessageState.Failed;
14
15
 
15
16
  return (
16
17
  <Fragment>
@@ -18,6 +19,11 @@ export const MessageContentFile: FC<IMessageContentFileProps> = observer(({ mess
18
19
  <Icon svg={IconFileAttach} />
19
20
  <span>{message.fileName}</span>
20
21
  </Flex>
22
+ {isFailed && (
23
+ <Text variant="body" size="small" className="ta-right c-red-500">
24
+ File upload failed: {message.error ?? 'Unknown error'}
25
+ </Text>
26
+ )}
21
27
  {(isDelivering || isDelivered) && (
22
28
  <Text variant="body" size="small" className="ta-right" subdued>
23
29
  {isDelivered ? 'File uploaded' : 'Please wait while uploading...'}
@@ -2,16 +2,26 @@ import { ChatMessageModelText, ChatMessageModelWelcome } from '@servicetitan/tit
2
2
  import { observer } from 'mobx-react';
3
3
  import { FC } from 'react';
4
4
  import { MarkdownText } from '../common/markdown-text';
5
+ import { MultilineText } from '../common/multiline-text';
5
6
 
6
7
  interface IMessageContentTextProps {
7
8
  className?: string;
8
9
  message: ChatMessageModelText | ChatMessageModelWelcome;
10
+ useMarkdown?: boolean;
9
11
  ['data-cy']?: string;
10
12
  }
11
13
 
12
14
  export const MessageContentText: FC<IMessageContentTextProps> = observer(
13
- ({ className, message, ...rest }) => {
15
+ ({ className, message, useMarkdown = true, ...rest }) => {
14
16
  const dataCy = rest['data-cy'] ?? 'titan-chat-text';
15
- return <MarkdownText className={className} text={message.message} data-cy={dataCy} />;
17
+ return (
18
+ <div className={className} data-cy={dataCy}>
19
+ {useMarkdown ? (
20
+ <MarkdownText text={message.message} data-cy="titan-chat-text-markdown" />
21
+ ) : (
22
+ <MultilineText text={message.message} data-cy="titan-chat-text-multiline" />
23
+ )}
24
+ </div>
25
+ );
16
26
  }
17
27
  );