@relayplane/proxy 0.2.0 → 0.2.1
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/dist/brain-client.d.ts +87 -0
- package/dist/brain-client.d.ts.map +1 -0
- package/dist/brain-client.js +205 -0
- package/dist/brain-client.js.map +1 -0
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +8 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -27
- package/dist/index.js.map +1 -1
- package/dist/standalone-proxy.d.ts +79 -0
- package/dist/standalone-proxy.d.ts.map +1 -0
- package/dist/standalone-proxy.js +2414 -0
- package/dist/standalone-proxy.js.map +1 -0
- package/dist/telemetry.d.ts +16 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +111 -0
- package/dist/telemetry.js.map +1 -1
- package/package.json +21 -16
- package/__tests__/server.test.ts +0 -512
- package/__tests__/telemetry.test.ts +0 -126
- package/dist/server.d.ts +0 -209
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -1089
- package/dist/server.js.map +0 -1
- package/dist/streaming.d.ts +0 -80
- package/dist/streaming.d.ts.map +0 -1
- package/dist/streaming.js +0 -271
- package/dist/streaming.js.map +0 -1
- package/src/cli.ts +0 -341
- package/src/config.ts +0 -206
- package/src/index.ts +0 -82
- package/src/server.ts +0 -1328
- package/src/streaming.ts +0 -331
- package/src/telemetry.ts +0 -343
- package/tsconfig.json +0 -19
- package/vitest.config.ts +0 -21
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brain API Client
|
|
3
|
+
*
|
|
4
|
+
* Calls the RelayPlane Brain API for intelligent routing decisions.
|
|
5
|
+
* Only used for Pro/Trial users with valid API keys.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Route request to Brain API
|
|
11
|
+
*/
|
|
12
|
+
export interface BrainRouteRequest {
|
|
13
|
+
taskType: string;
|
|
14
|
+
estimatedInputTokens?: number;
|
|
15
|
+
estimatedOutputTokens?: number;
|
|
16
|
+
requiresVision?: boolean;
|
|
17
|
+
requiresToolUse?: boolean;
|
|
18
|
+
requiresThinking?: boolean;
|
|
19
|
+
currentModel?: string;
|
|
20
|
+
prioritizeSpeed?: boolean;
|
|
21
|
+
prioritizeQuality?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Route response from Brain API
|
|
25
|
+
*/
|
|
26
|
+
export interface BrainRouteResponse {
|
|
27
|
+
success: boolean;
|
|
28
|
+
recommendedModel: string;
|
|
29
|
+
confidence: number;
|
|
30
|
+
estimatedCostUsd: number;
|
|
31
|
+
staticWouldChoose: string;
|
|
32
|
+
staticCostUsd: number;
|
|
33
|
+
savingsUsd: number;
|
|
34
|
+
explanation: {
|
|
35
|
+
reason: string;
|
|
36
|
+
factors: Array<{
|
|
37
|
+
name: string;
|
|
38
|
+
value: string;
|
|
39
|
+
impact: 'positive' | 'negative' | 'neutral';
|
|
40
|
+
weight: number;
|
|
41
|
+
}>;
|
|
42
|
+
networkData?: {
|
|
43
|
+
similarTaskSuccessRate: number;
|
|
44
|
+
totalSimilarTasks: number;
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
processingTimeMs: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if user has Brain access (Pro API key)
|
|
51
|
+
*/
|
|
52
|
+
export declare function hasBrainAccess(): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Get configured API key
|
|
55
|
+
*/
|
|
56
|
+
export declare function getApiKey(): string | null;
|
|
57
|
+
/**
|
|
58
|
+
* Set API key
|
|
59
|
+
*/
|
|
60
|
+
export declare function setApiKey(apiKey: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get routing recommendation from Brain API
|
|
63
|
+
*
|
|
64
|
+
* Falls back to static routing if Brain is unavailable.
|
|
65
|
+
*/
|
|
66
|
+
export declare function getRouteRecommendation(request: BrainRouteRequest): Promise<BrainRouteResponse | null>;
|
|
67
|
+
/**
|
|
68
|
+
* Get routing recommendation for a request
|
|
69
|
+
*
|
|
70
|
+
* Analyzes the request and calls Brain API to get the optimal model.
|
|
71
|
+
*/
|
|
72
|
+
export declare function getBrainRouting(inputTokens: number, outputTokens: number, currentModel: string, hasTools?: boolean, hasVision?: boolean): Promise<{
|
|
73
|
+
model: string;
|
|
74
|
+
reason: string;
|
|
75
|
+
isBrain: boolean;
|
|
76
|
+
}>;
|
|
77
|
+
/**
|
|
78
|
+
* Get provider status from Brain API
|
|
79
|
+
*/
|
|
80
|
+
export declare function getProviderStatus(): Promise<Array<{
|
|
81
|
+
provider: string;
|
|
82
|
+
status: 'healthy' | 'degraded' | 'down';
|
|
83
|
+
latencyP50Ms: number;
|
|
84
|
+
latencyP99Ms: number;
|
|
85
|
+
successRate: number;
|
|
86
|
+
}> | null>;
|
|
87
|
+
//# sourceMappingURL=brain-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-client.d.ts","sourceRoot":"","sources":["../src/brain-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;YAC5C,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;QACH,WAAW,CAAC,EAAE;YACZ,sBAAsB,EAAE,MAAM,CAAC;YAC/B,iBAAiB,EAAE,MAAM,CAAC;SAC3B,CAAC;KACH,CAAC;IACF,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAQxC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAWzC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAmB9C;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAwCpC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,OAAe,EACzB,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA4B9D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,GAAG,IAAI,CAAC,CAwBT"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Brain API Client
|
|
4
|
+
*
|
|
5
|
+
* Calls the RelayPlane Brain API for intelligent routing decisions.
|
|
6
|
+
* Only used for Pro/Trial users with valid API keys.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
+
exports.hasBrainAccess = hasBrainAccess;
|
|
45
|
+
exports.getApiKey = getApiKey;
|
|
46
|
+
exports.setApiKey = setApiKey;
|
|
47
|
+
exports.getRouteRecommendation = getRouteRecommendation;
|
|
48
|
+
exports.getBrainRouting = getBrainRouting;
|
|
49
|
+
exports.getProviderStatus = getProviderStatus;
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const config_js_1 = require("./config.js");
|
|
53
|
+
const telemetry_js_1 = require("./telemetry.js");
|
|
54
|
+
const BRAIN_API_URL = process.env.RELAYPLANE_API_URL || 'https://api.relayplane.com';
|
|
55
|
+
const BRAIN_TIMEOUT_MS = 5000; // 5 second timeout for Brain calls
|
|
56
|
+
/**
|
|
57
|
+
* Check if user has Brain access (Pro API key)
|
|
58
|
+
*/
|
|
59
|
+
function hasBrainAccess() {
|
|
60
|
+
if ((0, telemetry_js_1.isOfflineMode)())
|
|
61
|
+
return false;
|
|
62
|
+
const apiKey = getApiKey();
|
|
63
|
+
if (!apiKey)
|
|
64
|
+
return false;
|
|
65
|
+
// Pro keys start with 'rp_live_' or 'rp_trial_'
|
|
66
|
+
return apiKey.startsWith('rp_live_') || apiKey.startsWith('rp_trial_');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get configured API key
|
|
70
|
+
*/
|
|
71
|
+
function getApiKey() {
|
|
72
|
+
try {
|
|
73
|
+
const configPath = path.join((0, config_js_1.getConfigDir)(), 'config.json');
|
|
74
|
+
if (fs.existsSync(configPath)) {
|
|
75
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
76
|
+
return config.apiKey || null;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
// Ignore config read errors
|
|
81
|
+
}
|
|
82
|
+
return process.env.RELAYPLANE_API_KEY || null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Set API key
|
|
86
|
+
*/
|
|
87
|
+
function setApiKey(apiKey) {
|
|
88
|
+
const configDir = (0, config_js_1.getConfigDir)();
|
|
89
|
+
if (!fs.existsSync(configDir)) {
|
|
90
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
91
|
+
}
|
|
92
|
+
const configPath = path.join(configDir, 'config.json');
|
|
93
|
+
let config = {};
|
|
94
|
+
try {
|
|
95
|
+
if (fs.existsSync(configPath)) {
|
|
96
|
+
config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
// Start fresh
|
|
101
|
+
}
|
|
102
|
+
config.apiKey = apiKey;
|
|
103
|
+
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get routing recommendation from Brain API
|
|
107
|
+
*
|
|
108
|
+
* Falls back to static routing if Brain is unavailable.
|
|
109
|
+
*/
|
|
110
|
+
async function getRouteRecommendation(request) {
|
|
111
|
+
if (!hasBrainAccess()) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const apiKey = getApiKey();
|
|
115
|
+
if (!apiKey)
|
|
116
|
+
return null;
|
|
117
|
+
try {
|
|
118
|
+
const controller = new AbortController();
|
|
119
|
+
const timeout = setTimeout(() => controller.abort(), BRAIN_TIMEOUT_MS);
|
|
120
|
+
const response = await fetch(`${BRAIN_API_URL}/v1/route`, {
|
|
121
|
+
method: 'POST',
|
|
122
|
+
headers: {
|
|
123
|
+
'Content-Type': 'application/json',
|
|
124
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
125
|
+
},
|
|
126
|
+
body: JSON.stringify(request),
|
|
127
|
+
signal: controller.signal,
|
|
128
|
+
});
|
|
129
|
+
clearTimeout(timeout);
|
|
130
|
+
if (!response.ok) {
|
|
131
|
+
// Brain unavailable - fall back to static
|
|
132
|
+
console.warn(`[Brain] Route request failed: ${response.status}`);
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
const result = await response.json();
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
if (err instanceof Error && err.name === 'AbortError') {
|
|
140
|
+
console.warn('[Brain] Route request timed out');
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
console.warn('[Brain] Route request failed:', err);
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get routing recommendation for a request
|
|
150
|
+
*
|
|
151
|
+
* Analyzes the request and calls Brain API to get the optimal model.
|
|
152
|
+
*/
|
|
153
|
+
async function getBrainRouting(inputTokens, outputTokens, currentModel, hasTools = false, hasVision = false) {
|
|
154
|
+
// Infer task type
|
|
155
|
+
const taskType = (0, telemetry_js_1.inferTaskType)(inputTokens, outputTokens, currentModel, hasTools);
|
|
156
|
+
// Try Brain API
|
|
157
|
+
const brainResponse = await getRouteRecommendation({
|
|
158
|
+
taskType,
|
|
159
|
+
estimatedInputTokens: inputTokens,
|
|
160
|
+
estimatedOutputTokens: outputTokens,
|
|
161
|
+
requiresVision: hasVision,
|
|
162
|
+
requiresToolUse: hasTools,
|
|
163
|
+
currentModel,
|
|
164
|
+
});
|
|
165
|
+
if (brainResponse && brainResponse.success) {
|
|
166
|
+
return {
|
|
167
|
+
model: brainResponse.recommendedModel,
|
|
168
|
+
reason: brainResponse.explanation.reason,
|
|
169
|
+
isBrain: true,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
// Fall back to static routing
|
|
173
|
+
return {
|
|
174
|
+
model: currentModel,
|
|
175
|
+
reason: 'Static routing (Brain unavailable)',
|
|
176
|
+
isBrain: false,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get provider status from Brain API
|
|
181
|
+
*/
|
|
182
|
+
async function getProviderStatus() {
|
|
183
|
+
if (!hasBrainAccess()) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
const apiKey = getApiKey();
|
|
187
|
+
if (!apiKey)
|
|
188
|
+
return null;
|
|
189
|
+
try {
|
|
190
|
+
const response = await fetch(`${BRAIN_API_URL}/v1/status`, {
|
|
191
|
+
headers: {
|
|
192
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
193
|
+
},
|
|
194
|
+
});
|
|
195
|
+
if (!response.ok) {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
const result = await response.json();
|
|
199
|
+
return result.providers || null;
|
|
200
|
+
}
|
|
201
|
+
catch (err) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=brain-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brain-client.js","sourceRoot":"","sources":["../src/brain-client.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -34,10 +34,10 @@
|
|
|
34
34
|
* @packageDocumentation
|
|
35
35
|
*/
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
const
|
|
37
|
+
const standalone_proxy_js_1 = require("./standalone-proxy.js");
|
|
38
38
|
const config_js_1 = require("./config.js");
|
|
39
39
|
const telemetry_js_1 = require("./telemetry.js");
|
|
40
|
-
const VERSION = '0.2.
|
|
40
|
+
const VERSION = '0.2.1';
|
|
41
41
|
function printHelp() {
|
|
42
42
|
console.log(`
|
|
43
43
|
RelayPlane Proxy - Intelligent AI Model Routing
|
|
@@ -286,7 +286,7 @@ async function main() {
|
|
|
286
286
|
console.log(' ✓ Moonshot');
|
|
287
287
|
console.log('');
|
|
288
288
|
try {
|
|
289
|
-
await (0,
|
|
289
|
+
await (0, standalone_proxy_js_1.startProxy)({ port, host, verbose });
|
|
290
290
|
console.log('');
|
|
291
291
|
console.log(' To use, set these environment variables:');
|
|
292
292
|
console.log(` export ANTHROPIC_BASE_URL=http://${host}:${port}`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;AAEH
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,31 +3,22 @@
|
|
|
3
3
|
*
|
|
4
4
|
* RelayPlane Agent Ops Proxy Server
|
|
5
5
|
*
|
|
6
|
-
* Intelligent AI model routing with integrated observability
|
|
7
|
-
*
|
|
6
|
+
* Intelligent AI model routing with integrated observability.
|
|
7
|
+
* This is a standalone proxy that routes requests to optimal models
|
|
8
|
+
* based on task type and cost optimization.
|
|
8
9
|
*
|
|
9
10
|
* @example
|
|
10
11
|
* ```typescript
|
|
11
|
-
* import {
|
|
12
|
+
* import { startProxy } from '@relayplane/proxy';
|
|
12
13
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* providers: {
|
|
16
|
-
* anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },
|
|
17
|
-
* openai: { apiKey: process.env.OPENAI_API_KEY! },
|
|
18
|
-
* },
|
|
19
|
-
* });
|
|
20
|
-
*
|
|
21
|
-
* await server.start();
|
|
14
|
+
* // Start the proxy server
|
|
15
|
+
* await startProxy({ port: 3001 });
|
|
22
16
|
* ```
|
|
23
17
|
*
|
|
24
18
|
* @packageDocumentation
|
|
25
19
|
*/
|
|
26
|
-
export {
|
|
27
|
-
export type {
|
|
28
|
-
export { SSEWriter, createSSEWriter, streamProviderResponse, aggregateStreamingResponse, startKeepAlive, } from './streaming.js';
|
|
29
|
-
export type { SSEMessage } from './streaming.js';
|
|
30
|
-
export { startProxy, type ProxyConfig } from '@relayplane/openclaw';
|
|
20
|
+
export { startProxy } from './standalone-proxy.js';
|
|
21
|
+
export type { ProxyConfig } from './standalone-proxy.js';
|
|
31
22
|
export { loadConfig, saveConfig, updateConfig, isFirstRun, markFirstRunComplete, isTelemetryEnabled, enableTelemetry, disableTelemetry, getDeviceId, setApiKey, getApiKey, getConfigDir, getConfigPath, } from './config.js';
|
|
32
23
|
export type { ProxyConfig as ProxyLocalConfig } from './config.js';
|
|
33
24
|
export { recordTelemetry, inferTaskType, estimateCost, setAuditMode, isAuditMode, setOfflineMode, isOfflineMode, getAuditBuffer, clearAuditBuffer, getLocalTelemetry, getTelemetryStats, clearTelemetry, getTelemetryPath, printTelemetryDisclosure, } from './telemetry.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGnE,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,42 +4,25 @@
|
|
|
4
4
|
*
|
|
5
5
|
* RelayPlane Agent Ops Proxy Server
|
|
6
6
|
*
|
|
7
|
-
* Intelligent AI model routing with integrated observability
|
|
8
|
-
*
|
|
7
|
+
* Intelligent AI model routing with integrated observability.
|
|
8
|
+
* This is a standalone proxy that routes requests to optimal models
|
|
9
|
+
* based on task type and cost optimization.
|
|
9
10
|
*
|
|
10
11
|
* @example
|
|
11
12
|
* ```typescript
|
|
12
|
-
* import {
|
|
13
|
+
* import { startProxy } from '@relayplane/proxy';
|
|
13
14
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* providers: {
|
|
17
|
-
* anthropic: { apiKey: process.env.ANTHROPIC_API_KEY! },
|
|
18
|
-
* openai: { apiKey: process.env.OPENAI_API_KEY! },
|
|
19
|
-
* },
|
|
20
|
-
* });
|
|
21
|
-
*
|
|
22
|
-
* await server.start();
|
|
15
|
+
* // Start the proxy server
|
|
16
|
+
* await startProxy({ port: 3001 });
|
|
23
17
|
* ```
|
|
24
18
|
*
|
|
25
19
|
* @packageDocumentation
|
|
26
20
|
*/
|
|
27
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.printTelemetryDisclosure = exports.getTelemetryPath = exports.clearTelemetry = exports.getTelemetryStats = exports.getLocalTelemetry = exports.clearAuditBuffer = exports.getAuditBuffer = exports.isOfflineMode = exports.setOfflineMode = exports.isAuditMode = exports.setAuditMode = exports.estimateCost = exports.inferTaskType = exports.recordTelemetry = exports.getConfigPath = exports.getConfigDir = exports.getApiKey = exports.setApiKey = exports.getDeviceId = exports.disableTelemetry = exports.enableTelemetry = exports.isTelemetryEnabled = exports.markFirstRunComplete = exports.isFirstRun = exports.updateConfig = exports.saveConfig = exports.loadConfig = exports.startProxy =
|
|
29
|
-
//
|
|
30
|
-
var
|
|
31
|
-
Object.defineProperty(exports, "
|
|
32
|
-
Object.defineProperty(exports, "createProxyServer", { enumerable: true, get: function () { return server_js_1.createProxyServer; } });
|
|
33
|
-
// Streaming support (Phase 8)
|
|
34
|
-
var streaming_js_1 = require("./streaming.js");
|
|
35
|
-
Object.defineProperty(exports, "SSEWriter", { enumerable: true, get: function () { return streaming_js_1.SSEWriter; } });
|
|
36
|
-
Object.defineProperty(exports, "createSSEWriter", { enumerable: true, get: function () { return streaming_js_1.createSSEWriter; } });
|
|
37
|
-
Object.defineProperty(exports, "streamProviderResponse", { enumerable: true, get: function () { return streaming_js_1.streamProviderResponse; } });
|
|
38
|
-
Object.defineProperty(exports, "aggregateStreamingResponse", { enumerable: true, get: function () { return streaming_js_1.aggregateStreamingResponse; } });
|
|
39
|
-
Object.defineProperty(exports, "startKeepAlive", { enumerable: true, get: function () { return streaming_js_1.startKeepAlive; } });
|
|
40
|
-
// Legacy proxy functionality from openclaw
|
|
41
|
-
var openclaw_1 = require("@relayplane/openclaw");
|
|
42
|
-
Object.defineProperty(exports, "startProxy", { enumerable: true, get: function () { return openclaw_1.startProxy; } });
|
|
22
|
+
exports.printTelemetryDisclosure = exports.getTelemetryPath = exports.clearTelemetry = exports.getTelemetryStats = exports.getLocalTelemetry = exports.clearAuditBuffer = exports.getAuditBuffer = exports.isOfflineMode = exports.setOfflineMode = exports.isAuditMode = exports.setAuditMode = exports.estimateCost = exports.inferTaskType = exports.recordTelemetry = exports.getConfigPath = exports.getConfigDir = exports.getApiKey = exports.setApiKey = exports.getDeviceId = exports.disableTelemetry = exports.enableTelemetry = exports.isTelemetryEnabled = exports.markFirstRunComplete = exports.isFirstRun = exports.updateConfig = exports.saveConfig = exports.loadConfig = exports.startProxy = void 0;
|
|
23
|
+
// Standalone proxy (requires only @relayplane/core)
|
|
24
|
+
var standalone_proxy_js_1 = require("./standalone-proxy.js");
|
|
25
|
+
Object.defineProperty(exports, "startProxy", { enumerable: true, get: function () { return standalone_proxy_js_1.startProxy; } });
|
|
43
26
|
// Configuration
|
|
44
27
|
var config_js_1 = require("./config.js");
|
|
45
28
|
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_js_1.loadConfig; } });
|
|
@@ -71,4 +54,7 @@ Object.defineProperty(exports, "getTelemetryStats", { enumerable: true, get: fun
|
|
|
71
54
|
Object.defineProperty(exports, "clearTelemetry", { enumerable: true, get: function () { return telemetry_js_1.clearTelemetry; } });
|
|
72
55
|
Object.defineProperty(exports, "getTelemetryPath", { enumerable: true, get: function () { return telemetry_js_1.getTelemetryPath; } });
|
|
73
56
|
Object.defineProperty(exports, "printTelemetryDisclosure", { enumerable: true, get: function () { return telemetry_js_1.printTelemetryDisclosure; } });
|
|
57
|
+
// Note: Advanced features (ProxyServer, streaming, etc.) require additional
|
|
58
|
+
// dependencies. Install @relayplane/ledger, @relayplane/auth-gate, etc.
|
|
59
|
+
// for full functionality. See documentation for details.
|
|
74
60
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,oDAAoD;AACpD,6DAAmD;AAA1C,iHAAA,UAAU,OAAA;AAGnB,gBAAgB;AAChB,yCAcqB;AAbnB,uGAAA,UAAU,OAAA;AACV,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AACZ,uGAAA,UAAU,OAAA;AACV,iHAAA,oBAAoB,OAAA;AACpB,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,6GAAA,gBAAgB,OAAA;AAChB,wGAAA,WAAW,OAAA;AACX,sGAAA,SAAS,OAAA;AACT,sGAAA,SAAS,OAAA;AACT,yGAAA,YAAY,OAAA;AACZ,0GAAA,aAAa,OAAA;AAIf,YAAY;AACZ,+CAewB;AAdtB,+GAAA,eAAe,OAAA;AACf,6GAAA,aAAa,OAAA;AACb,4GAAA,YAAY,OAAA;AACZ,4GAAA,YAAY,OAAA;AACZ,2GAAA,WAAW,OAAA;AACX,8GAAA,cAAc,OAAA;AACd,6GAAA,aAAa,OAAA;AACb,8GAAA,cAAc,OAAA;AACd,gHAAA,gBAAgB,OAAA;AAChB,iHAAA,iBAAiB,OAAA;AACjB,iHAAA,iBAAiB,OAAA;AACjB,8GAAA,cAAc,OAAA;AACd,gHAAA,gBAAgB,OAAA;AAChB,wHAAA,wBAAwB,OAAA;AAO1B,4EAA4E;AAC5E,wEAAwE;AACxE,yDAAyD"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RelayPlane L2/L3 Proxy Server
|
|
3
|
+
*
|
|
4
|
+
* An LLM Gateway proxy that intelligently routes requests
|
|
5
|
+
* to the optimal model using @relayplane/core.
|
|
6
|
+
*
|
|
7
|
+
* Supports:
|
|
8
|
+
* - OpenAI-compatible API (/v1/chat/completions)
|
|
9
|
+
* - Native Anthropic API (/v1/messages) for Claude Code integration
|
|
10
|
+
* - Streaming (SSE) for both OpenAI and Anthropic formats
|
|
11
|
+
* - Auth passthrough for Claude Code (OAuth/subscription billing)
|
|
12
|
+
* - Cross-provider routing (Anthropic, OpenAI, Google, xAI)
|
|
13
|
+
* - Tool/function calling with format conversion
|
|
14
|
+
*
|
|
15
|
+
* Authentication:
|
|
16
|
+
* - Anthropic: Passthrough incoming Authorization header OR ANTHROPIC_API_KEY env
|
|
17
|
+
* - Other providers: Require provider-specific API key env vars
|
|
18
|
+
*
|
|
19
|
+
* @packageDocumentation
|
|
20
|
+
*/
|
|
21
|
+
import * as http from 'node:http';
|
|
22
|
+
import type { Provider } from '@relayplane/core';
|
|
23
|
+
/**
|
|
24
|
+
* Provider endpoint configuration
|
|
25
|
+
*/
|
|
26
|
+
export interface ProviderEndpoint {
|
|
27
|
+
baseUrl: string;
|
|
28
|
+
apiKeyEnv: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Default provider endpoints
|
|
32
|
+
*/
|
|
33
|
+
export declare const DEFAULT_ENDPOINTS: Record<string, ProviderEndpoint>;
|
|
34
|
+
/**
|
|
35
|
+
* Model to provider/model mapping
|
|
36
|
+
*/
|
|
37
|
+
export declare const MODEL_MAPPING: Record<string, {
|
|
38
|
+
provider: Provider;
|
|
39
|
+
model: string;
|
|
40
|
+
}>;
|
|
41
|
+
type RoutingSuffix = 'cost' | 'fast' | 'quality';
|
|
42
|
+
interface ParsedModel {
|
|
43
|
+
baseModel: string;
|
|
44
|
+
suffix: RoutingSuffix | null;
|
|
45
|
+
}
|
|
46
|
+
interface CascadeConfig {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
models: string[];
|
|
49
|
+
escalateOn: 'uncertainty' | 'refusal' | 'error';
|
|
50
|
+
maxEscalations: number;
|
|
51
|
+
}
|
|
52
|
+
type Complexity = 'simple' | 'moderate' | 'complex';
|
|
53
|
+
/**
|
|
54
|
+
* Proxy server configuration
|
|
55
|
+
*/
|
|
56
|
+
export interface ProxyConfig {
|
|
57
|
+
port?: number;
|
|
58
|
+
host?: string;
|
|
59
|
+
dbPath?: string;
|
|
60
|
+
verbose?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Auth passthrough mode for Anthropic requests.
|
|
63
|
+
* - 'passthrough': Forward incoming Authorization header to Anthropic (for Claude Code OAuth)
|
|
64
|
+
* - 'env': Always use ANTHROPIC_API_KEY env var
|
|
65
|
+
* - 'auto' (default): Use incoming auth if present, fallback to env var
|
|
66
|
+
*/
|
|
67
|
+
anthropicAuth?: 'passthrough' | 'env' | 'auto';
|
|
68
|
+
}
|
|
69
|
+
export declare function parseModelSuffix(model: string): ParsedModel;
|
|
70
|
+
export declare function classifyComplexity(messages: Array<{
|
|
71
|
+
content?: unknown;
|
|
72
|
+
}>): Complexity;
|
|
73
|
+
export declare function shouldEscalate(responseText: string, trigger: CascadeConfig['escalateOn']): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Start the RelayPlane proxy server
|
|
76
|
+
*/
|
|
77
|
+
export declare function startProxy(config?: ProxyConfig): Promise<http.Server>;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=standalone-proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standalone-proxy.d.ts","sourceRoot":"","sources":["../src/standalone-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAqB9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAa/E,CAAC;AAkBF,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjD,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CAC9B;AAcD,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,cAAc,EAAE,MAAM,CAAC;CACxB;AAmBD,KAAK,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AA6EpD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;CAChD;AAqOD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAe3D;AAsDD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,UAAU,CAiBrF;AAED,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,GAAG,OAAO,CAIlG;AAkzCD;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CA+1B/E"}
|