@gooddata/sdk-ui-gen-ai 11.48.0-alpha.1 → 11.48.0-alpha.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 (120) hide show
  1. package/esm/components/GenAIChatContextIndicator.d.ts.map +1 -1
  2. package/esm/components/GenAIChatContextIndicator.js +11 -11
  3. package/esm/components/GenAIChatDialogConnected.d.ts +3 -1
  4. package/esm/components/GenAIChatDialogConnected.d.ts.map +1 -1
  5. package/esm/components/GenAIChatDialogConnected.js +25 -11
  6. package/esm/components/GenAiChatContextChooser.d.ts +1 -1
  7. package/esm/components/GenAiChatContextChooser.d.ts.map +1 -1
  8. package/esm/components/GenAiChatContextChooser.js +8 -8
  9. package/esm/components/hooks/useContextItems.d.ts +2 -2
  10. package/esm/components/hooks/useContextItems.d.ts.map +1 -1
  11. package/esm/components/hooks/useContextItems.js +5 -5
  12. package/esm/components/utils/icons.d.ts +2 -2
  13. package/esm/components/utils/icons.d.ts.map +1 -1
  14. package/esm/components/utils/icons.js +1 -0
  15. package/esm/context/addContextReference.d.ts +3 -2
  16. package/esm/context/addContextReference.d.ts.map +1 -1
  17. package/esm/context/addContextReference.js +62 -7
  18. package/esm/context/build.d.ts +2 -2
  19. package/esm/context/build.d.ts.map +1 -1
  20. package/esm/context/build.js +35 -4
  21. package/esm/context/collectContextReferences.d.ts +4 -10
  22. package/esm/context/collectContextReferences.d.ts.map +1 -1
  23. package/esm/context/collectContextReferences.js +96 -8
  24. package/esm/context/dashboard.d.ts.map +1 -1
  25. package/esm/context/dashboard.js +10 -4
  26. package/esm/context/removeContextReference.d.ts +2 -1
  27. package/esm/context/removeContextReference.d.ts.map +1 -1
  28. package/esm/context/removeContextReference.js +31 -2
  29. package/esm/localization/bundles/de-DE.localization-bundle.d.ts +1 -0
  30. package/esm/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
  31. package/esm/localization/bundles/de-DE.localization-bundle.js +1 -0
  32. package/esm/localization/bundles/en-AU.localization-bundle.d.ts +1 -0
  33. package/esm/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
  34. package/esm/localization/bundles/en-AU.localization-bundle.js +1 -0
  35. package/esm/localization/bundles/en-GB.localization-bundle.d.ts +1 -0
  36. package/esm/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
  37. package/esm/localization/bundles/en-GB.localization-bundle.js +1 -0
  38. package/esm/localization/bundles/es-419.localization-bundle.d.ts +1 -0
  39. package/esm/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
  40. package/esm/localization/bundles/es-419.localization-bundle.js +1 -0
  41. package/esm/localization/bundles/es-ES.localization-bundle.d.ts +1 -0
  42. package/esm/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
  43. package/esm/localization/bundles/es-ES.localization-bundle.js +1 -0
  44. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts +1 -0
  45. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
  46. package/esm/localization/bundles/fi-FI.localization-bundle.js +1 -0
  47. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts +1 -0
  48. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
  49. package/esm/localization/bundles/fr-CA.localization-bundle.js +1 -0
  50. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts +1 -0
  51. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
  52. package/esm/localization/bundles/fr-FR.localization-bundle.js +1 -0
  53. package/esm/localization/bundles/id-ID.localization-bundle.d.ts +1 -0
  54. package/esm/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
  55. package/esm/localization/bundles/id-ID.localization-bundle.js +1 -0
  56. package/esm/localization/bundles/it-IT.localization-bundle.d.ts +1 -0
  57. package/esm/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
  58. package/esm/localization/bundles/it-IT.localization-bundle.js +1 -0
  59. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts +1 -0
  60. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
  61. package/esm/localization/bundles/ja-JP.localization-bundle.js +1 -0
  62. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts +1 -0
  63. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
  64. package/esm/localization/bundles/ko-KR.localization-bundle.js +1 -0
  65. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts +1 -0
  66. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
  67. package/esm/localization/bundles/nl-NL.localization-bundle.js +1 -0
  68. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts +1 -0
  69. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
  70. package/esm/localization/bundles/pl-PL.localization-bundle.js +1 -0
  71. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts +1 -0
  72. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
  73. package/esm/localization/bundles/pt-BR.localization-bundle.js +1 -0
  74. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts +1 -0
  75. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
  76. package/esm/localization/bundles/pt-PT.localization-bundle.js +1 -0
  77. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts +1 -0
  78. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
  79. package/esm/localization/bundles/ru-RU.localization-bundle.js +1 -0
  80. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts +1 -0
  81. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
  82. package/esm/localization/bundles/sl-SI.localization-bundle.js +1 -0
  83. package/esm/localization/bundles/th-TH.localization-bundle.d.ts +1 -0
  84. package/esm/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
  85. package/esm/localization/bundles/th-TH.localization-bundle.js +1 -0
  86. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts +1 -0
  87. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
  88. package/esm/localization/bundles/tr-TR.localization-bundle.js +1 -0
  89. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts +1 -0
  90. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
  91. package/esm/localization/bundles/uk-UA.localization-bundle.js +1 -0
  92. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts +1 -0
  93. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
  94. package/esm/localization/bundles/vi-VN.localization-bundle.js +1 -0
  95. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts +1 -0
  96. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
  97. package/esm/localization/bundles/zh-HK.localization-bundle.js +1 -0
  98. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts +1 -0
  99. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
  100. package/esm/localization/bundles/zh-Hans.localization-bundle.js +1 -0
  101. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts +1 -0
  102. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
  103. package/esm/localization/bundles/zh-Hant.localization-bundle.js +1 -0
  104. package/esm/store/chatWindow/chatWindowSelectors.d.ts +1 -8
  105. package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -1
  106. package/esm/store/chatWindow/chatWindowSelectors.js +1 -13
  107. package/esm/store/chatWindow/chatWindowSlice.d.ts +5 -3
  108. package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -1
  109. package/esm/store/chatWindow/chatWindowSlice.js +15 -17
  110. package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -1
  111. package/esm/store/sideEffects/onUserMessage.js +3 -12
  112. package/esm/types.d.ts +15 -10
  113. package/esm/types.d.ts.map +1 -1
  114. package/esm/utils.d.ts +4 -1
  115. package/esm/utils.d.ts.map +1 -1
  116. package/esm/utils.js +28 -0
  117. package/package.json +20 -20
  118. package/styles/css/main.css +31 -9
  119. package/styles/css/main.css.map +1 -1
  120. package/styles/scss/main.scss +1 -0
@@ -31,6 +31,7 @@ export const vi_VN = {
31
31
  "gd.gen-ai.input-placeholder": "Hỏi tại đây…",
32
32
  "gd.gen-ai.input-label.mac": "Hãy đặt câu hỏi của bạn. Sử dụng control+space hoặc cmd+I để xem gợi ý.",
33
33
  "gd.gen-ai.input-label.win": "Hãy đặt câu hỏi của bạn. Sử dụng control+space hoặc control+I để xem gợi ý.",
34
+ "gd.gen-ai.context.add_context": "Thêm ngữ cảnh",
34
35
  "gd.gen-ai.agents": "Tác nhân",
35
36
  "gd.gen-ai.agents.loading": "Đang tải",
36
37
  "gd.gen-ai.agent.unavailable": "Không có tác nhân nào khả dụng",
@@ -29,6 +29,7 @@ export declare const zh_HK: {
29
29
  "gd.gen-ai.input-placeholder": string;
30
30
  "gd.gen-ai.input-label.mac": string;
31
31
  "gd.gen-ai.input-label.win": string;
32
+ "gd.gen-ai.context.add_context": string;
32
33
  "gd.gen-ai.agents": string;
33
34
  "gd.gen-ai.agents.loading": string;
34
35
  "gd.gen-ai.agent.unavailable": string;
@@ -1 +1 @@
1
- {"version":3,"file":"zh-HK.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-HK.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuLjB,CAAC"}
1
+ {"version":3,"file":"zh-HK.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-HK.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwLjB,CAAC"}
@@ -31,6 +31,7 @@ export const zh_HK = {
31
31
  "gd.gen-ai.input-placeholder": "喺呢度提問…",
32
32
  "gd.gen-ai.input-label.mac": "提出您的問題。 使用control+space或cmd+I獲取建議。",
33
33
  "gd.gen-ai.input-label.win": "提出您的問題。 使用control+space或control+I獲取建議。",
34
+ "gd.gen-ai.context.add_context": "新增上下文",
34
35
  "gd.gen-ai.agents": "代理",
35
36
  "gd.gen-ai.agents.loading": "載入中",
36
37
  "gd.gen-ai.agent.unavailable": "沒有可用的代理",
@@ -29,6 +29,7 @@ export declare const zh_Hans: {
29
29
  "gd.gen-ai.input-placeholder": string;
30
30
  "gd.gen-ai.input-label.mac": string;
31
31
  "gd.gen-ai.input-label.win": string;
32
+ "gd.gen-ai.context.add_context": string;
32
33
  "gd.gen-ai.agents": string;
33
34
  "gd.gen-ai.agents.loading": string;
34
35
  "gd.gen-ai.agent.unavailable": string;
@@ -1 +1 @@
1
- {"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuLnB,CAAC"}
1
+ {"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwLnB,CAAC"}
@@ -31,6 +31,7 @@ export const zh_Hans = {
31
31
  "gd.gen-ai.input-placeholder": "在这里询问…",
32
32
  "gd.gen-ai.input-label.mac": "提出你的问题。使用 control+space 或 cmd+I 获取建议。",
33
33
  "gd.gen-ai.input-label.win": "提出你的问题。使用 Control+Space 或 Control+I 获取建议。",
34
+ "gd.gen-ai.context.add_context": "添加上下文",
34
35
  "gd.gen-ai.agents": "智能体",
35
36
  "gd.gen-ai.agents.loading": "正在加载",
36
37
  "gd.gen-ai.agent.unavailable": "无可用智能体",
@@ -29,6 +29,7 @@ export declare const zh_Hant: {
29
29
  "gd.gen-ai.input-placeholder": string;
30
30
  "gd.gen-ai.input-label.mac": string;
31
31
  "gd.gen-ai.input-label.win": string;
32
+ "gd.gen-ai.context.add_context": string;
32
33
  "gd.gen-ai.agents": string;
33
34
  "gd.gen-ai.agents.loading": string;
34
35
  "gd.gen-ai.agent.unavailable": string;
@@ -1 +1 @@
1
- {"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuLnB,CAAC"}
1
+ {"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwLnB,CAAC"}
@@ -31,6 +31,7 @@ export const zh_Hant = {
31
31
  "gd.gen-ai.input-placeholder": "在這裡詢問…",
32
32
  "gd.gen-ai.input-label.mac": "提出你的問題。使用 control+space 或 cmd+I 取得建議。",
33
33
  "gd.gen-ai.input-label.win": "提出你的問題。使用 Control+Space 或 Control+I 取得建議。",
34
+ "gd.gen-ai.context.add_context": "新增內容",
34
35
  "gd.gen-ai.agents": "代理程式",
35
36
  "gd.gen-ai.agents.loading": "載入中",
36
37
  "gd.gen-ai.agent.unavailable": "沒有可用的智能體",
@@ -19,13 +19,6 @@ export declare const tagsSelector: (state: RootState) => {
19
19
  export declare const catalogItemsSelector: (state: RootState) => CatalogItem[];
20
20
  export declare const keyDriverAnalysisSelector: (state: RootState) => IKdaDefinition | undefined;
21
21
  export declare const keyDriverAnalysisMinimizedSelector: (state: RootState) => boolean | undefined;
22
+ export declare const userContextSelector: (state: RootState) => IGenAIUserContext | undefined;
22
23
  export declare const ambientContextSelector: (state: RootState) => IGenAIUserContext | undefined;
23
- /**
24
- * Context to attach to the next message: an explicit one-shot context (e.g. Summarize)
25
- * wins over the ambient context kept in sync by the host.
26
- */
27
- export declare const effectiveContextSelector: (state: RootState) => {
28
- user: IGenAIUserContext | undefined;
29
- ambient: IGenAIUserContext | undefined;
30
- };
31
24
  //# sourceMappingURL=chatWindowSelectors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatWindowSelectors.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSelectors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,eAAO,MAAM,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGlD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGrD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,aAAa,GAAG,SAGxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,sBAAsB,GAAG,SAG7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGrD,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGjE,CAAC;AAKF,eAAO,MAAM,4BAA4B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAIhE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,eAAe,EAAE,GAAG,SAG3E,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,wBAAwB,EAAE,GAAG,SACZ,CAAC;AAEvF,eAAO,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK;IAC7C,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAMpC,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,WAAW,EAKnE,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,cAAc,GAAG,SAG9E,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAGhF,CAAC;AAOF,eAAO,MAAM,sBAAsB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,iBAAiB,GAAG,SAG9E,CAAC;AAOF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK;IACzD,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAY1C,CAAC"}
1
+ {"version":3,"file":"chatWindowSelectors.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSelectors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,eAAO,MAAM,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGlD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGrD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,aAAa,GAAG,SAGxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,sBAAsB,GAAG,SAG7E,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGrD,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGjE,CAAC;AAKF,eAAO,MAAM,4BAA4B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAIhE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,eAAe,EAAE,GAAG,SAG3E,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,wBAAwB,EAAE,GAAG,SACZ,CAAC;AAEvF,eAAO,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK;IAC7C,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAMpC,CAAC;AAEH,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,WAAW,EAKnE,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,cAAc,GAAG,SAG9E,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAGhF,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,iBAAiB,GAAG,SAG3E,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,iBAAiB,GAAG,SAG9E,CAAC"}
@@ -26,17 +26,5 @@ export const catalogItemsSelector = createSelector(chatWindowSliceSelector, (sta
26
26
  });
27
27
  export const keyDriverAnalysisSelector = createSelector(chatWindowSliceSelector, (state) => state.keyDriverAnalysis);
28
28
  export const keyDriverAnalysisMinimizedSelector = createSelector(chatWindowSliceSelector, (state) => state.keyDriverAnalysisMinimized);
29
- const userContextSelector = createSelector(chatWindowSliceSelector, (state) => state.context.user);
29
+ export const userContextSelector = createSelector(chatWindowSliceSelector, (state) => state.context.active);
30
30
  export const ambientContextSelector = createSelector(chatWindowSliceSelector, (state) => state.context.ambient);
31
- const contextModeSelector = createSelector(chatWindowSliceSelector, (state) => state.context.ambientMode);
32
- /**
33
- * Context to attach to the next message: an explicit one-shot context (e.g. Summarize)
34
- * wins over the ambient context kept in sync by the host.
35
- */
36
- export const effectiveContextSelector = createSelector(userContextSelector, ambientContextSelector, contextModeSelector, (userContext, ambientUserContext, mode) => {
37
- const suppressed = mode === "suppressed";
38
- return {
39
- user: userContext,
40
- ambient: suppressed ? undefined : ambientUserContext,
41
- };
42
- });
@@ -2,8 +2,7 @@ import { type Reducer } from "@reduxjs/toolkit";
2
2
  import { type IUserWorkspaceSettings } from "@gooddata/sdk-backend-spi";
3
3
  import { type CatalogItem, type GenAIObjectType, type IAllowedRelationshipType, type IColorPalette, type IGenAIUserContext } from "@gooddata/sdk-model";
4
4
  import type { IKdaDefinition } from "@gooddata/sdk-ui-dashboard";
5
- import { type IGenAIContextObject } from "../../context/collectContextReferences.js";
6
- import { type StoreContext } from "../../types.js";
5
+ import { type IGenAIContextObject, type StoreContext } from "../../types.js";
7
6
  type ChatWindowSliceState = {
8
7
  /**
9
8
  * Defines if the chat window is open.
@@ -93,7 +92,9 @@ export declare const setOpenAction: import("@reduxjs/toolkit").ActionCreatorWith
93
92
  allowedRelationshipTypes?: IAllowedRelationshipType[] | undefined;
94
93
  }, "chatWindow/setAllowedRelationshipTypesAction">, addContextReferenceAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
95
94
  object: IGenAIContextObject;
96
- }, "chatWindow/addContextReferenceAction">, removeAmbientUserContextAction: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"chatWindow/removeAmbientUserContextAction">, clearUserContextAction: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"chatWindow/clearUserContextAction">, setIsPreviewAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
95
+ }, "chatWindow/addContextReferenceAction">, removeContextReferenceAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
96
+ object: IGenAIContextObject;
97
+ }, "chatWindow/removeContextReferenceAction">, setIsPreviewAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
97
98
  isPreview?: boolean | undefined;
98
99
  }, "chatWindow/setIsPreviewAction">,
99
100
  /**
@@ -107,6 +108,7 @@ setAmbientUserContextAction: import("@reduxjs/toolkit").ActionCreatorWithPayload
107
108
  */
108
109
  setUserContextAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
109
110
  userContext?: IGenAIUserContext | undefined;
111
+ replaceUserContext?: boolean | undefined;
110
112
  }, "chatWindow/setUserContextAction">;
111
113
  export {};
112
114
  //# sourceMappingURL=chatWindowSlice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chatWindowSlice.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAErF,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,KAAK,oBAAoB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAoBhD,eAAO,MAAM,yBAAyB;;0BAOpC,CAAC;AA+GH,eAAO,MAAM,sBAAsB,EAAE,OAAO,CAAC,oBAAoB,CAA2B,CAAC;AAC7F,eAAO,MACH,aAAa;;gCACb,mBAAmB;;sCACnB,gBAAgB;;mCAChB,qBAAqB;;wCACrB,iBAAiB;;oCACjB,qBAAqB;;wCACrB,0BAA0B;;6CAC1B,mCAAmC;;sDACnC,oBAAoB;;uCACpB,aAAa;;;gCACb,sBAAsB,+HACtB,iCAAiC;;oDACjC,yBAAyB;;4CACzB,8BAA8B,uGAC9B,sBAAsB,+FACtB,kBAAkB;;;AAClB;;GAEG;AACH,2BAA2B;;;AAC3B;;GAEG;AACH,oBAAoB;;qCACG,CAAC"}
1
+ {"version":3,"file":"chatWindowSlice.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE7E,KAAK,oBAAoB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAmBhD,eAAO,MAAM,yBAAyB;;0BAOpC,CAAC;AAkHH,eAAO,MAAM,sBAAsB,EAAE,OAAO,CAAC,oBAAoB,CAA2B,CAAC;AAC7F,eAAO,MACH,aAAa;;gCACb,mBAAmB;;sCACnB,gBAAgB;;mCAChB,qBAAqB;;wCACrB,iBAAiB;;oCACjB,qBAAqB;;wCACrB,0BAA0B;;6CAC1B,mCAAmC;;sDACnC,oBAAoB;;uCACpB,aAAa;;;gCACb,sBAAsB,+HACtB,iCAAiC;;oDACjC,yBAAyB;;4CACzB,4BAA4B;;+CAC5B,kBAAkB;;;AAClB;;GAEG;AACH,2BAA2B;;;AAC3B;;GAEG;AACH,oBAAoB;;;qCACG,CAAC"}
@@ -1,7 +1,8 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { createSlice } from "@reduxjs/toolkit";
3
- import { addContextReference } from "../../context/addContextReference.js";
4
- import { isReferenceChanged } from "../../context/isReferenceChanged.js";
3
+ import { addAmbientContextReferences, addContextReference } from "../../context/addContextReference.js";
4
+ import { mergeContexts } from "../../context/build.js";
5
+ import { removeContextReference, removeUserContextReferences } from "../../context/removeContextReference.js";
5
6
  export const chatWindowSliceName = "chatWindow";
6
7
  const initialState = {
7
8
  isOpen: false,
@@ -14,9 +15,8 @@ const initialState = {
14
15
  excludeTags: undefined,
15
16
  allowedRelationshipTypes: undefined,
16
17
  context: {
17
- ambientMode: "enabled",
18
18
  ambient: undefined,
19
- user: undefined,
19
+ active: undefined,
20
20
  },
21
21
  isPreview: undefined,
22
22
  };
@@ -65,27 +65,25 @@ const chatWindowSlice = createSlice({
65
65
  setAllowedRelationshipTypesAction: (state, { payload: { allowedRelationshipTypes }, }) => {
66
66
  state.allowedRelationshipTypes = allowedRelationshipTypes;
67
67
  },
68
- setUserContextAction: (state, { payload: { userContext } }) => {
69
- state.context.user = userContext;
70
- },
71
- clearUserContextAction: (state) => {
72
- state.context.user = undefined;
68
+ setUserContextAction: (state, { payload: { userContext, replaceUserContext }, }) => {
69
+ if (replaceUserContext) {
70
+ state.context.active = mergeContexts(removeUserContextReferences(state.context.active), userContext);
71
+ }
72
+ else {
73
+ state.context.active = mergeContexts(state.context.active, userContext);
74
+ }
73
75
  },
74
76
  setAmbientUserContextAction: (state, { payload: { userContext } }) => {
75
77
  if (!state.settings?.enableAiContextSetup) {
76
78
  return;
77
79
  }
78
- if (state.context.ambientMode === "suppressed" &&
79
- isReferenceChanged(state.context.ambient, userContext)) {
80
- state.context.ambientMode = "enabled";
81
- }
82
- state.context.ambient = userContext;
80
+ state.context = addAmbientContextReferences(state.context, userContext);
83
81
  },
84
82
  addContextReferenceAction: (state, { payload: { object } }) => {
85
83
  state.context = addContextReference(state.context, object);
86
84
  },
87
- removeAmbientUserContextAction: (state) => {
88
- state.context.ambientMode = "suppressed";
85
+ removeContextReferenceAction: (state, { payload: { object } }) => {
86
+ state.context.active = removeContextReference(state.context.active, object);
89
87
  },
90
88
  setIsPreviewAction: (state, { payload: { isPreview } }) => {
91
89
  state.isPreview = isPreview;
@@ -94,7 +92,7 @@ const chatWindowSlice = createSlice({
94
92
  },
95
93
  });
96
94
  export const chatWindowSliceReducer = chatWindowSlice.reducer;
97
- export const { setOpenAction, setFullscreenAction, setHistoryAction, setColorPaletteAction, setSettingsAction, copyToClipboardAction, setKeyDriverAnalysisAction, setKeyDriverAnalysisMinimizedAction, setObjectTypesAction, setTagsAction, setCatalogItemsActions, setAllowedRelationshipTypesAction, addContextReferenceAction, removeAmbientUserContextAction, clearUserContextAction, setIsPreviewAction,
95
+ export const { setOpenAction, setFullscreenAction, setHistoryAction, setColorPaletteAction, setSettingsAction, copyToClipboardAction, setKeyDriverAnalysisAction, setKeyDriverAnalysisMinimizedAction, setObjectTypesAction, setTagsAction, setCatalogItemsActions, setAllowedRelationshipTypesAction, addContextReferenceAction, removeContextReferenceAction, setIsPreviewAction,
98
96
  /**
99
97
  * @public
100
98
  */
@@ -1 +1 @@
1
- {"version":3,"file":"onUserMessage.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onUserMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EASzB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAOlC,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,EAOH,KAAK,gBAAgB,EAGxB,MAAM,8BAA8B,CAAC;AAMtC;;;GAGG;AACH,wBAAiB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oJAmB9E"}
1
+ {"version":3,"file":"onUserMessage.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onUserMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EASzB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAOlC,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,EAOH,KAAK,gBAAgB,EAGxB,MAAM,8BAA8B,CAAC;AAMtC;;;GAGG;AACH,wBAAiB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oJAmB9E"}
@@ -3,8 +3,7 @@ import { call, cancel, cancelled, getContext, put, select } from "redux-saga/eff
3
3
  import { isChatConversationError, isChatConversationItem, } from "@gooddata/sdk-backend-spi";
4
4
  import { isChatConversationLocalItem, isTextContents, isUserMessage, makeAssistantItem, makeAssistantMessage, } from "../../model.js";
5
5
  import { generateTitleFromQuestion } from "../../utils.js";
6
- import { agentSwitchingActiveSelector, allowedRelationshipTypesSelector, effectiveContextSelector, objectTypesSelector, settingsSelector, tagsSelector, } from "../chatWindow/chatWindowSelectors.js";
7
- import { clearUserContextAction } from "../chatWindow/chatWindowSlice.js";
6
+ import { agentSwitchingActiveSelector, allowedRelationshipTypesSelector, objectTypesSelector, settingsSelector, tagsSelector, userContextSelector, } from "../chatWindow/chatWindowSelectors.js";
8
7
  import { conversationMessagesByIdSelector, conversationSelector, messagesSelector, pendingAgentSwitchSelector, selectedAgentIdSelector, } from "../messages/messagesSelectors.js";
9
8
  import { applyPendingAgentSwitchAction, evaluateMessageAction, evaluateMessageCompleteAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, revertAgentSwitchAction, setCurrentConversationAction, } from "../messages/messagesSlice.js";
10
9
  import { processContents } from "./converters/interactionsToMessages.js";
@@ -93,9 +92,7 @@ function* evaluateUserMessage(message, preparedChatThread) {
93
92
  const settings = yield select(settingsSelector);
94
93
  const objectTypes = yield select(objectTypesSelector);
95
94
  const allowedRelationshipTypes = yield select(allowedRelationshipTypesSelector);
96
- const { user, ambient } = yield select(effectiveContextSelector);
97
- // Clear user context immediately — it is a one-shot value
98
- yield put(clearUserContextAction());
95
+ const context = yield select(userContextSelector);
99
96
  const showReasoning = Boolean(settings?.enableGenAIReasoningVisibility);
100
97
  // Track interaction ID to assistant message mapping
101
98
  let currentAssistantMessage = message;
@@ -106,7 +103,6 @@ function* evaluateUserMessage(message, preparedChatThread) {
106
103
  if (allowedRelationshipTypes?.length) {
107
104
  queryBuilder = queryBuilder.withAllowedRelationshipTypes(allowedRelationshipTypes);
108
105
  }
109
- const context = user ?? ambient;
110
106
  if (context) {
111
107
  queryBuilder = queryBuilder.withUserContext(context);
112
108
  }
@@ -324,11 +320,7 @@ function* evaluateUserConversationMessage(conversation, userMessage, assistantMe
324
320
  const objectTypes = yield select(objectTypesSelector);
325
321
  const { includeTags, excludeTags } = yield select(tagsSelector);
326
322
  const allowedRelationshipTypes = yield select(allowedRelationshipTypesSelector);
327
- // One-shot context (e.g. Summarize) wins over the ambient dashboard context;
328
- // the ambient part persists and rides on every message.
329
- const { user, ambient } = yield select(effectiveContextSelector);
330
- // Clear the one-shot user context immediately — it is a one-shot value
331
- yield put(clearUserContextAction());
323
+ const context = yield select(userContextSelector);
332
324
  // Track interaction ID to assistant message mapping
333
325
  let currentUserMessage = userMessage;
334
326
  let currentAssistantMessage = assistantMessage;
@@ -345,7 +337,6 @@ function* evaluateUserConversationMessage(conversation, userMessage, assistantMe
345
337
  if (allowedRelationshipTypes?.length) {
346
338
  queryBuilder = queryBuilder.withAllowedRelationshipTypes(allowedRelationshipTypes);
347
339
  }
348
- const context = user ?? ambient;
349
340
  if (context) {
350
341
  queryBuilder = queryBuilder.withUserContext(context);
351
342
  }
package/esm/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type IChatConversationVisualisationContent } from "@gooddata/sdk-backend-spi";
2
- import { type IGenAIUserContext, type IGenAIVisualization } from "@gooddata/sdk-model";
2
+ import { type GenAIObjectType, type IGenAIObjectReference, type IGenAIUserContext, type IGenAIVisualization, type ObjRef } from "@gooddata/sdk-model";
3
3
  import { type IChatConversationLocalItem } from "./model.js";
4
4
  export type Config = IGenAIVisualization["config"] | NonNullable<IChatConversationVisualisationContent["visualization"]>["insight"]["properties"]["controls"];
5
5
  export type StoredConversation = {
@@ -36,11 +36,6 @@ export type StoredConversation = {
36
36
  };
37
37
  };
38
38
  export type StoreContext = {
39
- /**
40
- * One-shot user context for the next message (e.g. active visualization).
41
- * Cleared after being consumed by the saga.
42
- */
43
- user?: IGenAIUserContext;
44
39
  /**
45
40
  * Ambient user context kept in sync by the host (e.g. the open dashboard and its
46
41
  * live filter state). Unlike the one-shot userContext it persists across messages
@@ -48,10 +43,20 @@ export type StoreContext = {
48
43
  */
49
44
  ambient?: IGenAIUserContext;
50
45
  /**
51
- * Ambient mode for the chat.
52
- * "suppressed" - ambient context is not used, but automatically change to auto if id is changed
53
- * "enabled" - ambient context is used if available and updated in real-time
46
+ * Active context
54
47
  */
55
- ambientMode?: "suppressed" | "enabled";
48
+ active?: IGenAIUserContext;
56
49
  };
50
+ /**
51
+ * @internal
52
+ */
53
+ export interface IGenAIContextObject {
54
+ id: string;
55
+ ref: ObjRef;
56
+ title: string;
57
+ nesting: number;
58
+ type: GenAIObjectType | "widget";
59
+ where: "view.dashboard" | "referencedObjects";
60
+ context?: IGenAIObjectReference;
61
+ }
57
62
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEvF,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,MAAM,GACZ,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,WAAW,CACP,qCAAqC,CAAC,eAAe,CAAC,CACzD,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClD;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IACnE;;;OAGG;IACH,kBAAkB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;CAC1C,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,MAAM,GACZ,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,WAAW,CACP,qCAAqC,CAAC,eAAe,CAAC,CACzD,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClD;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IACnE;;;OAGG;IACH,kBAAkB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,GAAG,QAAQ,CAAC;IACjC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAAC;IAC9C,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACnC"}
package/esm/utils.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { type IntlShape } from "react-intl";
2
- import { type IAttributeOrMeasure } from "@gooddata/sdk-model";
2
+ import { type GenAIObjectReferenceType, type IAttributeOrMeasure } from "@gooddata/sdk-model";
3
3
  import { type IChatConversationLocal } from "./model.js";
4
+ import { type IGenAIContextObject } from "./types.js";
4
5
  export declare function getVisualizationHref(wsId: string, visId: string, useHostedAnalyticalDesigner?: boolean): string;
5
6
  export declare function getAbsoluteVisualizationHref(wsId: string, visId: string, useHostedAnalyticalDesigner?: boolean): string;
6
7
  export declare function getSettingHref(section: string, action?: string): string;
@@ -18,4 +19,6 @@ export declare function getHeadlineComparison(metrics: IAttributeOrMeasure[]): {
18
19
  };
19
20
  export declare function generateTemporaryTitle(intl: IntlShape, data: IChatConversationLocal): string;
20
21
  export declare function generateTitleFromQuestion(text: string): string;
22
+ export declare function convertReferenceTypeToGenAiType(type: GenAIObjectReferenceType): IGenAIContextObject["type"];
23
+ export declare function convertGenAiTypeToReferenceType(type: IGenAIContextObject["type"]): GenAIObjectReferenceType;
21
24
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,CAAC,EAAE,OAAO,UAItG;AAED,wBAAgB,4BAA4B,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,2BAA2B,CAAC,EAAE,OAAO,UAGxC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAK9D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAEtE;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAK5F;AAED,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAEpG;AAOD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAKzE;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAEjF;AAED,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAKpG;AAED,wBAAgB,uCAAuC,CACnD,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,UAGlB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE;;;;EAMnE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAS5F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC9D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG9F,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,CAAC,EAAE,OAAO,UAItG;AAED,wBAAgB,4BAA4B,CACxC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,2BAA2B,CAAC,EAAE,OAAO,UAGxC;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAK9D;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAEtE;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAK5F;AAED,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAEpG;AAOD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAKzE;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAEjF;AAED,wBAAgB,+BAA+B,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,UAKpG;AAED,wBAAgB,uCAAuC,CACnD,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,UAGlB;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE;;;;EAMnE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAS5F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgC9D;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,wBAAwB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAa3G;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,GAAG,wBAAwB,CAa3G"}
package/esm/utils.js CHANGED
@@ -90,3 +90,31 @@ export function generateTitleFromQuestion(text) {
90
90
  }
91
91
  return `${sanitizedText.slice(0, sliceEnd).trim()}...`;
92
92
  }
93
+ export function convertReferenceTypeToGenAiType(type) {
94
+ switch (type) {
95
+ case "METRIC":
96
+ return "metric";
97
+ case "WIDGET":
98
+ return "widget";
99
+ case "ATTRIBUTE":
100
+ return "attribute";
101
+ case "DASHBOARD":
102
+ return "dashboard";
103
+ default:
104
+ return "dashboard";
105
+ }
106
+ }
107
+ export function convertGenAiTypeToReferenceType(type) {
108
+ switch (type) {
109
+ case "metric":
110
+ return "METRIC";
111
+ case "widget":
112
+ return "WIDGET";
113
+ case "attribute":
114
+ return "ATTRIBUTE";
115
+ case "dashboard":
116
+ return "DASHBOARD";
117
+ default:
118
+ return "DASHBOARD";
119
+ }
120
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-gen-ai",
3
- "version": "11.48.0-alpha.1",
3
+ "version": "11.48.0-alpha.3",
4
4
  "description": "GoodData GenAI SDK",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -57,18 +57,18 @@
57
57
  "reselect": "5.1.1",
58
58
  "tslib": "2.8.1",
59
59
  "uuid": "11.1.1",
60
- "@gooddata/api-client-tiger": "11.48.0-alpha.1",
61
- "@gooddata/sdk-model": "11.48.0-alpha.1",
62
- "@gooddata/sdk-backend-spi": "11.48.0-alpha.1",
63
- "@gooddata/sdk-ui": "11.48.0-alpha.1",
64
- "@gooddata/sdk-ui-dashboard": "11.48.0-alpha.1",
65
- "@gooddata/sdk-ui-filters": "11.48.0-alpha.1",
66
- "@gooddata/sdk-ui-pivot": "11.48.0-alpha.1",
67
- "@gooddata/sdk-ui-semantic-search": "11.48.0-alpha.1",
68
- "@gooddata/sdk-ui-kit": "11.48.0-alpha.1",
69
- "@gooddata/sdk-ui-theme-provider": "11.48.0-alpha.1",
70
- "@gooddata/util": "11.48.0-alpha.1",
71
- "@gooddata/sdk-ui-charts": "11.48.0-alpha.1"
60
+ "@gooddata/api-client-tiger": "11.48.0-alpha.3",
61
+ "@gooddata/sdk-backend-spi": "11.48.0-alpha.3",
62
+ "@gooddata/sdk-model": "11.48.0-alpha.3",
63
+ "@gooddata/sdk-ui": "11.48.0-alpha.3",
64
+ "@gooddata/sdk-ui-charts": "11.48.0-alpha.3",
65
+ "@gooddata/sdk-ui-dashboard": "11.48.0-alpha.3",
66
+ "@gooddata/sdk-ui-filters": "11.48.0-alpha.3",
67
+ "@gooddata/sdk-ui-kit": "11.48.0-alpha.3",
68
+ "@gooddata/sdk-ui-pivot": "11.48.0-alpha.3",
69
+ "@gooddata/sdk-ui-semantic-search": "11.48.0-alpha.3",
70
+ "@gooddata/sdk-ui-theme-provider": "11.48.0-alpha.3",
71
+ "@gooddata/util": "11.48.0-alpha.3"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@microsoft/api-documenter": "^7.17.0",
@@ -111,13 +111,13 @@
111
111
  "typescript": "5.9.3",
112
112
  "vitest": "4.1.8",
113
113
  "vitest-dom": "0.1.1",
114
- "@gooddata/eslint-config": "11.48.0-alpha.1",
115
- "@gooddata/i18n-toolkit": "11.48.0-alpha.1",
116
- "@gooddata/oxlint-config": "11.48.0-alpha.1",
117
- "@gooddata/sdk-backend-mockingbird": "11.48.0-alpha.1",
118
- "@gooddata/sdk-ui-theme-provider": "11.48.0-alpha.1",
119
- "@gooddata/stylelint-config": "11.48.0-alpha.1",
120
- "@gooddata/reference-workspace": "11.48.0-alpha.1"
114
+ "@gooddata/eslint-config": "11.48.0-alpha.3",
115
+ "@gooddata/reference-workspace": "11.48.0-alpha.3",
116
+ "@gooddata/sdk-backend-mockingbird": "11.48.0-alpha.3",
117
+ "@gooddata/sdk-ui-theme-provider": "11.48.0-alpha.3",
118
+ "@gooddata/stylelint-config": "11.48.0-alpha.3",
119
+ "@gooddata/oxlint-config": "11.48.0-alpha.3",
120
+ "@gooddata/i18n-toolkit": "11.48.0-alpha.3"
121
121
  },
122
122
  "peerDependencies": {
123
123
  "react": "^18.0.0 || ^19.0.0",
@@ -11739,15 +11739,6 @@ button.gd-list-item {
11739
11739
  margin-top: 6px;
11740
11740
  }
11741
11741
 
11742
- .gd-list-item span.gd-kda-attributes-dropdown__key_drivers {
11743
- flex: 0 0 auto;
11744
- font-weight: bold;
11745
- color: var(--gd-palette-complementary-7);
11746
- margin-left: 5px;
11747
- min-width: 35px;
11748
- text-align: right;
11749
- }
11750
-
11751
11742
  .gd-kda-attributes-dropdown__subheader {
11752
11743
  display: flex;
11753
11744
  justify-content: flex-start;
@@ -11767,6 +11758,36 @@ button.gd-list-item {
11767
11758
  flex: 0 0 auto;
11768
11759
  }
11769
11760
 
11761
+ .gd-kda-attributes-dropdown__body {
11762
+ display: flex;
11763
+ flex-direction: column;
11764
+ box-sizing: border-box;
11765
+ width: 260px;
11766
+ }
11767
+
11768
+ .gd-kda-attributes-dropdown__actions-buttons {
11769
+ display: flex;
11770
+ justify-content: flex-end;
11771
+ gap: 10px;
11772
+ padding: 10px;
11773
+ }
11774
+
11775
+ .gd-kda-attributes-select-item__right {
11776
+ flex: 0 0 auto;
11777
+ min-width: 35px;
11778
+ margin-left: 5px;
11779
+ text-align: right;
11780
+ }
11781
+
11782
+ .gd-kda-attributes-dropdown__key_drivers {
11783
+ font-weight: bold;
11784
+ color: var(--gd-palette-complementary-7);
11785
+ }
11786
+
11787
+ .gd-kda-attributes-select .gd-ui-kit-paged-virtual-list__scroll-container {
11788
+ padding-right: 7px;
11789
+ }
11790
+
11770
11791
  .gd-kda-trend-item {
11771
11792
  display: flex;
11772
11793
  flex-direction: row;
@@ -14202,6 +14223,7 @@ body.gd-kda-dialog-opened .highcharts-tooltip-container {
14202
14223
  }
14203
14224
  .gd-gen-ai-chat__context-indicator {
14204
14225
  display: flex;
14226
+ flex-wrap: wrap;
14205
14227
  align-items: baseline;
14206
14228
  gap: 5px;
14207
14229
  min-width: 0;