@gooddata/sdk-backend-tiger 11.36.0-alpha.1 → 11.36.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.
@@ -1,3 +1,3 @@
1
- export declare const LIB_VERSION = "11.36.0-alpha.1";
1
+ export declare const LIB_VERSION = "11.36.0-alpha.3";
2
2
  export declare const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
3
3
  export declare const LIB_NAME = "@gooddata/sdk-backend-tiger";
package/esm/__version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // (C) 2021 GoodData Corporation
2
2
  // DO NOT CHANGE THIS FILE, IT IS RE-GENERATED ON EVERY BUILD
3
- export const LIB_VERSION = "11.36.0-alpha.1";
3
+ export const LIB_VERSION = "11.36.0-alpha.3";
4
4
  export const LIB_DESCRIPTION = "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN";
5
5
  export const LIB_NAME = "@gooddata/sdk-backend-tiger";
@@ -139,10 +139,10 @@ export function mapFeatures(features) {
139
139
  ...loadFeature(features, TigerFeaturesNames.EnableGenAIReasoningVisibility, "enableGenAIReasoningVisibility", "BOOLEAN", FeatureFlagsValues.enableGenAIReasoningVisibility),
140
140
  ...loadFeature(features, TigerFeaturesNames.EnableAiAgenticConversations, "enableAiAgenticConversations", "BOOLEAN", FeatureFlagsValues.enableAiAgenticConversations),
141
141
  ...loadFeature(features, TigerFeaturesNames.EnableAiAgenticMultiConversations, "enableAiAgenticMultiConversations", "BOOLEAN", FeatureFlagsValues.enableAiAgenticMultiConversations),
142
+ ...loadFeature(features, TigerFeaturesNames.EnableAiLlmAnthropicProvider, "enableAiLlmAnthropicProvider", "BOOLEAN", FeatureFlagsValues.enableAiLlmAnthropicProvider),
142
143
  ...loadFeature(features, TigerFeaturesNames.EnableGenAiVisualizationSummarySkill, "enableGenAiVisualizationSummarySkill", "BOOLEAN", FeatureFlagsValues.enableGenAiVisualizationSummarySkill),
143
144
  ...loadFeature(features, TigerFeaturesNames.EnableGenAiAgenticDataShareOptOut, "enableGenAiAgenticDataShareOptOut", "BOOLEAN", FeatureFlagsValues.enableGenAiAgenticDataShareOptOut),
144
145
  ...loadFeature(features, TigerFeaturesNames.AIChatSearchLimit, "aiChatSearchLimit", "NUMBER", FeatureFlagsValues.aiChatSearchLimit),
145
- ...loadFeature(features, TigerFeaturesNames.EnableEmptyDateValuesFilter, "enableEmptyDateValuesFilter", "BOOLEAN", FeatureFlagsValues.enableEmptyDateValuesFilter),
146
146
  ...loadFeature(features, TigerFeaturesNames.EnableKDEmptyDateValuesFilter, "enableKDEmptyDateValuesFilter", "BOOLEAN", FeatureFlagsValues.enableKDEmptyDateValuesFilter),
147
147
  ...loadFeature(features, TigerFeaturesNames.EnableRichTextWidgetFilterConfiguration, "enableRichTextWidgetFilterConfiguration", "BOOLEAN", FeatureFlagsValues.enableRichTextWidgetFilterConfiguration),
148
148
  ...loadFeature(features, TigerFeaturesNames.EnableDashboardSectionHeadersDateDataSet, "enableDashboardSectionHeadersDateDataSet", "BOOLEAN", FeatureFlagsValues.enableDashboardSectionHeadersDateDataSet),
@@ -160,13 +160,13 @@ export function mapFeatures(features) {
160
160
  ...loadFeature(features, TigerFeaturesNames.EnableMeasureValueFilterKD, "enableMeasureValueFilterKD", "BOOLEAN", FeatureFlagsValues.enableMeasureValueFilterKD),
161
161
  ...loadFeature(features, TigerFeaturesNames.EnableFilterControlInDrillingConfiguration, "enableFilterControlInDrillingConfiguration", "BOOLEAN", FeatureFlagsValues.enableFilterControlInDrillingConfiguration),
162
162
  ...loadFeature(features, TigerFeaturesNames.EnableShellApplication, "enableShellApplication", "BOOLEAN", FeatureFlagsValues.enableShellApplication),
163
+ ...loadFeature(features, TigerFeaturesNames.EnableShellApplicationCatalog, "enableShellApplication_catalog", "BOOLEAN", FeatureFlagsValues.enableShellApplication_catalog),
163
164
  ...loadFeature(features, TigerFeaturesNames.EnableNullJoins, "enableNullJoins", "BOOLEAN", FeatureFlagsValues.enableNullJoins),
164
165
  ...loadFeature(features, TigerFeaturesNames.EnableDashboardDensitySetting, "enableDashboardDensitySetting", "BOOLEAN", FeatureFlagsValues.enableDashboardDensitySetting),
165
166
  ...loadFeature(features, TigerFeaturesNames.EnableDashboardsSearch, "enableDashboardsSearch", "BOOLEAN", FeatureFlagsValues.enableDashboardsSearch),
166
167
  ...loadFeature(features, TigerFeaturesNames.EnableAiHub, "enableAiHub", "BOOLEAN", FeatureFlagsValues.enableAiHub),
167
168
  ...loadFeature(features, TigerFeaturesNames.EnableAutomationTrigger, "enableAutomationTrigger", "BOOLEAN", FeatureFlagsValues.enableAutomationTrigger),
168
169
  ...loadFeature(features, TigerFeaturesNames.EnableUserDataFiltersUi, "enableUserDataFiltersUi", "BOOLEAN", FeatureFlagsValues.enableUserDataFiltersUi),
169
- ...loadFeature(features, TigerFeaturesNames.EnableDateTimeSemanticsSetting, "enableDateTimeSemanticsSetting", "BOOLEAN", FeatureFlagsValues.enableDateTimeSemanticsSetting),
170
170
  ...loadFeature(features, TigerFeaturesNames.EnableEnhancedInsightPicker, "enableEnhancedInsightPicker", "BOOLEAN", FeatureFlagsValues.enableEnhancedInsightPicker),
171
171
  };
172
172
  }
@@ -1,5 +1,5 @@
1
1
  import { type ILlmEndpointsQuery, type IOrganizationLlmEndpointsService } from "@gooddata/sdk-backend-spi";
2
- import { type ILlmEndpointOpenAI, type LlmEndpointOpenAIPatch, type LlmEndpointTestResults } from "@gooddata/sdk-model";
2
+ import { type ILlmEndpointOpenAI, type LlmEndpointOpenAIPatch } from "@gooddata/sdk-model";
3
3
  import { type TigerAuthenticatedCallGuard } from "../../types/index.js";
4
4
  export declare class OrganizationLlmEndpointsService implements IOrganizationLlmEndpointsService {
5
5
  readonly authCall: TigerAuthenticatedCallGuard;
@@ -11,5 +11,4 @@ export declare class OrganizationLlmEndpointsService implements IOrganizationLlm
11
11
  updateLlmEndpoint(endpoint: ILlmEndpointOpenAI, token: string): Promise<ILlmEndpointOpenAI>;
12
12
  patchLlmEndpoint(endpoint: LlmEndpointOpenAIPatch, token?: string): Promise<ILlmEndpointOpenAI>;
13
13
  deleteLlmEndpoint(id: string): Promise<void>;
14
- testLlmEndpoint(endpoint: Partial<LlmEndpointOpenAIPatch>, token?: string): Promise<LlmEndpointTestResults>;
15
14
  }
@@ -1,6 +1,5 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { EntitiesApi_CreateEntityLlmEndpoints, EntitiesApi_DeleteEntityLlmEndpoints, EntitiesApi_GetAllEntitiesLlmEndpoints, EntitiesApi_GetEntityLlmEndpoints, EntitiesApi_PatchEntityLlmEndpoints, EntitiesApi_UpdateEntityLlmEndpoints, } from "@gooddata/api-client-tiger/endpoints/entitiesObjects";
3
- import { GenAiApi_ValidateLLMEndpoint, GenAiApi_ValidateLLMEndpointById, } from "@gooddata/api-client-tiger/endpoints/genAI";
4
3
  import { convertLlmEndpoint } from "../../convertors/fromBackend/llmEndpointConvertor.js";
5
4
  import { LlmEndpointsQuery } from "./llmEndpointsQuery.js";
6
5
  export class OrganizationLlmEndpointsService {
@@ -109,35 +108,4 @@ export class OrganizationLlmEndpointsService {
109
108
  await EntitiesApi_DeleteEntityLlmEndpoints(client.axios, client.basePath, { id });
110
109
  });
111
110
  }
112
- testLlmEndpoint(endpoint, token) {
113
- return this.authCall(async (client) => {
114
- if (endpoint.id) {
115
- const result = await GenAiApi_ValidateLLMEndpointById(client.axios, client.basePath, {
116
- llmEndpointId: endpoint.id,
117
- validateLLMEndpointByIdRequest: {
118
- ...(endpoint.provider ? { provider: endpoint.provider } : {}),
119
- ...(token ? { token } : {}),
120
- ...(endpoint.organization ? { llmOrganization: endpoint.organization } : {}),
121
- ...(endpoint.model ? { llmModel: endpoint.model } : {}),
122
- },
123
- });
124
- return {
125
- success: result.data?.successful,
126
- message: result.data?.message,
127
- };
128
- }
129
- const result = await GenAiApi_ValidateLLMEndpoint(client.axios, client.basePath, {
130
- validateLLMEndpointRequest: {
131
- provider: endpoint.provider ?? "OPENAI",
132
- token: token ?? "",
133
- llmOrganization: endpoint.organization,
134
- llmModel: endpoint.model,
135
- },
136
- });
137
- return {
138
- success: result.data?.successful,
139
- message: result.data?.message,
140
- };
141
- });
142
- }
143
111
  }
@@ -38,6 +38,7 @@ const TYPE_TO_KEY_MAP = {
38
38
  RESTRICT_BASE_UI: "restrictBaseUi",
39
39
  ACTIVE_LLM_PROVIDER: "activeLlmProvider",
40
40
  SORT_COLLATION: "sortCollation",
41
+ ENABLE_PARTIAL_DATA_RESULTS: "enablePartialDataResults",
41
42
  };
42
43
  export function mapTypeToKey(type, fallback = "") {
43
44
  // For undefined or unmapped type - return fallback
@@ -142,7 +142,6 @@ export declare enum TigerFeaturesNames {
142
142
  EnableGenAiAgenticDataShareOptOut = "enableGenAiAgenticDataShareOptOut",
143
143
  EnableGenAiVisualizationSummarySkill = "enableGenAiVisualizationSummarySkill",
144
144
  AIChatSearchLimit = "aiChatSearchLimit",
145
- EnableEmptyDateValuesFilter = "enableEmptyDateValuesFilter",
146
145
  EnableKDEmptyDateValuesFilter = "enableKDEmptyDateValuesFilter",
147
146
  EnableRichTextWidgetFilterConfiguration = "enableRichTextWidgetFilterConfiguration",
148
147
  EnableDashboardSectionHeadersDateDataSet = "enableDashboardSectionHeadersDateDataSet",
@@ -160,15 +159,16 @@ export declare enum TigerFeaturesNames {
160
159
  EnableMeasureValueFilterKD = "enableMeasureValueFilterKD",
161
160
  EnableFilterControlInDrillingConfiguration = "enableFilterControlInDrillingConfiguration",
162
161
  EnableShellApplication = "enableShellApplication",
162
+ EnableShellApplicationCatalog = "enableShellApplication_catalog",
163
163
  EnableNullJoins = "enableNullJoins",
164
164
  EnableDashboardDensitySetting = "enableDashboardDensitySetting",
165
165
  EnableDashboardsSearch = "enableDashboardsSearch",
166
166
  EnableAiHub = "enableAiHub",
167
167
  EnableAutomationTrigger = "enableAutomationTrigger",
168
168
  EnableUserDataFiltersUi = "enableUserDataFiltersUi",
169
- EnableDateTimeSemanticsSetting = "enableDateTimeSemanticsSetting",
170
169
  EnableEnhancedInsightPicker = "enableEnhancedInsightPicker",
171
- EnableAiAgenticMultiConversations = "enableAiAgenticMultiConversations"
170
+ EnableAiAgenticMultiConversations = "enableAiAgenticMultiConversations",
171
+ EnableAiLlmAnthropicProvider = "enableAiLlmAnthropicProvider"
172
172
  }
173
173
  export type ITigerFeatureFlags = {
174
174
  dashboardEditModeDevRollout: (typeof FeatureFlagsValues)["dashboardEditModeDevRollout"][number];
@@ -307,7 +307,6 @@ export type ITigerFeatureFlags = {
307
307
  enableAiAgenticMultiConversations: (typeof FeatureFlagsValues)["enableAiAgenticMultiConversations"][number];
308
308
  enableGenAIReasoningVisibility: (typeof FeatureFlagsValues)["enableGenAIReasoningVisibility"][number];
309
309
  aiChatSearchLimit: (typeof FeatureFlagsValues)["aiChatSearchLimit"][number];
310
- enableEmptyDateValuesFilter: (typeof FeatureFlagsValues)["enableEmptyDateValuesFilter"][number];
311
310
  enableKDEmptyDateValuesFilter: (typeof FeatureFlagsValues)["enableKDEmptyDateValuesFilter"][number];
312
311
  enableRichTextWidgetFilterConfiguration: (typeof FeatureFlagsValues)["enableRichTextWidgetFilterConfiguration"][number];
313
312
  enableDashboardSectionHeadersDateDataSet: (typeof FeatureFlagsValues)["enableDashboardSectionHeadersDateDataSet"][number];
@@ -325,6 +324,7 @@ export type ITigerFeatureFlags = {
325
324
  enableMeasureValueFilterKD: (typeof FeatureFlagsValues)["enableMeasureValueFilterKD"][number];
326
325
  enableFilterControlInDrillingConfiguration: (typeof FeatureFlagsValues)["enableFilterControlInDrillingConfiguration"][number];
327
326
  enableShellApplication: (typeof FeatureFlagsValues)["enableShellApplication"][number];
327
+ enableShellApplication_catalog: (typeof FeatureFlagsValues)["enableShellApplication_catalog"][number];
328
328
  enableNullJoins: (typeof FeatureFlagsValues)["enableNullJoins"][number];
329
329
  enableDashboardDensitySetting: (typeof FeatureFlagsValues)["enableDashboardDensitySetting"][number];
330
330
  enableDashboardsSearch: (typeof FeatureFlagsValues)["enableDashboardsSearch"][number];
@@ -334,8 +334,8 @@ export type ITigerFeatureFlags = {
334
334
  enableGenAiVisualizationSummarySkill: (typeof FeatureFlagsValues)["enableGenAiVisualizationSummarySkill"][number];
335
335
  enableAutomationTrigger: (typeof FeatureFlagsValues)["enableAutomationTrigger"][number];
336
336
  enableUserDataFiltersUi: (typeof FeatureFlagsValues)["enableUserDataFiltersUi"][number];
337
- enableDateTimeSemanticsSetting: (typeof FeatureFlagsValues)["enableDateTimeSemanticsSetting"][number];
338
337
  enableEnhancedInsightPicker: (typeof FeatureFlagsValues)["enableEnhancedInsightPicker"][number];
338
+ enableAiLlmAnthropicProvider: (typeof FeatureFlagsValues)["enableAiLlmAnthropicProvider"][number];
339
339
  };
340
340
  export declare const DefaultFeatureFlags: ITigerFeatureFlags;
341
341
  export declare const FeatureFlagsValues: {
@@ -476,7 +476,6 @@ export declare const FeatureFlagsValues: {
476
476
  enableAiAgenticMultiConversations: readonly [true, false];
477
477
  enableGenAIReasoningVisibility: readonly [false, true];
478
478
  aiChatSearchLimit: readonly [undefined, number];
479
- enableEmptyDateValuesFilter: readonly [true, false];
480
479
  enableKDEmptyDateValuesFilter: readonly [true, false];
481
480
  enableRichTextWidgetFilterConfiguration: readonly [true, false];
482
481
  enableDashboardSectionHeadersDateDataSet: readonly [true, false];
@@ -494,6 +493,7 @@ export declare const FeatureFlagsValues: {
494
493
  enableMeasureValueFilterKD: readonly [false, true];
495
494
  enableFilterControlInDrillingConfiguration: readonly [true, false];
496
495
  enableShellApplication: readonly [true, false];
496
+ enableShellApplication_catalog: readonly [false, true];
497
497
  enableNullJoins: readonly [true, false];
498
498
  enableDashboardDensitySetting: readonly [true, false];
499
499
  enableDashboardsSearch: readonly [false, true];
@@ -503,6 +503,6 @@ export declare const FeatureFlagsValues: {
503
503
  enableGenAiVisualizationSummarySkill: readonly [false, true];
504
504
  enableAutomationTrigger: readonly [true, false];
505
505
  enableUserDataFiltersUi: readonly [true, false];
506
- enableDateTimeSemanticsSetting: readonly [true, false];
507
506
  enableEnhancedInsightPicker: readonly [true, false];
507
+ enableAiLlmAnthropicProvider: readonly [true, false];
508
508
  };
@@ -146,7 +146,6 @@ var TigerFeaturesNames;
146
146
  TigerFeaturesNames["EnableGenAiAgenticDataShareOptOut"] = "enableGenAiAgenticDataShareOptOut";
147
147
  TigerFeaturesNames["EnableGenAiVisualizationSummarySkill"] = "enableGenAiVisualizationSummarySkill";
148
148
  TigerFeaturesNames["AIChatSearchLimit"] = "aiChatSearchLimit";
149
- TigerFeaturesNames["EnableEmptyDateValuesFilter"] = "enableEmptyDateValuesFilter";
150
149
  TigerFeaturesNames["EnableKDEmptyDateValuesFilter"] = "enableKDEmptyDateValuesFilter";
151
150
  TigerFeaturesNames["EnableRichTextWidgetFilterConfiguration"] = "enableRichTextWidgetFilterConfiguration";
152
151
  TigerFeaturesNames["EnableDashboardSectionHeadersDateDataSet"] = "enableDashboardSectionHeadersDateDataSet";
@@ -164,15 +163,16 @@ var TigerFeaturesNames;
164
163
  TigerFeaturesNames["EnableMeasureValueFilterKD"] = "enableMeasureValueFilterKD";
165
164
  TigerFeaturesNames["EnableFilterControlInDrillingConfiguration"] = "enableFilterControlInDrillingConfiguration";
166
165
  TigerFeaturesNames["EnableShellApplication"] = "enableShellApplication";
166
+ TigerFeaturesNames["EnableShellApplicationCatalog"] = "enableShellApplication_catalog";
167
167
  TigerFeaturesNames["EnableNullJoins"] = "enableNullJoins";
168
168
  TigerFeaturesNames["EnableDashboardDensitySetting"] = "enableDashboardDensitySetting";
169
169
  TigerFeaturesNames["EnableDashboardsSearch"] = "enableDashboardsSearch";
170
170
  TigerFeaturesNames["EnableAiHub"] = "enableAiHub";
171
171
  TigerFeaturesNames["EnableAutomationTrigger"] = "enableAutomationTrigger";
172
172
  TigerFeaturesNames["EnableUserDataFiltersUi"] = "enableUserDataFiltersUi";
173
- TigerFeaturesNames["EnableDateTimeSemanticsSetting"] = "enableDateTimeSemanticsSetting";
174
173
  TigerFeaturesNames["EnableEnhancedInsightPicker"] = "enableEnhancedInsightPicker";
175
174
  TigerFeaturesNames["EnableAiAgenticMultiConversations"] = "enableAiAgenticMultiConversations";
175
+ TigerFeaturesNames["EnableAiLlmAnthropicProvider"] = "enableAiLlmAnthropicProvider";
176
176
  })(TigerFeaturesNames || (TigerFeaturesNames = {}));
177
177
  export const DefaultFeatureFlags = {
178
178
  dashboardEditModeDevRollout: true,
@@ -311,7 +311,6 @@ export const DefaultFeatureFlags = {
311
311
  enableAiAgenticMultiConversations: false,
312
312
  enableGenAIReasoningVisibility: false,
313
313
  aiChatSearchLimit: undefined,
314
- enableEmptyDateValuesFilter: true,
315
314
  enableKDEmptyDateValuesFilter: true,
316
315
  enableRichTextWidgetFilterConfiguration: false,
317
316
  enableDashboardSectionHeadersDateDataSet: false,
@@ -329,6 +328,7 @@ export const DefaultFeatureFlags = {
329
328
  enableMeasureValueFilterKD: false,
330
329
  enableFilterControlInDrillingConfiguration: true,
331
330
  enableShellApplication: true,
331
+ enableShellApplication_catalog: false,
332
332
  enableNullJoins: false,
333
333
  enableDashboardDensitySetting: false,
334
334
  enableDashboardsSearch: false,
@@ -338,8 +338,8 @@ export const DefaultFeatureFlags = {
338
338
  enableGenAiVisualizationSummarySkill: false,
339
339
  enableAutomationTrigger: false,
340
340
  enableUserDataFiltersUi: false,
341
- enableDateTimeSemanticsSetting: false,
342
341
  enableEnhancedInsightPicker: false,
342
+ enableAiLlmAnthropicProvider: false,
343
343
  };
344
344
  export const FeatureFlagsValues = {
345
345
  dashboardEditModeDevRollout: [true, false],
@@ -479,7 +479,6 @@ export const FeatureFlagsValues = {
479
479
  enableAiAgenticMultiConversations: [true, false],
480
480
  enableGenAIReasoningVisibility: [false, true],
481
481
  aiChatSearchLimit: [undefined, {}],
482
- enableEmptyDateValuesFilter: [true, false],
483
482
  enableKDEmptyDateValuesFilter: [true, false],
484
483
  enableRichTextWidgetFilterConfiguration: [true, false],
485
484
  enableDashboardSectionHeadersDateDataSet: [true, false],
@@ -497,6 +496,7 @@ export const FeatureFlagsValues = {
497
496
  enableMeasureValueFilterKD: [false, true],
498
497
  enableFilterControlInDrillingConfiguration: [true, false],
499
498
  enableShellApplication: [true, false],
499
+ enableShellApplication_catalog: [false, true],
500
500
  enableNullJoins: [true, false],
501
501
  enableDashboardDensitySetting: [true, false],
502
502
  enableDashboardsSearch: [false, true],
@@ -506,6 +506,6 @@ export const FeatureFlagsValues = {
506
506
  enableGenAiVisualizationSummarySkill: [false, true],
507
507
  enableAutomationTrigger: [true, false],
508
508
  enableUserDataFiltersUi: [true, false],
509
- enableDateTimeSemanticsSetting: [true, false],
510
509
  enableEnhancedInsightPicker: [true, false],
510
+ enableAiLlmAnthropicProvider: [true, false],
511
511
  };
@@ -1,4 +1,4 @@
1
- import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatConversationItemsQuery, type IChatConversationItemsQueryResult, type IChatConversationThread, type IChatConversationThreadQuery, type IChatConversations, type IChatSuggestionsItem } from "@gooddata/sdk-backend-spi";
1
+ import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatConversationItemsQuery, type IChatConversationItemsQueryResult, type IChatConversationThread, type IChatConversationThreadQuery, type IChatConversations } from "@gooddata/sdk-backend-spi";
2
2
  import { type GenAIChatInteractionUserFeedback, type GenAIObjectType, type IAllowedRelationshipType, type IGenAIUserContext } from "@gooddata/sdk-model";
3
3
  import type { DateNormalizer } from "../../../convertors/fromBackend/dateFormatting/types.js";
4
4
  import type { TigerAuthenticatedCallGuard } from "../../../types/index.js";
@@ -102,5 +102,5 @@ export declare class ChatConversationThreadQuery implements IChatConversationThr
102
102
  query(options?: {
103
103
  signal?: AbortSignal;
104
104
  }): Promise<IChatConversationItem[]>;
105
- stream(): ReadableStream<IChatConversationItem | IChatConversationError | IChatSuggestionsItem>;
105
+ stream(): ReadableStream<IChatConversationItem | IChatConversationError>;
106
106
  }
@@ -1,9 +1,9 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { EventSourceParserStream } from "eventsource-parser/stream";
3
- import { GenAiApi_DeleteConversation, GenAiApi_GetConversation, GenAiApi_GetConversationItems, GenAiApi_GetConversationResponses, GenAiApi_GetConversations, GenAiApi_PatchConversation, GenAiApi_PatchConversationResponse, GenAiApi_PatchVisualization, GenAiApi_PostConversations, GenAiApi_PostGenerateConversationTitle, GenAiApi_PostMessages, } from "@gooddata/api-client-tiger/endpoints/genAI";
3
+ import { GenAiApi_DeleteConversation, GenAiApi_GetConversation, GenAiApi_GetConversationItems, GenAiApi_GetConversationResponses, GenAiApi_GetConversations, GenAiApi_PatchConversation, GenAiApi_PatchVisualization, GenAiApi_PostConversationFeedback, GenAiApi_PostConversations, GenAiApi_PostGenerateConversationTitle, GenAiApi_PostMessages, } from "@gooddata/api-client-tiger/endpoints/genAI";
4
4
  import { ServerPaging } from "@gooddata/sdk-backend-base";
5
5
  import { objRefToString, } from "@gooddata/sdk-model";
6
- import { convertChatConversationErrorFromBackend, convertChatConversationFromBackend, convertChatConversationItemFromBackend, convertChatSuggestionItemFromBackend, } from "../../../convertors/fromBackend/genAIConvertor.js";
6
+ import { convertChatConversationErrorFromBackend, convertChatConversationFromBackend, convertChatConversationItemFromBackend, } from "../../../convertors/fromBackend/genAIConvertor.js";
7
7
  /**
8
8
  * Chat conversations service.
9
9
  * @beta
@@ -167,11 +167,11 @@ export class ConversationThread {
167
167
  throw new Error("Conversation ID is not set");
168
168
  }
169
169
  await this.authCall((client) => {
170
- return GenAiApi_PatchConversationResponse(client.axios, client.basePath, {
170
+ return GenAiApi_PostConversationFeedback(client.axios, client.basePath, {
171
171
  workspaceId: this.workspaceId,
172
172
  conversationId,
173
- responseId,
174
- aiResponseFeedbackRequest: {
173
+ aiConversationFeedbackRequest: {
174
+ responseId,
175
175
  feedback: feedback === "NONE"
176
176
  ? null
177
177
  : {
@@ -389,11 +389,6 @@ class ServerSentEventsDataConverter extends TransformStream {
389
389
  else if (event.type === "item" && "item" in event.data) {
390
390
  controller.enqueue(convertChatConversationItemFromBackend(event.data.item, undefined, dateNormalizer, locale, timezone));
391
391
  }
392
- else if (event.type === "response_ended" && event.data) {
393
- if ("suggestions" in event.data) {
394
- controller.enqueue(convertChatSuggestionItemFromBackend(event.data.suggestions));
395
- }
396
- }
397
392
  },
398
393
  });
399
394
  }
@@ -1,6 +1,6 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { ActionsApi_MetadataSync, ActionsApi_ResolveLlmProviders, } from "@gooddata/api-client-tiger/endpoints/actions";
3
- import { GenAiApi_SummarizeDashboard } from "@gooddata/api-client-tiger/endpoints/genAI";
3
+ import { GenAiApi_SummarizeDashboard, } from "@gooddata/api-client-tiger/endpoints/genAI";
4
4
  import { AnalyticsCatalogService } from "./AnalyticsCatalogService.js";
5
5
  import { ChatConversationsService } from "./ChatConversations.js";
6
6
  import { ChatThreadService } from "./ChatThread.js";
@@ -1,9 +1,9 @@
1
1
  import { type IReferencesOption, type IReferencesResult, type IReferencesService } from "@gooddata/sdk-backend-spi";
2
- import { type ObjRef } from "@gooddata/sdk-model";
2
+ import { type IdentifierRef } from "@gooddata/sdk-model";
3
3
  import { type TigerAuthenticatedCallGuard } from "../../../types/index.js";
4
4
  export declare class TigerReferencesService implements IReferencesService {
5
5
  private readonly authCall;
6
6
  private readonly workspace;
7
7
  constructor(authCall: TigerAuthenticatedCallGuard, workspace: string);
8
- getReferences(root: ObjRef, opts?: IReferencesOption): Promise<IReferencesResult>;
8
+ getReferences(root: IdentifierRef | IdentifierRef[], opts?: IReferencesOption): Promise<IReferencesResult>;
9
9
  }
@@ -1,8 +1,9 @@
1
1
  // (C) 2025-2026 GoodData Corporation
2
+ import { uniqBy } from "lodash-es";
2
3
  import { ActionsApi_GetDependentEntitiesGraphFromEntryPoints, } from "@gooddata/api-client-tiger";
3
- import { areObjRefsEqual, isIdentifierRef } from "@gooddata/sdk-model";
4
- import { objectTypeToTigerIdType, tigerIdTypeToObjectType, } from "../../../types/refTypeMapping.js";
5
- import { objRefToIdentifier } from "../../../utils/api.js";
4
+ import { serializeObjRef } from "@gooddata/sdk-model";
5
+ import { isTigerType, objectTypeToTigerIdType, tigerIdTypeToObjectType, } from "../../../types/refTypeMapping.js";
6
+ const sdkObjectTypeToTigerType = objectTypeToTigerIdType;
6
7
  export class TigerReferencesService {
7
8
  authCall;
8
9
  workspace;
@@ -11,97 +12,77 @@ export class TigerReferencesService {
11
12
  this.workspace = workspace;
12
13
  }
13
14
  async getReferences(root, opts) {
14
- const id = objRefToIdentifier(root, this.authCall);
15
- const type = isIdentifierRef(root) && root.type
16
- ? objectTypeToTigerIdType[root.type]
17
- : "visualizationObject";
18
- // Prompt and parameter are not supported by the dependency graph endpoint.
19
- if (type === "prompt" || type === "parameter") {
20
- return {
21
- nodes: [],
22
- edges: [],
23
- };
24
- }
25
- if (opts?.direction === "both") {
26
- const dependenciesGraph = await getData(this.authCall, this.workspace, id, type, "DEPENDENCIES");
27
- const dependentsGraph = await getData(this.authCall, this.workspace, id, type, "DEPENDENTS");
28
- const graph = mergeGraphs(dependenciesGraph, dependentsGraph, root);
29
- return {
30
- nodes: graph.nodes,
31
- edges: revertGraphDirection(graph.edges, opts),
32
- };
33
- }
34
- else {
35
- const entitiesGraph = await getData(this.authCall, this.workspace, id, type, opts?.direction === "up" ? "DEPENDENTS" : "DEPENDENCIES");
36
- const graph = createGraph(entitiesGraph, root);
37
- return {
38
- nodes: graph.nodes,
39
- edges: revertGraphDirection(graph.edges, opts),
40
- };
15
+ const roots = Array.isArray(root) ? root : [root];
16
+ const direction = opts?.direction;
17
+ if (direction === "both") {
18
+ const [dependencies, dependents] = await Promise.all([
19
+ getGraph(this.authCall, this.workspace, roots, "DEPENDENCIES"),
20
+ getGraph(this.authCall, this.workspace, roots, "DEPENDENTS"),
21
+ ]);
22
+ return mergeGraphs(dependencies, dependents);
41
23
  }
24
+ return getGraph(this.authCall, this.workspace, roots, direction === "up" ? "DEPENDENTS" : "DEPENDENCIES");
42
25
  }
43
26
  }
44
- async function getData(authCall, workspace, id, type, direction) {
45
- return await authCall((client) => ActionsApi_GetDependentEntitiesGraphFromEntryPoints(client.axios, client.basePath, {
46
- workspaceId: workspace,
47
- dependentEntitiesRequest: {
48
- identifiers: [{ id, type }],
49
- relation: direction,
50
- },
51
- }).then((res) => res.data.graph));
27
+ async function getGraph(authCall, workspace, roots, relation) {
28
+ const identifiers = roots.flatMap(refToEntityIdentifier);
29
+ if (identifiers.length === 0) {
30
+ return { nodes: [], edges: [] };
31
+ }
32
+ const rootKeys = new Set(identifiers.map(entityKey));
33
+ const entitiesGraph = await authCall(async (client) => {
34
+ const response = await ActionsApi_GetDependentEntitiesGraphFromEntryPoints(client.axios, client.basePath, {
35
+ workspaceId: workspace,
36
+ dependentEntitiesRequest: {
37
+ identifiers,
38
+ relation,
39
+ },
40
+ });
41
+ return response.data.graph;
42
+ });
43
+ return createGraph(entitiesGraph, rootKeys, relation);
52
44
  }
53
- function mergeGraphs(dependenciesGraph, dependentsGraph, root) {
54
- const dependencies = createGraph(dependenciesGraph, root);
55
- const dependents = createGraph(dependentsGraph, root);
56
- const nodes = [...dependencies.nodes];
57
- dependents.nodes.forEach((node) => {
58
- if (!nodes.some((n) => areObjRefsEqual(n, node))) {
59
- nodes.push(node);
45
+ function createGraph(entitiesGraph, rootKeys, relation) {
46
+ const nodes = entitiesGraph.nodes.flatMap((node) => {
47
+ const ref = tigerNodeToRef(node);
48
+ if (!ref) {
49
+ return [];
60
50
  }
51
+ return [{ ...ref, title: node.title ?? node.id, isRoot: rootKeys.has(entityKey(node)) }];
61
52
  });
62
- const edges = [...dependencies.edges];
63
- dependents.edges.forEach((edge) => {
64
- if (!edges.some((e) => areObjRefsEqual(e.from, edge.from) && areObjRefsEqual(e.to, edge.to))) {
65
- edges.push(edge);
53
+ const edges = entitiesGraph.edges.flatMap((edge) => {
54
+ const [from, to] = edge;
55
+ if (!from || !to) {
56
+ return [];
66
57
  }
58
+ const fromRef = tigerNodeToRef(from);
59
+ const toRef = tigerNodeToRef(to);
60
+ if (!fromRef || !toRef) {
61
+ return [];
62
+ }
63
+ return relation === "DEPENDENCIES" ? [{ from: toRef, to: fromRef }] : [{ from: fromRef, to: toRef }];
67
64
  });
68
- return {
69
- nodes,
70
- edges,
71
- };
65
+ return { nodes, edges };
72
66
  }
73
- function createGraph(entitiesGraph, root) {
74
- const nodes = [];
75
- entitiesGraph.nodes.forEach((node) => {
76
- const ref = createRef(node.id, node.type);
77
- nodes.push({
78
- ...ref,
79
- title: node.title ?? node.id,
80
- isRoot: areObjRefsEqual(ref, root),
81
- });
82
- });
83
- const edges = [];
84
- entitiesGraph.edges.forEach(([from, to]) => {
85
- edges.push({
86
- from: createRef(from.id, from.type),
87
- to: createRef(to.id, to.type),
88
- });
89
- });
67
+ function mergeGraphs(a, b) {
90
68
  return {
91
- nodes,
92
- edges,
69
+ nodes: uniqBy([...a.nodes, ...b.nodes], serializeObjRef),
70
+ edges: uniqBy([...a.edges, ...b.edges], (edge) => `${serializeObjRef(edge.from)}|${serializeObjRef(edge.to)}`),
93
71
  };
94
72
  }
95
- function revertGraphDirection(edges, opts) {
96
- const direction = opts?.direction ?? "down";
97
- if (direction === "down" || direction === "both") {
98
- return edges.map((edge) => ({ from: edge.to, to: edge.from }));
99
- }
100
- return edges;
73
+ function refToEntityIdentifier(ref) {
74
+ const tigerType = ref.type ? sdkObjectTypeToTigerType[ref.type] : "visualizationObject";
75
+ return isGraphSupportedType(tigerType) ? [{ id: ref.identifier, type: tigerType }] : [];
101
76
  }
102
- function createRef(id, type) {
103
- return {
104
- identifier: id,
105
- type: tigerIdTypeToObjectType[type],
106
- };
77
+ function tigerNodeToRef(node) {
78
+ return isTigerType(node.type)
79
+ ? { identifier: node.id, type: tigerIdTypeToObjectType[node.type] }
80
+ : undefined;
81
+ }
82
+ // Prompt is not accepted by the dependency graph endpoint.
83
+ function isGraphSupportedType(type) {
84
+ return type !== undefined && type !== "prompt";
85
+ }
86
+ function entityKey(entity) {
87
+ return `${entity.type}/${entity.id}`;
107
88
  }
@@ -1,5 +1,5 @@
1
- import { type AiConversationItemResponse, type AiConversationResponse, type AiConversationResponseList } from "@gooddata/api-client-tiger";
2
- import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatSuggestionsItem } from "@gooddata/sdk-backend-spi";
1
+ import { type AiConversationItemResponse, type AiConversationResponse, type AiConversationResponseList, type AiSuggestions } from "@gooddata/api-client-tiger";
2
+ import { type IChatConversation, type IChatConversationError, type IChatConversationItem, type IChatSuggestions } from "@gooddata/sdk-backend-spi";
3
3
  import type { FormattingLocale } from "./dateFormatting/defaultDateFormatter.js";
4
4
  import { type DateNormalizer } from "./dateFormatting/types.js";
5
5
  export declare function convertChatConversationFromBackend(conversation: AiConversationResponse): IChatConversation;
@@ -9,17 +9,4 @@ export declare function convertChatConversationErrorFromBackend(item: Partial<{
9
9
  detail: string;
10
10
  reason: string;
11
11
  }>, traceId?: string): IChatConversationError;
12
- /**
13
- * Represents AI-generated suggestions, which may include a follow-up question
14
- * and a list of actions with associated labels and queries.
15
- *
16
- * TODO: This is mock types, must be loaded from openapi when will be ready
17
- */
18
- export type AiSuggestions = {
19
- followUpQuestion?: string;
20
- actions?: {
21
- label: string;
22
- query: string;
23
- }[];
24
- };
25
- export declare function convertChatSuggestionItemFromBackend(item: AiSuggestions | undefined): IChatSuggestionsItem;
12
+ export declare function convertChatSuggestionItemFromBackend(item: AiSuggestions | null | undefined): IChatSuggestions;
@@ -90,6 +90,7 @@ function convertChatConversationContentFromBackend(content, dateNormalizer, loca
90
90
  throw new Error(`Unexpected part: ${JSON.stringify(part)}`);
91
91
  }
92
92
  }),
93
+ suggestions: convertChatSuggestionItemFromBackend(content.suggestions),
93
94
  };
94
95
  case "toolCall":
95
96
  return {
@@ -192,8 +193,7 @@ function convertSearchRelationships(relationships) {
192
193
  }
193
194
  export function convertChatSuggestionItemFromBackend(item) {
194
195
  return {
195
- type: "suggestions",
196
- followUp: item?.followUpQuestion,
196
+ followUpQuestion: item?.followUpQuestion,
197
197
  actions: item?.actions?.map((action) => ({
198
198
  label: action.label,
199
199
  query: action.query,
@@ -1,4 +1,3 @@
1
- import { type JsonApiLlmEndpointOutWithLinks, type ResolvedLlmEndpoint } from "@gooddata/api-client-tiger";
2
- import { type ILlmEndpointBase, type ILlmEndpointOpenAI } from "@gooddata/sdk-model";
1
+ import { type JsonApiLlmEndpointOutWithLinks } from "@gooddata/api-client-tiger";
2
+ import { type ILlmEndpointOpenAI } from "@gooddata/sdk-model";
3
3
  export declare function convertLlmEndpoint(endpoint: JsonApiLlmEndpointOutWithLinks): ILlmEndpointOpenAI;
4
- export declare function convertResolvedLlmEndpoint(endpoints: ResolvedLlmEndpoint[]): ILlmEndpointBase[];
@@ -1,4 +1,4 @@
1
- // (C) 2024-2025 GoodData Corporation
1
+ // (C) 2024-2026 GoodData Corporation
2
2
  export function convertLlmEndpoint(endpoint) {
3
3
  if (endpoint.attributes?.provider === "OPENAI") {
4
4
  return {
@@ -20,11 +20,3 @@ export function convertLlmEndpoint(endpoint) {
20
20
  }
21
21
  throw new Error(`Unknown llm endpoint provider: ${endpoint.attributes?.provider}`);
22
22
  }
23
- export function convertResolvedLlmEndpoint(endpoints) {
24
- return endpoints.map((e) => {
25
- return {
26
- id: e.id,
27
- title: e.title,
28
- };
29
- });
30
- }
@@ -86,6 +86,15 @@ function convertLlmProviderConfigToBackend(config) {
86
86
  apiKey: config.apiKey,
87
87
  },
88
88
  };
89
+ case "anthropic":
90
+ return {
91
+ type: "ANTHROPIC",
92
+ baseUrl: config.baseUrl,
93
+ auth: {
94
+ type: "API_KEY",
95
+ apiKey: config.apiKey,
96
+ },
97
+ };
89
98
  }
90
99
  }
91
100
  function convertLlmProviderConfigFromBackend(config) {
@@ -114,6 +123,12 @@ function convertLlmProviderConfigFromBackend(config) {
114
123
  endpoint: config.endpoint,
115
124
  apiKey: config.auth.apiKey ?? undefined,
116
125
  };
126
+ case "ANTHROPIC":
127
+ return {
128
+ type: "anthropic",
129
+ baseUrl: config.baseUrl ?? undefined,
130
+ apiKey: config.auth.apiKey ?? undefined,
131
+ };
117
132
  default:
118
133
  return undefined;
119
134
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-backend-tiger",
3
- "version": "11.36.0-alpha.1",
3
+ "version": "11.36.0-alpha.3",
4
4
  "description": "GoodData Backend SPI implementation for GoodData Cloud and GoodData.CN",
5
5
  "license": "MIT",
6
6
  "author": "GoodData",
@@ -33,12 +33,12 @@
33
33
  "ts-invariant": "0.10.3",
34
34
  "tslib": "2.8.1",
35
35
  "uuid": "11.1.0",
36
- "@gooddata/api-client-tiger": "11.36.0-alpha.1",
37
- "@gooddata/sdk-backend-base": "11.36.0-alpha.1",
38
- "@gooddata/sdk-backend-spi": "11.36.0-alpha.1",
39
- "@gooddata/sdk-code-convertors": "11.36.0-alpha.1",
40
- "@gooddata/sdk-model": "11.36.0-alpha.1",
41
- "@gooddata/util": "11.36.0-alpha.1"
36
+ "@gooddata/api-client-tiger": "11.36.0-alpha.3",
37
+ "@gooddata/sdk-backend-spi": "11.36.0-alpha.3",
38
+ "@gooddata/sdk-backend-base": "11.36.0-alpha.3",
39
+ "@gooddata/sdk-code-convertors": "11.36.0-alpha.3",
40
+ "@gooddata/sdk-model": "11.36.0-alpha.3",
41
+ "@gooddata/util": "11.36.0-alpha.3"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@gooddata/fixtures": "3.3.12",
@@ -65,10 +65,10 @@
65
65
  "oxlint-tsgolint": "0.11.4",
66
66
  "typescript": "5.9.3",
67
67
  "vitest": "4.1.0",
68
- "@gooddata/catalog-export": "11.36.0-alpha.1",
69
- "@gooddata/eslint-config": "11.36.0-alpha.1",
70
- "@gooddata/oxlint-config": "11.36.0-alpha.1",
71
- "@gooddata/reference-workspace": "11.36.0-alpha.1"
68
+ "@gooddata/catalog-export": "11.36.0-alpha.3",
69
+ "@gooddata/eslint-config": "11.36.0-alpha.3",
70
+ "@gooddata/oxlint-config": "11.36.0-alpha.3",
71
+ "@gooddata/reference-workspace": "11.36.0-alpha.3"
72
72
  },
73
73
  "scripts": {
74
74
  "_phase:build": "npm run build",