@envive-ai/react-hooks 0.3.1 → 0.3.3

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 (309) hide show
  1. package/dist/application/commerce-api.cjs +6 -4
  2. package/dist/application/commerce-api.js +7 -5
  3. package/dist/application/models/api/nextMessageRequest.d.cts +3 -1
  4. package/dist/application/models/api/nextMessageRequest.d.ts +3 -1
  5. package/dist/application/models/api/response.d.cts +1 -1
  6. package/dist/application/models/api/response.d.ts +1 -1
  7. package/dist/application/models/frontendConfig.d.cts +1 -1
  8. package/dist/application/models/frontendConfig.d.ts +1 -1
  9. package/dist/application/models/guards/api/isApiFormResponse.cjs +1 -1
  10. package/dist/application/models/guards/api/isApiFormResponse.js +1 -1
  11. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +1 -1
  12. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +1 -1
  13. package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +2 -2
  14. package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +2 -2
  15. package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +1 -1
  16. package/dist/application/models/guards/api/isApiProductResponseAttributes.js +1 -1
  17. package/dist/application/models/guards/api/isApiResponse.cjs +1 -1
  18. package/dist/application/models/guards/api/isApiResponse.js +1 -1
  19. package/dist/application/models/guards/api/isApiSearchEventAttributes.cjs +2 -2
  20. package/dist/application/models/guards/api/isApiSearchEventAttributes.js +2 -2
  21. package/dist/application/models/message.cjs +1 -1
  22. package/dist/application/models/message.d.cts +1 -1
  23. package/dist/application/models/message.d.ts +1 -1
  24. package/dist/application/models/message.js +1 -1
  25. package/dist/application/models/validators/validateGraphQLColorsConfig.cjs +2 -1
  26. package/dist/application/models/validators/validateGraphQLColorsConfig.js +2 -1
  27. package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +1 -1
  28. package/dist/application/models/validators/validateGraphQLFrontendConfig.d.cts +1 -1
  29. package/dist/application/models/validators/validateGraphQLFrontendConfig.d.ts +1 -1
  30. package/dist/application/models/validators/validateGraphQLFrontendConfig.js +1 -1
  31. package/dist/application/models/variantInfo/variantInfo.cjs +4 -1
  32. package/dist/application/models/variantInfo/variantInfo.d.cts +4 -1
  33. package/dist/application/models/variantInfo/variantInfo.d.ts +4 -1
  34. package/dist/application/models/variantInfo/variantInfo.js +4 -1
  35. package/dist/application/utils/analyticsUtils.cjs +2 -2
  36. package/dist/application/utils/analyticsUtils.js +2 -2
  37. package/dist/application/utils/domObserver.cjs +1 -1
  38. package/dist/application/utils/domObserver.js +1 -1
  39. package/dist/application/utils/elementObserver.cjs +1 -1
  40. package/dist/application/utils/elementObserver.d.cts +2 -2
  41. package/dist/application/utils/elementObserver.d.ts +2 -2
  42. package/dist/application/utils/elementObserver.js +1 -1
  43. package/dist/application/utils/mutationHelper.cjs +2 -2
  44. package/dist/application/utils/mutationHelper.js +2 -2
  45. package/dist/application/utils/nodeSelector.cjs +5 -2
  46. package/dist/application/utils/nodeSelector.js +5 -2
  47. package/dist/application/utils/stringUtils.cjs +1 -1
  48. package/dist/application/utils/stringUtils.js +1 -1
  49. package/dist/atoms/app/index.cjs +12 -1
  50. package/dist/atoms/app/index.d.cts +3 -2
  51. package/dist/atoms/app/index.d.ts +3 -2
  52. package/dist/atoms/app/index.js +13 -3
  53. package/dist/atoms/app/variant.cjs +2 -2
  54. package/dist/atoms/app/variant.d.cts +69 -5
  55. package/dist/atoms/app/variant.d.ts +69 -5
  56. package/dist/atoms/app/variant.js +2 -2
  57. package/dist/atoms/chat/chatState.d.cts +15 -15
  58. package/dist/atoms/chat/chatState.d.ts +15 -15
  59. package/dist/atoms/chat/form.d.cts +2 -2
  60. package/dist/atoms/chat/form.d.ts +2 -2
  61. package/dist/atoms/chat/index.cjs +1 -1
  62. package/dist/atoms/chat/index.d.cts +2 -2
  63. package/dist/atoms/chat/index.d.ts +3 -3
  64. package/dist/atoms/chat/index.js +1 -1
  65. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  66. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  67. package/dist/atoms/chat/messageQueue.cjs +1 -35
  68. package/dist/atoms/chat/messageQueue.js +2 -34
  69. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  70. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  71. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  72. package/dist/atoms/chat/replies.cjs +2 -2
  73. package/dist/atoms/chat/replies.d.cts +2 -2
  74. package/dist/atoms/chat/replies.d.ts +2 -2
  75. package/dist/atoms/chat/replies.js +2 -2
  76. package/dist/atoms/chat/suggestions.d.cts +2 -2
  77. package/dist/atoms/chat/suggestions.d.ts +2 -2
  78. package/dist/atoms/globalSearch/globalSearch.d.cts +6 -6
  79. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  80. package/dist/atoms/org/customerService.d.cts +7 -7
  81. package/dist/atoms/org/customerService.d.ts +6 -6
  82. package/dist/atoms/org/graphqlConfig.cjs +1 -1
  83. package/dist/atoms/org/graphqlConfig.d.cts +5 -5
  84. package/dist/atoms/org/graphqlConfig.d.ts +5 -5
  85. package/dist/atoms/org/graphqlConfig.js +1 -1
  86. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  87. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  88. package/dist/atoms/org/orgAnalyticsConfig.cjs +1 -1
  89. package/dist/atoms/org/orgAnalyticsConfig.d.cts +6 -6
  90. package/dist/atoms/org/orgAnalyticsConfig.d.ts +6 -6
  91. package/dist/atoms/org/orgAnalyticsConfig.js +1 -1
  92. package/dist/atoms/search/chatSearch.d.cts +17 -17
  93. package/dist/atoms/search/chatSearch.d.ts +17 -17
  94. package/dist/atoms/search/searchAPI.cjs +2 -2
  95. package/dist/atoms/search/searchAPI.d.cts +14 -14
  96. package/dist/atoms/search/searchAPI.d.ts +14 -14
  97. package/dist/atoms/search/searchAPI.js +2 -2
  98. package/dist/atoms/search/searchServiceAdapter.cjs +1 -1
  99. package/dist/atoms/search/searchServiceAdapter.js +1 -1
  100. package/dist/atoms/search/types.d.cts +1 -1
  101. package/dist/atoms/search/types.d.ts +1 -1
  102. package/dist/atoms/search/utils.d.cts +1 -1
  103. package/dist/atoms/search/utils.d.ts +1 -1
  104. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +2 -2
  105. package/dist/contexts/amplitudeContext/amplitudeContext.js +2 -2
  106. package/dist/contexts/cdnContext/cdnContext.cjs +1 -1
  107. package/dist/contexts/cdnContext/cdnContext.js +1 -1
  108. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +2 -3
  109. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +2 -3
  110. package/dist/contexts/enviveContext/enviveContext.cjs +56 -0
  111. package/dist/contexts/enviveContext/enviveContext.d.cts +31 -0
  112. package/dist/contexts/enviveContext/enviveContext.d.ts +31 -0
  113. package/dist/contexts/enviveContext/enviveContext.js +55 -0
  114. package/dist/contexts/enviveContext/index.cjs +5 -0
  115. package/dist/contexts/enviveContext/index.d.cts +3 -0
  116. package/dist/contexts/enviveContext/index.d.ts +3 -0
  117. package/dist/contexts/enviveContext/index.js +4 -0
  118. package/dist/contexts/enviveContext/types.cjs +11 -0
  119. package/dist/contexts/enviveContext/types.d.cts +8 -0
  120. package/dist/contexts/enviveContext/types.d.ts +8 -0
  121. package/dist/contexts/enviveContext/types.js +10 -0
  122. package/dist/contexts/featureFlagContext/featureFlagContext.cjs +2 -2
  123. package/dist/contexts/featureFlagContext/featureFlagContext.js +2 -2
  124. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -2
  125. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +2 -2
  126. package/dist/contexts/graphqlContext/graphqlContext.cjs +2 -2
  127. package/dist/contexts/graphqlContext/graphqlContext.js +2 -2
  128. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +62 -0
  129. package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +23 -0
  130. package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +23 -0
  131. package/dist/contexts/hardcopyContext/hardcopyContext.js +60 -0
  132. package/dist/contexts/hardcopyContext/index.cjs +4 -0
  133. package/dist/contexts/hardcopyContext/index.d.cts +2 -0
  134. package/dist/contexts/hardcopyContext/index.d.ts +2 -0
  135. package/dist/contexts/hardcopyContext/index.js +3 -0
  136. package/dist/contexts/localStorageContext/localStorageContext.cjs +1 -1
  137. package/dist/contexts/localStorageContext/localStorageContext.js +1 -1
  138. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +1 -1
  139. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +1 -1
  140. package/dist/contexts/pageContext/index.cjs +6 -0
  141. package/dist/contexts/pageContext/index.d.cts +3 -0
  142. package/dist/contexts/pageContext/index.d.ts +3 -0
  143. package/dist/contexts/pageContext/index.js +4 -0
  144. package/dist/contexts/pageContext/mapping.cjs +25 -0
  145. package/dist/contexts/pageContext/mapping.d.cts +8 -0
  146. package/dist/contexts/pageContext/mapping.d.ts +8 -0
  147. package/dist/contexts/pageContext/mapping.js +25 -0
  148. package/dist/contexts/pageContext/pageContext.cjs +66 -0
  149. package/dist/contexts/pageContext/pageContext.d.cts +11 -0
  150. package/dist/contexts/pageContext/pageContext.d.ts +11 -0
  151. package/dist/contexts/pageContext/pageContext.js +64 -0
  152. package/dist/contexts/pageContext/types.cjs +0 -0
  153. package/dist/contexts/pageContext/types.d.cts +27 -0
  154. package/dist/contexts/pageContext/types.d.ts +27 -0
  155. package/dist/contexts/pageContext/types.js +1 -0
  156. package/dist/contexts/salesAgentContext/chatAPI.cjs +45 -0
  157. package/dist/contexts/salesAgentContext/chatAPI.d.cts +35 -0
  158. package/dist/contexts/salesAgentContext/chatAPI.d.ts +35 -0
  159. package/dist/contexts/salesAgentContext/chatAPI.js +44 -0
  160. package/dist/contexts/salesAgentContext/index.cjs +20 -0
  161. package/dist/contexts/salesAgentContext/index.d.cts +4 -0
  162. package/dist/contexts/salesAgentContext/index.d.ts +4 -0
  163. package/dist/contexts/salesAgentContext/index.js +5 -0
  164. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +90 -0
  165. package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +22 -0
  166. package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +22 -0
  167. package/dist/contexts/salesAgentContext/salesAgentContext.js +88 -0
  168. package/dist/contexts/salesAgentContext/salesAgentService.cjs +99 -0
  169. package/dist/contexts/salesAgentContext/salesAgentService.js +98 -0
  170. package/dist/contexts/searchContext/searchContext.cjs +2 -2
  171. package/dist/contexts/searchContext/searchContext.js +2 -2
  172. package/dist/contexts/sessionStorageContext/sessionStorageContext.cjs +1 -1
  173. package/dist/contexts/sessionStorageContext/sessionStorageContext.js +1 -1
  174. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  175. package/dist/contexts/types.cjs +11 -1
  176. package/dist/contexts/types.d.cts +10 -2
  177. package/dist/contexts/types.d.ts +10 -2
  178. package/dist/contexts/types.js +11 -2
  179. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +2 -2
  180. package/dist/contexts/userIdentityContext/userIdentityContext.js +2 -2
  181. package/dist/events/index.cjs +2 -4
  182. package/dist/events/index.js +2 -4
  183. package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.cjs +1 -1
  184. package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.js +1 -1
  185. package/dist/hooks/Debounce/useDebounce.cjs +1 -1
  186. package/dist/hooks/Debounce/useDebounce.js +1 -1
  187. package/dist/hooks/ElementObserver/useElementObserver.cjs +2 -2
  188. package/dist/hooks/ElementObserver/useElementObserver.js +2 -2
  189. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  190. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
  191. package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +9 -3
  192. package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +9 -3
  193. package/dist/hooks/IdentifyUser/useIdentifyUser.cjs +1 -1
  194. package/dist/hooks/IdentifyUser/useIdentifyUser.js +1 -1
  195. package/dist/hooks/ImageResolver/useImageResolver.cjs +1 -1
  196. package/dist/hooks/ImageResolver/useImageResolver.js +1 -1
  197. package/dist/hooks/IsSmallScreen/useIsSmallScreen.cjs +1 -1
  198. package/dist/hooks/IsSmallScreen/useIsSmallScreen.js +1 -1
  199. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +11 -3
  200. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +11 -3
  201. package/dist/hooks/Search/useRecommendedProducts.cjs +1 -1
  202. package/dist/hooks/Search/useRecommendedProducts.js +1 -1
  203. package/dist/hooks/Search/useSearch.cjs +2 -2
  204. package/dist/hooks/Search/useSearch.js +2 -2
  205. package/dist/hooks/Search/useSearchInput.cjs +1 -1
  206. package/dist/hooks/Search/useSearchInput.js +1 -1
  207. package/dist/hooks/SearchOperations/useSearchOperations.cjs +1 -1
  208. package/dist/hooks/SearchOperations/useSearchOperations.d.cts +1 -1
  209. package/dist/hooks/SearchOperations/useSearchOperations.d.ts +1 -1
  210. package/dist/hooks/SearchOperations/useSearchOperations.js +1 -1
  211. package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.cjs +1 -1
  212. package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.js +1 -1
  213. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +1 -1
  214. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +1 -1
  215. package/dist/hooks/utils.cjs +3 -3
  216. package/dist/hooks/utils.d.cts +1 -1
  217. package/dist/hooks/utils.d.ts +1 -1
  218. package/dist/hooks/utils.js +3 -3
  219. package/package.json +29 -6
  220. package/src/application/commerce-api.ts +12 -10
  221. package/src/application/models/api/nextMessageRequest.ts +2 -0
  222. package/src/application/models/api/response.ts +4 -4
  223. package/src/application/models/api/search.ts +1 -2
  224. package/src/application/models/api/userEvent.ts +1 -2
  225. package/src/application/models/frontendConfig.ts +2 -2
  226. package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +8 -4
  227. package/src/application/models/guards/api/isApiSearchEventAttributes.ts +1 -1
  228. package/src/application/models/index.ts +1 -0
  229. package/src/application/models/message.ts +5 -5
  230. package/src/application/models/utilityTypes/delimiterCase.ts +1 -0
  231. package/src/application/models/validators/validateGraphQLColorsConfig.ts +2 -1
  232. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +1 -1
  233. package/src/application/models/variantInfo/variantInfo.ts +3 -0
  234. package/src/application/utils/analyticsUtils.ts +3 -3
  235. package/src/application/utils/domObserver.ts +1 -0
  236. package/src/application/utils/elementObserver.ts +1 -0
  237. package/src/application/utils/mutationHelper.ts +3 -1
  238. package/src/application/utils/nodeSelector.ts +7 -1
  239. package/src/application/utils/stringUtils.ts +1 -0
  240. package/src/atoms/app/index.ts +17 -6
  241. package/src/atoms/app/variant.ts +11 -13
  242. package/src/atoms/chat/__tests__/messageQueue.test.spec.ts +61 -0
  243. package/src/atoms/chat/index.ts +8 -8
  244. package/src/atoms/chat/messageQueue.ts +2 -48
  245. package/src/atoms/chat/replies.ts +3 -3
  246. package/src/atoms/org/graphqlConfig.ts +0 -1
  247. package/src/atoms/org/orgAnalyticsConfig.ts +1 -1
  248. package/src/atoms/search/searchAPI.ts +1 -1
  249. package/src/atoms/search/searchServiceAdapter.ts +1 -1
  250. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +4 -3
  251. package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -5
  252. package/src/contexts/cdnContext/cdnContext.tsx +1 -1
  253. package/src/contexts/enviveConfigContext/__tests__/enviveConfigContext.test.tsx +2 -3
  254. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -3
  255. package/src/contexts/enviveContext/enviveContext.tsx +89 -0
  256. package/src/contexts/enviveContext/index.ts +2 -0
  257. package/src/contexts/enviveContext/types.ts +4 -0
  258. package/src/contexts/featureFlagContext/featureFlagContext.tsx +1 -1
  259. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +1 -1
  260. package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +7 -5
  261. package/src/contexts/graphqlContext/graphqlContext.tsx +1 -5
  262. package/src/contexts/hardcopyContext/hardcopyContext.tsx +70 -0
  263. package/src/contexts/hardcopyContext/index.ts +1 -0
  264. package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +9 -3
  265. package/src/contexts/localStorageContext/localStorageContext.tsx +1 -1
  266. package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +2 -3
  267. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +1 -1
  268. package/src/contexts/pageContext/__tests__/pageContext.test.tsx +666 -0
  269. package/src/contexts/pageContext/index.ts +2 -0
  270. package/src/contexts/pageContext/mapping.ts +38 -0
  271. package/src/contexts/pageContext/pageContext.tsx +78 -0
  272. package/src/contexts/pageContext/types.ts +27 -0
  273. package/src/contexts/salesAgentContext/chatAPI.ts +75 -0
  274. package/src/contexts/salesAgentContext/index.ts +3 -0
  275. package/src/contexts/salesAgentContext/salesAgentContext.tsx +128 -0
  276. package/src/contexts/salesAgentContext/salesAgentService.ts +197 -0
  277. package/src/contexts/searchContext/__tests__/searchContext.test.tsx +14 -15
  278. package/src/contexts/searchContext/searchContext.tsx +1 -1
  279. package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +1 -1
  280. package/src/contexts/systemSettingsContext/__tests__/systemSettingsContext.test.tsx +7 -6
  281. package/src/contexts/types.ts +20 -22
  282. package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +3 -8
  283. package/src/contexts/userIdentityContext/userIdentityContext.tsx +1 -1
  284. package/src/events/index.ts +5 -7
  285. package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +1 -1
  286. package/src/hooks/Debounce/useDebounce.ts +1 -1
  287. package/src/hooks/ElementObserver/useElementObserver.ts +2 -1
  288. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +4 -2
  289. package/src/hooks/IdentifyUser/useIdentifyUser.ts +1 -1
  290. package/src/hooks/ImageResolver/useImageResolver.ts +2 -0
  291. package/src/hooks/IsSmallScreen/useIsSmallScreen.ts +1 -1
  292. package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +20 -4
  293. package/src/hooks/Search/__tests__/useSearch.test.tsx +15 -10
  294. package/src/hooks/Search/useRecommendedProducts.ts +2 -2
  295. package/src/hooks/Search/useSearchInput.ts +1 -1
  296. package/src/hooks/SearchOperations/useSearchOperations.ts +2 -2
  297. package/src/hooks/SessionStorageOperations/useSessionStorageOperations.ts +1 -1
  298. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +2 -2
  299. package/src/hooks/utils.ts +3 -2
  300. package/dist/contexts/chatContext/chatContext.cjs +0 -306
  301. package/dist/contexts/chatContext/chatContext.d.cts +0 -15
  302. package/dist/contexts/chatContext/chatContext.d.ts +0 -15
  303. package/dist/contexts/chatContext/chatContext.js +0 -304
  304. package/dist/contexts/chatContext/index.cjs +0 -4
  305. package/dist/contexts/chatContext/index.d.cts +0 -2
  306. package/dist/contexts/chatContext/index.d.ts +0 -2
  307. package/dist/contexts/chatContext/index.js +0 -3
  308. package/src/contexts/chatContext/chatContext.tsx +0 -463
  309. package/src/contexts/chatContext/index.ts +0 -1
@@ -0,0 +1,44 @@
1
+ import { queueUserEventAtom } from "../../atoms/chat/messageQueue.js";
2
+ import { UserEventCategory } from "@spiffy-ai/commerce-api-client";
3
+ import { useCallback } from "react";
4
+ import { v4 } from "uuid";
5
+ import { useSetAtom } from "jotai";
6
+
7
+ //#region src/contexts/salesAgentContext/chatAPI.ts
8
+ const useSalesAgentChatAPI = () => {
9
+ const queueUserEvent = useSetAtom(queueUserEventAtom);
10
+ return {
11
+ logPageVisit: useCallback(({ pageVisitCategory }) => {
12
+ queueUserEvent({
13
+ eventId: v4(),
14
+ category: UserEventCategory.PageVisit,
15
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
16
+ attributes: {
17
+ url: window.location.href,
18
+ pageVisitCategory
19
+ }
20
+ });
21
+ }, [queueUserEvent]),
22
+ onSuggestionClicked: useCallback((suggestion) => {
23
+ queueUserEvent({
24
+ eventId: v4(),
25
+ category: UserEventCategory.SuggestionClicked,
26
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
27
+ attributes: { suggestionId: suggestion.id }
28
+ });
29
+ }, [queueUserEvent]),
30
+ onTypedMessageSubmitted: useCallback(({ query }) => {
31
+ queueUserEvent({
32
+ eventId: v4(),
33
+ category: UserEventCategory.QueryTyped,
34
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
35
+ attributes: { query }
36
+ });
37
+ }, [queueUserEvent]),
38
+ onFormResponseSubmitted: useCallback(() => {}, [])
39
+ };
40
+ };
41
+
42
+ //#endregion
43
+ export { useSalesAgentChatAPI };
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEFQSS5qcyIsIm5hbWVzIjpbInV1aWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvc2FsZXNBZ2VudENvbnRleHQvY2hhdEFQSS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGNvbXBvbmVudCB3aWxsIGludGVyYWN0IHdpdGggdGhlIGJhY2tlbmQgQVBJIHRvIGdldCB0aGUgcmVzcG9uc2VzIGZyb20gdGhlIHNhbGVzIGFnZW50LlxuXG5pbXBvcnQgeyBQYWdlVmlzaXRDYXRlZ29yeSwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbiwgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBxdWV1ZVVzZXJFdmVudEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhbGVzQWdlbnRDaGF0QVBJIHtcbiAgbG9nUGFnZVZpc2l0OiAoeyBwYWdlVmlzaXRDYXRlZ29yeSB9OiB7IHBhZ2VWaXNpdENhdGVnb3J5OiBQYWdlVmlzaXRDYXRlZ29yeSB9KSA9PiB2b2lkO1xuICBvblN1Z2dlc3Rpb25DbGlja2VkOiAoc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbikgPT4gdm9pZDtcbiAgb25UeXBlZE1lc3NhZ2VTdWJtaXR0ZWQ6ICh7IHF1ZXJ5IH06IHsgcXVlcnk6IHN0cmluZyB9KSA9PiB2b2lkO1xuICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZDogKGZvcm1SZXNwb25zZTogYW55KSA9PiB2b2lkOyAvLyBUT0RPOiBGaWd1cmUgb3V0IHRoZSByaWdodCB0eXBlXG59XG5cbmV4cG9ydCBjb25zdCB1c2VTYWxlc0FnZW50Q2hhdEFQSSA9ICgpID0+IHtcbiAgLy8gVE9ETzogRWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMgd2lsbCB0cmlnZ2VyIGJvdGggdGhlIG5lY2Vzc2FyeSBhbXBsaXR1ZGUgZXZlbnRzIGFuZCBpbml0aWF0ZSB0aGVcbiAgLy8gbmVjZXNzYXJ5IGFjdGlvbnMgdG8gdHJpZ2dlciB0aGUgYmFja2VuZCBBUElcbiAgY29uc3QgcXVldWVVc2VyRXZlbnQgPSB1c2VTZXRBdG9tKHF1ZXVlVXNlckV2ZW50QXRvbSk7XG5cbiAgY29uc3QgbG9nUGFnZVZpc2l0ID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgcGFnZVZpc2l0Q2F0ZWdvcnkgfTogeyBwYWdlVmlzaXRDYXRlZ29yeTogUGFnZVZpc2l0Q2F0ZWdvcnkgfSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQ6IFVzZXJFdmVudCA9IHtcbiAgICAgICAgZXZlbnRJZDogdXVpZCgpLFxuICAgICAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGFnZVZpc2l0LFxuICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgYXR0cmlidXRlczoge1xuICAgICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgcGFnZVZpc2l0Q2F0ZWdvcnksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcXVldWVVc2VyRXZlbnQoZXZlbnQpO1xuICAgIH0sXG4gICAgW3F1ZXVlVXNlckV2ZW50XSxcbiAgKTtcbiAgY29uc3Qgb25TdWdnZXN0aW9uQ2xpY2tlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChzdWdnZXN0aW9uOiBTdWdnZXN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBldmVudDogVXNlckV2ZW50ID0ge1xuICAgICAgICBldmVudElkOiB1dWlkKCksXG4gICAgICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBzdWdnZXN0aW9uSWQ6IHN1Z2dlc3Rpb24uaWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgcXVldWVVc2VyRXZlbnQoZXZlbnQpO1xuICAgIH0sXG4gICAgW3F1ZXVlVXNlckV2ZW50XSxcbiAgKTtcbiAgY29uc3Qgb25UeXBlZE1lc3NhZ2VTdWJtaXR0ZWQgPSB1c2VDYWxsYmFjayhcbiAgICAoeyBxdWVyeSB9OiB7IHF1ZXJ5OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgY29uc3QgZXZlbnQ6IFVzZXJFdmVudCA9IHtcbiAgICAgICAgZXZlbnRJZDogdXVpZCgpLFxuICAgICAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUXVlcnlUeXBlZCxcbiAgICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcbiAgICAgICAgICBxdWVyeSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICBxdWV1ZVVzZXJFdmVudChldmVudCk7XG4gICAgfSxcbiAgICBbcXVldWVVc2VyRXZlbnRdLFxuICApO1xuICBjb25zdCBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgdGhlIGZvcm0gcmVzcG9uc2Ugc3VibWl0dGVkXG4gIH0sIFtdKTtcblxuICByZXR1cm4ge1xuICAgIGxvZ1BhZ2VWaXNpdCxcbiAgICBvblN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgIG9uRm9ybVJlc3BvbnNlU3VibWl0dGVkLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQWdCQSxNQUFhLDZCQUE2QjtDQUd4QyxNQUFNLGlCQUFpQixXQUFXLG1CQUFtQjtBQWlEckQsUUFBTztFQUNMLGNBaERtQixhQUNsQixFQUFFLHdCQUFrRTtBQVVuRSxrQkFUeUI7SUFDdkIsU0FBU0EsSUFBTTtJQUNmLFVBQVUsa0JBQWtCO0lBQzVCLDRCQUFXLElBQUksTUFBTSxFQUFDLGFBQWE7SUFDbkMsWUFBWTtLQUNWLEtBQUssT0FBTyxTQUFTO0tBQ3JCO0tBQ0Q7SUFDRixDQUNvQjtLQUV2QixDQUFDLGVBQWUsQ0FDakI7RUFtQ0MscUJBbEMwQixhQUN6QixlQUEyQjtBQVMxQixrQkFSeUI7SUFDdkIsU0FBU0EsSUFBTTtJQUNmLFVBQVUsa0JBQWtCO0lBQzVCLDRCQUFXLElBQUksTUFBTSxFQUFDLGFBQWE7SUFDbkMsWUFBWSxFQUNWLGNBQWMsV0FBVyxJQUMxQjtJQUNGLENBQ29CO0tBRXZCLENBQUMsZUFBZSxDQUNqQjtFQXNCQyx5QkFyQjhCLGFBQzdCLEVBQUUsWUFBK0I7QUFTaEMsa0JBUnlCO0lBQ3ZCLFNBQVNBLElBQU07SUFDZixVQUFVLGtCQUFrQjtJQUM1Qiw0QkFBVyxJQUFJLE1BQU0sRUFBQyxhQUFhO0lBQ25DLFlBQVksRUFDVixPQUNEO0lBQ0YsQ0FDb0I7S0FFdkIsQ0FBQyxlQUFlLENBQ2pCO0VBU0MseUJBUjhCLGtCQUFrQixJQUUvQyxFQUFFLENBQUM7RUFPTCJ9
@@ -0,0 +1,20 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_chatAPI = require('./chatAPI.cjs');
3
+ const require_salesAgentContext = require('./salesAgentContext.cjs');
4
+ let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
5
+
6
+ Object.defineProperty(exports, 'PageVisitCategory', {
7
+ enumerable: true,
8
+ get: function () {
9
+ return __spiffy_ai_commerce_api_client.PageVisitCategory;
10
+ }
11
+ });
12
+ exports.SalesAgentProvider = require_salesAgentContext.SalesAgentProvider;
13
+ Object.defineProperty(exports, 'SuggestionCategory', {
14
+ enumerable: true,
15
+ get: function () {
16
+ return __spiffy_ai_commerce_api_client.SuggestionCategory;
17
+ }
18
+ });
19
+ exports.useSalesAgent = require_salesAgentContext.useSalesAgent;
20
+ exports.useSalesAgentChatAPI = require_chatAPI.useSalesAgentChatAPI;
@@ -0,0 +1,4 @@
1
+ import { SalesAgentChatAPI, useSalesAgentChatAPI } from "./chatAPI.cjs";
2
+ import { SalesAgentProvider, useSalesAgent } from "./salesAgentContext.cjs";
3
+ import { PageVisitCategory, SuggestionCategory } from "@spiffy-ai/commerce-api-client";
4
+ export { PageVisitCategory, SalesAgentChatAPI, SalesAgentProvider, SuggestionCategory, useSalesAgent, useSalesAgentChatAPI };
@@ -0,0 +1,4 @@
1
+ import { SalesAgentChatAPI, useSalesAgentChatAPI } from "./chatAPI.js";
2
+ import { SalesAgentProvider, useSalesAgent } from "./salesAgentContext.js";
3
+ import { PageVisitCategory, SuggestionCategory } from "@spiffy-ai/commerce-api-client";
4
+ export { PageVisitCategory, SalesAgentChatAPI, SalesAgentProvider, SuggestionCategory, useSalesAgent, useSalesAgentChatAPI };
@@ -0,0 +1,5 @@
1
+ import { useSalesAgentChatAPI } from "./chatAPI.js";
2
+ import { SalesAgentProvider, useSalesAgent } from "./salesAgentContext.js";
3
+ import { PageVisitCategory, SuggestionCategory } from "@spiffy-ai/commerce-api-client";
4
+
5
+ export { PageVisitCategory, SalesAgentProvider, SuggestionCategory, useSalesAgent, useSalesAgentChatAPI };
@@ -0,0 +1,90 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_chatState = require('../../atoms/chat/chatState.cjs');
3
+ const require_messageQueue = require('../../atoms/chat/messageQueue.cjs');
4
+ const require_useSystemSettingsContext = require('../../hooks/SystemSettingsContext/useSystemSettingsContext.cjs');
5
+ require('../../hooks/SystemSettingsContext/index.cjs');
6
+ const require_chatAPI = require('./chatAPI.cjs');
7
+ const require_salesAgentService = require('./salesAgentService.cjs');
8
+ let react = require("react");
9
+ let jotai = require("jotai");
10
+ let react_jsx_runtime = require("react/jsx-runtime");
11
+
12
+ //#region src/contexts/salesAgentContext/salesAgentContext.tsx
13
+ const SalesAgentContext = (0, react.createContext)(void 0);
14
+ const SalesAgentProvider = ({ children }) => {
15
+ const userEvents = (0, jotai.useAtomValue)(require_messageQueue.userEventQueueAtom);
16
+ const userQueueEventCount = (0, jotai.useAtomValue)(require_messageQueue.userQueueEventCountAtom);
17
+ const markUserEventsProcessed = (0, jotai.useSetAtom)(require_messageQueue.processUserEventAtom);
18
+ const settingsContext = require_useSystemSettingsContext.useSystemSettingsContext();
19
+ const { getStreamingResponses, createResponsePayload } = require_salesAgentService.useSalesAgentService();
20
+ const sendMessagesToBackend = (0, react.useCallback)(async () => {
21
+ if (userEvents.length === 0) return;
22
+ const [pendingMessage] = userEvents.slice(0, userQueueEventCount);
23
+ try {
24
+ const response = await getStreamingResponses(createResponsePayload({
25
+ userEvents: [pendingMessage],
26
+ generationParams: settingsContext.generationParams
27
+ }));
28
+ console.log("response", response);
29
+ markUserEventsProcessed([pendingMessage.eventId]);
30
+ } catch (error) {
31
+ console.error("error sending message");
32
+ }
33
+ }, [
34
+ userEvents,
35
+ userQueueEventCount,
36
+ createResponsePayload,
37
+ settingsContext.generationParams,
38
+ getStreamingResponses,
39
+ markUserEventsProcessed
40
+ ]);
41
+ console.log("userQueueEventCount", userQueueEventCount);
42
+ console.log("userEvents", userEvents);
43
+ (0, react.useEffect)(() => {
44
+ if (userQueueEventCount > 0) sendMessagesToBackend();
45
+ console.log("SalesAgentProvider useEffect");
46
+ }, [sendMessagesToBackend, userQueueEventCount]);
47
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SalesAgentContext.Provider, {
48
+ value: void 0,
49
+ children
50
+ });
51
+ };
52
+ const useSalesAgent = () => {
53
+ const messages = (0, jotai.useAtomValue)(require_chatState.messagesAtom);
54
+ const suggestions = (0, jotai.useAtomValue)(require_chatState.suggestionsAtom);
55
+ const pendingMessages = (0, jotai.useAtomValue)(require_messageQueue.userEventQueueAtom);
56
+ const isResponseStreaming = false;
57
+ const isPendingResponse = false;
58
+ const isInitialized = false;
59
+ const { logPageVisit, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted } = require_chatAPI.useSalesAgentChatAPI();
60
+ return (0, react.useMemo)(() => {
61
+ return {
62
+ messages,
63
+ suggestions,
64
+ pendingMessages,
65
+ isResponseStreaming,
66
+ isPendingResponse,
67
+ isInitialized,
68
+ logPageVisit,
69
+ onSuggestionClicked,
70
+ onTypedMessageSubmitted,
71
+ onFormResponseSubmitted
72
+ };
73
+ }, [
74
+ messages,
75
+ suggestions,
76
+ pendingMessages,
77
+ isResponseStreaming,
78
+ isPendingResponse,
79
+ isInitialized,
80
+ logPageVisit,
81
+ onSuggestionClicked,
82
+ onTypedMessageSubmitted,
83
+ onFormResponseSubmitted
84
+ ]);
85
+ };
86
+
87
+ //#endregion
88
+ exports.SalesAgentProvider = SalesAgentProvider;
89
+ exports.useSalesAgent = useSalesAgent;
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuY2pzIiwibmFtZXMiOlsiU2FsZXNBZ2VudFByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfT4iLCJ1c2VyRXZlbnRRdWV1ZUF0b20iLCJ1c2VyUXVldWVFdmVudENvdW50QXRvbSIsInByb2Nlc3NVc2VyRXZlbnRBdG9tIiwidXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IiwidXNlU2FsZXNBZ2VudFNlcnZpY2UiLCJtZXNzYWdlc0F0b20iLCJzdWdnZXN0aW9uc0F0b20iLCJ1c2VTYWxlc0FnZW50Q2hhdEFQSSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9zYWxlc0FnZW50Q29udGV4dC9zYWxlc0FnZW50Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbWVzc2FnZSc7XG5pbXBvcnQgeyBTdWdnZXN0aW9uLCBVc2VyRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IG1lc3NhZ2VzQXRvbSwgc3VnZ2VzdGlvbnNBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2NoYXQvY2hhdFN0YXRlJztcbmltcG9ydCB7XG4gIHByb2Nlc3NVc2VyRXZlbnRBdG9tLFxuICB1c2VyRXZlbnRRdWV1ZUF0b20sXG4gIHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgdXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IH0gZnJvbSAnc3JjL2hvb2tzL1N5c3RlbVNldHRpbmdzQ29udGV4dCc7XG5pbXBvcnQgeyBTYWxlc0FnZW50Q2hhdEFQSSwgdXNlU2FsZXNBZ2VudENoYXRBUEkgfSBmcm9tICcuL2NoYXRBUEknO1xuaW1wb3J0IHsgdXNlU2FsZXNBZ2VudFNlcnZpY2UgfSBmcm9tICcuL3NhbGVzQWdlbnRTZXJ2aWNlJztcblxuaW50ZXJmYWNlIFNhbGVzQWdlbnQgZXh0ZW5kcyBTYWxlc0FnZW50Q2hhdEFQSSB7XG4gIC8vIE1lc3NhZ2VzIGFyZSB0aGUgZnVsbCBsaXN0IG9mIGFsbCB0dXJuc1xuICBtZXNzYWdlczogTWVzc2FnZVtdW107XG4gIC8vIFBlbmRpbmcgbWVzc2FnZXMgYXJlIG1lc3NhZ2VzIHRoYXQgdGhlIHVzZXIgaGFzIGNsaWNrZWQvdHlwZWQgYnV0IGhhdmUgbm90IHlldCBiZWVuIHNlbnQgdG8gdGhlIGJhY2tlbmQuXG4gIHBlbmRpbmdNZXNzYWdlczogVXNlckV2ZW50W107XG4gIC8vIFN1Z2dlc3Rpb25zIGFyZSB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyB0aGF0IHRoZSB1c2VyIGNhbiBjbGljayBvbiBpbiByZXNwb25zZSB0byB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZSBmcm9tIHRoZSBiYWNrZW5kXG4gIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uW107XG4gIC8vIFRydWUgd2hpbGUgdGhlIHJlc3BvbnNlIGlzIHN0cmVhbWluZyBmcm9tIHRoZSBiYWNrZW5kXG4gIGlzUmVzcG9uc2VTdHJlYW1pbmc6IGJvb2xlYW47XG4gIC8vIFRydWUgd2hpbGUgdGhlIHJlc3BvbnNlIGlzIHBlbmRpbmcgZnJvbSB0aGUgYmFja2VuZFxuICBpc1BlbmRpbmdSZXNwb25zZTogYm9vbGVhbjtcbiAgLy8gVHJ1ZSB3aGVuIHRoZSBzYWxlcyBhZ2VudCBpcyBpbml0aWFsaXplZFxuICBpc0luaXRpYWxpemVkOiBib29sZWFuO1xufVxuXG5jb25zdCBTYWxlc0FnZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U2FsZXNBZ2VudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IFNhbGVzQWdlbnRQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB1c2VyRXZlbnRzID0gdXNlQXRvbVZhbHVlKHVzZXJFdmVudFF1ZXVlQXRvbSk7XG4gIGNvbnN0IHVzZXJRdWV1ZUV2ZW50Q291bnQgPSB1c2VBdG9tVmFsdWUodXNlclF1ZXVlRXZlbnRDb3VudEF0b20pO1xuICBjb25zdCBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCA9IHVzZVNldEF0b20ocHJvY2Vzc1VzZXJFdmVudEF0b20pO1xuICBjb25zdCBzZXR0aW5nc0NvbnRleHQgPSB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQoKTtcblxuICBjb25zdCB7IGdldFN0cmVhbWluZ1Jlc3BvbnNlcywgY3JlYXRlUmVzcG9uc2VQYXlsb2FkIH0gPSB1c2VTYWxlc0FnZW50U2VydmljZSgpO1xuXG4gIC8vIFRPRE86IEVuc3VyZSB0aGF0IGFtcGxpdHVkZSBldmVudHMgYXJlIGJlaW5nIGVtaXR0ZWRcblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHN0cmVhbWluZyByZXNwb25zZXMgdG8gZnVuY3Rpb25cblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGh5ZHJhdGlvbiBvZiB0aGUgbWVzc2FnZXMgZnJvbSB0aGUgYmFja2VuZCBvbiBpbml0aWFsaXphdGlvblxuICBjb25zdCBzZW5kTWVzc2FnZXNUb0JhY2tlbmQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgLy8gRmFzdCBleGl0IGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgaWYgKHVzZXJFdmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRPRE86IFN1cHBvcnQgc2VuZGluZyBtdWx0aXBsZSBtZXNzYWdlcyB0byB0aGUgYmFja2VuZCBpbiBvbmUgcmVxdWVzdFxuICAgIGNvbnN0IFtwZW5kaW5nTWVzc2FnZV0gPSB1c2VyRXZlbnRzLnNsaWNlKDAsIHVzZXJRdWV1ZUV2ZW50Q291bnQpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgIHVzZXJFdmVudHM6IFtwZW5kaW5nTWVzc2FnZV0sXG4gICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyhyZXF1ZXN0UGF5bG9hZCk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdyZXNwb25zZScsIHJlc3BvbnNlKTtcbiAgICAgIC8vIFJlbW92ZSB0aGUgcGVuZGluZyBtZXNzYWdlIGZyb20gdGhlIHVzZXIgZXZlbnRzXG4gICAgICBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZChbcGVuZGluZ01lc3NhZ2UuZXZlbnRJZF0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICB9XG4gIH0sIFtcbiAgICB1c2VyRXZlbnRzLFxuICAgIHVzZXJRdWV1ZUV2ZW50Q291bnQsXG4gICAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkLFxuICAgIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgIGdldFN0cmVhbWluZ1Jlc3BvbnNlcyxcbiAgICBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCxcbiAgXSk7XG5cbiAgY29uc29sZS5sb2coJ3VzZXJRdWV1ZUV2ZW50Q291bnQnLCB1c2VyUXVldWVFdmVudENvdW50KTtcbiAgY29uc29sZS5sb2coJ3VzZXJFdmVudHMnLCB1c2VyRXZlbnRzKTtcblxuICAvLyBUaGlzIGlzIHRoZSBwcmltYXJ5IGV2ZW50IGxvb3AgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmFja2VuZCBBUElcbiAgLy8gSXQgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGVyZSBhcmUgcGVuZGluZyBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBiYWNrZW5kXG4gIC8vIEl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBiYWNrZW5kIGFuZCByZWNlaXZpbmcgdGhlIHJlc3BvbnNlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1c2VyUXVldWVFdmVudENvdW50ID4gMCkge1xuICAgICAgc2VuZE1lc3NhZ2VzVG9CYWNrZW5kKCk7XG4gICAgfVxuICAgIC8vIFRPRE86IEFkZCBhIHN1Z2dlc3Rpb24gcmV0cmlldmFsIGhlcmUgKGRvbid0IGdldCBzdWdnZXN0aW9ucyB1bmxlc3MgdGhlIGV2ZW50IHF1ZXVlIGlzIGVtcHR5KVxuICAgIGNvbnNvbGUubG9nKCdTYWxlc0FnZW50UHJvdmlkZXIgdXNlRWZmZWN0Jyk7XG4gIH0sIFtzZW5kTWVzc2FnZXNUb0JhY2tlbmQsIHVzZXJRdWV1ZUV2ZW50Q291bnRdKTtcblxuICByZXR1cm4gPFNhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt1bmRlZmluZWR9PntjaGlsZHJlbn08L1NhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTYWxlc0FnZW50ID0gKCk6IFNhbGVzQWdlbnQgPT4ge1xuICBjb25zdCBtZXNzYWdlcyA9IHVzZUF0b21WYWx1ZShtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzdWdnZXN0aW9ucyA9IHVzZUF0b21WYWx1ZShzdWdnZXN0aW9uc0F0b20pO1xuICBjb25zdCBwZW5kaW5nTWVzc2FnZXMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgaXNSZXNwb25zZVN0cmVhbWluZyA9IGZhbHNlOyAvLyB1c2VBdG9tVmFsdWUoaXNSZXNwb25zZVN0cmVhbWluZ0F0b20pO1xuICBjb25zdCBpc1BlbmRpbmdSZXNwb25zZSA9IGZhbHNlOyAvLyB1c2VBdG9tVmFsdWUoaXNQZW5kaW5nUmVzcG9uc2VBdG9tKTtcbiAgY29uc3QgaXNJbml0aWFsaXplZCA9IGZhbHNlOyAvLyB1c2VBdG9tVmFsdWUoaXNJbml0aWFsaXplZEF0b20pO1xuXG4gIGNvbnN0IHsgbG9nUGFnZVZpc2l0LCBvblN1Z2dlc3Rpb25DbGlja2VkLCBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZCwgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQgfSA9XG4gICAgdXNlU2FsZXNBZ2VudENoYXRBUEkoKTtcblxuICBjb25zdCBzYWxlc0FnZW50OiBTYWxlc0FnZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICBwZW5kaW5nTWVzc2FnZXMsXG4gICAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nLFxuICAgICAgaXNQZW5kaW5nUmVzcG9uc2UsXG4gICAgICBpc0luaXRpYWxpemVkLFxuICAgICAgbG9nUGFnZVZpc2l0LFxuICAgICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgICAgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQsXG4gICAgfTtcbiAgfSwgW1xuICAgIG1lc3NhZ2VzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIHBlbmRpbmdNZXNzYWdlcyxcbiAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nLFxuICAgIGlzUGVuZGluZ1Jlc3BvbnNlLFxuICAgIGlzSW5pdGlhbGl6ZWQsXG4gICAgbG9nUGFnZVZpc2l0LFxuICAgIG9uU3VnZ2VzdGlvbkNsaWNrZWQsXG4gICAgb25UeXBlZE1lc3NhZ2VTdWJtaXR0ZWQsXG4gICAgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQsXG4gIF0pO1xuICByZXR1cm4gc2FsZXNBZ2VudDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQTZCQSxNQUFNLDZDQUEwRCxPQUFVO0FBRTFFLE1BQWFBLHNCQUF5RCxFQUFFLGVBQWU7Q0FDckYsTUFBTSxxQ0FBMEJDLHdDQUFtQjtDQUNuRCxNQUFNLDhDQUFtQ0MsNkNBQXdCO0NBQ2pFLE1BQU0sZ0RBQXFDQywwQ0FBcUI7Q0FDaEUsTUFBTSxrQkFBa0JDLDJEQUEwQjtDQUVsRCxNQUFNLEVBQUUsdUJBQXVCLDBCQUEwQkMsZ0RBQXNCO0NBTy9FLE1BQU0sK0NBQW9DLFlBQVk7QUFFcEQsTUFBSSxXQUFXLFdBQVcsRUFDeEI7RUFHRixNQUFNLENBQUMsa0JBQWtCLFdBQVcsTUFBTSxHQUFHLG9CQUFvQjtBQUNqRSxNQUFJO0dBS0YsTUFBTSxXQUFXLE1BQU0sc0JBSkEsc0JBQXNCO0lBQzNDLFlBQVksQ0FBQyxlQUFlO0lBQzVCLGtCQUFrQixnQkFBZ0I7SUFDbkMsQ0FBQyxDQUMwRDtBQUU1RCxXQUFRLElBQUksWUFBWSxTQUFTO0FBRWpDLDJCQUF3QixDQUFDLGVBQWUsUUFBUSxDQUFDO1dBQzFDLE9BQU87QUFDZCxXQUFRLE1BQU0sd0JBQXdCOztJQUV2QztFQUNEO0VBQ0E7RUFDQTtFQUNBLGdCQUFnQjtFQUNoQjtFQUNBO0VBQ0QsQ0FBQztBQUVGLFNBQVEsSUFBSSx1QkFBdUIsb0JBQW9CO0FBQ3ZELFNBQVEsSUFBSSxjQUFjLFdBQVc7QUFLckMsNEJBQWdCO0FBQ2QsTUFBSSxzQkFBc0IsRUFDeEIsd0JBQXVCO0FBR3pCLFVBQVEsSUFBSSwrQkFBK0I7SUFDMUMsQ0FBQyx1QkFBdUIsb0JBQW9CLENBQUM7QUFFaEQsUUFBTywyQ0FBQyxrQkFBa0I7RUFBUyxPQUFPO0VBQVk7R0FBc0M7O0FBRzlGLE1BQWEsc0JBQWtDO0NBQzdDLE1BQU0sbUNBQXdCQywrQkFBYTtDQUMzQyxNQUFNLHNDQUEyQkMsa0NBQWdCO0NBQ2pELE1BQU0sMENBQStCTix3Q0FBbUI7Q0FDeEQsTUFBTSxzQkFBc0I7Q0FDNUIsTUFBTSxvQkFBb0I7Q0FDMUIsTUFBTSxnQkFBZ0I7Q0FFdEIsTUFBTSxFQUFFLGNBQWMscUJBQXFCLHlCQUF5Qiw0QkFDbEVPLHNDQUFzQjtBQTJCeEIsaUNBekI2QztBQUMzQyxTQUFPO0dBQ0w7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDRDtJQUNBO0VBQ0Q7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDIn0=
@@ -0,0 +1,22 @@
1
+ import { Message } from "../../application/models/message.cjs";
2
+ import { UserEvent } from "../../application/models/api/userEvent.cjs";
3
+ import { Suggestion } from "../../application/models/api/suggestion.cjs";
4
+ import { SalesAgentChatAPI } from "./chatAPI.cjs";
5
+ import { ReactNode } from "react";
6
+
7
+ //#region src/contexts/salesAgentContext/salesAgentContext.d.ts
8
+ interface SalesAgent extends SalesAgentChatAPI {
9
+ messages: Message[][];
10
+ pendingMessages: UserEvent[];
11
+ suggestions: Suggestion[];
12
+ isResponseStreaming: boolean;
13
+ isPendingResponse: boolean;
14
+ isInitialized: boolean;
15
+ }
16
+ declare const SalesAgentProvider: React.FC<{
17
+ children: ReactNode;
18
+ }>;
19
+ declare const useSalesAgent: () => SalesAgent;
20
+ //#endregion
21
+ export { SalesAgentProvider, useSalesAgent };
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL3NhbGVzQWdlbnRDb250ZXh0L3NhbGVzQWdlbnRDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbWVzc2FnZSc7XG5pbXBvcnQgeyBTdWdnZXN0aW9uLCBVc2VyRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IFNhbGVzQWdlbnRDaGF0QVBJIH0gZnJvbSAnLi9jaGF0QVBJJztcbmludGVyZmFjZSBTYWxlc0FnZW50IGV4dGVuZHMgU2FsZXNBZ2VudENoYXRBUEkge1xuICAgIG1lc3NhZ2VzOiBNZXNzYWdlW11bXTtcbiAgICBwZW5kaW5nTWVzc2FnZXM6IFVzZXJFdmVudFtdO1xuICAgIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uW107XG4gICAgaXNSZXNwb25zZVN0cmVhbWluZzogYm9vbGVhbjtcbiAgICBpc1BlbmRpbmdSZXNwb25zZTogYm9vbGVhbjtcbiAgICBpc0luaXRpYWxpemVkOiBib29sZWFuO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgU2FsZXNBZ2VudFByb3ZpZGVyOiBSZWFjdC5GQzx7XG4gICAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn0+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlU2FsZXNBZ2VudDogKCkgPT4gU2FsZXNBZ2VudDtcbmV4cG9ydCB7fTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUlBLElBQUksYUFBYTtDQUFDO09BQVc7T0FBZTtPQUFHO09BQUE7Q0FBQTtBQUMvQyxJQUFXLHFCQUFjO0NBQUE7T0FBQTtPQUFBLE1BQUE7Q0FBQTtBQUN6QixJQUFXLGdCQUFnQixDQUFDLFdBQUksV0FBQSJ9
@@ -0,0 +1,22 @@
1
+ import { Message } from "../../application/models/message.js";
2
+ import { UserEvent } from "../../application/models/api/userEvent.js";
3
+ import { Suggestion } from "../../application/models/api/suggestion.js";
4
+ import { SalesAgentChatAPI } from "./chatAPI.js";
5
+ import { ReactNode } from "react";
6
+
7
+ //#region src/contexts/salesAgentContext/salesAgentContext.d.ts
8
+ interface SalesAgent extends SalesAgentChatAPI {
9
+ messages: Message[][];
10
+ pendingMessages: UserEvent[];
11
+ suggestions: Suggestion[];
12
+ isResponseStreaming: boolean;
13
+ isPendingResponse: boolean;
14
+ isInitialized: boolean;
15
+ }
16
+ declare const SalesAgentProvider: React.FC<{
17
+ children: ReactNode;
18
+ }>;
19
+ declare const useSalesAgent: () => SalesAgent;
20
+ //#endregion
21
+ export { SalesAgentProvider, useSalesAgent };
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvc2FsZXNBZ2VudENvbnRleHQvc2FsZXNBZ2VudENvbnRleHQuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBNZXNzYWdlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9tZXNzYWdlJztcbmltcG9ydCB7IFN1Z2dlc3Rpb24sIFVzZXJFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgU2FsZXNBZ2VudENoYXRBUEkgfSBmcm9tICcuL2NoYXRBUEknO1xuaW50ZXJmYWNlIFNhbGVzQWdlbnQgZXh0ZW5kcyBTYWxlc0FnZW50Q2hhdEFQSSB7XG4gICAgbWVzc2FnZXM6IE1lc3NhZ2VbXVtdO1xuICAgIHBlbmRpbmdNZXNzYWdlczogVXNlckV2ZW50W107XG4gICAgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXTtcbiAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nOiBib29sZWFuO1xuICAgIGlzUGVuZGluZ1Jlc3BvbnNlOiBib29sZWFuO1xuICAgIGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBTYWxlc0FnZW50UHJvdmlkZXI6IFJlYWN0LkZDPHtcbiAgICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufT47XG5leHBvcnQgZGVjbGFyZSBjb25zdCB1c2VTYWxlc0FnZW50OiAoKSA9PiBTYWxlc0FnZW50O1xuZXhwb3J0IHt9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBSUEsSUFBSSxhQUFhO0NBQUM7T0FBVztPQUFlO09BQUc7T0FBQTtDQUFBO0FBQy9DLElBQVcscUJBQWM7Q0FBQTtPQUFBO09BQUEsTUFBQTtDQUFBO0FBQ3pCLElBQVcsZ0JBQWdCLENBQUMsV0FBSSxXQUFBIn0=
@@ -0,0 +1,88 @@
1
+ import { messagesAtom, suggestionsAtom } from "../../atoms/chat/chatState.js";
2
+ import { processUserEventAtom, userEventQueueAtom, userQueueEventCountAtom } from "../../atoms/chat/messageQueue.js";
3
+ import { useSystemSettingsContext } from "../../hooks/SystemSettingsContext/useSystemSettingsContext.js";
4
+ import "../../hooks/SystemSettingsContext/index.js";
5
+ import { useSalesAgentChatAPI } from "./chatAPI.js";
6
+ import { useSalesAgentService } from "./salesAgentService.js";
7
+ import { createContext, useCallback, useEffect, useMemo } from "react";
8
+ import { useAtomValue, useSetAtom } from "jotai";
9
+ import { jsx } from "react/jsx-runtime";
10
+
11
+ //#region src/contexts/salesAgentContext/salesAgentContext.tsx
12
+ const SalesAgentContext = createContext(void 0);
13
+ const SalesAgentProvider = ({ children }) => {
14
+ const userEvents = useAtomValue(userEventQueueAtom);
15
+ const userQueueEventCount = useAtomValue(userQueueEventCountAtom);
16
+ const markUserEventsProcessed = useSetAtom(processUserEventAtom);
17
+ const settingsContext = useSystemSettingsContext();
18
+ const { getStreamingResponses, createResponsePayload } = useSalesAgentService();
19
+ const sendMessagesToBackend = useCallback(async () => {
20
+ if (userEvents.length === 0) return;
21
+ const [pendingMessage] = userEvents.slice(0, userQueueEventCount);
22
+ try {
23
+ const response = await getStreamingResponses(createResponsePayload({
24
+ userEvents: [pendingMessage],
25
+ generationParams: settingsContext.generationParams
26
+ }));
27
+ console.log("response", response);
28
+ markUserEventsProcessed([pendingMessage.eventId]);
29
+ } catch (error) {
30
+ console.error("error sending message");
31
+ }
32
+ }, [
33
+ userEvents,
34
+ userQueueEventCount,
35
+ createResponsePayload,
36
+ settingsContext.generationParams,
37
+ getStreamingResponses,
38
+ markUserEventsProcessed
39
+ ]);
40
+ console.log("userQueueEventCount", userQueueEventCount);
41
+ console.log("userEvents", userEvents);
42
+ useEffect(() => {
43
+ if (userQueueEventCount > 0) sendMessagesToBackend();
44
+ console.log("SalesAgentProvider useEffect");
45
+ }, [sendMessagesToBackend, userQueueEventCount]);
46
+ return /* @__PURE__ */ jsx(SalesAgentContext.Provider, {
47
+ value: void 0,
48
+ children
49
+ });
50
+ };
51
+ const useSalesAgent = () => {
52
+ const messages = useAtomValue(messagesAtom);
53
+ const suggestions = useAtomValue(suggestionsAtom);
54
+ const pendingMessages = useAtomValue(userEventQueueAtom);
55
+ const isResponseStreaming = false;
56
+ const isPendingResponse = false;
57
+ const isInitialized = false;
58
+ const { logPageVisit, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted } = useSalesAgentChatAPI();
59
+ return useMemo(() => {
60
+ return {
61
+ messages,
62
+ suggestions,
63
+ pendingMessages,
64
+ isResponseStreaming,
65
+ isPendingResponse,
66
+ isInitialized,
67
+ logPageVisit,
68
+ onSuggestionClicked,
69
+ onTypedMessageSubmitted,
70
+ onFormResponseSubmitted
71
+ };
72
+ }, [
73
+ messages,
74
+ suggestions,
75
+ pendingMessages,
76
+ isResponseStreaming,
77
+ isPendingResponse,
78
+ isInitialized,
79
+ logPageVisit,
80
+ onSuggestionClicked,
81
+ onTypedMessageSubmitted,
82
+ onFormResponseSubmitted
83
+ ]);
84
+ };
85
+
86
+ //#endregion
87
+ export { SalesAgentProvider, useSalesAgent };
88
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuanMiLCJuYW1lcyI6WyJTYWxlc0FnZW50UHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9PiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9zYWxlc0FnZW50Q29udGV4dC9zYWxlc0FnZW50Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWVzc2FnZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbWVzc2FnZSc7XG5pbXBvcnQgeyBTdWdnZXN0aW9uLCBVc2VyRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IG1lc3NhZ2VzQXRvbSwgc3VnZ2VzdGlvbnNBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2NoYXQvY2hhdFN0YXRlJztcbmltcG9ydCB7XG4gIHByb2Nlc3NVc2VyRXZlbnRBdG9tLFxuICB1c2VyRXZlbnRRdWV1ZUF0b20sXG4gIHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgdXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IH0gZnJvbSAnc3JjL2hvb2tzL1N5c3RlbVNldHRpbmdzQ29udGV4dCc7XG5pbXBvcnQgeyBTYWxlc0FnZW50Q2hhdEFQSSwgdXNlU2FsZXNBZ2VudENoYXRBUEkgfSBmcm9tICcuL2NoYXRBUEknO1xuaW1wb3J0IHsgdXNlU2FsZXNBZ2VudFNlcnZpY2UgfSBmcm9tICcuL3NhbGVzQWdlbnRTZXJ2aWNlJztcblxuaW50ZXJmYWNlIFNhbGVzQWdlbnQgZXh0ZW5kcyBTYWxlc0FnZW50Q2hhdEFQSSB7XG4gIC8vIE1lc3NhZ2VzIGFyZSB0aGUgZnVsbCBsaXN0IG9mIGFsbCB0dXJuc1xuICBtZXNzYWdlczogTWVzc2FnZVtdW107XG4gIC8vIFBlbmRpbmcgbWVzc2FnZXMgYXJlIG1lc3NhZ2VzIHRoYXQgdGhlIHVzZXIgaGFzIGNsaWNrZWQvdHlwZWQgYnV0IGhhdmUgbm90IHlldCBiZWVuIHNlbnQgdG8gdGhlIGJhY2tlbmQuXG4gIHBlbmRpbmdNZXNzYWdlczogVXNlckV2ZW50W107XG4gIC8vIFN1Z2dlc3Rpb25zIGFyZSB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyB0aGF0IHRoZSB1c2VyIGNhbiBjbGljayBvbiBpbiByZXNwb25zZSB0byB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZSBmcm9tIHRoZSBiYWNrZW5kXG4gIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uW107XG4gIC8vIFRydWUgd2hpbGUgdGhlIHJlc3BvbnNlIGlzIHN0cmVhbWluZyBmcm9tIHRoZSBiYWNrZW5kXG4gIGlzUmVzcG9uc2VTdHJlYW1pbmc6IGJvb2xlYW47XG4gIC8vIFRydWUgd2hpbGUgdGhlIHJlc3BvbnNlIGlzIHBlbmRpbmcgZnJvbSB0aGUgYmFja2VuZFxuICBpc1BlbmRpbmdSZXNwb25zZTogYm9vbGVhbjtcbiAgLy8gVHJ1ZSB3aGVuIHRoZSBzYWxlcyBhZ2VudCBpcyBpbml0aWFsaXplZFxuICBpc0luaXRpYWxpemVkOiBib29sZWFuO1xufVxuXG5jb25zdCBTYWxlc0FnZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U2FsZXNBZ2VudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IFNhbGVzQWdlbnRQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB1c2VyRXZlbnRzID0gdXNlQXRvbVZhbHVlKHVzZXJFdmVudFF1ZXVlQXRvbSk7XG4gIGNvbnN0IHVzZXJRdWV1ZUV2ZW50Q291bnQgPSB1c2VBdG9tVmFsdWUodXNlclF1ZXVlRXZlbnRDb3VudEF0b20pO1xuICBjb25zdCBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCA9IHVzZVNldEF0b20ocHJvY2Vzc1VzZXJFdmVudEF0b20pO1xuICBjb25zdCBzZXR0aW5nc0NvbnRleHQgPSB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQoKTtcblxuICBjb25zdCB7IGdldFN0cmVhbWluZ1Jlc3BvbnNlcywgY3JlYXRlUmVzcG9uc2VQYXlsb2FkIH0gPSB1c2VTYWxlc0FnZW50U2VydmljZSgpO1xuXG4gIC8vIFRPRE86IEVuc3VyZSB0aGF0IGFtcGxpdHVkZSBldmVudHMgYXJlIGJlaW5nIGVtaXR0ZWRcblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHN0cmVhbWluZyByZXNwb25zZXMgdG8gZnVuY3Rpb25cblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGh5ZHJhdGlvbiBvZiB0aGUgbWVzc2FnZXMgZnJvbSB0aGUgYmFja2VuZCBvbiBpbml0aWFsaXphdGlvblxuICBjb25zdCBzZW5kTWVzc2FnZXNUb0JhY2tlbmQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgLy8gRmFzdCBleGl0IGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIG1lc3NhZ2VzXG4gICAgaWYgKHVzZXJFdmVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFRPRE86IFN1cHBvcnQgc2VuZGluZyBtdWx0aXBsZSBtZXNzYWdlcyB0byB0aGUgYmFja2VuZCBpbiBvbmUgcmVxdWVzdFxuICAgIGNvbnN0IFtwZW5kaW5nTWVzc2FnZV0gPSB1c2VyRXZlbnRzLnNsaWNlKDAsIHVzZXJRdWV1ZUV2ZW50Q291bnQpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgIHVzZXJFdmVudHM6IFtwZW5kaW5nTWVzc2FnZV0sXG4gICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgfSk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyhyZXF1ZXN0UGF5bG9hZCk7XG5cbiAgICAgIGNvbnNvbGUubG9nKCdyZXNwb25zZScsIHJlc3BvbnNlKTtcbiAgICAgIC8vIFJlbW92ZSB0aGUgcGVuZGluZyBtZXNzYWdlIGZyb20gdGhlIHVzZXIgZXZlbnRzXG4gICAgICBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZChbcGVuZGluZ01lc3NhZ2UuZXZlbnRJZF0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdlcnJvciBzZW5kaW5nIG1lc3NhZ2UnKTtcbiAgICB9XG4gIH0sIFtcbiAgICB1c2VyRXZlbnRzLFxuICAgIHVzZXJRdWV1ZUV2ZW50Q291bnQsXG4gICAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkLFxuICAgIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgIGdldFN0cmVhbWluZ1Jlc3BvbnNlcyxcbiAgICBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCxcbiAgXSk7XG5cbiAgY29uc29sZS5sb2coJ3VzZXJRdWV1ZUV2ZW50Q291bnQnLCB1c2VyUXVldWVFdmVudENvdW50KTtcbiAgY29uc29sZS5sb2coJ3VzZXJFdmVudHMnLCB1c2VyRXZlbnRzKTtcblxuICAvLyBUaGlzIGlzIHRoZSBwcmltYXJ5IGV2ZW50IGxvb3AgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmFja2VuZCBBUElcbiAgLy8gSXQgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGVyZSBhcmUgcGVuZGluZyBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBiYWNrZW5kXG4gIC8vIEl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBiYWNrZW5kIGFuZCByZWNlaXZpbmcgdGhlIHJlc3BvbnNlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh1c2VyUXVldWVFdmVudENvdW50ID4gMCkge1xuICAgICAgc2VuZE1lc3NhZ2VzVG9CYWNrZW5kKCk7XG4gICAgfVxuICAgIC8vIFRPRE86IEFkZCBhIHN1Z2dlc3Rpb24gcmV0cmlldmFsIGhlcmUgKGRvbid0IGdldCBzdWdnZXN0aW9ucyB1bmxlc3MgdGhlIGV2ZW50IHF1ZXVlIGlzIGVtcHR5KVxuICAgIGNvbnNvbGUubG9nKCdTYWxlc0FnZW50UHJvdmlkZXIgdXNlRWZmZWN0Jyk7XG4gIH0sIFtzZW5kTWVzc2FnZXNUb0JhY2tlbmQsIHVzZXJRdWV1ZUV2ZW50Q291bnRdKTtcblxuICByZXR1cm4gPFNhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt1bmRlZmluZWR9PntjaGlsZHJlbn08L1NhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTYWxlc0FnZW50ID0gKCk6IFNhbGVzQWdlbnQgPT4ge1xuICBjb25zdCBtZXNzYWdlcyA9IHVzZUF0b21WYWx1ZShtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzdWdnZXN0aW9ucyA9IHVzZUF0b21WYWx1ZShzdWdnZXN0aW9uc0F0b20pO1xuICBjb25zdCBwZW5kaW5nTWVzc2FnZXMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgaXNSZXNwb25zZVN0cmVhbWluZyA9IGZhbHNlOyAvLyB1c2VBdG9tVmFsdWUoaXNSZXNwb25zZVN0cmVhbWluZ0F0b20pO1xuICBjb25zdCBpc1BlbmRpbmdSZXNwb25zZSA9IGZhbHNlOyAvLyB1c2VBdG9tVmFsdWUoaXNQZW5kaW5nUmVzcG9uc2VBdG9tKTtcbiAgY29uc3QgaXNJbml0aWFsaXplZCA9IGZhbHNlOyAvLyB1c2VBdG9tVmFsdWUoaXNJbml0aWFsaXplZEF0b20pO1xuXG4gIGNvbnN0IHsgbG9nUGFnZVZpc2l0LCBvblN1Z2dlc3Rpb25DbGlja2VkLCBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZCwgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQgfSA9XG4gICAgdXNlU2FsZXNBZ2VudENoYXRBUEkoKTtcblxuICBjb25zdCBzYWxlc0FnZW50OiBTYWxlc0FnZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICBwZW5kaW5nTWVzc2FnZXMsXG4gICAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nLFxuICAgICAgaXNQZW5kaW5nUmVzcG9uc2UsXG4gICAgICBpc0luaXRpYWxpemVkLFxuICAgICAgbG9nUGFnZVZpc2l0LFxuICAgICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgICAgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQsXG4gICAgfTtcbiAgfSwgW1xuICAgIG1lc3NhZ2VzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIHBlbmRpbmdNZXNzYWdlcyxcbiAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nLFxuICAgIGlzUGVuZGluZ1Jlc3BvbnNlLFxuICAgIGlzSW5pdGlhbGl6ZWQsXG4gICAgbG9nUGFnZVZpc2l0LFxuICAgIG9uU3VnZ2VzdGlvbkNsaWNrZWQsXG4gICAgb25UeXBlZE1lc3NhZ2VTdWJtaXR0ZWQsXG4gICAgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQsXG4gIF0pO1xuICByZXR1cm4gc2FsZXNBZ2VudDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBNkJBLE1BQU0sb0JBQW9CLGNBQXNDLE9BQVU7QUFFMUUsTUFBYUEsc0JBQXlELEVBQUUsZUFBZTtDQUNyRixNQUFNLGFBQWEsYUFBYSxtQkFBbUI7Q0FDbkQsTUFBTSxzQkFBc0IsYUFBYSx3QkFBd0I7Q0FDakUsTUFBTSwwQkFBMEIsV0FBVyxxQkFBcUI7Q0FDaEUsTUFBTSxrQkFBa0IsMEJBQTBCO0NBRWxELE1BQU0sRUFBRSx1QkFBdUIsMEJBQTBCLHNCQUFzQjtDQU8vRSxNQUFNLHdCQUF3QixZQUFZLFlBQVk7QUFFcEQsTUFBSSxXQUFXLFdBQVcsRUFDeEI7RUFHRixNQUFNLENBQUMsa0JBQWtCLFdBQVcsTUFBTSxHQUFHLG9CQUFvQjtBQUNqRSxNQUFJO0dBS0YsTUFBTSxXQUFXLE1BQU0sc0JBSkEsc0JBQXNCO0lBQzNDLFlBQVksQ0FBQyxlQUFlO0lBQzVCLGtCQUFrQixnQkFBZ0I7SUFDbkMsQ0FBQyxDQUMwRDtBQUU1RCxXQUFRLElBQUksWUFBWSxTQUFTO0FBRWpDLDJCQUF3QixDQUFDLGVBQWUsUUFBUSxDQUFDO1dBQzFDLE9BQU87QUFDZCxXQUFRLE1BQU0sd0JBQXdCOztJQUV2QztFQUNEO0VBQ0E7RUFDQTtFQUNBLGdCQUFnQjtFQUNoQjtFQUNBO0VBQ0QsQ0FBQztBQUVGLFNBQVEsSUFBSSx1QkFBdUIsb0JBQW9CO0FBQ3ZELFNBQVEsSUFBSSxjQUFjLFdBQVc7QUFLckMsaUJBQWdCO0FBQ2QsTUFBSSxzQkFBc0IsRUFDeEIsd0JBQXVCO0FBR3pCLFVBQVEsSUFBSSwrQkFBK0I7SUFDMUMsQ0FBQyx1QkFBdUIsb0JBQW9CLENBQUM7QUFFaEQsUUFBTyxvQkFBQyxrQkFBa0I7RUFBUyxPQUFPO0VBQVk7R0FBc0M7O0FBRzlGLE1BQWEsc0JBQWtDO0NBQzdDLE1BQU0sV0FBVyxhQUFhLGFBQWE7Q0FDM0MsTUFBTSxjQUFjLGFBQWEsZ0JBQWdCO0NBQ2pELE1BQU0sa0JBQWtCLGFBQWEsbUJBQW1CO0NBQ3hELE1BQU0sc0JBQXNCO0NBQzVCLE1BQU0sb0JBQW9CO0NBQzFCLE1BQU0sZ0JBQWdCO0NBRXRCLE1BQU0sRUFBRSxjQUFjLHFCQUFxQix5QkFBeUIsNEJBQ2xFLHNCQUFzQjtBQTJCeEIsUUF6QitCLGNBQWM7QUFDM0MsU0FBTztHQUNMO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0Q7SUFDQTtFQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FBQyJ9
@@ -0,0 +1,99 @@
1
+ const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
+ const require_useMessageInterceptor = require('../../interceptors/useMessageInterceptor.cjs');
3
+ const require_logger = require('../../application/logging/logger.cjs');
4
+ const require_message = require('../../application/models/message.cjs');
5
+ require('../../application/models/index.cjs');
6
+ const require_atoms_app_index = require('../../atoms/app/index.cjs');
7
+ const require_featureFlagServiceContext = require('../featureFlagServiceContext/featureFlagServiceContext.cjs');
8
+ const require_messageFromResponse = require('../../application/utils/messageFromResponse.cjs');
9
+ require('../../application/utils/index.cjs');
10
+ const require_chatState = require('../../atoms/chat/chatState.cjs');
11
+ require('../featureFlagServiceContext/index.cjs');
12
+ const require_commerce_api = require('../../application/commerce-api.cjs');
13
+ let react = require("react");
14
+ let uuid = require("uuid");
15
+ let jotai = require("jotai");
16
+
17
+ //#region src/contexts/salesAgentContext/salesAgentService.ts
18
+ const getQueryParam = (key) => {
19
+ return new URL(window.location.href).searchParams.get(key);
20
+ };
21
+ const updateMessageState = (message, lastMessage, setMessages) => {
22
+ if (lastMessage == null) {
23
+ setMessages((prev) => [...prev, [message]]);
24
+ return message;
25
+ }
26
+ if (lastMessage.type === require_message.MessageType.Text && message.type === require_message.MessageType.Text) {
27
+ const newMessage = {
28
+ ...lastMessage,
29
+ metadata: {
30
+ ...lastMessage.metadata,
31
+ content: lastMessage.metadata.content + message.metadata.content
32
+ }
33
+ };
34
+ setMessages((prev) => {
35
+ const lastTurn = prev[prev.length - 1];
36
+ return [...prev.slice(0, prev.length - 1), [...lastTurn.slice(0, lastTurn.length - 1), newMessage]];
37
+ });
38
+ return newMessage;
39
+ }
40
+ setMessages((prev) => [...prev.slice(0, prev.length - 1), [...prev[prev.length - 1], message]]);
41
+ return message;
42
+ };
43
+ const processStreamingResponse = async (stream, messageInterceptor, setMessages) => {
44
+ let lastMessage;
45
+ for await (const response of stream) try {
46
+ if (messageInterceptor.intercept(response)) return;
47
+ if (!response) throw new Error("No response from stream");
48
+ const message = require_messageFromResponse.messageFromResponse(response);
49
+ if (!message) throw new Error("Failed to transform API response to client message");
50
+ lastMessage = updateMessageState(message, lastMessage, setMessages);
51
+ } catch (error) {
52
+ require_logger.default.logWarn(`[spiffy-ai] Failed to generate responses from stream`, error, {
53
+ lastResponse: lastMessage,
54
+ response
55
+ });
56
+ }
57
+ };
58
+ const useSalesAgentService = () => {
59
+ const setRequestFailure = (0, jotai.useSetAtom)(require_chatState.requestFailureAtom);
60
+ const setMessages = (0, jotai.useSetAtom)(require_chatState.messagesAtom);
61
+ const messageInterceptor = require_useMessageInterceptor.useMessageInterceptor();
62
+ const featureFlagService = require_featureFlagServiceContext.useFeatureFlagService();
63
+ const context = (0, jotai.useAtomValue)(require_atoms_app_index.appDetailsAtom);
64
+ return {
65
+ createResponsePayload: (0, react.useCallback)(({ userEvents, generationParams }) => {
66
+ const featureFlags = featureFlagService?.featureFlagService?.getFeatureFlags() || {};
67
+ const overrideConfigVersion = getQueryParam("spiffy_config_version") || getQueryParam("envive_config_version") || void 0;
68
+ const overrideModelDatetime = getQueryParam("override_model_datetime") || void 0;
69
+ return {
70
+ id: (0, uuid.v4)(),
71
+ context,
72
+ userEvents,
73
+ featureFlags,
74
+ generationParams,
75
+ overrideConfigVersion,
76
+ overrideModelDatetime
77
+ };
78
+ }, [context, featureFlagService?.featureFlagService]),
79
+ getStreamingResponses: (0, react.useCallback)(async (payload) => {
80
+ console.log("getStreamingResponses payload", JSON.stringify(payload, null, 2));
81
+ const stream = require_commerce_api.default.getNextResponseStreaming(payload);
82
+ try {
83
+ setRequestFailure(false);
84
+ await processStreamingResponse(stream, messageInterceptor, setMessages);
85
+ } catch (e) {
86
+ console.error("error getting streaming responses", e);
87
+ throw e;
88
+ }
89
+ }, [
90
+ setRequestFailure,
91
+ messageInterceptor,
92
+ setMessages
93
+ ])
94
+ };
95
+ };
96
+
97
+ //#endregion
98
+ exports.useSalesAgentService = useSalesAgentService;
99
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudFNlcnZpY2UuY2pzIiwibmFtZXMiOlsiTWVzc2FnZVR5cGUiLCJsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCIsIm1lc3NhZ2VGcm9tUmVzcG9uc2UiLCJlcnJvcjogdW5rbm93biIsInVzZVNhbGVzQWdlbnRTZXJ2aWNlOiAoKSA9PiBTYWxlc0FnZW50U2VydmljZSIsInJlcXVlc3RGYWlsdXJlQXRvbSIsIm1lc3NhZ2VzQXRvbSIsInVzZU1lc3NhZ2VJbnRlcmNlcHRvciIsInVzZUZlYXR1cmVGbGFnU2VydmljZSIsImFwcERldGFpbHNBdG9tIiwiQ29tbWVyY2VBcGlDbGllbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvc2FsZXNBZ2VudENvbnRleHQvc2FsZXNBZ2VudFNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgQ29tbWVyY2VBcGlDbGllbnQgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2NvbW1lcmNlLWFwaSc7XG5pbXBvcnQgeyBhcHBEZXRhaWxzQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9hcHAnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgR2VuZXJhdGlvblBhcmFtcyxcbiAgTWVzc2FnZSxcbiAgTWVzc2FnZVR5cGUsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG4gIFVzZXJFdmVudCxcbn0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBtZXNzYWdlRnJvbVJlc3BvbnNlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL3V0aWxzJztcbmltcG9ydCB7IG1lc3NhZ2VzQXRvbSwgcmVxdWVzdEZhaWx1cmVBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2NoYXQvY2hhdFN0YXRlJztcbmltcG9ydCB7IHVzZU1lc3NhZ2VJbnRlcmNlcHRvciB9IGZyb20gJ3NyYy9pbnRlcmNlcHRvcnMvdXNlTWVzc2FnZUludGVyY2VwdG9yJztcbmltcG9ydCB7IHVzZUZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJy4uL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQnO1xuXG5pbnRlcmZhY2UgU2FsZXNBZ2VudFNlcnZpY2Uge1xuICBjcmVhdGVSZXNwb25zZVBheWxvYWQ6IChwYXlsb2FkOiB7XG4gICAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gICAgZ2VuZXJhdGlvblBhcmFtcz86IEdlbmVyYXRpb25QYXJhbXM7XG4gIH0pID0+IE5leHRNZXNzYWdlUmVxdWVzdDtcbiAgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzOiAocGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0KSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgY29uc3QgZ2V0UXVlcnlQYXJhbSA9IChrZXk6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCB1cmxPYmogPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgcmV0dXJuIHVybE9iai5zZWFyY2hQYXJhbXMuZ2V0KGtleSk7XG59O1xuXG5jb25zdCB1cGRhdGVNZXNzYWdlU3RhdGUgPSAoXG4gIG1lc3NhZ2U6IE1lc3NhZ2UsXG4gIGxhc3RNZXNzYWdlOiBNZXNzYWdlLFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4pOiBNZXNzYWdlID0+IHtcbiAgaWYgKGxhc3RNZXNzYWdlID09IG51bGwpIHtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IFsuLi5wcmV2LCBbbWVzc2FnZV1dKTtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuICBpZiAobGFzdE1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuVGV4dCAmJiBtZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlRleHQpIHtcbiAgICBjb25zdCBuZXdNZXNzYWdlID0ge1xuICAgICAgLi4ubGFzdE1lc3NhZ2UsXG4gICAgICBtZXRhZGF0YToge1xuICAgICAgICAuLi5sYXN0TWVzc2FnZS5tZXRhZGF0YSxcbiAgICAgICAgY29udGVudDogbGFzdE1lc3NhZ2UubWV0YWRhdGEuY29udGVudCArIG1lc3NhZ2UubWV0YWRhdGEuY29udGVudCxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IGxhc3RUdXJuID0gcHJldltwcmV2Lmxlbmd0aCAtIDFdO1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4ucHJldi5zbGljZSgwLCBwcmV2Lmxlbmd0aCAtIDEpLFxuICAgICAgICBbLi4ubGFzdFR1cm4uc2xpY2UoMCwgbGFzdFR1cm4ubGVuZ3RoIC0gMSksIG5ld01lc3NhZ2VdLFxuICAgICAgXTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV3TWVzc2FnZTtcbiAgfVxuICBzZXRNZXNzYWdlcyhwcmV2ID0+IFsuLi5wcmV2LnNsaWNlKDAsIHByZXYubGVuZ3RoIC0gMSksIFsuLi5wcmV2W3ByZXYubGVuZ3RoIC0gMV0sIG1lc3NhZ2VdXSk7XG4gIHJldHVybiBtZXNzYWdlO1xufTtcblxuY29uc3QgcHJvY2Vzc1N0cmVhbWluZ1Jlc3BvbnNlID0gYXN5bmMgKFxuICBzdHJlYW06IEFzeW5jSXRlcmFibGU8UmVzcG9uc2U+LFxuICBtZXNzYWdlSW50ZXJjZXB0b3I6IHsgaW50ZXJjZXB0OiAocmVzcG9uc2U/OiBSZXNwb25zZSkgPT4gYm9vbGVhbiB8IHVuZGVmaW5lZCB9LFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgbGV0IGxhc3RNZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkO1xuXG4gIGZvciBhd2FpdCAoY29uc3QgcmVzcG9uc2Ugb2Ygc3RyZWFtKSB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChtZXNzYWdlSW50ZXJjZXB0b3IuaW50ZXJjZXB0KHJlc3BvbnNlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzcG9uc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZXNwb25zZSBmcm9tIHN0cmVhbScpO1xuICAgICAgfVxuICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VGcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRyYW5zZm9ybSBBUEkgcmVzcG9uc2UgdG8gY2xpZW50IG1lc3NhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgLy8gTm8gc3VwcG9ydCBmb3IgQ2hhdFNlYXJjaCBtZXNzYWdlcyBhdCB0aGUgY3VycmVudCB0aW1lLlxuICAgICAgLy8gUGVyaGFwcyB3ZSBhZGQgc3VwcG9ydCBiYWNrIGluIHRoZSBmdXR1cmVcbiAgICAgIC8vIGlmIChtZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlByb2R1Y3RTZWFyY2gpIHtcbiAgICAgIC8vICAgaGFuZGxlU2VhcmNoUmVzdWx0cyhtZXNzYWdlKTtcbiAgICAgIC8vICAgaGFzU2VhcmNoUmVzdWx0cyA9IHRydWU7XG4gICAgICAvLyAgIHNldFNlYXJjaElzTG9hZGluZyhmYWxzZSk7IC8vIFVwZGF0ZSBzZWFyY2ggbG9hZGluZyBpbW1lZGlhdGVseSB3aGVuIHJlc3VsdHMgYXJlIGRldGVjdGVkXG4gICAgICAvLyB9XG5cbiAgICAgIGxhc3RNZXNzYWdlID0gdXBkYXRlTWVzc2FnZVN0YXRlKG1lc3NhZ2UsIGxhc3RNZXNzYWdlISwgc2V0TWVzc2FnZXMpO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBMb2dnZXIubG9nV2FybihgW3NwaWZmeS1haV0gRmFpbGVkIHRvIGdlbmVyYXRlIHJlc3BvbnNlcyBmcm9tIHN0cmVhbWAsIGVycm9yLCB7XG4gICAgICAgIGxhc3RSZXNwb25zZTogbGFzdE1lc3NhZ2UsXG4gICAgICAgIHJlc3BvbnNlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU2FsZXNBZ2VudFNlcnZpY2U6ICgpID0+IFNhbGVzQWdlbnRTZXJ2aWNlID0gKCkgPT4ge1xuICBjb25zdCBzZXRSZXF1ZXN0RmFpbHVyZSA9IHVzZVNldEF0b20ocmVxdWVzdEZhaWx1cmVBdG9tKTtcbiAgY29uc3Qgc2V0TWVzc2FnZXMgPSB1c2VTZXRBdG9tKG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IG1lc3NhZ2VJbnRlcmNlcHRvciA9IHVzZU1lc3NhZ2VJbnRlcmNlcHRvcigpO1xuXG4gIGNvbnN0IGZlYXR1cmVGbGFnU2VydmljZSA9IHVzZUZlYXR1cmVGbGFnU2VydmljZSgpO1xuICBjb25zdCBjb250ZXh0ID0gdXNlQXRvbVZhbHVlKGFwcERldGFpbHNBdG9tKTtcblxuICBjb25zdCBjcmVhdGVSZXNwb25zZVBheWxvYWQgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgdXNlckV2ZW50cyxcbiAgICAgIGdlbmVyYXRpb25QYXJhbXMsXG4gICAgfToge1xuICAgICAgdXNlckV2ZW50czogVXNlckV2ZW50W107XG4gICAgICBnZW5lcmF0aW9uUGFyYW1zPzogR2VuZXJhdGlvblBhcmFtcztcbiAgICB9KTogTmV4dE1lc3NhZ2VSZXF1ZXN0ID0+IHtcbiAgICAgIGNvbnN0IGZlYXR1cmVGbGFncyA9IGZlYXR1cmVGbGFnU2VydmljZT8uZmVhdHVyZUZsYWdTZXJ2aWNlPy5nZXRGZWF0dXJlRmxhZ3MoKSB8fCB7fTtcblxuICAgICAgY29uc3Qgb3ZlcnJpZGVDb25maWdWZXJzaW9uID1cbiAgICAgICAgZ2V0UXVlcnlQYXJhbSgnc3BpZmZ5X2NvbmZpZ192ZXJzaW9uJykgfHxcbiAgICAgICAgZ2V0UXVlcnlQYXJhbSgnZW52aXZlX2NvbmZpZ192ZXJzaW9uJykgfHxcbiAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgY29uc3Qgb3ZlcnJpZGVNb2RlbERhdGV0aW1lID0gZ2V0UXVlcnlQYXJhbSgnb3ZlcnJpZGVfbW9kZWxfZGF0ZXRpbWUnKSB8fCB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogdXVpZCgpLFxuICAgICAgICBjb250ZXh0LFxuICAgICAgICB1c2VyRXZlbnRzLFxuICAgICAgICBmZWF0dXJlRmxhZ3MsXG4gICAgICAgIGdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgIG92ZXJyaWRlQ29uZmlnVmVyc2lvbixcbiAgICAgICAgb3ZlcnJpZGVNb2RlbERhdGV0aW1lLFxuICAgICAgfTtcbiAgICB9LFxuICAgIFtjb250ZXh0LCBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZV0sXG4gICk7XG5cbiAgY29uc3QgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgLy8gbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlU3RhcnRlZCk7XG4gICAgICAvLyBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc29sZS5sb2coJ2dldFN0cmVhbWluZ1Jlc3BvbnNlcyBwYXlsb2FkJywgSlNPTi5zdHJpbmdpZnkocGF5bG9hZCwgbnVsbCwgMikpO1xuICAgICAgY29uc3Qgc3RyZWFtID0gQ29tbWVyY2VBcGlDbGllbnQuZ2V0TmV4dFJlc3BvbnNlU3RyZWFtaW5nKHBheWxvYWQpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBzZXRSZXF1ZXN0RmFpbHVyZShmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgcHJvY2Vzc1N0cmVhbWluZ1Jlc3BvbnNlKHN0cmVhbSwgbWVzc2FnZUludGVyY2VwdG9yLCBzZXRNZXNzYWdlcyk7XG5cbiAgICAgICAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIHRoZSBDaHJvbWUgRXh0ZW5zaW9uIGNvbW11bmljYXRpb25cbiAgICAgICAgLy8gTG9nIHN1Y2Nlc3NmdWwgbmV4dF9yZXNwb25zZXMgY2FsbFxuICAgICAgICAvLyBjb25zdCByZXNwb25zZVRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgICAgICAvLyBhd2FpdCBsb2dCdW5kbGVFdmVudCh7XG4gICAgICAgIC8vICAgbGV2ZWw6ICdpbmZvJyxcbiAgICAgICAgLy8gICBldmVudDogJ05FWFRfUkVTUE9OU0VfU1VDQ0VTUycsXG4gICAgICAgIC8vICAgY29udGV4dDoge1xuICAgICAgICAvLyAgICAgdHlwZTogJ25leHRfcmVzcG9uc2VzJyxcbiAgICAgICAgLy8gICAgIGVuZHBvaW50OiAnL3YxL25leHRfcmVzcG9uc2VzJyxcbiAgICAgICAgLy8gICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgICAgLy8gICAgIHJlc3BvbnNlVGltZSxcbiAgICAgICAgLy8gICB9LFxuICAgICAgICAvLyB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignZXJyb3IgZ2V0dGluZyBzdHJlYW1pbmcgcmVzcG9uc2VzJywgZSk7XG4gICAgICAgIC8vIExvZyBmYWlsZWQgbmV4dF9yZXNwb25zZXMgY2FsbFxuICAgICAgICAvLyBjb25zdCByZXNwb25zZVRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgICAgICAvLyBhd2FpdCBsb2dCdW5kbGVFdmVudCh7XG4gICAgICAgIC8vICAgbGV2ZWw6ICdlcnJvcicsXG4gICAgICAgIC8vICAgZXZlbnQ6ICdORVhUX1JFU1BPTlNFX0ZBSUxFRCcsXG4gICAgICAgIC8vICAgbWVzc2FnZTogYEZhaWxlZCB0byBnZXQgc3RyZWFtaW5nIHJlc3BvbnNlOiAke2V9YCxcbiAgICAgICAgLy8gICBjb250ZXh0OiB7XG4gICAgICAgIC8vICAgICB0eXBlOiAnbmV4dF9yZXNwb25zZXMnLFxuICAgICAgICAvLyAgICAgZW5kcG9pbnQ6ICcvdjEvbmV4dF9yZXNwb25zZXMnLFxuICAgICAgICAvLyAgICAgcmVzcG9uc2VUaW1lLFxuICAgICAgICAvLyAgICAgZXJyb3I6IGUgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFN0cmluZyhlKSxcbiAgICAgICAgLy8gICB9LFxuICAgICAgICAvLyB9KTtcblxuICAgICAgICAvLyBoYW5kbGVTdHJlYW1pbmdFcnJvcihlLCBzZXRSZXF1ZXN0RmFpbHVyZSwgc2V0TWVzc2FnZXMpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgICAvLyB9IGZpbmFsbHkge1xuICAgICAgICAvLyBsb2dQZXJmTWV0cmljKFBlcmZNZXRyaWNzRXZlbnRzLkZpcnN0UmVzcG9uc2VDb21wbGV0ZWQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgLy8gbG9nUGVyZk1ldHJpYyxcbiAgICAgIHNldFJlcXVlc3RGYWlsdXJlLFxuICAgICAgbWVzc2FnZUludGVyY2VwdG9yLFxuICAgICAgc2V0TWVzc2FnZXMsXG4gICAgXSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCxcbiAgICBnZXRTdHJlYW1pbmdSZXNwb25zZXMsXG4gIH07XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQTJCQSxNQUFhLGlCQUFpQixRQUErQjtBQUUzRCxRQURlLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxDQUM5QixhQUFhLElBQUksSUFBSTs7QUFHckMsTUFBTSxzQkFDSixTQUNBLGFBQ0EsZ0JBQ1k7QUFDWixLQUFJLGVBQWUsTUFBTTtBQUN2QixlQUFZLFNBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxTQUFPOztBQUVULEtBQUksWUFBWSxTQUFTQSw0QkFBWSxRQUFRLFFBQVEsU0FBU0EsNEJBQVksTUFBTTtFQUM5RSxNQUFNLGFBQWE7R0FDakIsR0FBRztHQUNILFVBQVU7SUFDUixHQUFHLFlBQVk7SUFDZixTQUFTLFlBQVksU0FBUyxVQUFVLFFBQVEsU0FBUztJQUMxRDtHQUNGO0FBQ0QsZUFBWSxTQUFRO0dBQ2xCLE1BQU0sV0FBVyxLQUFLLEtBQUssU0FBUztBQUNwQyxVQUFPLENBQ0wsR0FBRyxLQUFLLE1BQU0sR0FBRyxLQUFLLFNBQVMsRUFBRSxFQUNqQyxDQUFDLEdBQUcsU0FBUyxNQUFNLEdBQUcsU0FBUyxTQUFTLEVBQUUsRUFBRSxXQUFXLENBQ3hEO0lBQ0Q7QUFDRixTQUFPOztBQUVULGNBQVksU0FBUSxDQUFDLEdBQUcsS0FBSyxNQUFNLEdBQUcsS0FBSyxTQUFTLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsQ0FBQztBQUM3RixRQUFPOztBQUdULE1BQU0sMkJBQTJCLE9BQy9CLFFBQ0Esb0JBQ0EsZ0JBQ2tCO0NBQ2xCLElBQUlDO0FBRUosWUFBVyxNQUFNLFlBQVksT0FDM0IsS0FBSTtBQUNGLE1BQUksbUJBQW1CLFVBQVUsU0FBUyxDQUN4QztBQUdGLE1BQUksQ0FBQyxTQUNILE9BQU0sSUFBSSxNQUFNLDBCQUEwQjtFQUU1QyxNQUFNLFVBQVVDLGdEQUFvQixTQUFTO0FBQzdDLE1BQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLHFEQUFxRDtBQVd2RSxnQkFBYyxtQkFBbUIsU0FBUyxhQUFjLFlBQVk7VUFDN0RDLE9BQWdCO0FBQ3ZCLHlCQUFPLFFBQVEsd0RBQXdELE9BQU87R0FDNUUsY0FBYztHQUNkO0dBQ0QsQ0FBQzs7O0FBS1IsTUFBYUMsNkJBQXNEO0NBQ2pFLE1BQU0sMENBQStCQyxxQ0FBbUI7Q0FDeEQsTUFBTSxvQ0FBeUJDLCtCQUFhO0NBQzVDLE1BQU0scUJBQXFCQyxxREFBdUI7Q0FFbEQsTUFBTSxxQkFBcUJDLHlEQUF1QjtDQUNsRCxNQUFNLGtDQUF1QkMsdUNBQWU7QUFxRjVDLFFBQU87RUFDTCwrQ0FuRkMsRUFDQyxZQUNBLHVCQUl3QjtHQUN4QixNQUFNLGVBQWUsb0JBQW9CLG9CQUFvQixpQkFBaUIsSUFBSSxFQUFFO0dBRXBGLE1BQU0sd0JBQ0osY0FBYyx3QkFBd0IsSUFDdEMsY0FBYyx3QkFBd0IsSUFDdEM7R0FDRixNQUFNLHdCQUF3QixjQUFjLDBCQUEwQixJQUFJO0FBQzFFLFVBQU87SUFDTCxrQkFBVTtJQUNWO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNEO0tBRUgsQ0FBQyxTQUFTLG9CQUFvQixtQkFBbUIsQ0FDbEQ7RUEyREMsOENBeERBLE9BQU8sWUFBK0M7QUFHcEQsV0FBUSxJQUFJLGlDQUFpQyxLQUFLLFVBQVUsU0FBUyxNQUFNLEVBQUUsQ0FBQztHQUM5RSxNQUFNLFNBQVNDLDZCQUFrQix5QkFBeUIsUUFBUTtBQUVsRSxPQUFJO0FBQ0Ysc0JBQWtCLE1BQU07QUFFeEIsVUFBTSx5QkFBeUIsUUFBUSxvQkFBb0IsWUFBWTtZQWVoRSxHQUFHO0FBQ1YsWUFBUSxNQUFNLHFDQUFxQyxFQUFFO0FBZ0JyRCxVQUFNOztLQUtWO0dBRUU7R0FDQTtHQUNBO0dBQ0QsQ0FDRjtFQUtBIn0=
@@ -0,0 +1,98 @@
1
+ import { useMessageInterceptor } from "../../interceptors/useMessageInterceptor.js";
2
+ import logger_default from "../../application/logging/logger.js";
3
+ import { MessageType } from "../../application/models/message.js";
4
+ import "../../application/models/index.js";
5
+ import { appDetailsAtom } from "../../atoms/app/index.js";
6
+ import { useFeatureFlagService } from "../featureFlagServiceContext/featureFlagServiceContext.js";
7
+ import { messageFromResponse } from "../../application/utils/messageFromResponse.js";
8
+ import "../../application/utils/index.js";
9
+ import { messagesAtom, requestFailureAtom } from "../../atoms/chat/chatState.js";
10
+ import "../featureFlagServiceContext/index.js";
11
+ import commerce_api_default from "../../application/commerce-api.js";
12
+ import { useCallback } from "react";
13
+ import { v4 } from "uuid";
14
+ import { useAtomValue, useSetAtom } from "jotai";
15
+
16
+ //#region src/contexts/salesAgentContext/salesAgentService.ts
17
+ const getQueryParam = (key) => {
18
+ return new URL(window.location.href).searchParams.get(key);
19
+ };
20
+ const updateMessageState = (message, lastMessage, setMessages) => {
21
+ if (lastMessage == null) {
22
+ setMessages((prev) => [...prev, [message]]);
23
+ return message;
24
+ }
25
+ if (lastMessage.type === MessageType.Text && message.type === MessageType.Text) {
26
+ const newMessage = {
27
+ ...lastMessage,
28
+ metadata: {
29
+ ...lastMessage.metadata,
30
+ content: lastMessage.metadata.content + message.metadata.content
31
+ }
32
+ };
33
+ setMessages((prev) => {
34
+ const lastTurn = prev[prev.length - 1];
35
+ return [...prev.slice(0, prev.length - 1), [...lastTurn.slice(0, lastTurn.length - 1), newMessage]];
36
+ });
37
+ return newMessage;
38
+ }
39
+ setMessages((prev) => [...prev.slice(0, prev.length - 1), [...prev[prev.length - 1], message]]);
40
+ return message;
41
+ };
42
+ const processStreamingResponse = async (stream, messageInterceptor, setMessages) => {
43
+ let lastMessage;
44
+ for await (const response of stream) try {
45
+ if (messageInterceptor.intercept(response)) return;
46
+ if (!response) throw new Error("No response from stream");
47
+ const message = messageFromResponse(response);
48
+ if (!message) throw new Error("Failed to transform API response to client message");
49
+ lastMessage = updateMessageState(message, lastMessage, setMessages);
50
+ } catch (error) {
51
+ logger_default.logWarn(`[spiffy-ai] Failed to generate responses from stream`, error, {
52
+ lastResponse: lastMessage,
53
+ response
54
+ });
55
+ }
56
+ };
57
+ const useSalesAgentService = () => {
58
+ const setRequestFailure = useSetAtom(requestFailureAtom);
59
+ const setMessages = useSetAtom(messagesAtom);
60
+ const messageInterceptor = useMessageInterceptor();
61
+ const featureFlagService = useFeatureFlagService();
62
+ const context = useAtomValue(appDetailsAtom);
63
+ return {
64
+ createResponsePayload: useCallback(({ userEvents, generationParams }) => {
65
+ const featureFlags = featureFlagService?.featureFlagService?.getFeatureFlags() || {};
66
+ const overrideConfigVersion = getQueryParam("spiffy_config_version") || getQueryParam("envive_config_version") || void 0;
67
+ const overrideModelDatetime = getQueryParam("override_model_datetime") || void 0;
68
+ return {
69
+ id: v4(),
70
+ context,
71
+ userEvents,
72
+ featureFlags,
73
+ generationParams,
74
+ overrideConfigVersion,
75
+ overrideModelDatetime
76
+ };
77
+ }, [context, featureFlagService?.featureFlagService]),
78
+ getStreamingResponses: useCallback(async (payload) => {
79
+ console.log("getStreamingResponses payload", JSON.stringify(payload, null, 2));
80
+ const stream = commerce_api_default.getNextResponseStreaming(payload);
81
+ try {
82
+ setRequestFailure(false);
83
+ await processStreamingResponse(stream, messageInterceptor, setMessages);
84
+ } catch (e) {
85
+ console.error("error getting streaming responses", e);
86
+ throw e;
87
+ }
88
+ }, [
89
+ setRequestFailure,
90
+ messageInterceptor,
91
+ setMessages
92
+ ])
93
+ };
94
+ };
95
+
96
+ //#endregion
97
+ export { useSalesAgentService };
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudFNlcnZpY2UuanMiLCJuYW1lcyI6WyJsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCIsImVycm9yOiB1bmtub3duIiwidXNlU2FsZXNBZ2VudFNlcnZpY2U6ICgpID0+IFNhbGVzQWdlbnRTZXJ2aWNlIiwidXVpZCIsIkNvbW1lcmNlQXBpQ2xpZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL3NhbGVzQWdlbnRDb250ZXh0L3NhbGVzQWdlbnRTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUF0b21WYWx1ZSwgdXNlU2V0QXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IENvbW1lcmNlQXBpQ2xpZW50IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGknO1xuaW1wb3J0IHsgYXBwRGV0YWlsc0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7XG4gIEdlbmVyYXRpb25QYXJhbXMsXG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VUeXBlLFxuICBOZXh0TWVzc2FnZVJlcXVlc3QsXG4gIFJlc3BvbnNlLFxuICBVc2VyRXZlbnQsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21SZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBtZXNzYWdlc0F0b20sIHJlcXVlc3RGYWlsdXJlQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9jaGF0L2NoYXRTdGF0ZSc7XG5pbXBvcnQgeyB1c2VNZXNzYWdlSW50ZXJjZXB0b3IgfSBmcm9tICdzcmMvaW50ZXJjZXB0b3JzL3VzZU1lc3NhZ2VJbnRlcmNlcHRvcic7XG5pbXBvcnQgeyB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICcuLi9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcblxuaW50ZXJmYWNlIFNhbGVzQWdlbnRTZXJ2aWNlIHtcbiAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkOiAocGF5bG9hZDoge1xuICAgIHVzZXJFdmVudHM6IFVzZXJFdmVudFtdO1xuICAgIGdlbmVyYXRpb25QYXJhbXM/OiBHZW5lcmF0aW9uUGFyYW1zO1xuICB9KSA9PiBOZXh0TWVzc2FnZVJlcXVlc3Q7XG4gIGdldFN0cmVhbWluZ1Jlc3BvbnNlczogKHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFF1ZXJ5UGFyYW0gPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3QgdXJsT2JqID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gIHJldHVybiB1cmxPYmouc2VhcmNoUGFyYW1zLmdldChrZXkpO1xufTtcblxuY29uc3QgdXBkYXRlTWVzc2FnZVN0YXRlID0gKFxuICBtZXNzYWdlOiBNZXNzYWdlLFxuICBsYXN0TWVzc2FnZTogTWVzc2FnZSxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKTogTWVzc2FnZSA9PiB7XG4gIGlmIChsYXN0TWVzc2FnZSA9PSBudWxsKSB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldiwgW21lc3NhZ2VdXSk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cbiAgaWYgKGxhc3RNZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlRleHQgJiYgbWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5UZXh0KSB7XG4gICAgY29uc3QgbmV3TWVzc2FnZSA9IHtcbiAgICAgIC4uLmxhc3RNZXNzYWdlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgLi4ubGFzdE1lc3NhZ2UubWV0YWRhdGEsXG4gICAgICAgIGNvbnRlbnQ6IGxhc3RNZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQgKyBtZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQsXG4gICAgICB9LFxuICAgIH07XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBsYXN0VHVybiA9IHByZXZbcHJldi5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnByZXYuc2xpY2UoMCwgcHJldi5sZW5ndGggLSAxKSxcbiAgICAgICAgWy4uLmxhc3RUdXJuLnNsaWNlKDAsIGxhc3RUdXJuLmxlbmd0aCAtIDEpLCBuZXdNZXNzYWdlXSxcbiAgICAgIF07XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld01lc3NhZ2U7XG4gIH1cbiAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldi5zbGljZSgwLCBwcmV2Lmxlbmd0aCAtIDEpLCBbLi4ucHJldltwcmV2Lmxlbmd0aCAtIDFdLCBtZXNzYWdlXV0pO1xuICByZXR1cm4gbWVzc2FnZTtcbn07XG5cbmNvbnN0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZSA9IGFzeW5jIChcbiAgc3RyZWFtOiBBc3luY0l0ZXJhYmxlPFJlc3BvbnNlPixcbiAgbWVzc2FnZUludGVyY2VwdG9yOiB7IGludGVyY2VwdDogKHJlc3BvbnNlPzogUmVzcG9uc2UpID0+IGJvb2xlYW4gfCB1bmRlZmluZWQgfSxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGxldCBsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcblxuICBmb3IgYXdhaXQgKGNvbnN0IHJlc3BvbnNlIG9mIHN0cmVhbSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAobWVzc2FnZUludGVyY2VwdG9yLmludGVyY2VwdChyZXNwb25zZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVzcG9uc2UgZnJvbSBzdHJlYW0nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBtZXNzYWdlRnJvbVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byB0cmFuc2Zvcm0gQVBJIHJlc3BvbnNlIHRvIGNsaWVudCBtZXNzYWdlJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIE5vIHN1cHBvcnQgZm9yIENoYXRTZWFyY2ggbWVzc2FnZXMgYXQgdGhlIGN1cnJlbnQgdGltZS5cbiAgICAgIC8vIFBlcmhhcHMgd2UgYWRkIHN1cHBvcnQgYmFjayBpbiB0aGUgZnV0dXJlXG4gICAgICAvLyBpZiAobWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoKSB7XG4gICAgICAvLyAgIGhhbmRsZVNlYXJjaFJlc3VsdHMobWVzc2FnZSk7XG4gICAgICAvLyAgIGhhc1NlYXJjaFJlc3VsdHMgPSB0cnVlO1xuICAgICAgLy8gICBzZXRTZWFyY2hJc0xvYWRpbmcoZmFsc2UpOyAvLyBVcGRhdGUgc2VhcmNoIGxvYWRpbmcgaW1tZWRpYXRlbHkgd2hlbiByZXN1bHRzIGFyZSBkZXRlY3RlZFxuICAgICAgLy8gfVxuXG4gICAgICBsYXN0TWVzc2FnZSA9IHVwZGF0ZU1lc3NhZ2VTdGF0ZShtZXNzYWdlLCBsYXN0TWVzc2FnZSEsIHNldE1lc3NhZ2VzKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ1dhcm4oYFtzcGlmZnktYWldIEZhaWxlZCB0byBnZW5lcmF0ZSByZXNwb25zZXMgZnJvbSBzdHJlYW1gLCBlcnJvciwge1xuICAgICAgICBsYXN0UmVzcG9uc2U6IGxhc3RNZXNzYWdlLFxuICAgICAgICByZXNwb25zZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHVzZVNhbGVzQWdlbnRTZXJ2aWNlOiAoKSA9PiBTYWxlc0FnZW50U2VydmljZSA9ICgpID0+IHtcbiAgY29uc3Qgc2V0UmVxdWVzdEZhaWx1cmUgPSB1c2VTZXRBdG9tKHJlcXVlc3RGYWlsdXJlQXRvbSk7XG4gIGNvbnN0IHNldE1lc3NhZ2VzID0gdXNlU2V0QXRvbShtZXNzYWdlc0F0b20pO1xuICBjb25zdCBtZXNzYWdlSW50ZXJjZXB0b3IgPSB1c2VNZXNzYWdlSW50ZXJjZXB0b3IoKTtcblxuICBjb25zdCBmZWF0dXJlRmxhZ1NlcnZpY2UgPSB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UoKTtcbiAgY29uc3QgY29udGV4dCA9IHVzZUF0b21WYWx1ZShhcHBEZXRhaWxzQXRvbSk7XG5cbiAgY29uc3QgY3JlYXRlUmVzcG9uc2VQYXlsb2FkID0gdXNlQ2FsbGJhY2soXG4gICAgKHtcbiAgICAgIHVzZXJFdmVudHMsXG4gICAgICBnZW5lcmF0aW9uUGFyYW1zLFxuICAgIH06IHtcbiAgICAgIHVzZXJFdmVudHM6IFVzZXJFdmVudFtdO1xuICAgICAgZ2VuZXJhdGlvblBhcmFtcz86IEdlbmVyYXRpb25QYXJhbXM7XG4gICAgfSk6IE5leHRNZXNzYWdlUmVxdWVzdCA9PiB7XG4gICAgICBjb25zdCBmZWF0dXJlRmxhZ3MgPSBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge307XG5cbiAgICAgIGNvbnN0IG92ZXJyaWRlQ29uZmlnVmVyc2lvbiA9XG4gICAgICAgIGdldFF1ZXJ5UGFyYW0oJ3NwaWZmeV9jb25maWdfdmVyc2lvbicpIHx8XG4gICAgICAgIGdldFF1ZXJ5UGFyYW0oJ2Vudml2ZV9jb25maWdfdmVyc2lvbicpIHx8XG4gICAgICAgIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IG92ZXJyaWRlTW9kZWxEYXRldGltZSA9IGdldFF1ZXJ5UGFyYW0oJ292ZXJyaWRlX21vZGVsX2RhdGV0aW1lJykgfHwgdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHV1aWQoKSxcbiAgICAgICAgY29udGV4dCxcbiAgICAgICAgdXNlckV2ZW50cyxcbiAgICAgICAgZmVhdHVyZUZsYWdzLFxuICAgICAgICBnZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICBvdmVycmlkZUNvbmZpZ1ZlcnNpb24sXG4gICAgICAgIG92ZXJyaWRlTW9kZWxEYXRldGltZSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBbY29udGV4dCwgZmVhdHVyZUZsYWdTZXJ2aWNlPy5mZWF0dXJlRmxhZ1NlcnZpY2VdLFxuICApO1xuXG4gIGNvbnN0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIC8vIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RSZXNwb25zZVN0YXJ0ZWQpO1xuICAgICAgLy8gY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnNvbGUubG9nKCdnZXRTdHJlYW1pbmdSZXNwb25zZXMgcGF5bG9hZCcsIEpTT04uc3RyaW5naWZ5KHBheWxvYWQsIG51bGwsIDIpKTtcbiAgICAgIGNvbnN0IHN0cmVhbSA9IENvbW1lcmNlQXBpQ2xpZW50LmdldE5leHRSZXNwb25zZVN0cmVhbWluZyhwYXlsb2FkKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgc2V0UmVxdWVzdEZhaWx1cmUoZmFsc2UpO1xuXG4gICAgICAgIGF3YWl0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZShzdHJlYW0sIG1lc3NhZ2VJbnRlcmNlcHRvciwgc2V0TWVzc2FnZXMpO1xuXG4gICAgICAgIC8vIFRPRE86IEFkZCBzdXBwb3J0IGZvciB0aGUgQ2hyb21lIEV4dGVuc2lvbiBjb21tdW5pY2F0aW9uXG4gICAgICAgIC8vIExvZyBzdWNjZXNzZnVsIG5leHRfcmVzcG9uc2VzIGNhbGxcbiAgICAgICAgLy8gY29uc3QgcmVzcG9uc2VUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgICAgLy8gYXdhaXQgbG9nQnVuZGxlRXZlbnQoe1xuICAgICAgICAvLyAgIGxldmVsOiAnaW5mbycsXG4gICAgICAgIC8vICAgZXZlbnQ6ICdORVhUX1JFU1BPTlNFX1NVQ0NFU1MnLFxuICAgICAgICAvLyAgIGNvbnRleHQ6IHtcbiAgICAgICAgLy8gICAgIHR5cGU6ICduZXh0X3Jlc3BvbnNlcycsXG4gICAgICAgIC8vICAgICBlbmRwb2ludDogJy92MS9uZXh0X3Jlc3BvbnNlcycsXG4gICAgICAgIC8vICAgICBzdGF0dXNDb2RlOiAyMDAsXG4gICAgICAgIC8vICAgICByZXNwb25zZVRpbWUsXG4gICAgICAgIC8vICAgfSxcbiAgICAgICAgLy8gfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2Vycm9yIGdldHRpbmcgc3RyZWFtaW5nIHJlc3BvbnNlcycsIGUpO1xuICAgICAgICAvLyBMb2cgZmFpbGVkIG5leHRfcmVzcG9uc2VzIGNhbGxcbiAgICAgICAgLy8gY29uc3QgcmVzcG9uc2VUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcbiAgICAgICAgLy8gYXdhaXQgbG9nQnVuZGxlRXZlbnQoe1xuICAgICAgICAvLyAgIGxldmVsOiAnZXJyb3InLFxuICAgICAgICAvLyAgIGV2ZW50OiAnTkVYVF9SRVNQT05TRV9GQUlMRUQnLFxuICAgICAgICAvLyAgIG1lc3NhZ2U6IGBGYWlsZWQgdG8gZ2V0IHN0cmVhbWluZyByZXNwb25zZTogJHtlfWAsXG4gICAgICAgIC8vICAgY29udGV4dDoge1xuICAgICAgICAvLyAgICAgdHlwZTogJ25leHRfcmVzcG9uc2VzJyxcbiAgICAgICAgLy8gICAgIGVuZHBvaW50OiAnL3YxL25leHRfcmVzcG9uc2VzJyxcbiAgICAgICAgLy8gICAgIHJlc3BvbnNlVGltZSxcbiAgICAgICAgLy8gICAgIGVycm9yOiBlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBTdHJpbmcoZSksXG4gICAgICAgIC8vICAgfSxcbiAgICAgICAgLy8gfSk7XG5cbiAgICAgICAgLy8gaGFuZGxlU3RyZWFtaW5nRXJyb3IoZSwgc2V0UmVxdWVzdEZhaWx1cmUsIHNldE1lc3NhZ2VzKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgLy8gfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlQ29tcGxldGVkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIC8vIGxvZ1BlcmZNZXRyaWMsXG4gICAgICBzZXRSZXF1ZXN0RmFpbHVyZSxcbiAgICAgIG1lc3NhZ2VJbnRlcmNlcHRvcixcbiAgICAgIHNldE1lc3NhZ2VzLFxuICAgIF0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVSZXNwb25zZVBheWxvYWQsXG4gICAgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzLFxuICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQTJCQSxNQUFhLGlCQUFpQixRQUErQjtBQUUzRCxRQURlLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxDQUM5QixhQUFhLElBQUksSUFBSTs7QUFHckMsTUFBTSxzQkFDSixTQUNBLGFBQ0EsZ0JBQ1k7QUFDWixLQUFJLGVBQWUsTUFBTTtBQUN2QixlQUFZLFNBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxTQUFPOztBQUVULEtBQUksWUFBWSxTQUFTLFlBQVksUUFBUSxRQUFRLFNBQVMsWUFBWSxNQUFNO0VBQzlFLE1BQU0sYUFBYTtHQUNqQixHQUFHO0dBQ0gsVUFBVTtJQUNSLEdBQUcsWUFBWTtJQUNmLFNBQVMsWUFBWSxTQUFTLFVBQVUsUUFBUSxTQUFTO0lBQzFEO0dBQ0Y7QUFDRCxlQUFZLFNBQVE7R0FDbEIsTUFBTSxXQUFXLEtBQUssS0FBSyxTQUFTO0FBQ3BDLFVBQU8sQ0FDTCxHQUFHLEtBQUssTUFBTSxHQUFHLEtBQUssU0FBUyxFQUFFLEVBQ2pDLENBQUMsR0FBRyxTQUFTLE1BQU0sR0FBRyxTQUFTLFNBQVMsRUFBRSxFQUFFLFdBQVcsQ0FDeEQ7SUFDRDtBQUNGLFNBQU87O0FBRVQsY0FBWSxTQUFRLENBQUMsR0FBRyxLQUFLLE1BQU0sR0FBRyxLQUFLLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxDQUFDO0FBQzdGLFFBQU87O0FBR1QsTUFBTSwyQkFBMkIsT0FDL0IsUUFDQSxvQkFDQSxnQkFDa0I7Q0FDbEIsSUFBSUE7QUFFSixZQUFXLE1BQU0sWUFBWSxPQUMzQixLQUFJO0FBQ0YsTUFBSSxtQkFBbUIsVUFBVSxTQUFTLENBQ3hDO0FBR0YsTUFBSSxDQUFDLFNBQ0gsT0FBTSxJQUFJLE1BQU0sMEJBQTBCO0VBRTVDLE1BQU0sVUFBVSxvQkFBb0IsU0FBUztBQUM3QyxNQUFJLENBQUMsUUFDSCxPQUFNLElBQUksTUFBTSxxREFBcUQ7QUFXdkUsZ0JBQWMsbUJBQW1CLFNBQVMsYUFBYyxZQUFZO1VBQzdEQyxPQUFnQjtBQUN2QixpQkFBTyxRQUFRLHdEQUF3RCxPQUFPO0dBQzVFLGNBQWM7R0FDZDtHQUNELENBQUM7OztBQUtSLE1BQWFDLDZCQUFzRDtDQUNqRSxNQUFNLG9CQUFvQixXQUFXLG1CQUFtQjtDQUN4RCxNQUFNLGNBQWMsV0FBVyxhQUFhO0NBQzVDLE1BQU0scUJBQXFCLHVCQUF1QjtDQUVsRCxNQUFNLHFCQUFxQix1QkFBdUI7Q0FDbEQsTUFBTSxVQUFVLGFBQWEsZUFBZTtBQXFGNUMsUUFBTztFQUNMLHVCQXBGNEIsYUFDM0IsRUFDQyxZQUNBLHVCQUl3QjtHQUN4QixNQUFNLGVBQWUsb0JBQW9CLG9CQUFvQixpQkFBaUIsSUFBSSxFQUFFO0dBRXBGLE1BQU0sd0JBQ0osY0FBYyx3QkFBd0IsSUFDdEMsY0FBYyx3QkFBd0IsSUFDdEM7R0FDRixNQUFNLHdCQUF3QixjQUFjLDBCQUEwQixJQUFJO0FBQzFFLFVBQU87SUFDTCxJQUFJQyxJQUFNO0lBQ1Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7S0FFSCxDQUFDLFNBQVMsb0JBQW9CLG1CQUFtQixDQUNsRDtFQTJEQyx1QkF6RDRCLFlBQzVCLE9BQU8sWUFBK0M7QUFHcEQsV0FBUSxJQUFJLGlDQUFpQyxLQUFLLFVBQVUsU0FBUyxNQUFNLEVBQUUsQ0FBQztHQUM5RSxNQUFNLFNBQVNDLHFCQUFrQix5QkFBeUIsUUFBUTtBQUVsRSxPQUFJO0FBQ0Ysc0JBQWtCLE1BQU07QUFFeEIsVUFBTSx5QkFBeUIsUUFBUSxvQkFBb0IsWUFBWTtZQWVoRSxHQUFHO0FBQ1YsWUFBUSxNQUFNLHFDQUFxQyxFQUFFO0FBZ0JyRCxVQUFNOztLQUtWO0dBRUU7R0FDQTtHQUNBO0dBQ0QsQ0FDRjtFQUtBIn0=