@visma-swno/gaia-chat-ui 0.0.4 → 0.1.0-beta.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.
Files changed (217) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +33 -1
  3. package/dist/core/auth/auth.interceptor.d.ts +2 -0
  4. package/dist/core/auth/auth.interceptor.d.ts.map +1 -0
  5. package/dist/core/auth/auth.service.d.ts +15 -0
  6. package/dist/core/auth/auth.service.d.ts.map +1 -0
  7. package/dist/core/auth/auth.store.d.ts +22 -0
  8. package/dist/core/auth/auth.store.d.ts.map +1 -0
  9. package/dist/core/auth/auth.types.d.ts +15 -0
  10. package/dist/core/auth/auth.types.d.ts.map +1 -0
  11. package/dist/core/auth/auth.utils.d.ts +7 -0
  12. package/dist/core/auth/auth.utils.d.ts.map +1 -0
  13. package/dist/core/auth/index.d.ts +3 -0
  14. package/dist/core/auth/index.d.ts.map +1 -0
  15. package/dist/core/auth/strategies/strategy.interface.d.ts +7 -0
  16. package/dist/core/auth/strategies/strategy.interface.d.ts.map +1 -0
  17. package/dist/core/auth/strategies/visitor.strategy.d.ts +11 -0
  18. package/dist/core/auth/strategies/visitor.strategy.d.ts.map +1 -0
  19. package/dist/core/auth/strategies/visma-user.strategy.d.ts +10 -0
  20. package/dist/core/auth/strategies/visma-user.strategy.d.ts.map +1 -0
  21. package/dist/core/chat/ai-chat.service.d.ts +9 -0
  22. package/dist/core/chat/ai-chat.service.d.ts.map +1 -0
  23. package/dist/core/chat/chat.dto.d.ts +56 -0
  24. package/dist/core/chat/chat.dto.d.ts.map +1 -0
  25. package/dist/core/chat/chat.events.d.ts +11 -0
  26. package/dist/core/chat/chat.events.d.ts.map +1 -0
  27. package/dist/core/chat/chat.facade.d.ts +10 -0
  28. package/dist/core/chat/chat.facade.d.ts.map +1 -0
  29. package/dist/core/chat/chat.store.d.ts +23 -0
  30. package/dist/core/chat/chat.store.d.ts.map +1 -0
  31. package/dist/core/chat/chat.types.d.ts +67 -0
  32. package/dist/core/chat/chat.types.d.ts.map +1 -0
  33. package/dist/core/chat/chat.utils.d.ts +42 -0
  34. package/dist/core/chat/chat.utils.d.ts.map +1 -0
  35. package/dist/core/chat/index.d.ts +3 -0
  36. package/dist/core/chat/index.d.ts.map +1 -0
  37. package/dist/core/chat/support-chat.service.d.ts +9 -0
  38. package/dist/core/chat/support-chat.service.d.ts.map +1 -0
  39. package/dist/core/constants.d.ts +4 -0
  40. package/dist/core/constants.d.ts.map +1 -0
  41. package/dist/core/lib/errors.d.ts +12 -0
  42. package/dist/core/lib/errors.d.ts.map +1 -0
  43. package/dist/core/lib/http-client.d.ts +19 -0
  44. package/dist/core/lib/http-client.d.ts.map +1 -0
  45. package/dist/core/lib/liveleader.service.d.ts +71 -0
  46. package/dist/core/lib/liveleader.service.d.ts.map +1 -0
  47. package/dist/core/lib/logger.d.ts.map +1 -0
  48. package/dist/core/lib/store.d.ts +10 -0
  49. package/dist/core/lib/store.d.ts.map +1 -0
  50. package/dist/core/lib/websocket-client.d.ts +21 -0
  51. package/dist/core/lib/websocket-client.d.ts.map +1 -0
  52. package/dist/gaia-chat-ui.es.js +4777 -4799
  53. package/dist/gaia-chat-ui.es.js.map +1 -1
  54. package/dist/gaia-chat-ui.umd.js +1364 -1560
  55. package/dist/gaia-chat-ui.umd.js.map +1 -1
  56. package/dist/index.d.ts +3 -2
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/ui/chat/chat-menu.d.ts +6 -0
  59. package/dist/ui/chat/chat-menu.d.ts.map +1 -0
  60. package/dist/ui/chat/chat-message-list.d.ts +13 -0
  61. package/dist/ui/chat/chat-message-list.d.ts.map +1 -0
  62. package/dist/ui/chat/chat-message-list.styles.d.ts +2 -0
  63. package/dist/ui/chat/chat-message-list.styles.d.ts.map +1 -0
  64. package/dist/ui/chat/chat-message.d.ts +15 -0
  65. package/dist/ui/chat/chat-message.d.ts.map +1 -0
  66. package/dist/ui/chat/chat-message.styles.d.ts.map +1 -0
  67. package/dist/ui/chat/chat.d.ts +27 -0
  68. package/dist/ui/chat/chat.d.ts.map +1 -0
  69. package/dist/ui/chat/chat.events.d.ts +16 -0
  70. package/dist/ui/chat/chat.events.d.ts.map +1 -0
  71. package/dist/ui/chat/chat.styles.d.ts.map +1 -0
  72. package/dist/ui/chat/user-input.d.ts +12 -0
  73. package/dist/ui/chat/user-input.d.ts.map +1 -0
  74. package/dist/ui/chat/user-input.styles.d.ts +2 -0
  75. package/dist/ui/chat/user-input.styles.d.ts.map +1 -0
  76. package/dist/{components → ui/primitives}/avatar/avatar.d.ts +1 -1
  77. package/dist/ui/primitives/avatar/avatar.d.ts.map +1 -0
  78. package/dist/ui/primitives/avatar/avatar.styles.d.ts.map +1 -0
  79. package/dist/ui/primitives/base-element.d.ts +10 -0
  80. package/dist/ui/primitives/base-element.d.ts.map +1 -0
  81. package/dist/{components → ui/primitives}/button/button.d.ts +2 -3
  82. package/dist/ui/primitives/button/button.d.ts.map +1 -0
  83. package/dist/ui/primitives/button/button.styles.d.ts.map +1 -0
  84. package/dist/{components/card/card-header.d.ts → ui/primitives/card/card.d.ts} +2 -2
  85. package/dist/ui/primitives/card/card.d.ts.map +1 -0
  86. package/dist/ui/primitives/card/card.styles.d.ts.map +1 -0
  87. package/dist/ui/primitives/citation/citation.d.ts +8 -0
  88. package/dist/ui/primitives/citation/citation.d.ts.map +1 -0
  89. package/dist/ui/primitives/citation/citation.styles.d.ts +2 -0
  90. package/dist/ui/primitives/citation/citation.styles.d.ts.map +1 -0
  91. package/dist/ui/primitives/citation-list/citation-list.d.ts +8 -0
  92. package/dist/ui/primitives/citation-list/citation-list.d.ts.map +1 -0
  93. package/dist/ui/primitives/citation-list/citation-list.styles.d.ts +2 -0
  94. package/dist/ui/primitives/citation-list/citation-list.styles.d.ts.map +1 -0
  95. package/dist/{components → ui/primitives}/loader/loader.d.ts +1 -1
  96. package/dist/ui/primitives/loader/loader.d.ts.map +1 -0
  97. package/dist/ui/primitives/loader/loader.styles.d.ts.map +1 -0
  98. package/dist/{components → ui/primitives}/menu/menu.d.ts +1 -1
  99. package/dist/ui/primitives/menu/menu.d.ts.map +1 -0
  100. package/dist/ui/primitives/menu/menu.styles.d.ts.map +1 -0
  101. package/dist/ui/primitives/menu-item/menu-item.d.ts +10 -0
  102. package/dist/ui/primitives/menu-item/menu-item.d.ts.map +1 -0
  103. package/dist/ui/primitives/menu-item/menu-item.styles.d.ts.map +1 -0
  104. package/dist/{components → ui/primitives}/popover/popover.d.ts +3 -3
  105. package/dist/ui/primitives/popover/popover.d.ts.map +1 -0
  106. package/dist/ui/primitives/popover/popover.styles.d.ts.map +1 -0
  107. package/dist/{components → ui/primitives}/spacing/spacing.d.ts +1 -1
  108. package/dist/ui/primitives/spacing/spacing.d.ts.map +1 -0
  109. package/dist/ui/primitives/spacing/spacing.styles.d.ts.map +1 -0
  110. package/dist/{components → ui/primitives}/tooltip/tooltip.d.ts +1 -1
  111. package/dist/ui/primitives/tooltip/tooltip.d.ts.map +1 -0
  112. package/dist/ui/primitives/tooltip/tooltip.styles.d.ts.map +1 -0
  113. package/dist/{styles.d.ts → ui/styles/global.d.ts} +1 -1
  114. package/dist/ui/styles/global.d.ts.map +1 -0
  115. package/dist/{components/chat-message/markdown.styles.d.ts → ui/styles/markdown.d.ts} +1 -1
  116. package/dist/ui/styles/markdown.d.ts.map +1 -0
  117. package/package.json +30 -9
  118. package/dist/components/avatar/avatar.d.ts.map +0 -1
  119. package/dist/components/avatar/avatar.styles.d.ts.map +0 -1
  120. package/dist/components/base.d.ts +0 -7
  121. package/dist/components/base.d.ts.map +0 -1
  122. package/dist/components/button/button.d.ts.map +0 -1
  123. package/dist/components/button/button.styles.d.ts.map +0 -1
  124. package/dist/components/card/card-content.d.ts +0 -6
  125. package/dist/components/card/card-content.d.ts.map +0 -1
  126. package/dist/components/card/card-content.styles.d.ts +0 -2
  127. package/dist/components/card/card-content.styles.d.ts.map +0 -1
  128. package/dist/components/card/card-footer.d.ts +0 -6
  129. package/dist/components/card/card-footer.d.ts.map +0 -1
  130. package/dist/components/card/card-footer.styles.d.ts +0 -2
  131. package/dist/components/card/card-footer.styles.d.ts.map +0 -1
  132. package/dist/components/card/card-header.d.ts.map +0 -1
  133. package/dist/components/card/card-header.styles.d.ts +0 -2
  134. package/dist/components/card/card-header.styles.d.ts.map +0 -1
  135. package/dist/components/card/card.d.ts +0 -6
  136. package/dist/components/card/card.d.ts.map +0 -1
  137. package/dist/components/card/card.styles.d.ts.map +0 -1
  138. package/dist/components/chat/chat.d.ts +0 -28
  139. package/dist/components/chat/chat.d.ts.map +0 -1
  140. package/dist/components/chat/chat.styles.d.ts.map +0 -1
  141. package/dist/components/chat-input/chat-input.d.ts +0 -16
  142. package/dist/components/chat-input/chat-input.d.ts.map +0 -1
  143. package/dist/components/chat-input/chat-input.styles.d.ts +0 -2
  144. package/dist/components/chat-input/chat-input.styles.d.ts.map +0 -1
  145. package/dist/components/chat-message/chat-message.d.ts +0 -19
  146. package/dist/components/chat-message/chat-message.d.ts.map +0 -1
  147. package/dist/components/chat-message/chat-message.styles.d.ts.map +0 -1
  148. package/dist/components/chat-message/chat-message.utils.d.ts +0 -2
  149. package/dist/components/chat-message/chat-message.utils.d.ts.map +0 -1
  150. package/dist/components/chat-message/markdown.styles.d.ts.map +0 -1
  151. package/dist/components/index.d.ts +0 -16
  152. package/dist/components/index.d.ts.map +0 -1
  153. package/dist/components/loader/loader.d.ts.map +0 -1
  154. package/dist/components/loader/loader.styles.d.ts.map +0 -1
  155. package/dist/components/menu/menu-item.d.ts +0 -11
  156. package/dist/components/menu/menu-item.d.ts.map +0 -1
  157. package/dist/components/menu/menu-item.styles.d.ts.map +0 -1
  158. package/dist/components/menu/menu.d.ts.map +0 -1
  159. package/dist/components/menu/menu.styles.d.ts.map +0 -1
  160. package/dist/components/popover/popover.d.ts.map +0 -1
  161. package/dist/components/popover/popover.styles.d.ts.map +0 -1
  162. package/dist/components/spacing/spacing.d.ts.map +0 -1
  163. package/dist/components/spacing/spacing.styles.d.ts.map +0 -1
  164. package/dist/components/tooltip/tooltip.d.ts.map +0 -1
  165. package/dist/components/tooltip/tooltip.styles.d.ts.map +0 -1
  166. package/dist/config/constants.d.ts +0 -51
  167. package/dist/config/constants.d.ts.map +0 -1
  168. package/dist/constants/icon-map.d.ts +0 -3
  169. package/dist/constants/icon-map.d.ts.map +0 -1
  170. package/dist/controllers/chat-controller.d.ts +0 -22
  171. package/dist/controllers/chat-controller.d.ts.map +0 -1
  172. package/dist/controllers/support-controller.d.ts +0 -36
  173. package/dist/controllers/support-controller.d.ts.map +0 -1
  174. package/dist/services/base-service.d.ts +0 -21
  175. package/dist/services/base-service.d.ts.map +0 -1
  176. package/dist/services/chat-service.d.ts +0 -14
  177. package/dist/services/chat-service.d.ts.map +0 -1
  178. package/dist/services/chat-service.dto.d.ts +0 -12
  179. package/dist/services/chat-service.dto.d.ts.map +0 -1
  180. package/dist/services/liveleader-service.d.ts +0 -10
  181. package/dist/services/liveleader-service.d.ts.map +0 -1
  182. package/dist/services/liveleader-service.dto.d.ts +0 -109
  183. package/dist/services/liveleader-service.dto.d.ts.map +0 -1
  184. package/dist/services/websocket-manager.d.ts +0 -38
  185. package/dist/services/websocket-manager.d.ts.map +0 -1
  186. package/dist/styles.d.ts.map +0 -1
  187. package/dist/types/events.d.ts +0 -9
  188. package/dist/types/events.d.ts.map +0 -1
  189. package/dist/types/icons.d.ts +0 -2
  190. package/dist/types/icons.d.ts.map +0 -1
  191. package/dist/types/index.d.ts +0 -1
  192. package/dist/types/index.d.ts.map +0 -1
  193. package/dist/types/interfaces/chat-controller-host.d.ts +0 -9
  194. package/dist/types/interfaces/chat-controller-host.d.ts.map +0 -1
  195. package/dist/types/models/chat-message.d.ts +0 -75
  196. package/dist/types/models/chat-message.d.ts.map +0 -1
  197. package/dist/types/models/conversation.d.ts +0 -6
  198. package/dist/types/models/conversation.d.ts.map +0 -1
  199. package/dist/types/server-sent-events.d.ts +0 -29
  200. package/dist/types/server-sent-events.d.ts.map +0 -1
  201. package/dist/utils/index.d.ts +0 -1
  202. package/dist/utils/index.d.ts.map +0 -1
  203. package/dist/utils/logger.d.ts.map +0 -1
  204. package/dist/utils/object.d.ts +0 -3
  205. package/dist/utils/object.d.ts.map +0 -1
  206. /package/dist/{utils → core/lib}/logger.d.ts +0 -0
  207. /package/dist/{components/chat-message → ui/chat}/chat-message.styles.d.ts +0 -0
  208. /package/dist/{components → ui}/chat/chat.styles.d.ts +0 -0
  209. /package/dist/{components → ui/primitives}/avatar/avatar.styles.d.ts +0 -0
  210. /package/dist/{components → ui/primitives}/button/button.styles.d.ts +0 -0
  211. /package/dist/{components → ui/primitives}/card/card.styles.d.ts +0 -0
  212. /package/dist/{components → ui/primitives}/loader/loader.styles.d.ts +0 -0
  213. /package/dist/{components → ui/primitives}/menu/menu.styles.d.ts +0 -0
  214. /package/dist/{components/menu → ui/primitives/menu-item}/menu-item.styles.d.ts +0 -0
  215. /package/dist/{components → ui/primitives}/popover/popover.styles.d.ts +0 -0
  216. /package/dist/{components → ui/primitives}/spacing/spacing.styles.d.ts +0 -0
  217. /package/dist/{components → ui/primitives}/tooltip/tooltip.styles.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -0,0 +1,30 @@
1
+ # Changelog
2
+
3
+ ## [0.1.0-beta.1](https://github.com/visma-swno/vsn-assistant/compare/chat-ui@v0.1.0-beta...chat-ui@v0.1.0-beta.1) (2025-08-04)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * brace-expansion Regular Expression Denial of Service vulnerability ([#845](https://github.com/visma-swno/vsn-assistant/issues/845)) ([233a2d8](https://github.com/visma-swno/vsn-assistant/commit/233a2d8eaf9681eb2896a72894304a84894d0ddb))
9
+ * **deps:** bump marked from 15.0.11 to 16.1.2 in /chat-ui ([#840](https://github.com/visma-swno/vsn-assistant/issues/840)) ([2a740fc](https://github.com/visma-swno/vsn-assistant/commit/2a740fc124a81e7ebd2d8c123c43420c79ebb522))
10
+
11
+ ## [0.1.0-beta](https://github.com/visma-swno/vsn-assistant/compare/chat-ui-v0.0.1-beta...chat-ui-v0.1.0-beta) (2025-07-31)
12
+
13
+
14
+ ### Features
15
+
16
+ * Add liveleader support ([#661](https://github.com/visma-swno/vsn-assistant/issues/661)) ([76b79ab](https://github.com/visma-swno/vsn-assistant/commit/76b79ab678f8ea3d31a45101f4d5012cbc40dded))
17
+ * **api:** Refactor chat messages ([#634](https://github.com/visma-swno/vsn-assistant/issues/634)) ([3b7ecf9](https://github.com/visma-swno/vsn-assistant/commit/3b7ecf971f2f35011d6cabafb3fed6d3fbaaa824))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * allow typing new message while waiting for AI response ([#724](https://github.com/visma-swno/vsn-assistant/issues/724)) ([fb52a24](https://github.com/visma-swno/vsn-assistant/commit/fb52a243a3106eb2d705a86af4120f5dae7a72c2))
23
+ * **api:** Improve conversation stream ([#632](https://github.com/visma-swno/vsn-assistant/issues/632)) ([74be1f6](https://github.com/visma-swno/vsn-assistant/commit/74be1f6243479f09d82c14239327e97f54afcb11))
24
+ * **chat-ui:** Add error handler ([#639](https://github.com/visma-swno/vsn-assistant/issues/639)) ([a0ea255](https://github.com/visma-swno/vsn-assistant/commit/a0ea2556d5143fcf2bb496b42ca69ec3cbc5ba6c))
25
+ * **chat-ui:** Add user input length limitations ([#654](https://github.com/visma-swno/vsn-assistant/issues/654)) ([3f9c867](https://github.com/visma-swno/vsn-assistant/commit/3f9c867eaa6d0cea2757297fdb620edf035432ea)), closes [#648](https://github.com/visma-swno/vsn-assistant/issues/648)
26
+ * **chat-ui:** Make team-id optional ([#545](https://github.com/visma-swno/vsn-assistant/issues/545)) ([9030f45](https://github.com/visma-swno/vsn-assistant/commit/9030f450cff05e693bdd1ffbe09f01956c94e55a))
27
+ * **chat-ui:** Read expiration time from token payload ([#624](https://github.com/visma-swno/vsn-assistant/issues/624)) ([78096df](https://github.com/visma-swno/vsn-assistant/commit/78096dffe95dd343ba8347bfc8df86078ac91a0f))
28
+ * **chat-ui:** update package version ([#663](https://github.com/visma-swno/vsn-assistant/issues/663)) ([4ab1927](https://github.com/visma-swno/vsn-assistant/commit/4ab19273476b03308a1ee696e9151e09c1fe6c13))
29
+ * **chat-ui:** Update popover to latest Gaia guidelines ([#565](https://github.com/visma-swno/vsn-assistant/issues/565)) ([0ad466d](https://github.com/visma-swno/vsn-assistant/commit/0ad466d74ea26a736855e06760d7c41d9de901bc))
30
+ * set initial beta-version ([#770](https://github.com/visma-swno/vsn-assistant/issues/770)) ([e77e00a](https://github.com/visma-swno/vsn-assistant/commit/e77e00affe7a14975aec51bca202eeed497aa217))
package/README.md CHANGED
@@ -1 +1,33 @@
1
- # Gaia Chat UI
1
+ # @visma-swno/gaia-chat-ui
2
+
3
+ Web component library for the Gaia Assistant Chat UI, built with Lit for Visma Software Nordic products.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @visma-swno/gaia-chat-ui
9
+ ```
10
+
11
+ **Note:** This package requires `lit` as a peer dependency:
12
+
13
+ ```bash
14
+ npm install lit@^3.3.0
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```javascript
20
+ import '@visma-swno/gaia-chat-ui';
21
+ ```
22
+
23
+ ```html
24
+ <gaia-chat
25
+ profile-id="default"
26
+ base-url="https://your-api-endpoint.com"
27
+ team-id="your-team-id">
28
+ </gaia-chat>
29
+ ```
30
+
31
+ ## Documentation
32
+
33
+ For detailed documentation and development instructions, see the [main repository](https://github.com/visma-swno/vsn-assistant).
@@ -0,0 +1,2 @@
1
+ export declare const authRequestInterceptor: (_: RequestInfo, config: RequestInit) => Promise<RequestInit>;
2
+ //# sourceMappingURL=auth.interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.interceptor.d.ts","sourceRoot":"","sources":["../../../src/core/auth/auth.interceptor.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,GACjC,GAAG,WAAW,EACd,QAAQ,WAAW,KAClB,OAAO,CAAC,WAAW,CAarB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { AuthConfig } from './auth.types';
2
+ import { AuthStrategy } from './strategies/strategy.interface';
3
+ export declare class AuthService {
4
+ protected strategy: AuthStrategy | null;
5
+ init(config: AuthConfig): Promise<void>;
6
+ authorize(): Promise<void>;
7
+ refresh(): Promise<void>;
8
+ logout(): Promise<void>;
9
+ isAuthenticated(): boolean;
10
+ protected hasStrategy(): asserts this is this & {
11
+ strategy: AuthStrategy;
12
+ };
13
+ }
14
+ export declare const authService: AuthService;
15
+ //# sourceMappingURL=auth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.d.ts","sourceRoot":"","sources":["../../../src/core/auth/auth.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAI/D,qBAAa,WAAW;IACtB,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEzC,IAAI,CAAC,MAAM,EAAE,UAAU;IA0BvB,SAAS;IAMT,OAAO;IAMP,MAAM;IAMZ,eAAe,IAAI,OAAO;IAK1B,SAAS,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,GAAG;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE;CAK3E;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Store } from '../lib/store';
2
+ import { AuthState } from './auth.types';
3
+ export declare class AuthStore extends Store<AuthState> {
4
+ private readonly _authStorageKey;
5
+ private readonly _refreshBufferMs;
6
+ private expirationTimer?;
7
+ constructor();
8
+ setToken(token: {
9
+ accessToken: string;
10
+ isVisitor: boolean;
11
+ }): void;
12
+ clearToken(): void;
13
+ hasValidToken(): boolean;
14
+ isVisitorToken(): boolean;
15
+ private _isTokenExpired;
16
+ private _saveToStorage;
17
+ private _loadFromStorage;
18
+ private _clearStorage;
19
+ private _startExpirationTimer;
20
+ }
21
+ export declare const authStore$: AuthStore;
22
+ //# sourceMappingURL=auth.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.store.d.ts","sourceRoot":"","sources":["../../../src/core/auth/auth.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAmB,MAAM,cAAc,CAAC;AAG1D,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA8B;IAC9D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,eAAe,CAAC,CAAiB;;IAclC,QAAQ,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;IAkB3D,UAAU;IAaV,aAAa,IAAI,OAAO;IAQxB,cAAc,IAAI,OAAO;IAIhC,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,qBAAqB;CAS9B;AAED,eAAO,MAAM,UAAU,WAAkB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type AuthConfig = {
2
+ vismaToken: string | null;
3
+ isVisitor: boolean;
4
+ };
5
+ export interface StoredAuthState {
6
+ accessToken: string;
7
+ expires: string;
8
+ isVisitor: true;
9
+ }
10
+ export interface AuthState {
11
+ accessToken: string | null;
12
+ expires: number | null;
13
+ isVisitor: boolean;
14
+ }
15
+ //# sourceMappingURL=auth.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.types.d.ts","sourceRoot":"","sources":["../../../src/core/auth/auth.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Get the expiration time of a token in milliseconds
3
+ * @param token - The token to get the expiration time of
4
+ * @returns The expiration time of the token in milliseconds
5
+ */
6
+ export declare const getTokenExpiration: (token: string) => number | null;
7
+ //# sourceMappingURL=auth.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.utils.d.ts","sourceRoot":"","sources":["../../../src/core/auth/auth.utils.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,kBAG/C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { authService } from './auth.service';
2
+ export { authStore$ } from './auth.store';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface AuthStrategy {
2
+ authorize(): Promise<void>;
3
+ isAuthenticated(): boolean;
4
+ refresh(): Promise<void>;
5
+ logout(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=strategy.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.interface.d.ts","sourceRoot":"","sources":["../../../../src/core/auth/strategies/strategy.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,eAAe,IAAI,OAAO,CAAC;IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
@@ -0,0 +1,11 @@
1
+ import { AuthStrategy } from './strategy.interface';
2
+ export type VisitorTokenResponse = {
3
+ accessToken: string;
4
+ };
5
+ export declare class VisitorStrategy implements AuthStrategy {
6
+ authorize(): Promise<void>;
7
+ isAuthenticated(): boolean;
8
+ refresh(): Promise<void>;
9
+ logout(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=visitor.strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/auth/strategies/visitor.strategy.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,eAAgB,YAAW,YAAY;IAC5C,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAahC,eAAe,IAAI,OAAO;IAIpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
@@ -0,0 +1,10 @@
1
+ import { AuthStrategy } from './strategy.interface';
2
+ export declare class VismaUserStrategy implements AuthStrategy {
3
+ private readonly vismaToken;
4
+ constructor(vismaToken: string);
5
+ authorize(): Promise<void>;
6
+ isAuthenticated(): boolean;
7
+ refresh(): Promise<void>;
8
+ logout(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=visma-user.strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visma-user.strategy.d.ts","sourceRoot":"","sources":["../../../../src/core/auth/strategies/visma-user.strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,qBAAa,iBAAkB,YAAW,YAAY;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAEzC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAWhC,eAAe,IAAI,OAAO;IAIpB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
@@ -0,0 +1,9 @@
1
+ import { GetConversationByIdResponse } from './chat.dto';
2
+ export declare class AIChatService {
3
+ sendMessage(profileId: string, content: string): Promise<void>;
4
+ approveToolCalls(profileId: string, messageId: string, isGranted: boolean): Promise<void>;
5
+ startNewConversation(): Promise<void>;
6
+ getConversationById(id: string): Promise<GetConversationByIdResponse>;
7
+ private handleStreamRequest;
8
+ }
9
+ //# sourceMappingURL=ai-chat.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-chat.service.d.ts","sourceRoot":"","sources":["../../../src/core/chat/ai-chat.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,2BAA2B,EAE5B,MAAM,YAAY,CAAC;AAIpB,qBAAa,aAAa;IAClB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9D,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBzF,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrC,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC;YAQ7D,mBAAmB;CAqClC"}
@@ -0,0 +1,56 @@
1
+ import { ConversationState } from './chat.types';
2
+ /**
3
+ * Chat DTOs
4
+ */
5
+ export type SendMessageRequest = {
6
+ profileId: string;
7
+ conversationId: string | null;
8
+ content: string;
9
+ };
10
+ export type ApproveToolCallRequest = {
11
+ profileId: string;
12
+ messageId: string;
13
+ isGranted: boolean;
14
+ };
15
+ export type GetConversationByIdResponse = ConversationState;
16
+ /**
17
+ * Chat Events
18
+ */
19
+ export type JsonPatchOperation = 'add' | 'remove' | 'replace';
20
+ export interface PatchPayload<T> {
21
+ op: JsonPatchOperation;
22
+ path: string;
23
+ value: T;
24
+ }
25
+ export type ActionPayload<T extends object> = {
26
+ id: string;
27
+ type: 'action';
28
+ action: string;
29
+ data: T;
30
+ message: string;
31
+ source: string;
32
+ metadata: Record<string, unknown>;
33
+ };
34
+ export type EscalateToHumanSupportPayload = {
35
+ conversationId: string;
36
+ webSocketUrl: string;
37
+ };
38
+ export type MessagePayload = {
39
+ type: 'conversationIdSet';
40
+ conversationId: string;
41
+ } | {
42
+ type: 'contentStart';
43
+ } | {
44
+ type: 'contentEnd';
45
+ };
46
+ export type ChatUpdateEvent = {
47
+ event: 'patch';
48
+ data: PatchPayload<unknown>;
49
+ } | {
50
+ event: 'message';
51
+ data: MessagePayload;
52
+ } | {
53
+ event: 'action';
54
+ data: ActionPayload<object>;
55
+ };
56
+ //# sourceMappingURL=chat.dto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.dto.d.ts","sourceRoot":"","sources":["../../../src/core/chat/chat.dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AAC5D;;GAEG;AAEH,MAAM,MAAM,kBAAkB,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,EAAE,EAAE,kBAAkB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;CACV;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ActionPayload, EscalateToHumanSupportPayload } from './chat.dto';
2
+ export declare class ActionEvent<T extends object> extends CustomEvent<ActionPayload<T>> {
3
+ constructor(action: ActionPayload<T>);
4
+ }
5
+ export declare function isEscalateToHumanSupportEvent(event: ActionEvent<object>): event is ActionEvent<EscalateToHumanSupportPayload>;
6
+ declare global {
7
+ interface GlobalEventHandlersEventMap {
8
+ action: ActionEvent<object>;
9
+ }
10
+ }
11
+ //# sourceMappingURL=chat.events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.events.d.ts","sourceRoot":"","sources":["../../../src/core/chat/chat.events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAE1E,qBAAa,WAAW,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CAGrC;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,KAAK,IAAI,WAAW,CAAC,6BAA6B,CAAC,CAErD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,2BAA2B;QACnC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;KAC7B;CACF"}
@@ -0,0 +1,10 @@
1
+ export declare class ChatFacade {
2
+ private readonly aiChatService;
3
+ private readonly supportChatService;
4
+ init(): Promise<void>;
5
+ sendMessage(profileId: string, content: string): Promise<void>;
6
+ approveToolCalls(profileId: string, messageId: string, isGranted: boolean): Promise<void>;
7
+ startNewConversation(): Promise<void>;
8
+ }
9
+ export declare const chatFacade: ChatFacade;
10
+ //# sourceMappingURL=chat.facade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.facade.d.ts","sourceRoot":"","sources":["../../../src/core/chat/chat.facade.ts"],"names":[],"mappings":"AAOA,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA4B;IAEzD,IAAI;IA+BJ,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9D,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzF,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;CAM5C;AAED,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { Store } from '../lib/store';
2
+ import { PatchPayload } from './chat.dto';
3
+ import { ChatMessage, ConversationState } from './chat.types';
4
+ export declare class ChatStore extends Store<ConversationState> {
5
+ private readonly _conversationStorageKey;
6
+ constructor();
7
+ getMessages(): ChatMessage[];
8
+ getLastMessage(): ChatMessage | null;
9
+ setStatus(status: ConversationState['status']): void;
10
+ setMessages(messages: Record<string, ChatMessage>): void;
11
+ setCurrentNode(nodeId: string | null): void;
12
+ setMessage(messageId: string, message: ChatMessage): void;
13
+ removeMessage(messageId: string): void;
14
+ addMessage(message: ChatMessage): void;
15
+ setId(id: string): void;
16
+ applyPatchOperation(patch: PatchPayload<unknown>): void;
17
+ resetState(): void;
18
+ private _saveToStorage;
19
+ private _loadFromStorage;
20
+ clearStorage(): void;
21
+ }
22
+ export declare const chatStore$: ChatStore;
23
+ //# sourceMappingURL=chat.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.store.d.ts","sourceRoot":"","sources":["../../../src/core/chat/chat.store.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAc9D,qBAAa,SAAU,SAAQ,KAAK,CAAC,iBAAiB,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsC;;IAUvE,WAAW,IAAI,WAAW,EAAE;IAI5B,cAAc,IAAI,WAAW,GAAG,IAAI;IAKpC,SAAS,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC;IAO7C,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAOjD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOpC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAUlD,aAAa,CAAC,SAAS,EAAE,MAAM;IAS/B,UAAU,CAAC,OAAO,EAAE,WAAW;IAW/B,KAAK,CAAC,EAAE,EAAE,MAAM;IAQhB,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC;IA8BhD,UAAU;IAKjB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,gBAAgB;IAUjB,YAAY;CAGpB;AAED,eAAO,MAAM,UAAU,WAAkB,CAAC"}
@@ -0,0 +1,67 @@
1
+ export type ChatMessageRole = 'system' | 'user' | 'assistant' | 'tool' | 'operator';
2
+ export type ChatMessageStatus = 'inProgress' | 'finishedSuccessfully';
3
+ export type ChatMessageLevel = 'info' | 'success' | 'warning' | 'error';
4
+ export type ApprovalStatus = 'approved' | 'denied' | 'pending';
5
+ export type Author = {
6
+ role: ChatMessageRole;
7
+ name?: string;
8
+ avatarUrl?: string;
9
+ };
10
+ export type Citation = {
11
+ title: string;
12
+ url: string;
13
+ score: number;
14
+ };
15
+ export type ToolCall = {
16
+ callId: string;
17
+ pluginName: string;
18
+ functionName: string;
19
+ functionArguments: Record<string, unknown>;
20
+ isApproved: boolean;
21
+ };
22
+ export type ToolCallResult = {
23
+ callId: string;
24
+ pluginName: string;
25
+ functionName: string;
26
+ result: unknown;
27
+ };
28
+ export type TokenUsage = {
29
+ inputTokens: number;
30
+ outputTokens: number;
31
+ totalTokens: number;
32
+ };
33
+ export type MessageMetadata = {
34
+ isVisuallyHidden: boolean;
35
+ excludeFromHistory: boolean;
36
+ tokenUsage?: TokenUsage;
37
+ requestId?: string;
38
+ userApproval?: ApprovalStatus;
39
+ };
40
+ /** Single immutable message */
41
+ export interface ChatMessage {
42
+ readonly id: string;
43
+ readonly author: Author;
44
+ readonly status: ChatMessageStatus;
45
+ readonly createdAt: string;
46
+ readonly updatedAt: string;
47
+ readonly level?: ChatMessageLevel;
48
+ readonly content: string[];
49
+ readonly toolCalls: ToolCall[];
50
+ readonly toolCallResult?: ToolCallResult;
51
+ readonly citations: Citation[];
52
+ readonly metadata: MessageMetadata;
53
+ }
54
+ /** Conversation aggregate */
55
+ export interface ConversationState {
56
+ readonly id: string | null;
57
+ readonly isActive: boolean;
58
+ readonly isEscalated: boolean;
59
+ readonly supportUrl: string | null;
60
+ readonly supportConversationId: string | null;
61
+ readonly messages: Record<string, ChatMessage>;
62
+ readonly currentNode: string | null;
63
+ readonly status: 'idle' | 'sending' | 'streaming' | 'error';
64
+ readonly createdAt: string;
65
+ readonly updatedAt: string;
66
+ }
67
+ //# sourceMappingURL=chat.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.types.d.ts","sourceRoot":"","sources":["../../../src/core/chat/chat.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { ActionPayload, MessagePayload, PatchPayload } from './chat.dto';
2
+ import { ChatMessage, ChatMessageLevel, ChatMessageRole, ChatMessageStatus } from './chat.types';
3
+ export declare class ChatMessageBuilder {
4
+ private id;
5
+ private author;
6
+ private status;
7
+ private level;
8
+ private content;
9
+ private toolCalls;
10
+ private citations;
11
+ private metadata;
12
+ private timestamp;
13
+ withId(id: string): this;
14
+ withRole(role: ChatMessageRole): this;
15
+ withAuthorName(name: string | undefined): this;
16
+ withAuthorAvatarUrl(avatarUrl: string | undefined): this;
17
+ withStatus(status: ChatMessageStatus): this;
18
+ withLevel(level: ChatMessageLevel): this;
19
+ addContent(content: string): this;
20
+ withContent(content: string): this;
21
+ withTimestamp(timestamp: Date): this;
22
+ build(): ChatMessage;
23
+ }
24
+ export declare const createUserMessage: (content: string) => ChatMessage;
25
+ export declare const createErrorMessage: (traceId?: string) => ChatMessage;
26
+ export interface SseEventHandlers {
27
+ onPatch: (patchEvent: PatchPayload<unknown>) => void;
28
+ onMessage: (message: MessagePayload) => void;
29
+ onAction: (action: ActionPayload<object>) => void;
30
+ }
31
+ /**
32
+ * Processes a ReadableStream from a Server-Sent Events endpoint.
33
+ * @param stream The ReadableStream from the response body.
34
+ * @param handlers An object containing callback functions for different event types.
35
+ */
36
+ export declare function sseStreamReader(stream: ReadableStream<Uint8Array<ArrayBuffer>>, handlers: SseEventHandlers): Promise<void>;
37
+ declare global {
38
+ interface ReadableStream<R = any> {
39
+ [Symbol.asyncIterator](): AsyncIterableIterator<R>;
40
+ }
41
+ }
42
+ //# sourceMappingURL=chat.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.utils.d.ts","sourceRoot":"","sources":["../../../src/core/chat/chat.utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAmB,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1F,OAAO,EAEL,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EAIlB,MAAM,cAAc,CAAC;AAEtB,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAGd;IACF,OAAO,CAAC,SAAS,CAAoB;IAErC,MAAM,CAAC,EAAE,EAAE,MAAM;IAKjB,QAAQ,CAAC,IAAI,EAAE,eAAe;IAK9B,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS;IAKvC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAKjD,UAAU,CAAC,MAAM,EAAE,iBAAiB;IAKpC,SAAS,CAAC,KAAK,EAAE,gBAAgB;IAKjC,UAAU,CAAC,OAAO,EAAE,MAAM;IAK1B,WAAW,CAAC,OAAO,EAAE,MAAM;IAK3B,aAAa,CAAC,SAAS,EAAE,IAAI;IAK7B,KAAK,IAAI,WAAW;CAcrB;AAED,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,KAAG,WACoB,CAAC;AAEzE,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,WAYrD,CAAC;AAGF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACrD,SAAS,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CACnD;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAC/C,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,cAAc,CAAC,CAAC,GAAG,GAAG;QAC9B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC;KACpD;CACF"}
@@ -0,0 +1,3 @@
1
+ export { chatFacade } from './chat.facade';
2
+ export { chatStore$ } from './chat.store';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare class SupportChatService {
2
+ private readonly liveLeaderService;
3
+ constructor();
4
+ connect(supportUrl: string, supportConversationId: string): Promise<void>;
5
+ disconnect(): Promise<void>;
6
+ sendMessage(content: string): Promise<void>;
7
+ private eventHandler;
8
+ }
9
+ //# sourceMappingURL=support-chat.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"support-chat.service.d.ts","sourceRoot":"","sources":["../../../src/core/chat/support-chat.service.ts"],"names":[],"mappings":"AAOA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;;IAMhD,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAyBnC,YAAY;CA8C3B"}
@@ -0,0 +1,4 @@
1
+ export declare const CONSTANTS: {
2
+ MAX_MESSAGE_LENGTH: number;
3
+ };
4
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;CAErB,CAAC"}
@@ -0,0 +1,12 @@
1
+ export declare class ApiError extends Error {
2
+ readonly status: number;
3
+ readonly title: string;
4
+ readonly traceId?: string;
5
+ constructor(data: {
6
+ detail: string;
7
+ status: number;
8
+ title: string;
9
+ traceId?: string;
10
+ });
11
+ }
12
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/lib/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;gBAErB,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAQtF"}
@@ -0,0 +1,19 @@
1
+ interface HttpClientResponse<T> extends Response {
2
+ json(): Promise<T>;
3
+ }
4
+ export type RequestInterceptor = (url: RequestInfo, config: RequestInit) => Promise<RequestInit>;
5
+ export type ResponseInterceptor = (response: Response) => Promise<Response>;
6
+ declare class HttpClient {
7
+ private _baseUrl;
8
+ private _requestInterceptors;
9
+ private _responseInterceptors;
10
+ setBaseUrl(baseUrl: string): void;
11
+ addRequestInterceptor(interceptor: RequestInterceptor): void;
12
+ removeRequestInterceptor(interceptor: RequestInterceptor): void;
13
+ addResponseInterceptor(interceptor: ResponseInterceptor): void;
14
+ removeResponseInterceptor(interceptor: ResponseInterceptor): void;
15
+ fetch<T>(input: RequestInfo, init?: RequestInit): Promise<HttpClientResponse<T>>;
16
+ }
17
+ export declare const httpClient: HttpClient;
18
+ export {};
19
+ //# sourceMappingURL=http-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/core/lib/http-client.ts"],"names":[],"mappings":"AAEA,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,QAAQ;IAC9C,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;CACpB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AACjG,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5E,cAAM,UAAU;IACd,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,oBAAoB,CAA4B;IACxD,OAAO,CAAC,qBAAqB,CAA6B;IAEnD,UAAU,CAAC,OAAO,EAAE,MAAM;IAI1B,qBAAqB,CAAC,WAAW,EAAE,kBAAkB;IAMrD,wBAAwB,CAAC,WAAW,EAAE,kBAAkB;IAIxD,sBAAsB,CAAC,WAAW,EAAE,mBAAmB;IAMvD,yBAAyB,CAAC,WAAW,EAAE,mBAAmB;IAIpD,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;CAwB9F;AA2BD,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { ChatMessage } from '../chat/chat.types';
2
+ export declare class LiveLeaderService {
3
+ private readonly webSocketClient;
4
+ private readonly operators;
5
+ private readonly operatorMessageNodeIds;
6
+ private readonly operatorTypingTimeouts;
7
+ private readonly typingMessageTimeoutMs;
8
+ private readonly onMessage;
9
+ constructor(onMessage: (event: LiveLeaderEvent) => void);
10
+ isConnected(): boolean;
11
+ connect(url: string): Promise<void>;
12
+ disconnect(): Promise<void>;
13
+ closeConversation(conversationId: string): Promise<void>;
14
+ sendMessage(conversationId: string, content: string): Promise<ChatMessage>;
15
+ getOperator(operatorId: string): Promise<Operator>;
16
+ private getOperatorMetadata;
17
+ private socketMessageEventHandler;
18
+ }
19
+ type Operator = {
20
+ id: string;
21
+ name: string;
22
+ email: string;
23
+ pictureUrl: string | undefined;
24
+ };
25
+ type BaseEvent = {
26
+ id: string;
27
+ type: string;
28
+ time: string;
29
+ role: string;
30
+ };
31
+ type TypingEventRaw<T extends BaseEvent> = T & {
32
+ type: 'typing';
33
+ };
34
+ type TextEventRaw<T extends BaseEvent> = T & {
35
+ type: 'text';
36
+ text: string;
37
+ };
38
+ type CloseEventRaw<T extends BaseEvent> = T & {
39
+ type: 'close';
40
+ };
41
+ type SeenEventRaw<T extends BaseEvent> = T & {
42
+ type: 'seen';
43
+ seenMessageId: string;
44
+ seenMessageTime: string;
45
+ };
46
+ type TransferEventRaw<T extends BaseEvent> = T & {
47
+ type: 'transfer';
48
+ targetName?: string;
49
+ };
50
+ /**
51
+ * Events for the application
52
+ */
53
+ type BaseEventApp = BaseEvent & {
54
+ operator: Operator;
55
+ };
56
+ type TypingStartedEvent = TypingEventRaw<BaseEventApp> & {
57
+ messageId: string;
58
+ };
59
+ type TypingEndedEvent = BaseEventApp & {
60
+ type: 'typingEnded';
61
+ messageId: string;
62
+ };
63
+ type TextEvent = TextEventRaw<BaseEventApp> & {
64
+ messageId: string;
65
+ };
66
+ type CloseEvent = CloseEventRaw<BaseEventApp>;
67
+ type SeenEvent = SeenEventRaw<BaseEventApp>;
68
+ type TransferEvent = TransferEventRaw<BaseEventApp>;
69
+ export type LiveLeaderEvent = TypingStartedEvent | TypingEndedEvent | TextEvent | CloseEvent | SeenEvent | TransferEvent;
70
+ export {};
71
+ //# sourceMappingURL=liveleader.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liveleader.service.d.ts","sourceRoot":"","sources":["../../../src/core/lib/liveleader.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/core/lib/logger.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,QAAQ,CAA2B;IAE3C,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,MAAM;IAO5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,OAAO,CAAC,GAAG;IAyCX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;CAG/E;AAED,eAAO,MAAM,MAAM,QAAuB,CAAC"}