Skip to content

Commit 30e2305

Browse files
authored
fix: Fix default configs always being disabled (#965)
1 parent 001ada5 commit 30e2305

File tree

2 files changed

+50
-14
lines changed

2 files changed

+50
-14
lines changed

packages/sdk/server-ai/__tests__/LDAIClientImpl.test.ts

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,14 @@ it('passes the default value to the underlying client', async () => {
127127
enabled: true,
128128
};
129129

130-
mockLdClient.variation.mockResolvedValue(defaultValue);
130+
const expectedLDFlagValue = {
131+
_ldMeta: { enabled: true },
132+
model: defaultValue.model,
133+
messages: defaultValue.messages,
134+
provider: defaultValue.provider,
135+
};
136+
137+
mockLdClient.variation.mockResolvedValue(expectedLDFlagValue);
131138

132139
const result = await client.config(key, testContext, defaultValue);
133140

@@ -136,11 +143,11 @@ it('passes the default value to the underlying client', async () => {
136143
messages: defaultValue.messages,
137144
provider: defaultValue.provider,
138145
tracker: expect.any(Object),
139-
enabled: false,
146+
enabled: defaultValue.enabled,
140147
toVercelAISDK: expect.any(Function),
141148
});
142149

143-
expect(mockLdClient.variation).toHaveBeenCalledWith(key, testContext, defaultValue);
150+
expect(mockLdClient.variation).toHaveBeenCalledWith(key, testContext, expectedLDFlagValue);
144151
});
145152

146153
// New agent-related tests
@@ -253,7 +260,14 @@ it('passes the default value to the underlying client for single agent', async (
253260
enabled: true,
254261
};
255262

256-
mockLdClient.variation.mockResolvedValue(defaultValue);
263+
const expectedLDFlagValue = {
264+
_ldMeta: { enabled: defaultValue.enabled },
265+
model: defaultValue.model,
266+
provider: defaultValue.provider,
267+
instructions: defaultValue.instructions,
268+
};
269+
270+
mockLdClient.variation.mockResolvedValue(expectedLDFlagValue);
257271

258272
const result = await client.agent(key, testContext, defaultValue);
259273

@@ -262,10 +276,10 @@ it('passes the default value to the underlying client for single agent', async (
262276
instructions: defaultValue.instructions,
263277
provider: defaultValue.provider,
264278
tracker: expect.any(Object),
265-
enabled: false,
279+
enabled: defaultValue.enabled,
266280
});
267281

268-
expect(mockLdClient.variation).toHaveBeenCalledWith(key, testContext, defaultValue);
282+
expect(mockLdClient.variation).toHaveBeenCalledWith(key, testContext, expectedLDFlagValue);
269283
});
270284

271285
it('returns multiple agents config with interpolated instructions', async () => {

packages/sdk/server-ai/src/LDAIClientImpl.ts

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,12 +69,32 @@ export class LDAIClientImpl implements LDAIClient {
6969
return Mustache.render(template, variables, undefined, { escape: (item: any) => item });
7070
}
7171

72+
private static _toLDFlagValue(defaultValue: LDAIDefaults | LDAIAgentDefaults): {
73+
_ldMeta: { enabled: boolean };
74+
model?: LDModelConfig;
75+
messages?: LDMessage[];
76+
provider?: LDProviderConfig;
77+
instructions?: string;
78+
} {
79+
return {
80+
_ldMeta: { enabled: defaultValue.enabled ?? false },
81+
model: defaultValue.model,
82+
messages: 'messages' in defaultValue ? defaultValue.messages : undefined,
83+
provider: defaultValue.provider,
84+
instructions: 'instructions' in defaultValue ? defaultValue.instructions : undefined,
85+
};
86+
}
87+
7288
private async _evaluate(
7389
key: string,
7490
context: LDContext,
7591
defaultValue: LDAIDefaults,
7692
): Promise<EvaluationResult> {
77-
const value: VariationContent = await this._ldClient.variation(key, context, defaultValue);
93+
// Convert default value to LDFlagValue format
94+
// eslint-disable-next-line no-underscore-dangle
95+
const ldFlagValue = LDAIClientImpl._toLDFlagValue(defaultValue);
96+
97+
const value: VariationContent = await this._ldClient.variation(key, context, ldFlagValue);
7898

7999
const tracker = new LDAIConfigTrackerImpl(
80100
this._ldClient,
@@ -109,11 +129,13 @@ export class LDAIClientImpl implements LDAIClient {
109129
defaultValue: LDAIAgentDefaults,
110130
variables?: Record<string, unknown>,
111131
): Promise<LDAIAgent> {
112-
const { tracker, enabled, model, provider, instructions } = await this._evaluate(
113-
key,
114-
context,
115-
defaultValue,
116-
);
132+
const {
133+
tracker,
134+
enabled,
135+
model,
136+
provider: configProvider,
137+
instructions,
138+
} = await this._evaluate(key, context, defaultValue);
117139

118140
const agent: LDAIAgent = {
119141
tracker,
@@ -126,8 +148,8 @@ export class LDAIClientImpl implements LDAIClient {
126148
agent.model = { ...model };
127149
}
128150

129-
if (provider) {
130-
agent.provider = { ...provider };
151+
if (configProvider) {
152+
agent.provider = { ...configProvider };
131153
}
132154

133155
const allVariables = { ...variables, ldctx: context };

0 commit comments

Comments
 (0)