Skip to content

Commit a4b1f3f

Browse files
authored
Merge branch 'main' into feat/svelte-sdk
2 parents 2365346 + 7720ac9 commit a4b1f3f

File tree

28 files changed

+179
-69
lines changed

28 files changed

+179
-69
lines changed

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@
1414
"packages/sdk/react-native": "10.9.3",
1515
"packages/telemetry/node-server-sdk-otel": "1.1.2",
1616
"packages/sdk/browser": "0.3.3",
17-
"packages/sdk/server-ai": "0.4.0"
17+
"packages/sdk/server-ai": "0.5.0"
1818
}

packages/sdk/browser/contract-tests/adapter/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
"strict": true,
88
"moduleResolution": "node",
99
"outDir": "dist",
10-
"sourceMap": true
10+
"sourceMap": true,
11+
"skipLibCheck": true
1112
},
1213
"lib": ["ES6"],
1314
"exclude": ["**/*.test.ts", "dist", "node_modules"]

packages/sdk/react-native/example/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
"dependencies": {
2424
"@launchdarkly/react-native-client-sdk": "workspace:^",
2525
"@react-native-async-storage/async-storage": "^1.21.0",
26-
"expo": "51.0.31",
26+
"expo": "52.0.14",
2727
"expo-status-bar": "~1.11.1",
28-
"react": "18.2.0",
29-
"react-native": "0.74.3",
28+
"react": "18.3.1",
29+
"react-native": "0.76.3",
3030
"react-native-dotenv": "^3.4.9"
3131
},
3232
"devDependencies": {

packages/sdk/react-universal/example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"@next/eslint-plugin-next": "^14.2.4",
2121
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
2222
"@types/node": "^20",
23-
"@types/react": "^18",
23+
"@types/react": "18.3.13",
2424
"@types/react-dom": "^18",
2525
"autoprefixer": "^10.0.1",
2626
"eslint": "^8",

packages/sdk/react-universal/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
"devDependencies": {
4949
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
5050
"@types/jest": "^29.5.0",
51-
"@types/react": "^18",
51+
"@types/react": "18.3.13",
5252
"@typescript-eslint/eslint-plugin": "^6.20.0",
5353
"@typescript-eslint/parser": "^6.20.0",
5454
"eslint": "^8.45.0",

packages/sdk/server-ai/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Changelog
22

3+
## [0.5.0](https://github.com/launchdarkly/js-core/compare/server-sdk-ai-v0.4.0...server-sdk-ai-v0.5.0) (2024-12-09)
4+
5+
6+
### ⚠ BREAKING CHANGES
7+
8+
* Rename model and providerid to name. ([#706](https://github.com/launchdarkly/js-core/issues/706))
9+
10+
### Features
11+
12+
* Add getSummary method to the tracker. ([#698](https://github.com/launchdarkly/js-core/issues/698)) ([4df902d](https://github.com/launchdarkly/js-core/commit/4df902d98584c88b072d6dab5f32a6ea8c4fcdf5))
13+
14+
15+
### Code Refactoring
16+
17+
* Rename model and providerid to name. ([#706](https://github.com/launchdarkly/js-core/issues/706)) ([8dd3951](https://github.com/launchdarkly/js-core/commit/8dd39517cfc14c6e037a2438d22f20a9527c9ffa))
18+
319
## [0.4.0](https://github.com/launchdarkly/js-core/compare/server-sdk-ai-v0.3.0...server-sdk-ai-v0.4.0) (2024-11-22)
420

521

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

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ it('returns config with interpolated messagess', async () => {
1515
const client = new LDAIClientImpl(mockLdClient);
1616
const key = 'test-flag';
1717
const defaultValue: LDAIDefaults = {
18-
model: { id: 'test', parameters: { name: 'test-model' } },
18+
model: { name: 'test', parameters: { name: 'test-model' } },
1919
messages: [],
2020
enabled: true,
2121
};
2222

2323
const mockVariation = {
2424
model: {
25-
id: 'example-model',
25+
name: 'example-model',
2626
parameters: { name: 'imagination', temperature: 0.7, maxTokens: 4096 },
2727
},
2828
provider: {
29-
id: 'example-provider',
29+
name: 'example-provider',
3030
},
3131
messages: [
3232
{ role: 'system', content: 'Hello {{name}}' },
@@ -45,11 +45,11 @@ it('returns config with interpolated messagess', async () => {
4545

4646
expect(result).toEqual({
4747
model: {
48-
id: 'example-model',
48+
name: 'example-model',
4949
parameters: { name: 'imagination', temperature: 0.7, maxTokens: 4096 },
5050
},
5151
provider: {
52-
id: 'example-provider',
52+
name: 'example-provider',
5353
},
5454
messages: [
5555
{ role: 'system', content: 'Hello John' },
@@ -64,7 +64,7 @@ it('includes context in variables for messages interpolation', async () => {
6464
const client = new LDAIClientImpl(mockLdClient);
6565
const key = 'test-flag';
6666
const defaultValue: LDAIDefaults = {
67-
model: { id: 'test', parameters: { name: 'test-model' } },
67+
model: { name: 'test', parameters: { name: 'test-model' } },
6868
messages: [],
6969
};
7070

@@ -84,12 +84,12 @@ it('handles missing metadata in variation', async () => {
8484
const client = new LDAIClientImpl(mockLdClient);
8585
const key = 'test-flag';
8686
const defaultValue: LDAIDefaults = {
87-
model: { id: 'test', parameters: { name: 'test-model' } },
87+
model: { name: 'test', parameters: { name: 'test-model' } },
8888
messages: [],
8989
};
9090

9191
const mockVariation = {
92-
model: { id: 'example-provider', parameters: { name: 'imagination' } },
92+
model: { name: 'example-provider', parameters: { name: 'imagination' } },
9393
messages: [{ role: 'system', content: 'Hello' }],
9494
};
9595

@@ -98,7 +98,7 @@ it('handles missing metadata in variation', async () => {
9898
const result = await client.config(key, testContext, defaultValue);
9999

100100
expect(result).toEqual({
101-
model: { id: 'example-provider', parameters: { name: 'imagination' } },
101+
model: { name: 'example-provider', parameters: { name: 'imagination' } },
102102
messages: [{ role: 'system', content: 'Hello' }],
103103
tracker: expect.any(Object),
104104
enabled: false,
@@ -109,8 +109,8 @@ it('passes the default value to the underlying client', async () => {
109109
const client = new LDAIClientImpl(mockLdClient);
110110
const key = 'non-existent-flag';
111111
const defaultValue: LDAIDefaults = {
112-
model: { id: 'default-model', parameters: { name: 'default' } },
113-
provider: { id: 'default-provider' },
112+
model: { name: 'default-model', parameters: { name: 'default' } },
113+
provider: { name: 'default-provider' },
114114
messages: [{ role: 'system', content: 'Default messages' }],
115115
enabled: true,
116116
};

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,3 +268,39 @@ it('only tracks non-zero token counts', () => {
268268
expect.anything(),
269269
);
270270
});
271+
272+
it('returns empty summary when no metrics tracked', () => {
273+
const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
274+
275+
const summary = tracker.getSummary();
276+
277+
expect(summary).toEqual({});
278+
});
279+
280+
it('summarizes tracked metrics', () => {
281+
const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
282+
283+
tracker.trackDuration(1000);
284+
tracker.trackTokens({
285+
total: 100,
286+
input: 40,
287+
output: 60,
288+
});
289+
tracker.trackFeedback({ kind: LDFeedbackKind.Positive });
290+
tracker.trackSuccess();
291+
292+
const summary = tracker.getSummary();
293+
294+
expect(summary).toEqual({
295+
durationMs: 1000,
296+
tokens: {
297+
total: 100,
298+
input: 40,
299+
output: 60,
300+
},
301+
feedback: {
302+
kind: 'positive',
303+
},
304+
success: true,
305+
});
306+
});

packages/sdk/server-ai/examples/bedrock/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"dependencies": {
2525
"@aws-sdk/client-bedrock-runtime": "^3.679.0",
2626
"@launchdarkly/node-server-sdk": "^9.7.1",
27-
"@launchdarkly/server-sdk-ai": "0.4.0"
27+
"@launchdarkly/server-sdk-ai": "0.5.0"
2828
},
2929
"devDependencies": {
3030
"@trivago/prettier-plugin-sort-imports": "^4.1.1",

packages/sdk/server-ai/examples/bedrock/src/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ async function main() {
5353
context,
5454
{
5555
model: {
56-
id: 'my-default-model',
56+
name: 'my-default-model',
5757
},
5858
enabled: true,
5959
},
@@ -66,7 +66,7 @@ async function main() {
6666
const completion = tracker.trackBedrockConverseMetrics(
6767
await awsClient.send(
6868
new ConverseCommand({
69-
modelId: aiConfig.model?.id ?? 'no-model',
69+
modelId: aiConfig.model?.name ?? 'no-model',
7070
messages: mapPromptToConversation(aiConfig.messages ?? []),
7171
inferenceConfig: {
7272
temperature: (aiConfig.model?.parameters?.temperature as number) ?? 0.5,

0 commit comments

Comments
 (0)