@gengage/assistant-fe 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/LICENSE +61 -0
  2. package/README.md +232 -0
  3. package/dist/assistant-fe.css +1 -0
  4. package/dist/chat/api.d.ts +87 -0
  5. package/dist/chat/api.d.ts.map +1 -0
  6. package/dist/chat/attachment-utils.d.ts +10 -0
  7. package/dist/chat/attachment-utils.d.ts.map +1 -0
  8. package/dist/chat/catalog.d.ts +1114 -0
  9. package/dist/chat/catalog.d.ts.map +1 -0
  10. package/dist/chat/components/AIGroupingCards.d.ts +4 -0
  11. package/dist/chat/components/AIGroupingCards.d.ts.map +1 -0
  12. package/dist/chat/components/AISuggestedSearchCards.d.ts +4 -0
  13. package/dist/chat/components/AISuggestedSearchCards.d.ts.map +1 -0
  14. package/dist/chat/components/AITopPicks.d.ts +4 -0
  15. package/dist/chat/components/AITopPicks.d.ts.map +1 -0
  16. package/dist/chat/components/CategoriesContainer.d.ts +4 -0
  17. package/dist/chat/components/CategoriesContainer.d.ts.map +1 -0
  18. package/dist/chat/components/ChatDrawer.d.ts +140 -0
  19. package/dist/chat/components/ChatDrawer.d.ts.map +1 -0
  20. package/dist/chat/components/ChoicePrompter.d.ts +16 -0
  21. package/dist/chat/components/ChoicePrompter.d.ts.map +1 -0
  22. package/dist/chat/components/ComparisonTable.d.ts +47 -0
  23. package/dist/chat/components/ComparisonTable.d.ts.map +1 -0
  24. package/dist/chat/components/FloatingComparisonButton.d.ts +11 -0
  25. package/dist/chat/components/FloatingComparisonButton.d.ts.map +1 -0
  26. package/dist/chat/components/GroundingReviewCard.d.ts +4 -0
  27. package/dist/chat/components/GroundingReviewCard.d.ts.map +1 -0
  28. package/dist/chat/components/KvkkBanner.d.ts +6 -0
  29. package/dist/chat/components/KvkkBanner.d.ts.map +1 -0
  30. package/dist/chat/components/Launcher.d.ts +25 -0
  31. package/dist/chat/components/Launcher.d.ts.map +1 -0
  32. package/dist/chat/components/PanelTopBar.d.ts +20 -0
  33. package/dist/chat/components/PanelTopBar.d.ts.map +1 -0
  34. package/dist/chat/components/ProactivePopup.d.ts +11 -0
  35. package/dist/chat/components/ProactivePopup.d.ts.map +1 -0
  36. package/dist/chat/components/ProsAndCons.d.ts +9 -0
  37. package/dist/chat/components/ProsAndCons.d.ts.map +1 -0
  38. package/dist/chat/components/ReviewHighlights.d.ts +3 -0
  39. package/dist/chat/components/ReviewHighlights.d.ts.map +1 -0
  40. package/dist/chat/components/ThumbnailsColumn.d.ts +23 -0
  41. package/dist/chat/components/ThumbnailsColumn.d.ts.map +1 -0
  42. package/dist/chat/components/actionClassifier.d.ts +13 -0
  43. package/dist/chat/components/actionClassifier.d.ts.map +1 -0
  44. package/dist/chat/components/productMentionLinker.d.ts +26 -0
  45. package/dist/chat/components/productMentionLinker.d.ts.map +1 -0
  46. package/dist/chat/components/renderUISpec.d.ts +15 -0
  47. package/dist/chat/components/renderUISpec.d.ts.map +1 -0
  48. package/dist/chat/components/typewriter.d.ts +25 -0
  49. package/dist/chat/components/typewriter.d.ts.map +1 -0
  50. package/dist/chat/extendedModeManager.d.ts +33 -0
  51. package/dist/chat/extendedModeManager.d.ts.map +1 -0
  52. package/dist/chat/index.d.ts +192 -0
  53. package/dist/chat/index.d.ts.map +1 -0
  54. package/dist/chat/locales/en.d.ts +3 -0
  55. package/dist/chat/locales/en.d.ts.map +1 -0
  56. package/dist/chat/locales/index.d.ts +6 -0
  57. package/dist/chat/locales/index.d.ts.map +1 -0
  58. package/dist/chat/locales/tr.d.ts +3 -0
  59. package/dist/chat/locales/tr.d.ts.map +1 -0
  60. package/dist/chat/types.d.ts +212 -0
  61. package/dist/chat/types.d.ts.map +1 -0
  62. package/dist/chat.cjs +2 -0
  63. package/dist/chat.cjs.map +1 -0
  64. package/dist/chat.iife.js +59 -0
  65. package/dist/chat.iife.js.map +1 -0
  66. package/dist/chat.js +11 -0
  67. package/dist/chat.js.map +1 -0
  68. package/dist/common/action-router.d.ts +30 -0
  69. package/dist/common/action-router.d.ts.map +1 -0
  70. package/dist/common/activity-tracker.d.ts +38 -0
  71. package/dist/common/activity-tracker.d.ts.map +1 -0
  72. package/dist/common/analytics-events.d.ts +90 -0
  73. package/dist/common/analytics-events.d.ts.map +1 -0
  74. package/dist/common/analytics.d.ts +58 -0
  75. package/dist/common/analytics.d.ts.map +1 -0
  76. package/dist/common/api-paths.d.ts +14 -0
  77. package/dist/common/api-paths.d.ts.map +1 -0
  78. package/dist/common/client.d.ts +20 -0
  79. package/dist/common/client.d.ts.map +1 -0
  80. package/dist/common/communication-bridge.d.ts +51 -0
  81. package/dist/common/communication-bridge.d.ts.map +1 -0
  82. package/dist/common/config-schema.d.ts +241 -0
  83. package/dist/common/config-schema.d.ts.map +1 -0
  84. package/dist/common/context.d.ts +28 -0
  85. package/dist/common/context.d.ts.map +1 -0
  86. package/dist/common/customization-factories.d.ts +63 -0
  87. package/dist/common/customization-factories.d.ts.map +1 -0
  88. package/dist/common/events.d.ts +47 -0
  89. package/dist/common/events.d.ts.map +1 -0
  90. package/dist/common/global-error-toast.d.ts +6 -0
  91. package/dist/common/global-error-toast.d.ts.map +1 -0
  92. package/dist/common/index.d.ts +36 -0
  93. package/dist/common/index.d.ts.map +1 -0
  94. package/dist/common/indexed-db.d.ts +74 -0
  95. package/dist/common/indexed-db.d.ts.map +1 -0
  96. package/dist/common/overlay.d.ts +64 -0
  97. package/dist/common/overlay.d.ts.map +1 -0
  98. package/dist/common/preflight.d.ts +12 -0
  99. package/dist/common/preflight.d.ts.map +1 -0
  100. package/dist/common/renderer/dom.d.ts +4 -0
  101. package/dist/common/renderer/dom.d.ts.map +1 -0
  102. package/dist/common/renderer/index.d.ts +5 -0
  103. package/dist/common/renderer/index.d.ts.map +1 -0
  104. package/dist/common/renderer/overrides.d.ts +24 -0
  105. package/dist/common/renderer/overrides.d.ts.map +1 -0
  106. package/dist/common/renderer/registry.d.ts +3 -0
  107. package/dist/common/renderer/registry.d.ts.map +1 -0
  108. package/dist/common/renderer/types.d.ts +20 -0
  109. package/dist/common/renderer/types.d.ts.map +1 -0
  110. package/dist/common/safe-html.d.ts +19 -0
  111. package/dist/common/safe-html.d.ts.map +1 -0
  112. package/dist/common/streaming.d.ts +32 -0
  113. package/dist/common/streaming.d.ts.map +1 -0
  114. package/dist/common/theme-utils.d.ts +16 -0
  115. package/dist/common/theme-utils.d.ts.map +1 -0
  116. package/dist/common/types.d.ts +298 -0
  117. package/dist/common/types.d.ts.map +1 -0
  118. package/dist/common/ui-theme.d.ts +10 -0
  119. package/dist/common/ui-theme.d.ts.map +1 -0
  120. package/dist/common/uuidv7.d.ts +8 -0
  121. package/dist/common/uuidv7.d.ts.map +1 -0
  122. package/dist/common/v1-protocol-adapter.d.ts +66 -0
  123. package/dist/common/v1-protocol-adapter.d.ts.map +1 -0
  124. package/dist/common/widget-base.d.ts +75 -0
  125. package/dist/common/widget-base.d.ts.map +1 -0
  126. package/dist/common.cjs +2 -0
  127. package/dist/common.cjs.map +1 -0
  128. package/dist/common.js +584 -0
  129. package/dist/common.js.map +1 -0
  130. package/dist/index-CFA70IGF.js +3626 -0
  131. package/dist/index-CFA70IGF.js.map +1 -0
  132. package/dist/index-Dfl89zpe.cjs +13 -0
  133. package/dist/index-Dfl89zpe.cjs.map +1 -0
  134. package/dist/index.cjs +2 -0
  135. package/dist/index.cjs.map +1 -0
  136. package/dist/index.d.ts +24 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +59 -0
  139. package/dist/index.js.map +1 -0
  140. package/dist/qna/api.d.ts +22 -0
  141. package/dist/qna/api.d.ts.map +1 -0
  142. package/dist/qna/catalog.d.ts +140 -0
  143. package/dist/qna/catalog.d.ts.map +1 -0
  144. package/dist/qna/components/ButtonRow.d.ts +16 -0
  145. package/dist/qna/components/ButtonRow.d.ts.map +1 -0
  146. package/dist/qna/components/TextInput.d.ts +12 -0
  147. package/dist/qna/components/TextInput.d.ts.map +1 -0
  148. package/dist/qna/components/renderUISpec.d.ts +8 -0
  149. package/dist/qna/components/renderUISpec.d.ts.map +1 -0
  150. package/dist/qna/index.d.ts +34 -0
  151. package/dist/qna/index.d.ts.map +1 -0
  152. package/dist/qna/locales/en.d.ts +3 -0
  153. package/dist/qna/locales/en.d.ts.map +1 -0
  154. package/dist/qna/locales/index.d.ts +6 -0
  155. package/dist/qna/locales/index.d.ts.map +1 -0
  156. package/dist/qna/locales/tr.d.ts +3 -0
  157. package/dist/qna/locales/tr.d.ts.map +1 -0
  158. package/dist/qna/types.d.ts +62 -0
  159. package/dist/qna/types.d.ts.map +1 -0
  160. package/dist/qna.cjs +2 -0
  161. package/dist/qna.cjs.map +1 -0
  162. package/dist/qna.css +1 -0
  163. package/dist/qna.iife.js +48 -0
  164. package/dist/qna.iife.js.map +1 -0
  165. package/dist/qna.js +435 -0
  166. package/dist/qna.js.map +1 -0
  167. package/dist/simrel/api.d.ts +26 -0
  168. package/dist/simrel/api.d.ts.map +1 -0
  169. package/dist/simrel/catalog.d.ts +319 -0
  170. package/dist/simrel/catalog.d.ts.map +1 -0
  171. package/dist/simrel/components/GroupTabs.d.ts +17 -0
  172. package/dist/simrel/components/GroupTabs.d.ts.map +1 -0
  173. package/dist/simrel/components/ProductCard.d.ts +17 -0
  174. package/dist/simrel/components/ProductCard.d.ts.map +1 -0
  175. package/dist/simrel/components/ProductGrid.d.ts +17 -0
  176. package/dist/simrel/components/ProductGrid.d.ts.map +1 -0
  177. package/dist/simrel/components/renderUISpec.d.ts +8 -0
  178. package/dist/simrel/components/renderUISpec.d.ts.map +1 -0
  179. package/dist/simrel/index.d.ts +36 -0
  180. package/dist/simrel/index.d.ts.map +1 -0
  181. package/dist/simrel/locales/en.d.ts +3 -0
  182. package/dist/simrel/locales/en.d.ts.map +1 -0
  183. package/dist/simrel/locales/index.d.ts +6 -0
  184. package/dist/simrel/locales/index.d.ts.map +1 -0
  185. package/dist/simrel/locales/tr.d.ts +3 -0
  186. package/dist/simrel/locales/tr.d.ts.map +1 -0
  187. package/dist/simrel/types.d.ts +111 -0
  188. package/dist/simrel/types.d.ts.map +1 -0
  189. package/dist/simrel.cjs +2 -0
  190. package/dist/simrel.cjs.map +1 -0
  191. package/dist/simrel.css +1 -0
  192. package/dist/simrel.iife.js +48 -0
  193. package/dist/simrel.iife.js.map +1 -0
  194. package/dist/simrel.js +620 -0
  195. package/dist/simrel.js.map +1 -0
  196. package/dist/types-CeON7iBO.cjs +48 -0
  197. package/dist/types-CeON7iBO.cjs.map +1 -0
  198. package/dist/types-yxW8WA7u.js +4132 -0
  199. package/dist/types-yxW8WA7u.js.map +1 -0
  200. package/package.json +100 -0
package/dist/chat.js ADDED
@@ -0,0 +1,11 @@
1
+ import "./types-yxW8WA7u.js";
2
+ import { G as r, e as c, c as s, a as n, d, b as g } from "./index-CFA70IGF.js";
3
+ export {
4
+ r as GengageChat,
5
+ c as chatCatalog,
6
+ s as createChatWidget,
7
+ n as createDefaultChatUISpecRegistry,
8
+ d as defaultChatUnknownUISpecRenderer,
9
+ g as renderUISpec
10
+ };
11
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,30 @@
1
+ import { UnknownActionPolicy } from './config-schema.js';
2
+ import { ActionPayload, StreamEventAction } from './types.js';
3
+ export interface HostActionHandlers {
4
+ openChat?: (payload?: ActionPayload | unknown) => void;
5
+ navigate?: (params: {
6
+ url: string;
7
+ newTab?: boolean;
8
+ }) => void;
9
+ saveSession?: (params: {
10
+ sessionId: string;
11
+ sku: string;
12
+ }) => void;
13
+ addToCart?: (params: {
14
+ sku: string;
15
+ quantity: number;
16
+ cartCode: string;
17
+ }) => void;
18
+ scriptCall?: (params: {
19
+ name: string;
20
+ payload?: Record<string, unknown>;
21
+ }) => void;
22
+ unknown?: (action: StreamEventAction['action']) => void;
23
+ }
24
+ export interface ActionRouterOptions {
25
+ allowScriptCall?: boolean;
26
+ unknownActionPolicy?: UnknownActionPolicy;
27
+ logger?: Pick<Console, 'warn' | 'error' | 'debug'>;
28
+ }
29
+ export declare function routeStreamAction(event: StreamEventAction, handlers: HostActionHandlers, options?: ActionRouterOptions): void;
30
+ //# sourceMappingURL=action-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-router.d.ts","sourceRoot":"","sources":["../../src/common/action-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClF,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IACnF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC;CACpD;AAID,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,GAAE,mBAAwB,GAChC,IAAI,CAuEN"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Tracks user activity signals (page views, idle, scroll depth) for
3
+ * engagement analytics and proactive-agent triggering.
4
+ */
5
+ export interface ActivityEvent {
6
+ type: 'pageview' | 'idle' | 'scroll' | 'focus' | 'blur';
7
+ timestamp: number;
8
+ data?: Record<string, unknown>;
9
+ }
10
+ export interface ActivityTrackerOptions {
11
+ /** Idle threshold in ms (default: 30000). */
12
+ idleThresholdMs?: number;
13
+ /** Scroll depth granularity in percent (default: 25). */
14
+ scrollGranularity?: number;
15
+ /** Callback when an activity event fires. */
16
+ onActivity?: (event: ActivityEvent) => void;
17
+ }
18
+ export declare class ActivityTracker {
19
+ private _idleTimer;
20
+ private _idleThreshold;
21
+ private _scrollGranularity;
22
+ private _maxScrollDepth;
23
+ private _lastReportedDepth;
24
+ private _onActivity;
25
+ private _listeners;
26
+ private _destroyed;
27
+ constructor(options?: ActivityTrackerOptions);
28
+ private _setup;
29
+ private _listen;
30
+ private _resetIdleTimer;
31
+ private _onScroll;
32
+ private _onVisibility;
33
+ private _emit;
34
+ /** Current max scroll depth reached (0-100). */
35
+ get maxScrollDepth(): number;
36
+ destroy(): void;
37
+ }
38
+ //# sourceMappingURL=activity-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/common/activity-tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAA0C;IAC7D,OAAO,CAAC,UAAU,CAAmD;IACrE,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,GAAE,sBAA2B;IAOhD,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,KAAK;IAKb,gDAAgD;IAChD,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,OAAO,IAAI,IAAI;CAQhB"}
@@ -0,0 +1,90 @@
1
+ import { AnalyticsInput } from './analytics.js';
2
+ export interface AnalyticsContext {
3
+ account_id: string;
4
+ session_id: string;
5
+ correlation_id: string;
6
+ view_id?: string;
7
+ user_id?: string;
8
+ page_type?: string;
9
+ sku?: string;
10
+ }
11
+ export declare function streamStartEvent(ctx: AnalyticsContext, payload: {
12
+ endpoint: string;
13
+ request_id: string;
14
+ widget?: 'chat' | 'qna' | 'simrel';
15
+ }): AnalyticsInput;
16
+ export declare function streamChunkEvent(ctx: AnalyticsContext, payload: {
17
+ request_id: string;
18
+ chunk_index: number;
19
+ latency_ms?: number;
20
+ widget?: 'chat' | 'qna' | 'simrel';
21
+ }): AnalyticsInput;
22
+ export declare function streamUiSpecEvent(ctx: AnalyticsContext, payload: {
23
+ request_id: string;
24
+ chunk_index: number;
25
+ component_type: string;
26
+ widget?: 'chat' | 'qna' | 'simrel';
27
+ }): AnalyticsInput;
28
+ export declare function streamDoneEvent(ctx: AnalyticsContext, payload: {
29
+ request_id: string;
30
+ latency_ms: number;
31
+ chunk_count: number;
32
+ widget?: 'chat' | 'qna' | 'simrel';
33
+ }): AnalyticsInput;
34
+ export declare function streamErrorEvent(ctx: AnalyticsContext, payload: {
35
+ request_id: string;
36
+ error_code: string;
37
+ error_message: string;
38
+ widget?: 'chat' | 'qna' | 'simrel';
39
+ }): AnalyticsInput;
40
+ export declare function llmUsageEvent(ctx: AnalyticsContext, payload: {
41
+ model: string;
42
+ prompt_tokens: number;
43
+ completion_tokens: number;
44
+ total_tokens: number;
45
+ provider?: string;
46
+ }): AnalyticsInput;
47
+ export declare function meteringIncrementEvent(ctx: AnalyticsContext, payload: {
48
+ meter_key: string;
49
+ quantity: number;
50
+ unit: string;
51
+ }): AnalyticsInput;
52
+ export declare function meteringSummaryEvent(ctx: AnalyticsContext, payload: {
53
+ meter_key: string;
54
+ quantity: number;
55
+ unit: string;
56
+ }): AnalyticsInput;
57
+ export declare function chatHistorySnapshotEvent(ctx: AnalyticsContext, payload: {
58
+ message_count: number;
59
+ history_ref: string;
60
+ redaction_level: string;
61
+ }): AnalyticsInput;
62
+ export declare function widgetHistorySnapshotEvent(ctx: AnalyticsContext, payload: {
63
+ message_count: number;
64
+ history_ref: string;
65
+ redaction_level: string;
66
+ widget: 'chat' | 'qna' | 'simrel';
67
+ }): AnalyticsInput;
68
+ export declare function basketAddEvent(ctx: AnalyticsContext, payload: {
69
+ attribution_source: 'chat' | 'qna' | 'simrel';
70
+ attribution_action_id: string;
71
+ cart_value: number;
72
+ currency: string;
73
+ line_items: number;
74
+ sku: string;
75
+ }): AnalyticsInput;
76
+ export declare function checkoutStartEvent(ctx: AnalyticsContext, payload: {
77
+ attribution_source: 'chat' | 'qna' | 'simrel';
78
+ attribution_action_id: string;
79
+ cart_value: number;
80
+ currency: string;
81
+ line_items: number;
82
+ }): AnalyticsInput;
83
+ export declare function checkoutCompleteEvent(ctx: AnalyticsContext, payload: {
84
+ attribution_source: 'chat' | 'qna' | 'simrel';
85
+ attribution_action_id: string;
86
+ cart_value: number;
87
+ currency: string;
88
+ line_items: number;
89
+ }): AnalyticsInput;
90
+ //# sourceMappingURL=analytics-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-events.d.ts","sourceRoot":"","sources":["../../src/common/analytics-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;CACpC,GACA,cAAc,CAiBhB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;CACpC,GACA,cAAc,CAoBhB;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;CACpC,GACA,cAAc,CAkBhB;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;CACpC,GACA,cAAc,CAkBhB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;CACpC,GACA,cAAc,CAkBhB;AAMD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,cAAc,CAqBhB;AAMD,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,GACA,cAAc,CAiBhB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,GACA,cAAc,CAiBhB;AAMD,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB,GACA,cAAc,CAiBhB;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;CACnC,GACA,cAAc,CAkBhB;AAMD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,kBAAkB,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC9C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb,GACA,cAAc,CAqBhB;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,kBAAkB,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC9C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,GACA,cAAc,CAoBhB;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAE;IACP,kBAAkB,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC9C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,GACA,cAAc,CAoBhB"}
@@ -0,0 +1,58 @@
1
+ import { AnalyticsAuthMode } from './config-schema.js';
2
+ export interface AnalyticsEnvelope {
3
+ event_name: string;
4
+ event_version: '1';
5
+ timestamp_ms: number;
6
+ account_id: string;
7
+ session_id: string;
8
+ correlation_id: string;
9
+ view_id?: string;
10
+ user_id?: string;
11
+ widget?: 'chat' | 'qna' | 'simrel';
12
+ page_type?: string;
13
+ sku?: string;
14
+ payload: Record<string, unknown>;
15
+ }
16
+ export interface AnalyticsAuthConfig {
17
+ mode?: AnalyticsAuthMode;
18
+ key?: string;
19
+ headerName?: string;
20
+ bodyField?: string;
21
+ }
22
+ export interface AnalyticsClientConfig {
23
+ enabled?: boolean;
24
+ middlewareUrl: string;
25
+ endpoint?: string;
26
+ auth?: AnalyticsAuthConfig;
27
+ fireAndForget?: boolean;
28
+ useBeacon?: boolean;
29
+ keepaliveFetch?: boolean;
30
+ timeoutMs?: number;
31
+ maxRetries?: number;
32
+ batchSize?: number;
33
+ flushIntervalMs?: number;
34
+ }
35
+ export type AnalyticsInput = Omit<AnalyticsEnvelope, 'event_version' | 'timestamp_ms'> & Partial<Pick<AnalyticsEnvelope, 'event_version' | 'timestamp_ms'>>;
36
+ export declare class AnalyticsClient {
37
+ private readonly config;
38
+ private readonly queue;
39
+ private flushTimer;
40
+ private readonly onPageHideBound;
41
+ constructor(config: AnalyticsClientConfig);
42
+ track(input: AnalyticsInput): void;
43
+ flush(options?: {
44
+ preferBeacon?: boolean;
45
+ }): Promise<void>;
46
+ /** Drain the entire queue, flushing in batch-sized chunks. */
47
+ flushAll(options?: {
48
+ preferBeacon?: boolean;
49
+ }): Promise<void>;
50
+ destroy(): void;
51
+ private scheduleFlush;
52
+ private scheduleImmediateFlush;
53
+ private buildTransportBody;
54
+ private sendWithRetry;
55
+ private send;
56
+ }
57
+ export declare function createAnalyticsClient(config: AnalyticsClientConfig): AnalyticsClient;
58
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/common/analytics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,CAAC,GACpF,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC;AA0BrE,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0F;IACjH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA2B;IACjD,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAa;gBAEjC,MAAM,EAAE,qBAAqB;IAoBzC,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAa5B,KAAK,CAAC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpE,8DAA8D;IACxD,QAAQ,CAAC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvE,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,kBAAkB;YAQZ,aAAa;YAab,IAAI;CA6CnB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CAEpF"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Endpoint path helpers.
3
+ *
4
+ * All endpoints use `/chat/*` prefix. API versioning is handled via
5
+ * request-level compatibility params or feature-toggle params.
6
+ */
7
+ export type ChatEndpointName = 'process_action' | 'launcher_action' | 'similar_products' | 'product_groupings' | 'proactive_action';
8
+ export interface ChatTransportConfig {
9
+ middlewareUrl: string;
10
+ attachment?: File;
11
+ }
12
+ export declare function normalizeMiddlewareUrl(input?: string): string;
13
+ export declare function buildChatEndpointUrl(endpoint: ChatEndpointName, config: ChatTransportConfig): string;
14
+ //# sourceMappingURL=api-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-paths.d.ts","sourceRoot":"","sources":["../../src/common/api-paths.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,IAAI,CAAC;CACnB;AAUD,wBAAgB,sBAAsB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAGpG"}
@@ -0,0 +1,20 @@
1
+ import { AccountRuntimeConfig } from './config-schema.js';
2
+ import { OverlayWidgetsController } from './overlay.js';
3
+ import { PageContext } from './types.js';
4
+ export interface HostActions {
5
+ onAddToCart?: (info: {
6
+ sku: string;
7
+ quantity?: number;
8
+ cartCode?: string;
9
+ }) => void;
10
+ onProductNavigate?: (url: string, sku: string, sessionId: string | null) => void;
11
+ onScriptCall?: (name: string, payload: unknown) => void;
12
+ }
13
+ export interface GengageClientOptions {
14
+ runtimeConfig: AccountRuntimeConfig | unknown;
15
+ contextResolver?: () => Partial<PageContext>;
16
+ hostActions?: HostActions;
17
+ preflight?: boolean;
18
+ }
19
+ export declare function initGengageClient(options: GengageClientOptions): Promise<OverlayWidgetsController>;
20
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/common/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,KAAK,EAAE,wBAAwB,EAAyB,MAAM,cAAc,CAAC;AAEpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpF,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,oBAAoB,GAAG,OAAO,CAAC;IAC9C,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA6DD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyBxG"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Two-way communication bridge between the host page and embedded widgets.
3
+ *
4
+ * Host -> Widget: The host sends `window.postMessage({ gengage, type, payload })`.
5
+ * The bridge validates the origin, checks the namespace, and routes to handlers.
6
+ *
7
+ * Widget -> Host: The bridge dispatches a `CustomEvent('gengage:bridge:message')`
8
+ * on window so the host can listen without tight coupling.
9
+ *
10
+ * Built-in message types:
11
+ * - 'addToCart' -- host confirms cart addition
12
+ * - 'navigate' -- host navigates to URL
13
+ * - 'openChat' -- programmatic open
14
+ * - 'closeChat' -- programmatic close
15
+ * - 'getContext' -- host requests current context
16
+ */
17
+ export interface BridgeMessage {
18
+ type: string;
19
+ payload?: unknown;
20
+ }
21
+ export interface CommunicationBridgeOptions {
22
+ /** Widget namespace for message identification (e.g. 'chat', 'qna'). */
23
+ namespace: string;
24
+ /** Allowed origins for postMessage security (default: ['*']). */
25
+ allowedOrigins?: string[];
26
+ /** Callback when a message is received from the host. */
27
+ onMessage?: (msg: BridgeMessage) => void;
28
+ }
29
+ type BridgeHandler = (payload: unknown) => void;
30
+ export declare class CommunicationBridge {
31
+ private readonly _namespace;
32
+ private readonly _allowedOrigins;
33
+ private readonly _onMessage;
34
+ private readonly _handlers;
35
+ private readonly _messageListener;
36
+ private _destroyed;
37
+ constructor(options: CommunicationBridgeOptions);
38
+ /** Send a message to the host page via CustomEvent on window. */
39
+ send(type: string, payload?: unknown): void;
40
+ /**
41
+ * Register a handler for a specific message type.
42
+ * Returns an unsubscribe function.
43
+ */
44
+ on(type: string, handler: BridgeHandler): () => void;
45
+ /** Clean up all event listeners and handlers. */
46
+ destroy(): void;
47
+ private _handlePostMessage;
48
+ private _isOriginAllowed;
49
+ }
50
+ export {};
51
+ //# sourceMappingURL=communication-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"communication-bridge.d.ts","sourceRoot":"","sources":["../../src/common/communication-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yDAAyD;IACzD,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED,KAAK,aAAa,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAEhD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6C;IACxE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyC;IACnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgC;IACjE,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,0BAA0B;IAS/C,iEAAiE;IACjE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAmB3C;;;OAGG;IACH,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,IAAI;IAgBpD,iDAAiD;IACjD,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,gBAAgB;CAIzB"}
@@ -0,0 +1,241 @@
1
+ import { z } from 'zod';
2
+ export declare const AnalyticsAuthModeSchema: z.ZodEnum<["none", "x-api-key-header", "bearer-header", "body-api-key"]>;
3
+ export declare const DEFAULT_IDEMPOTENCY_KEY = "__gengageWidgetsInit";
4
+ export declare const UnknownActionPolicySchema: z.ZodEnum<["log-and-ignore", "throw", "delegate"]>;
5
+ export declare const AccountRuntimeConfigSchema: z.ZodObject<{
6
+ version: z.ZodLiteral<"1">;
7
+ accountId: z.ZodString;
8
+ middlewareUrl: z.ZodString;
9
+ locale: z.ZodOptional<z.ZodString>;
10
+ widgets: z.ZodObject<{
11
+ chat: z.ZodDefault<z.ZodObject<{
12
+ enabled: z.ZodDefault<z.ZodBoolean>;
13
+ }, "strip", z.ZodTypeAny, {
14
+ enabled: boolean;
15
+ }, {
16
+ enabled?: boolean | undefined;
17
+ }>>;
18
+ qna: z.ZodDefault<z.ZodObject<{
19
+ enabled: z.ZodDefault<z.ZodBoolean>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ enabled: boolean;
22
+ }, {
23
+ enabled?: boolean | undefined;
24
+ }>>;
25
+ simrel: z.ZodDefault<z.ZodObject<{
26
+ enabled: z.ZodDefault<z.ZodBoolean>;
27
+ }, "strip", z.ZodTypeAny, {
28
+ enabled: boolean;
29
+ }, {
30
+ enabled?: boolean | undefined;
31
+ }>>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ chat: {
34
+ enabled: boolean;
35
+ };
36
+ qna: {
37
+ enabled: boolean;
38
+ };
39
+ simrel: {
40
+ enabled: boolean;
41
+ };
42
+ }, {
43
+ chat?: {
44
+ enabled?: boolean | undefined;
45
+ } | undefined;
46
+ qna?: {
47
+ enabled?: boolean | undefined;
48
+ } | undefined;
49
+ simrel?: {
50
+ enabled?: boolean | undefined;
51
+ } | undefined;
52
+ }>;
53
+ mounts: z.ZodDefault<z.ZodObject<{
54
+ chat: z.ZodOptional<z.ZodString>;
55
+ qna: z.ZodOptional<z.ZodString>;
56
+ simrel: z.ZodOptional<z.ZodString>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ chat?: string | undefined;
59
+ qna?: string | undefined;
60
+ simrel?: string | undefined;
61
+ }, {
62
+ chat?: string | undefined;
63
+ qna?: string | undefined;
64
+ simrel?: string | undefined;
65
+ }>>;
66
+ transport: z.ZodDefault<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>>;
67
+ analytics: z.ZodDefault<z.ZodObject<{
68
+ enabled: z.ZodDefault<z.ZodBoolean>;
69
+ endpoint: z.ZodDefault<z.ZodString>;
70
+ auth: z.ZodDefault<z.ZodObject<{
71
+ mode: z.ZodDefault<z.ZodEnum<["none", "x-api-key-header", "bearer-header", "body-api-key"]>>;
72
+ key: z.ZodOptional<z.ZodString>;
73
+ headerName: z.ZodOptional<z.ZodString>;
74
+ bodyField: z.ZodDefault<z.ZodString>;
75
+ }, "strip", z.ZodTypeAny, {
76
+ mode: "none" | "x-api-key-header" | "bearer-header" | "body-api-key";
77
+ bodyField: string;
78
+ key?: string | undefined;
79
+ headerName?: string | undefined;
80
+ }, {
81
+ mode?: "none" | "x-api-key-header" | "bearer-header" | "body-api-key" | undefined;
82
+ key?: string | undefined;
83
+ headerName?: string | undefined;
84
+ bodyField?: string | undefined;
85
+ }>>;
86
+ fireAndForget: z.ZodDefault<z.ZodBoolean>;
87
+ useBeacon: z.ZodDefault<z.ZodBoolean>;
88
+ keepaliveFetch: z.ZodDefault<z.ZodBoolean>;
89
+ timeoutMs: z.ZodDefault<z.ZodNumber>;
90
+ maxRetries: z.ZodDefault<z.ZodNumber>;
91
+ }, "strip", z.ZodTypeAny, {
92
+ enabled: boolean;
93
+ endpoint: string;
94
+ auth: {
95
+ mode: "none" | "x-api-key-header" | "bearer-header" | "body-api-key";
96
+ bodyField: string;
97
+ key?: string | undefined;
98
+ headerName?: string | undefined;
99
+ };
100
+ fireAndForget: boolean;
101
+ useBeacon: boolean;
102
+ keepaliveFetch: boolean;
103
+ timeoutMs: number;
104
+ maxRetries: number;
105
+ }, {
106
+ enabled?: boolean | undefined;
107
+ endpoint?: string | undefined;
108
+ auth?: {
109
+ mode?: "none" | "x-api-key-header" | "bearer-header" | "body-api-key" | undefined;
110
+ key?: string | undefined;
111
+ headerName?: string | undefined;
112
+ bodyField?: string | undefined;
113
+ } | undefined;
114
+ fireAndForget?: boolean | undefined;
115
+ useBeacon?: boolean | undefined;
116
+ keepaliveFetch?: boolean | undefined;
117
+ timeoutMs?: number | undefined;
118
+ maxRetries?: number | undefined;
119
+ }>>;
120
+ gtm: z.ZodDefault<z.ZodObject<{
121
+ idempotencyKey: z.ZodDefault<z.ZodString>;
122
+ requireDomReady: z.ZodDefault<z.ZodBoolean>;
123
+ }, "strip", z.ZodTypeAny, {
124
+ idempotencyKey: string;
125
+ requireDomReady: boolean;
126
+ }, {
127
+ idempotencyKey?: string | undefined;
128
+ requireDomReady?: boolean | undefined;
129
+ }>>;
130
+ actionHandling: z.ZodDefault<z.ZodObject<{
131
+ unknownActionPolicy: z.ZodDefault<z.ZodEnum<["log-and-ignore", "throw", "delegate"]>>;
132
+ allowScriptCall: z.ZodDefault<z.ZodBoolean>;
133
+ }, "strip", z.ZodTypeAny, {
134
+ unknownActionPolicy: "log-and-ignore" | "throw" | "delegate";
135
+ allowScriptCall: boolean;
136
+ }, {
137
+ unknownActionPolicy?: "log-and-ignore" | "throw" | "delegate" | undefined;
138
+ allowScriptCall?: boolean | undefined;
139
+ }>>;
140
+ }, "strip", z.ZodTypeAny, {
141
+ version: "1";
142
+ accountId: string;
143
+ middlewareUrl: string;
144
+ widgets: {
145
+ chat: {
146
+ enabled: boolean;
147
+ };
148
+ qna: {
149
+ enabled: boolean;
150
+ };
151
+ simrel: {
152
+ enabled: boolean;
153
+ };
154
+ };
155
+ mounts: {
156
+ chat?: string | undefined;
157
+ qna?: string | undefined;
158
+ simrel?: string | undefined;
159
+ };
160
+ transport: {};
161
+ analytics: {
162
+ enabled: boolean;
163
+ endpoint: string;
164
+ auth: {
165
+ mode: "none" | "x-api-key-header" | "bearer-header" | "body-api-key";
166
+ bodyField: string;
167
+ key?: string | undefined;
168
+ headerName?: string | undefined;
169
+ };
170
+ fireAndForget: boolean;
171
+ useBeacon: boolean;
172
+ keepaliveFetch: boolean;
173
+ timeoutMs: number;
174
+ maxRetries: number;
175
+ };
176
+ gtm: {
177
+ idempotencyKey: string;
178
+ requireDomReady: boolean;
179
+ };
180
+ actionHandling: {
181
+ unknownActionPolicy: "log-and-ignore" | "throw" | "delegate";
182
+ allowScriptCall: boolean;
183
+ };
184
+ locale?: string | undefined;
185
+ }, {
186
+ version: "1";
187
+ accountId: string;
188
+ middlewareUrl: string;
189
+ widgets: {
190
+ chat?: {
191
+ enabled?: boolean | undefined;
192
+ } | undefined;
193
+ qna?: {
194
+ enabled?: boolean | undefined;
195
+ } | undefined;
196
+ simrel?: {
197
+ enabled?: boolean | undefined;
198
+ } | undefined;
199
+ };
200
+ locale?: string | undefined;
201
+ mounts?: {
202
+ chat?: string | undefined;
203
+ qna?: string | undefined;
204
+ simrel?: string | undefined;
205
+ } | undefined;
206
+ transport?: {} | undefined;
207
+ analytics?: {
208
+ enabled?: boolean | undefined;
209
+ endpoint?: string | undefined;
210
+ auth?: {
211
+ mode?: "none" | "x-api-key-header" | "bearer-header" | "body-api-key" | undefined;
212
+ key?: string | undefined;
213
+ headerName?: string | undefined;
214
+ bodyField?: string | undefined;
215
+ } | undefined;
216
+ fireAndForget?: boolean | undefined;
217
+ useBeacon?: boolean | undefined;
218
+ keepaliveFetch?: boolean | undefined;
219
+ timeoutMs?: number | undefined;
220
+ maxRetries?: number | undefined;
221
+ } | undefined;
222
+ gtm?: {
223
+ idempotencyKey?: string | undefined;
224
+ requireDomReady?: boolean | undefined;
225
+ } | undefined;
226
+ actionHandling?: {
227
+ unknownActionPolicy?: "log-and-ignore" | "throw" | "delegate" | undefined;
228
+ allowScriptCall?: boolean | undefined;
229
+ } | undefined;
230
+ }>;
231
+ export type AccountRuntimeConfig = z.infer<typeof AccountRuntimeConfigSchema>;
232
+ export type AnalyticsAuthMode = z.infer<typeof AnalyticsAuthModeSchema>;
233
+ export type UnknownActionPolicy = z.infer<typeof UnknownActionPolicySchema>;
234
+ export declare function parseAccountRuntimeConfig(input: unknown): AccountRuntimeConfig;
235
+ export declare function safeParseAccountRuntimeConfig(input: unknown): ReturnType<typeof AccountRuntimeConfigSchema.safeParse>;
236
+ export declare function createDefaultAccountRuntimeConfig(params: {
237
+ accountId: string;
238
+ middlewareUrl: string;
239
+ locale?: string;
240
+ }): AccountRuntimeConfig;
241
+ //# sourceMappingURL=config-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/common/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,uBAAuB,0EAAwE,CAAC;AAoB7G,eAAO,MAAM,uBAAuB,yBAAyB,CAAC;AAO9D,eAAO,MAAM,yBAAyB,oDAAkD,CAAC;AAOzF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACxE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAE9E;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC,OAAO,0BAA0B,CAAC,SAAS,CAAC,CAErH;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,oBAAoB,CAYvB"}
@@ -0,0 +1,28 @@
1
+ import { PageContext, SessionContext } from './types.js';
2
+ /**
3
+ * Returns the shared session ID for this browser tab session.
4
+ * Creates and persists it on first call.
5
+ *
6
+ * Call this once at page load and share the result with all widget configs:
7
+ *
8
+ * const sessionId = bootstrapSession();
9
+ * chatWidget.init({ ..., session: { sessionId } });
10
+ * qnaWidget.init({ ..., session: { sessionId } });
11
+ */
12
+ export declare function bootstrapSession(): string;
13
+ /**
14
+ * Reads the current page context from window.gengage.pageContext.
15
+ * Returns null if not set.
16
+ */
17
+ export declare function getWindowPageContext(): PageContext | null;
18
+ /**
19
+ * Merges a partial context update into the current window.gengage.pageContext.
20
+ * Dispatches 'gengage:context:update' so all listening widgets update.
21
+ */
22
+ export declare function updatePageContext(patch: Partial<PageContext>): void;
23
+ /**
24
+ * Resolves the session context, bootstrapping if necessary.
25
+ * Merges provided overrides with auto-generated session ID.
26
+ */
27
+ export declare function resolveSession(overrides?: Partial<SessionContext>): SessionContext;
28
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/common/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAM9D;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAYzC;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CASnE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAMlF"}