@envive-ai/react-hooks 0.3.2 → 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 (132) hide show
  1. package/dist/application/commerce-api.cjs +6 -4
  2. package/dist/application/commerce-api.js +6 -4
  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/variantInfo/variantInfo.cjs +4 -1
  6. package/dist/application/models/variantInfo/variantInfo.d.cts +4 -1
  7. package/dist/application/models/variantInfo/variantInfo.d.ts +4 -1
  8. package/dist/application/models/variantInfo/variantInfo.js +4 -1
  9. package/dist/application/utils/elementObserver.d.cts +2 -2
  10. package/dist/application/utils/elementObserver.d.ts +2 -2
  11. package/dist/atoms/app/index.cjs +12 -1
  12. package/dist/atoms/app/index.d.cts +3 -2
  13. package/dist/atoms/app/index.d.ts +3 -2
  14. package/dist/atoms/app/index.js +13 -3
  15. package/dist/atoms/app/variant.cjs +2 -2
  16. package/dist/atoms/app/variant.d.cts +69 -5
  17. package/dist/atoms/app/variant.d.ts +69 -5
  18. package/dist/atoms/app/variant.js +2 -2
  19. package/dist/atoms/chat/chatState.d.cts +15 -15
  20. package/dist/atoms/chat/chatState.d.ts +15 -15
  21. package/dist/atoms/chat/form.d.cts +2 -2
  22. package/dist/atoms/chat/form.d.ts +2 -2
  23. package/dist/atoms/chat/index.d.cts +2 -2
  24. package/dist/atoms/chat/index.d.ts +2 -2
  25. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  26. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  27. package/dist/atoms/chat/messageQueue.cjs +1 -35
  28. package/dist/atoms/chat/messageQueue.js +2 -34
  29. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  30. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  31. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  32. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  33. package/dist/atoms/chat/replies.d.cts +2 -2
  34. package/dist/atoms/chat/replies.d.ts +2 -2
  35. package/dist/atoms/chat/suggestions.d.cts +2 -2
  36. package/dist/atoms/chat/suggestions.d.ts +2 -2
  37. package/dist/atoms/globalSearch/globalSearch.cjs +1 -3
  38. package/dist/atoms/globalSearch/globalSearch.d.cts +7 -10
  39. package/dist/atoms/globalSearch/globalSearch.d.ts +7 -10
  40. package/dist/atoms/globalSearch/globalSearch.js +2 -3
  41. package/dist/atoms/globalSearch/index.cjs +0 -1
  42. package/dist/atoms/globalSearch/index.d.cts +2 -2
  43. package/dist/atoms/globalSearch/index.d.ts +2 -2
  44. package/dist/atoms/globalSearch/index.js +2 -2
  45. package/dist/atoms/org/customerService.d.cts +6 -6
  46. package/dist/atoms/org/customerService.d.ts +6 -6
  47. package/dist/atoms/org/graphqlConfig.d.cts +5 -5
  48. package/dist/atoms/org/graphqlConfig.d.ts +5 -5
  49. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  50. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  51. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  52. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  53. package/dist/atoms/search/chatSearch.d.cts +17 -17
  54. package/dist/atoms/search/chatSearch.d.ts +17 -17
  55. package/dist/atoms/search/searchAPI.cjs +1 -1
  56. package/dist/atoms/search/searchAPI.d.cts +14 -14
  57. package/dist/atoms/search/searchAPI.d.ts +14 -14
  58. package/dist/atoms/search/searchAPI.js +1 -1
  59. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +5 -5
  60. package/dist/contexts/amplitudeContext/amplitudeContext.js +5 -5
  61. package/dist/contexts/enviveContext/enviveContext.cjs +7 -3
  62. package/dist/contexts/enviveContext/enviveContext.js +7 -3
  63. package/dist/contexts/graphqlContext/graphqlContext.cjs +1 -1
  64. package/dist/contexts/graphqlContext/graphqlContext.js +1 -1
  65. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +62 -0
  66. package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +23 -0
  67. package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +23 -0
  68. package/dist/contexts/hardcopyContext/hardcopyContext.js +60 -0
  69. package/dist/contexts/hardcopyContext/index.cjs +4 -0
  70. package/dist/contexts/hardcopyContext/index.d.cts +2 -0
  71. package/dist/contexts/hardcopyContext/index.d.ts +2 -0
  72. package/dist/contexts/hardcopyContext/index.js +3 -0
  73. package/dist/contexts/pageContext/index.cjs +6 -0
  74. package/dist/contexts/pageContext/index.d.cts +3 -0
  75. package/dist/contexts/pageContext/index.d.ts +3 -0
  76. package/dist/contexts/pageContext/index.js +4 -0
  77. package/dist/contexts/pageContext/mapping.cjs +25 -0
  78. package/dist/contexts/pageContext/mapping.d.cts +8 -0
  79. package/dist/contexts/pageContext/mapping.d.ts +8 -0
  80. package/dist/contexts/pageContext/mapping.js +25 -0
  81. package/dist/contexts/pageContext/pageContext.cjs +66 -0
  82. package/dist/contexts/pageContext/pageContext.d.cts +11 -0
  83. package/dist/contexts/pageContext/pageContext.d.ts +11 -0
  84. package/dist/contexts/pageContext/pageContext.js +64 -0
  85. package/dist/contexts/pageContext/types.cjs +0 -0
  86. package/dist/contexts/pageContext/types.d.cts +27 -0
  87. package/dist/contexts/pageContext/types.d.ts +27 -0
  88. package/dist/contexts/pageContext/types.js +1 -0
  89. package/dist/contexts/salesAgentContext/chatAPI.cjs +45 -0
  90. package/dist/contexts/salesAgentContext/chatAPI.d.cts +35 -0
  91. package/dist/contexts/salesAgentContext/chatAPI.d.ts +35 -0
  92. package/dist/contexts/salesAgentContext/chatAPI.js +44 -0
  93. package/dist/contexts/salesAgentContext/index.cjs +20 -0
  94. package/dist/contexts/salesAgentContext/index.d.cts +4 -0
  95. package/dist/contexts/salesAgentContext/index.d.ts +4 -0
  96. package/dist/contexts/salesAgentContext/index.js +5 -0
  97. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +90 -0
  98. package/dist/contexts/salesAgentContext/salesAgentContext.d.cts +22 -0
  99. package/dist/contexts/salesAgentContext/salesAgentContext.d.ts +22 -0
  100. package/dist/contexts/salesAgentContext/salesAgentContext.js +88 -0
  101. package/dist/contexts/salesAgentContext/salesAgentService.cjs +99 -0
  102. package/dist/contexts/salesAgentContext/salesAgentService.js +98 -0
  103. package/dist/contexts/searchContext/searchContext.cjs +1 -1
  104. package/dist/contexts/searchContext/searchContext.js +1 -1
  105. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  106. package/dist/contexts/types.cjs +11 -1
  107. package/dist/contexts/types.d.cts +10 -2
  108. package/dist/contexts/types.d.ts +10 -2
  109. package/dist/contexts/types.js +11 -2
  110. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +1 -1
  111. package/dist/contexts/userIdentityContext/userIdentityContext.js +1 -1
  112. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  113. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
  114. package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +9 -3
  115. package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +9 -3
  116. package/dist/hooks/ImageResolver/useImageResolver.cjs +1 -1
  117. package/dist/hooks/ImageResolver/useImageResolver.js +1 -1
  118. package/dist/hooks/Search/useSearch.cjs +5 -8
  119. package/dist/hooks/Search/useSearch.d.cts +1 -3
  120. package/dist/hooks/Search/useSearch.d.ts +1 -3
  121. package/dist/hooks/Search/useSearch.js +6 -9
  122. package/dist/hooks/utils.d.cts +1 -1
  123. package/dist/hooks/utils.d.ts +1 -1
  124. package/package.json +5 -1
  125. package/dist/contexts/chatContext/chatContext.cjs +0 -306
  126. package/dist/contexts/chatContext/chatContext.d.cts +0 -15
  127. package/dist/contexts/chatContext/chatContext.d.ts +0 -15
  128. package/dist/contexts/chatContext/chatContext.js +0 -304
  129. package/dist/contexts/chatContext/index.cjs +0 -4
  130. package/dist/contexts/chatContext/index.d.cts +0 -2
  131. package/dist/contexts/chatContext/index.d.ts +0 -2
  132. package/dist/contexts/chatContext/index.js +0 -3
@@ -0,0 +1,35 @@
1
+ import { Suggestion as Suggestion$1 } from "../../application/models/api/suggestion.cjs";
2
+ import { PageVisitCategory } from "@spiffy-ai/commerce-api-client";
3
+
4
+ //#region src/contexts/salesAgentContext/chatAPI.d.ts
5
+ interface SalesAgentChatAPI {
6
+ logPageVisit: ({
7
+ pageVisitCategory
8
+ }: {
9
+ pageVisitCategory: PageVisitCategory;
10
+ }) => void;
11
+ onSuggestionClicked: (suggestion: Suggestion$1) => void;
12
+ onTypedMessageSubmitted: ({
13
+ query
14
+ }: {
15
+ query: string;
16
+ }) => void;
17
+ onFormResponseSubmitted: (formResponse: any) => void;
18
+ }
19
+ declare const useSalesAgentChatAPI: () => {
20
+ logPageVisit: ({
21
+ pageVisitCategory
22
+ }: {
23
+ pageVisitCategory: PageVisitCategory;
24
+ }) => void;
25
+ onSuggestionClicked: (suggestion: Suggestion$1) => void;
26
+ onTypedMessageSubmitted: ({
27
+ query
28
+ }: {
29
+ query: string;
30
+ }) => void;
31
+ onFormResponseSubmitted: () => void;
32
+ };
33
+ //#endregion
34
+ export { SalesAgentChatAPI, useSalesAgentChatAPI };
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEFQSS5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvc2FsZXNBZ2VudENvbnRleHQvY2hhdEFQSS5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBhZ2VWaXNpdENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IFN1Z2dlc3Rpb24gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmV4cG9ydCBpbnRlcmZhY2UgU2FsZXNBZ2VudENoYXRBUEkge1xuICAgIGxvZ1BhZ2VWaXNpdDogKHsgcGFnZVZpc2l0Q2F0ZWdvcnkgfToge1xuICAgICAgICBwYWdlVmlzaXRDYXRlZ29yeTogUGFnZVZpc2l0Q2F0ZWdvcnk7XG4gICAgfSkgPT4gdm9pZDtcbiAgICBvblN1Z2dlc3Rpb25DbGlja2VkOiAoc3VnZ2VzdGlvbjogU3VnZ2VzdGlvbikgPT4gdm9pZDtcbiAgICBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZDogKHsgcXVlcnkgfToge1xuICAgICAgICBxdWVyeTogc3RyaW5nO1xuICAgIH0pID0+IHZvaWQ7XG4gICAgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQ6IChmb3JtUmVzcG9uc2U6IGFueSkgPT4gdm9pZDtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZVNhbGVzQWdlbnRDaGF0QVBJOiAoKSA9PiB7XG4gICAgbG9nUGFnZVZpc2l0OiAoeyBwYWdlVmlzaXRDYXRlZ29yeSB9OiB7XG4gICAgICAgIHBhZ2VWaXNpdENhdGVnb3J5OiBQYWdlVmlzaXRDYXRlZ29yeTtcbiAgICB9KSA9PiB2b2lkO1xuICAgIG9uU3VnZ2VzdGlvbkNsaWNrZWQ6IChzdWdnZXN0aW9uOiBTdWdnZXN0aW9uKSA9PiB2b2lkO1xuICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkOiAoeyBxdWVyeSB9OiB7XG4gICAgICAgIHF1ZXJ5OiBzdHJpbmc7XG4gICAgfSkgPT4gdm9pZDtcbiAgICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZDogKCkgPT4gdm9pZDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLG9CQUFvQjtDQUFDO09BQUc7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNuQyxJQUFXLHVCQUF1QjtDQUFDO09BQU87T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
@@ -0,0 +1,35 @@
1
+ import { Suggestion as Suggestion$1 } from "../../application/models/api/suggestion.js";
2
+ import { PageVisitCategory } from "@spiffy-ai/commerce-api-client";
3
+
4
+ //#region src/contexts/salesAgentContext/chatAPI.d.ts
5
+ interface SalesAgentChatAPI {
6
+ logPageVisit: ({
7
+ pageVisitCategory
8
+ }: {
9
+ pageVisitCategory: PageVisitCategory;
10
+ }) => void;
11
+ onSuggestionClicked: (suggestion: Suggestion$1) => void;
12
+ onTypedMessageSubmitted: ({
13
+ query
14
+ }: {
15
+ query: string;
16
+ }) => void;
17
+ onFormResponseSubmitted: (formResponse: any) => void;
18
+ }
19
+ declare const useSalesAgentChatAPI: () => {
20
+ logPageVisit: ({
21
+ pageVisitCategory
22
+ }: {
23
+ pageVisitCategory: PageVisitCategory;
24
+ }) => void;
25
+ onSuggestionClicked: (suggestion: Suggestion$1) => void;
26
+ onTypedMessageSubmitted: ({
27
+ query
28
+ }: {
29
+ query: string;
30
+ }) => void;
31
+ onFormResponseSubmitted: () => void;
32
+ };
33
+ //#endregion
34
+ export { SalesAgentChatAPI, useSalesAgentChatAPI };
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdEFQSS5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9zYWxlc0FnZW50Q29udGV4dC9jaGF0QVBJLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnZVZpc2l0Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbiB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuZXhwb3J0IGludGVyZmFjZSBTYWxlc0FnZW50Q2hhdEFQSSB7XG4gICAgbG9nUGFnZVZpc2l0OiAoeyBwYWdlVmlzaXRDYXRlZ29yeSB9OiB7XG4gICAgICAgIHBhZ2VWaXNpdENhdGVnb3J5OiBQYWdlVmlzaXRDYXRlZ29yeTtcbiAgICB9KSA9PiB2b2lkO1xuICAgIG9uU3VnZ2VzdGlvbkNsaWNrZWQ6IChzdWdnZXN0aW9uOiBTdWdnZXN0aW9uKSA9PiB2b2lkO1xuICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkOiAoeyBxdWVyeSB9OiB7XG4gICAgICAgIHF1ZXJ5OiBzdHJpbmc7XG4gICAgfSkgPT4gdm9pZDtcbiAgICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZDogKGZvcm1SZXNwb25zZTogYW55KSA9PiB2b2lkO1xufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgdXNlU2FsZXNBZ2VudENoYXRBUEk6ICgpID0+IHtcbiAgICBsb2dQYWdlVmlzaXQ6ICh7IHBhZ2VWaXNpdENhdGVnb3J5IH06IHtcbiAgICAgICAgcGFnZVZpc2l0Q2F0ZWdvcnk6IFBhZ2VWaXNpdENhdGVnb3J5O1xuICAgIH0pID0+IHZvaWQ7XG4gICAgb25TdWdnZXN0aW9uQ2xpY2tlZDogKHN1Z2dlc3Rpb246IFN1Z2dlc3Rpb24pID0+IHZvaWQ7XG4gICAgb25UeXBlZE1lc3NhZ2VTdWJtaXR0ZWQ6ICh7IHF1ZXJ5IH06IHtcbiAgICAgICAgcXVlcnk6IHN0cmluZztcbiAgICB9KSA9PiB2b2lkO1xuICAgIG9uRm9ybVJlc3BvbnNlU3VibWl0dGVkOiAoKSA9PiB2b2lkO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLElBQVcsb0JBQW9CO0NBQUM7T0FBRztPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ25DLElBQVcsdUJBQXVCO0NBQUM7T0FBTztPQUFBO09BQUE7T0FBQTtDQUFBIn0=
@@ -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=