@relayplane/proxy 1.5.3 → 1.5.4
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/README.md +255 -21
- package/dist/cli.js +257 -2
- package/dist/cli.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/standalone-proxy.d.ts.map +1 -1
- package/dist/standalone-proxy.js +86 -31
- package/dist/standalone-proxy.js.map +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +11 -0
- package/dist/telemetry.js.map +1 -1
- package/package.json +2 -2
- package/dist/__tests__/model-suggestions.test.d.ts +0 -2
- package/dist/__tests__/model-suggestions.test.d.ts.map +0 -1
- package/dist/__tests__/model-suggestions.test.js +0 -67
- package/dist/__tests__/model-suggestions.test.js.map +0 -1
- package/dist/__tests__/routing-aliases.test.d.ts +0 -2
- package/dist/__tests__/routing-aliases.test.d.ts.map +0 -1
- package/dist/__tests__/routing-aliases.test.js +0 -81
- package/dist/__tests__/routing-aliases.test.js.map +0 -1
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const model_suggestions_js_1 = require("../utils/model-suggestions.js");
|
|
5
|
-
(0, vitest_1.describe)('suggestModels', () => {
|
|
6
|
-
const availableModels = [
|
|
7
|
-
'claude-sonnet-4',
|
|
8
|
-
'claude-opus-4-5',
|
|
9
|
-
'claude-3-5-sonnet',
|
|
10
|
-
'claude-3-5-haiku',
|
|
11
|
-
'gpt-4o',
|
|
12
|
-
'gpt-4o-mini',
|
|
13
|
-
'rp:best',
|
|
14
|
-
'rp:fast',
|
|
15
|
-
'rp:balanced',
|
|
16
|
-
];
|
|
17
|
-
(0, vitest_1.it)('should suggest similar models for typos', () => {
|
|
18
|
-
const suggestions = (0, model_suggestions_js_1.suggestModels)('claud-sonnet', availableModels);
|
|
19
|
-
(0, vitest_1.expect)(suggestions).toContain('claude-sonnet-4');
|
|
20
|
-
});
|
|
21
|
-
(0, vitest_1.it)('should suggest claude-sonnet-4 for "claude-sonet-4" typo', () => {
|
|
22
|
-
const suggestions = (0, model_suggestions_js_1.suggestModels)('claude-sonet-4', availableModels);
|
|
23
|
-
(0, vitest_1.expect)(suggestions[0]).toBe('claude-sonnet-4');
|
|
24
|
-
});
|
|
25
|
-
(0, vitest_1.it)('should suggest gpt-4o for "gpt4o" typo', () => {
|
|
26
|
-
const suggestions = (0, model_suggestions_js_1.suggestModels)('gpt4o', availableModels);
|
|
27
|
-
(0, vitest_1.expect)(suggestions).toContain('gpt-4o');
|
|
28
|
-
});
|
|
29
|
-
(0, vitest_1.it)('should return empty array for completely different strings', () => {
|
|
30
|
-
const suggestions = (0, model_suggestions_js_1.suggestModels)('totally-random-model-xyz', availableModels);
|
|
31
|
-
(0, vitest_1.expect)(suggestions.length).toBeLessThanOrEqual(3);
|
|
32
|
-
});
|
|
33
|
-
(0, vitest_1.it)('should limit results to max parameter', () => {
|
|
34
|
-
const suggestions = (0, model_suggestions_js_1.suggestModels)('claude', availableModels, 2);
|
|
35
|
-
(0, vitest_1.expect)(suggestions.length).toBeLessThanOrEqual(2);
|
|
36
|
-
});
|
|
37
|
-
(0, vitest_1.it)('should be case-insensitive', () => {
|
|
38
|
-
const suggestions = (0, model_suggestions_js_1.suggestModels)('CLAUDE-SONNET-4', availableModels);
|
|
39
|
-
(0, vitest_1.expect)(suggestions).toContain('claude-sonnet-4');
|
|
40
|
-
});
|
|
41
|
-
(0, vitest_1.it)('should suggest rp:best for "rp:bst" typo', () => {
|
|
42
|
-
const suggestions = (0, model_suggestions_js_1.suggestModels)('rp:bst', availableModels);
|
|
43
|
-
(0, vitest_1.expect)(suggestions).toContain('rp:best');
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
(0, vitest_1.describe)('buildModelNotFoundError', () => {
|
|
47
|
-
const availableModels = [
|
|
48
|
-
'claude-sonnet-4',
|
|
49
|
-
'claude-opus-4-5',
|
|
50
|
-
'gpt-4o',
|
|
51
|
-
];
|
|
52
|
-
(0, vitest_1.it)('should build error with suggestions for close match', () => {
|
|
53
|
-
const error = (0, model_suggestions_js_1.buildModelNotFoundError)('claude-sonet-4', availableModels);
|
|
54
|
-
(0, vitest_1.expect)(error.error).toContain('claude-sonet-4');
|
|
55
|
-
(0, vitest_1.expect)(error.error).toContain('does not exist');
|
|
56
|
-
(0, vitest_1.expect)(error.suggestions).toBeDefined();
|
|
57
|
-
(0, vitest_1.expect)(error.suggestions).toContain('claude-sonnet-4');
|
|
58
|
-
(0, vitest_1.expect)(error.hint).toBe("Did you mean 'claude-sonnet-4'?");
|
|
59
|
-
});
|
|
60
|
-
(0, vitest_1.it)('should build error without suggestions for no close match', () => {
|
|
61
|
-
const error = (0, model_suggestions_js_1.buildModelNotFoundError)('totally-random-xyz-12345', availableModels);
|
|
62
|
-
(0, vitest_1.expect)(error.error).toContain('totally-random-xyz-12345');
|
|
63
|
-
(0, vitest_1.expect)(error.suggestions).toBeUndefined();
|
|
64
|
-
(0, vitest_1.expect)(error.hint).toBeUndefined();
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
//# sourceMappingURL=model-suggestions.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-suggestions.test.js","sourceRoot":"","sources":["../../src/__tests__/model-suggestions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routing-aliases.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/routing-aliases.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const vitest_1 = require("vitest");
|
|
4
|
-
const standalone_proxy_js_1 = require("../standalone-proxy.js");
|
|
5
|
-
(0, vitest_1.describe)('RELAYPLANE_ALIASES', () => {
|
|
6
|
-
(0, vitest_1.it)('should map relayplane:auto to rp:balanced', () => {
|
|
7
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.RELAYPLANE_ALIASES['relayplane:auto']).toBe('rp:balanced');
|
|
8
|
-
});
|
|
9
|
-
(0, vitest_1.it)('should map rp:auto to rp:balanced', () => {
|
|
10
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.RELAYPLANE_ALIASES['rp:auto']).toBe('rp:balanced');
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
(0, vitest_1.describe)('SMART_ALIASES', () => {
|
|
14
|
-
(0, vitest_1.it)('should have rp:best pointing to a valid model', () => {
|
|
15
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:best']).toBeDefined();
|
|
16
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:best'].provider).toBe('anthropic');
|
|
17
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:best'].model).toContain('claude');
|
|
18
|
-
});
|
|
19
|
-
(0, vitest_1.it)('should have rp:fast pointing to a fast model', () => {
|
|
20
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:fast']).toBeDefined();
|
|
21
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:fast'].model).toContain('haiku');
|
|
22
|
-
});
|
|
23
|
-
(0, vitest_1.it)('should have rp:cheap pointing to a cheap model', () => {
|
|
24
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:cheap']).toBeDefined();
|
|
25
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:cheap'].model).toContain('mini');
|
|
26
|
-
});
|
|
27
|
-
(0, vitest_1.it)('should have rp:balanced pointing to a balanced model', () => {
|
|
28
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:balanced']).toBeDefined();
|
|
29
|
-
});
|
|
30
|
-
(0, vitest_1.it)('should point to existing models', () => {
|
|
31
|
-
// Verify model names are valid API model IDs
|
|
32
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:best'].model).toMatch(/claude-.*-\d{8}$/);
|
|
33
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:fast'].model).toMatch(/claude-.*-\d{8}$/);
|
|
34
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.SMART_ALIASES['rp:balanced'].model).toMatch(/claude-.*-\d{8}$/);
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
(0, vitest_1.describe)('resolveModelAlias', () => {
|
|
38
|
-
(0, vitest_1.it)('should resolve relayplane:auto to rp:balanced', () => {
|
|
39
|
-
(0, vitest_1.expect)((0, standalone_proxy_js_1.resolveModelAlias)('relayplane:auto')).toBe('rp:balanced');
|
|
40
|
-
});
|
|
41
|
-
(0, vitest_1.it)('should resolve rp:auto to rp:balanced', () => {
|
|
42
|
-
(0, vitest_1.expect)((0, standalone_proxy_js_1.resolveModelAlias)('rp:auto')).toBe('rp:balanced');
|
|
43
|
-
});
|
|
44
|
-
(0, vitest_1.it)('should return unchanged for non-alias models', () => {
|
|
45
|
-
(0, vitest_1.expect)((0, standalone_proxy_js_1.resolveModelAlias)('claude-sonnet-4')).toBe('claude-sonnet-4');
|
|
46
|
-
(0, vitest_1.expect)((0, standalone_proxy_js_1.resolveModelAlias)('gpt-4o')).toBe('gpt-4o');
|
|
47
|
-
(0, vitest_1.expect)((0, standalone_proxy_js_1.resolveModelAlias)('rp:best')).toBe('rp:best');
|
|
48
|
-
});
|
|
49
|
-
(0, vitest_1.it)('should return unchanged for unknown models', () => {
|
|
50
|
-
(0, vitest_1.expect)((0, standalone_proxy_js_1.resolveModelAlias)('unknown-model')).toBe('unknown-model');
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
(0, vitest_1.describe)('getAvailableModelNames', () => {
|
|
54
|
-
(0, vitest_1.it)('should include MODEL_MAPPING keys', () => {
|
|
55
|
-
const available = (0, standalone_proxy_js_1.getAvailableModelNames)();
|
|
56
|
-
(0, vitest_1.expect)(available).toContain('claude-sonnet-4');
|
|
57
|
-
(0, vitest_1.expect)(available).toContain('gpt-4o');
|
|
58
|
-
});
|
|
59
|
-
(0, vitest_1.it)('should include SMART_ALIASES keys', () => {
|
|
60
|
-
const available = (0, standalone_proxy_js_1.getAvailableModelNames)();
|
|
61
|
-
(0, vitest_1.expect)(available).toContain('rp:best');
|
|
62
|
-
(0, vitest_1.expect)(available).toContain('rp:fast');
|
|
63
|
-
(0, vitest_1.expect)(available).toContain('rp:balanced');
|
|
64
|
-
});
|
|
65
|
-
(0, vitest_1.it)('should include relayplane routing models', () => {
|
|
66
|
-
const available = (0, standalone_proxy_js_1.getAvailableModelNames)();
|
|
67
|
-
(0, vitest_1.expect)(available).toContain('relayplane:auto');
|
|
68
|
-
(0, vitest_1.expect)(available).toContain('relayplane:cost');
|
|
69
|
-
(0, vitest_1.expect)(available).toContain('relayplane:fast');
|
|
70
|
-
(0, vitest_1.expect)(available).toContain('relayplane:quality');
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
(0, vitest_1.describe)('MODEL_MAPPING', () => {
|
|
74
|
-
(0, vitest_1.it)('should have updated sonnet pointing to claude-sonnet-4', () => {
|
|
75
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.MODEL_MAPPING['sonnet'].model).toContain('claude-sonnet-4');
|
|
76
|
-
});
|
|
77
|
-
(0, vitest_1.it)('should have updated opus pointing to claude-opus-4-5', () => {
|
|
78
|
-
(0, vitest_1.expect)(standalone_proxy_js_1.MODEL_MAPPING['opus'].model).toContain('claude-opus-4-5');
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
//# sourceMappingURL=routing-aliases.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routing-aliases.test.js","sourceRoot":"","sources":["../../src/__tests__/routing-aliases.test.ts"],"names":[],"mappings":"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"}
|