@auto-engineer/model-factory 1.57.0 → 1.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +5 -5
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +42 -0
- package/dist/src/index.d.ts +1 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -32
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.specs.js +43 -135
- package/dist/src/index.specs.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/index.specs.ts +43 -162
- package/src/index.ts +12 -42
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @auto-engineer/model-factory@1.
|
|
2
|
+
> @auto-engineer/model-factory@1.59.0 build /home/runner/work/auto-engineer/auto-engineer/packages/model-factory
|
|
3
3
|
> tsc && tsx ../../scripts/fix-esm-imports.ts
|
|
4
4
|
|
|
5
5
|
Fixed ESM imports in dist/
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
|
|
2
|
-
> @auto-engineer/model-factory@1.
|
|
2
|
+
> @auto-engineer/model-factory@1.58.0 test /home/runner/work/auto-engineer/auto-engineer/packages/model-factory
|
|
3
3
|
> vitest run --reporter=dot
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv3.2.4 [39m[90m/home/runner/work/auto-engineer/auto-engineer/packages/model-factory[39m
|
|
7
7
|
|
|
8
|
-
[33m[39m[32m·[39m[33m[39m[32m·[39m[33m[39m[32m·[39m[33m[39m[32m·[39m[33m[39m[32m·[39m
|
|
8
|
+
[33m[39m[32m·[39m[33m[39m[32m·[39m[33m[39m[32m·[39m[33m[39m[32m·[39m[33m[39m[32m·[39m
|
|
9
9
|
|
|
10
10
|
[2m Test Files [22m [1m[32m1 passed[39m[22m[90m (1)[39m
|
|
11
|
-
[2m Tests [22m [1m[
|
|
12
|
-
[2m Start at [22m
|
|
13
|
-
[2m Duration [22m 2.
|
|
11
|
+
[2m Tests [22m [1m[32m5 passed[39m[22m[90m (5)[39m
|
|
12
|
+
[2m Start at [22m 15:17:09
|
|
13
|
+
[2m Duration [22m 2.11s[2m (transform 381ms, setup 0ms, collect 281ms, tests 157ms, environment 0ms, prepare 610ms)[22m
|
|
14
14
|
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# @auto-engineer/model-factory
|
|
2
2
|
|
|
3
|
+
## 1.59.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`dc97333`](https://github.com/BeOnAuto/auto-engineer/commit/dc973338ed6a5c7dcd204123a2935ed44ccf61e4) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - - **server-generator-apollo-emmett**: sanitize malformed map types in field definitions
|
|
8
|
+
- **server-generator-apollo-emmett**: add sanitizeFieldType helper
|
|
9
|
+
- **server-generator-apollo-emmett**: emit SliceGenerationFailed for skipped fields
|
|
10
|
+
- **server-generator-apollo-emmett**: sanitize messages and track SkippedFieldInfo
|
|
11
|
+
- **server-generator-apollo-emmett**: add isValidTsIdentifier and filter inline fields
|
|
12
|
+
|
|
13
|
+
- [`c031dbe`](https://github.com/BeOnAuto/auto-engineer/commit/c031dbeb471ddeb9713f5c872352e5a405dab244) Thanks [@osamanar](https://github.com/osamanar)! - - Fixed issues with app implementation in the React component implementer
|
|
14
|
+
|
|
15
|
+
## 1.58.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- [`5c0ce7e`](https://github.com/BeOnAuto/auto-engineer/commit/5c0ce7e26f36b7809095cb16a7940ff9fc05314e) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: add isValidTsIdentifier and filter inline fields
|
|
20
|
+
|
|
21
|
+
- [`a90a25a`](https://github.com/BeOnAuto/auto-engineer/commit/a90a25a23c52783fd46dbde73cb9efa692e3b56a) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: add sanitizeFieldType helper
|
|
22
|
+
|
|
23
|
+
- [`007bbbe`](https://github.com/BeOnAuto/auto-engineer/commit/007bbbe1fb3db946529e361500c32ba47053b3ee) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: emit SliceGenerationFailed for skipped fields
|
|
24
|
+
|
|
25
|
+
- [`301560d`](https://github.com/BeOnAuto/auto-engineer/commit/301560db8ce3dd13284439f86c12f9d51e29038e) Thanks [@github-actions[bot]](https://github.com/github-actions%5Bbot%5D)! - - **typical**: update .env and package.json for bug report testing
|
|
26
|
+
- **submit-bug-report**: add pipeline command handler for bug reports
|
|
27
|
+
- **cli**: set process.env.SERVICE_TOKEN from configure endpoint
|
|
28
|
+
- **global**: version packages
|
|
29
|
+
- **typical**: add worker-to-server env vars to .env files
|
|
30
|
+
|
|
31
|
+
- [`1776bea`](https://github.com/BeOnAuto/auto-engineer/commit/1776beacf27511f883e3218a8436741451acfa4e) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: sanitize messages and track SkippedFieldInfo
|
|
32
|
+
|
|
33
|
+
- [`ba39eef`](https://github.com/BeOnAuto/auto-engineer/commit/ba39eefefa76d2e6f75a4f98d3677a314deabafc) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: sanitize malformed map types in field definitions
|
|
34
|
+
|
|
35
|
+
### Patch Changes
|
|
36
|
+
|
|
37
|
+
- [`5caa270`](https://github.com/BeOnAuto/auto-engineer/commit/5caa2705f4d6e1d958be91faa8de6dad2f449206) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: add ketchup plan for malformed map type fix
|
|
38
|
+
|
|
39
|
+
- [`af365c0`](https://github.com/BeOnAuto/auto-engineer/commit/af365c050e347faf574d5561b5ee92b93cbc0899) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: add ketchup plan for invalid TS identifier fix
|
|
40
|
+
|
|
41
|
+
- [`1c58459`](https://github.com/BeOnAuto/auto-engineer/commit/1c5845991c59cfeebc0a5596b054bfd3f56a36fc) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: update ketchup plan — all bursts done
|
|
42
|
+
|
|
43
|
+
- [`da36c91`](https://github.com/BeOnAuto/auto-engineer/commit/da36c9111af0b15963f87b0ac75f81849f8b6c9f) Thanks [@rami-hatoum](https://github.com/rami-hatoum)! - - **server-generator-apollo-emmett**: rename SkippedFieldInfo to FieldIssue
|
|
44
|
+
|
|
3
45
|
## 1.57.0
|
|
4
46
|
|
|
5
47
|
### Minor Changes
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
1
|
import type { LanguageModel } from 'ai';
|
|
2
|
-
export
|
|
3
|
-
export declare const DEFAULT_MODELS: Record<Provider, string>;
|
|
4
|
-
interface CreateModelOptions {
|
|
5
|
-
provider?: Provider;
|
|
6
|
-
model?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function createModelFromEnv(options?: CreateModelOptions): LanguageModel;
|
|
9
|
-
export {};
|
|
2
|
+
export declare function createModelFromEnv(): LanguageModel;
|
|
10
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAUxC,wBAAgB,kBAAkB,IAAI,aAAa,CAOlD"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,36 +1,16 @@
|
|
|
1
|
-
import { createAnthropic } from '@ai-sdk/anthropic';
|
|
2
|
-
import { createGoogleGenerativeAI } from '@ai-sdk/google';
|
|
3
|
-
import { createOpenAI } from '@ai-sdk/openai';
|
|
4
1
|
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
google: 'gemini-2.0-flash',
|
|
10
|
-
xai: 'grok-3',
|
|
11
|
-
custom: 'claude-sonnet-4-20250514',
|
|
12
|
-
};
|
|
13
|
-
export function createModelFromEnv(options) {
|
|
14
|
-
const provider = options?.provider ?? process.env.DEFAULT_AI_PROVIDER ?? 'custom';
|
|
15
|
-
const modelName = options?.model ?? process.env.DEFAULT_AI_MODEL ?? DEFAULT_MODELS[provider];
|
|
16
|
-
if (provider === 'custom') {
|
|
17
|
-
const name = process.env.CUSTOM_PROVIDER_NAME ?? 'custom';
|
|
18
|
-
const baseURL = process.env.CUSTOM_PROVIDER_BASE_URL;
|
|
19
|
-
const apiKey = process.env.CUSTOM_PROVIDER_API_KEY ?? '';
|
|
20
|
-
if (!baseURL) {
|
|
21
|
-
throw new Error('CUSTOM_PROVIDER_BASE_URL is required when using the custom provider');
|
|
22
|
-
}
|
|
23
|
-
return createOpenAICompatible({ name, baseURL, apiKey }).chatModel(modelName);
|
|
24
|
-
}
|
|
25
|
-
switch (provider) {
|
|
26
|
-
case 'openai':
|
|
27
|
-
return createOpenAI()(modelName);
|
|
28
|
-
case 'anthropic':
|
|
29
|
-
return createAnthropic()(modelName);
|
|
30
|
-
case 'google':
|
|
31
|
-
return createGoogleGenerativeAI()(modelName);
|
|
32
|
-
case 'xai':
|
|
33
|
-
return createXai()(modelName);
|
|
2
|
+
function requireEnv(name) {
|
|
3
|
+
const value = process.env[name];
|
|
4
|
+
if (!value) {
|
|
5
|
+
throw new Error(`Missing required environment variable: ${name}`);
|
|
34
6
|
}
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
export function createModelFromEnv() {
|
|
10
|
+
const name = requireEnv('CUSTOM_PROVIDER_NAME');
|
|
11
|
+
const baseURL = requireEnv('CUSTOM_PROVIDER_BASE_URL');
|
|
12
|
+
const apiKey = requireEnv('CUSTOM_PROVIDER_API_KEY');
|
|
13
|
+
const model = requireEnv('CUSTOM_PROVIDER_DEFAULT_MODEL');
|
|
14
|
+
return createOpenAICompatible({ name, baseURL, apiKey }).chatModel(model);
|
|
35
15
|
}
|
|
36
16
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,+BAA+B,CAAC,CAAC;IAE1D,OAAO,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAA6B,CAAC;AACxG,CAAC"}
|
package/dist/src/index.specs.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
-
const stubModel = (provider) => (model) => ({
|
|
3
|
-
specificationVersion: 'v3',
|
|
4
|
-
modelId: model,
|
|
5
|
-
provider,
|
|
6
|
-
});
|
|
7
2
|
vi.mock('@ai-sdk/openai-compatible', () => ({
|
|
8
3
|
createOpenAICompatible: ({ name, baseURL, apiKey }) => ({
|
|
9
4
|
chatModel: (model) => ({
|
|
@@ -13,10 +8,6 @@ vi.mock('@ai-sdk/openai-compatible', () => ({
|
|
|
13
8
|
}),
|
|
14
9
|
}),
|
|
15
10
|
}));
|
|
16
|
-
vi.mock('@ai-sdk/openai', () => ({ createOpenAI: () => stubModel('openai') }));
|
|
17
|
-
vi.mock('@ai-sdk/anthropic', () => ({ createAnthropic: () => stubModel('anthropic') }));
|
|
18
|
-
vi.mock('@ai-sdk/google', () => ({ createGoogleGenerativeAI: () => stubModel('google') }));
|
|
19
|
-
vi.mock('@ai-sdk/xai', () => ({ createXai: () => stubModel('xai') }));
|
|
20
11
|
const savedEnv = { ...process.env };
|
|
21
12
|
beforeEach(() => {
|
|
22
13
|
vi.resetModules();
|
|
@@ -24,135 +15,52 @@ beforeEach(() => {
|
|
|
24
15
|
afterEach(() => {
|
|
25
16
|
process.env = { ...savedEnv };
|
|
26
17
|
});
|
|
18
|
+
function setRequiredEnv(overrides) {
|
|
19
|
+
process.env.CUSTOM_PROVIDER_NAME = 'litellm';
|
|
20
|
+
process.env.CUSTOM_PROVIDER_BASE_URL = 'https://gateway.example.com/v1';
|
|
21
|
+
process.env.CUSTOM_PROVIDER_API_KEY = 'sk-test';
|
|
22
|
+
process.env.CUSTOM_PROVIDER_DEFAULT_MODEL = 'xai/grok-code-fast-1';
|
|
23
|
+
if (overrides) {
|
|
24
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
25
|
+
if (value === undefined) {
|
|
26
|
+
delete process.env[key];
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
process.env[key] = value;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
27
34
|
describe('createModelFromEnv', () => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
expect(model).toEqual({
|
|
37
|
-
specificationVersion: 'v3',
|
|
38
|
-
modelId: DEFAULT_MODELS.custom,
|
|
39
|
-
provider: 'litellm:https://gateway.example.com/v1:sk-test',
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
it('uses options.model override', async () => {
|
|
43
|
-
process.env.CUSTOM_PROVIDER_BASE_URL = 'https://gw.example.com/v1';
|
|
44
|
-
const { createModelFromEnv } = await import('./index.js');
|
|
45
|
-
const model = createModelFromEnv({ model: 'my-custom-model' });
|
|
46
|
-
expect(model).toEqual({
|
|
47
|
-
specificationVersion: 'v3',
|
|
48
|
-
modelId: 'my-custom-model',
|
|
49
|
-
provider: 'custom:https://gw.example.com/v1:',
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
it('uses DEFAULT_AI_MODEL env var when options.model is unset', async () => {
|
|
53
|
-
process.env.CUSTOM_PROVIDER_BASE_URL = 'https://gw.example.com/v1';
|
|
54
|
-
process.env.DEFAULT_AI_MODEL = 'env-override-model';
|
|
55
|
-
const { createModelFromEnv } = await import('./index.js');
|
|
56
|
-
const model = createModelFromEnv();
|
|
57
|
-
expect(model).toEqual({
|
|
58
|
-
specificationVersion: 'v3',
|
|
59
|
-
modelId: 'env-override-model',
|
|
60
|
-
provider: 'custom:https://gw.example.com/v1:',
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
it('defaults to custom provider when DEFAULT_AI_PROVIDER is unset', async () => {
|
|
64
|
-
process.env.CUSTOM_PROVIDER_BASE_URL = 'https://gw.example.com/v1';
|
|
65
|
-
delete process.env.DEFAULT_AI_PROVIDER;
|
|
66
|
-
const { createModelFromEnv } = await import('./index.js');
|
|
67
|
-
const model = createModelFromEnv();
|
|
68
|
-
expect(model).toEqual(expect.objectContaining({
|
|
69
|
-
specificationVersion: 'v3',
|
|
70
|
-
provider: 'custom:https://gw.example.com/v1:',
|
|
71
|
-
}));
|
|
72
|
-
});
|
|
73
|
-
it('throws when CUSTOM_PROVIDER_BASE_URL is missing', async () => {
|
|
74
|
-
process.env.DEFAULT_AI_PROVIDER = 'custom';
|
|
75
|
-
delete process.env.CUSTOM_PROVIDER_BASE_URL;
|
|
76
|
-
const { createModelFromEnv } = await import('./index.js');
|
|
77
|
-
expect(() => createModelFromEnv()).toThrow('CUSTOM_PROVIDER_BASE_URL is required when using the custom provider');
|
|
35
|
+
it('creates model from all 4 env vars', async () => {
|
|
36
|
+
setRequiredEnv();
|
|
37
|
+
const { createModelFromEnv } = await import('./index.js');
|
|
38
|
+
const model = createModelFromEnv();
|
|
39
|
+
expect(model).toEqual({
|
|
40
|
+
specificationVersion: 'v3',
|
|
41
|
+
modelId: 'xai/grok-code-fast-1',
|
|
42
|
+
provider: 'litellm:https://gateway.example.com/v1:sk-test',
|
|
78
43
|
});
|
|
79
44
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
it('creates google model with default model name', async () => {
|
|
100
|
-
const { createModelFromEnv, DEFAULT_MODELS } = await import('./index.js');
|
|
101
|
-
const model = createModelFromEnv({ provider: 'google' });
|
|
102
|
-
expect(model).toEqual({
|
|
103
|
-
specificationVersion: 'v3',
|
|
104
|
-
modelId: DEFAULT_MODELS.google,
|
|
105
|
-
provider: 'google',
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
it('creates xai model with default model name', async () => {
|
|
109
|
-
const { createModelFromEnv, DEFAULT_MODELS } = await import('./index.js');
|
|
110
|
-
const model = createModelFromEnv({ provider: 'xai' });
|
|
111
|
-
expect(model).toEqual({
|
|
112
|
-
specificationVersion: 'v3',
|
|
113
|
-
modelId: DEFAULT_MODELS.xai,
|
|
114
|
-
provider: 'xai',
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
it('reads provider from DEFAULT_AI_PROVIDER env var', async () => {
|
|
118
|
-
process.env.DEFAULT_AI_PROVIDER = 'anthropic';
|
|
119
|
-
const { createModelFromEnv, DEFAULT_MODELS } = await import('./index.js');
|
|
120
|
-
const model = createModelFromEnv();
|
|
121
|
-
expect(model).toEqual({
|
|
122
|
-
specificationVersion: 'v3',
|
|
123
|
-
modelId: DEFAULT_MODELS.anthropic,
|
|
124
|
-
provider: 'anthropic',
|
|
125
|
-
});
|
|
126
|
-
});
|
|
127
|
-
it('options.provider overrides DEFAULT_AI_PROVIDER env var', async () => {
|
|
128
|
-
process.env.DEFAULT_AI_PROVIDER = 'openai';
|
|
129
|
-
const { createModelFromEnv, DEFAULT_MODELS } = await import('./index.js');
|
|
130
|
-
const model = createModelFromEnv({ provider: 'xai' });
|
|
131
|
-
expect(model).toEqual({
|
|
132
|
-
specificationVersion: 'v3',
|
|
133
|
-
modelId: DEFAULT_MODELS.xai,
|
|
134
|
-
provider: 'xai',
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
it('uses options.model for direct provider', async () => {
|
|
138
|
-
const { createModelFromEnv } = await import('./index.js');
|
|
139
|
-
const model = createModelFromEnv({ provider: 'openai', model: 'gpt-4-turbo' });
|
|
140
|
-
expect(model).toEqual({
|
|
141
|
-
specificationVersion: 'v3',
|
|
142
|
-
modelId: 'gpt-4-turbo',
|
|
143
|
-
provider: 'openai',
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
it('uses DEFAULT_AI_MODEL env var for direct provider', async () => {
|
|
147
|
-
process.env.DEFAULT_AI_MODEL = 'custom-model-name';
|
|
148
|
-
const { createModelFromEnv } = await import('./index.js');
|
|
149
|
-
const model = createModelFromEnv({ provider: 'openai' });
|
|
150
|
-
expect(model).toEqual({
|
|
151
|
-
specificationVersion: 'v3',
|
|
152
|
-
modelId: 'custom-model-name',
|
|
153
|
-
provider: 'openai',
|
|
154
|
-
});
|
|
155
|
-
});
|
|
45
|
+
it('throws when CUSTOM_PROVIDER_NAME is missing', async () => {
|
|
46
|
+
setRequiredEnv({ CUSTOM_PROVIDER_NAME: undefined });
|
|
47
|
+
const { createModelFromEnv } = await import('./index.js');
|
|
48
|
+
expect(() => createModelFromEnv()).toThrow('Missing required environment variable: CUSTOM_PROVIDER_NAME');
|
|
49
|
+
});
|
|
50
|
+
it('throws when CUSTOM_PROVIDER_BASE_URL is missing', async () => {
|
|
51
|
+
setRequiredEnv({ CUSTOM_PROVIDER_BASE_URL: undefined });
|
|
52
|
+
const { createModelFromEnv } = await import('./index.js');
|
|
53
|
+
expect(() => createModelFromEnv()).toThrow('Missing required environment variable: CUSTOM_PROVIDER_BASE_URL');
|
|
54
|
+
});
|
|
55
|
+
it('throws when CUSTOM_PROVIDER_API_KEY is missing', async () => {
|
|
56
|
+
setRequiredEnv({ CUSTOM_PROVIDER_API_KEY: undefined });
|
|
57
|
+
const { createModelFromEnv } = await import('./index.js');
|
|
58
|
+
expect(() => createModelFromEnv()).toThrow('Missing required environment variable: CUSTOM_PROVIDER_API_KEY');
|
|
59
|
+
});
|
|
60
|
+
it('throws when CUSTOM_PROVIDER_DEFAULT_MODEL is missing', async () => {
|
|
61
|
+
setRequiredEnv({ CUSTOM_PROVIDER_DEFAULT_MODEL: undefined });
|
|
62
|
+
const { createModelFromEnv } = await import('./index.js');
|
|
63
|
+
expect(() => createModelFromEnv()).toThrow('Missing required environment variable: CUSTOM_PROVIDER_DEFAULT_MODEL');
|
|
156
64
|
});
|
|
157
65
|
});
|
|
158
66
|
//# sourceMappingURL=index.specs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.specs.js","sourceRoot":"","sources":["../../src/index.specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,
|
|
1
|
+
{"version":3,"file":"index.specs.js","sourceRoot":"","sources":["../../src/index.specs.ts"],"names":[],"mappings":"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"}
|