@fentz26/envcp 1.2.0-exp.1 → 1.2.0-exp.92feaad
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 +8 -1
- package/VERSION +1 -1
- package/dist/adapters/base.d.ts +42 -4
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/base.js +153 -26
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/gemini.d.ts +1 -4
- package/dist/adapters/gemini.d.ts.map +1 -1
- package/dist/adapters/gemini.js +22 -111
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/openai.d.ts +1 -4
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +26 -125
- package/dist/adapters/openai.js.map +1 -1
- package/dist/adapters/rest.d.ts +1 -1
- package/dist/adapters/rest.d.ts.map +1 -1
- package/dist/adapters/rest.js +36 -16
- package/dist/adapters/rest.js.map +1 -1
- package/dist/cli/index.js +278 -107
- package/dist/cli/index.js.map +1 -1
- package/dist/config/config-guard.d.ts.map +1 -1
- package/dist/config/config-guard.js +9 -4
- package/dist/config/config-guard.js.map +1 -1
- package/dist/config/config-hmac.js +2 -2
- package/dist/config/config-hmac.js.map +1 -1
- package/dist/config/manager.d.ts +6 -2
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +53 -33
- package/dist/config/manager.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +7 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/server/unified.d.ts.map +1 -1
- package/dist/server/unified.js +10 -10
- package/dist/server/unified.js.map +1 -1
- package/dist/service/config.d.ts.map +1 -1
- package/dist/service/config.js +5 -4
- package/dist/service/config.js.map +1 -1
- package/dist/service/generators.d.ts.map +1 -1
- package/dist/service/generators.js +6 -8
- package/dist/service/generators.js.map +1 -1
- package/dist/service/index.js +4 -3
- package/dist/service/index.js.map +1 -1
- package/dist/service/platform.js +2 -2
- package/dist/service/platform.js.map +1 -1
- package/dist/storage/index.d.ts +14 -1
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +67 -27
- package/dist/storage/index.js.map +1 -1
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/crypto.js +2 -2
- package/dist/utils/crypto.js.map +1 -1
- package/dist/utils/fs.d.ts +1 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +17 -5
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/hsm.d.ts +8 -8
- package/dist/utils/hsm.d.ts.map +1 -1
- package/dist/utils/hsm.js +7 -6
- package/dist/utils/hsm.js.map +1 -1
- package/dist/utils/http.d.ts +1 -1
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +1 -1
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/keychain.js +4 -4
- package/dist/utils/keychain.js.map +1 -1
- package/dist/utils/lock.d.ts.map +1 -1
- package/dist/utils/lock.js +2 -1
- package/dist/utils/lock.js.map +1 -1
- package/dist/utils/lockout.d.ts +2 -2
- package/dist/utils/lockout.d.ts.map +1 -1
- package/dist/utils/lockout.js +3 -3
- package/dist/utils/lockout.js.map +1 -1
- package/dist/utils/prompt.js +3 -3
- package/dist/utils/prompt.js.map +1 -1
- package/dist/utils/secure-memory.d.ts.map +1 -1
- package/dist/utils/secure-memory.js +6 -3
- package/dist/utils/secure-memory.js.map +1 -1
- package/dist/utils/session.js +3 -3
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/update-checker.d.ts +3 -0
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +51 -5
- package/dist/utils/update-checker.js.map +1 -1
- package/dist/vault/index.d.ts +2 -0
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/index.js +17 -5
- package/dist/vault/index.js.map +1 -1
- package/dist/version.js +3 -3
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
- package/scripts/sync-version.js +65 -23
package/dist/adapters/gemini.js
CHANGED
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
import { BaseAdapter } from './base.js';
|
|
2
|
-
import {
|
|
2
|
+
import { sendJson, parseBody } from '../utils/http.js';
|
|
3
3
|
import { VERSION } from '../version.js';
|
|
4
|
-
import * as http from 'http';
|
|
5
4
|
export class GeminiAdapter extends BaseAdapter {
|
|
6
5
|
server = null;
|
|
7
|
-
rateLimiter = new RateLimiter(60, 60000);
|
|
8
|
-
constructor(config, projectPath, password, vaultPath) {
|
|
9
|
-
super(config, projectPath, password, vaultPath);
|
|
10
|
-
}
|
|
11
|
-
registerTools() {
|
|
12
|
-
this.registerDefaultTools();
|
|
13
|
-
}
|
|
14
|
-
// Convert tools to Gemini function declaration format
|
|
15
6
|
getGeminiFunctionDeclarations() {
|
|
16
|
-
return this.
|
|
17
|
-
name: tool.name,
|
|
18
|
-
description: tool.description,
|
|
19
|
-
parameters: {
|
|
20
|
-
type: 'object',
|
|
21
|
-
properties: tool.parameters.properties || {},
|
|
22
|
-
required: tool.parameters.required,
|
|
23
|
-
},
|
|
24
|
-
}));
|
|
7
|
+
return this.getStructuredToolDefinitions();
|
|
25
8
|
}
|
|
26
|
-
// Process Gemini function calls
|
|
27
9
|
async processFunctionCalls(calls) {
|
|
28
10
|
const results = [];
|
|
29
11
|
for (const call of calls) {
|
|
@@ -46,36 +28,16 @@ export class GeminiAdapter extends BaseAdapter {
|
|
|
46
28
|
}
|
|
47
29
|
async startServer(port, host, apiKey, rateLimitConfig) {
|
|
48
30
|
await this.init();
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
res.end();
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
if (rateLimitEnabled && !rateLimitMiddleware(this.rateLimiter, req, res, whitelist)) {
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
// API key validation
|
|
66
|
-
if (apiKey) {
|
|
67
|
-
const providedKey = (req.headers['x-goog-api-key'] || req.headers['authorization']?.replace(/^Bearer\s+/i, ''));
|
|
68
|
-
if (!validateApiKey(providedKey, apiKey)) {
|
|
69
|
-
await this.logs.log({ timestamp: new Date().toISOString(), operation: 'auth_failure', variable: '', source: 'api', success: false, message: `Invalid API key from ${req.socket.remoteAddress || 'unknown'}` });
|
|
70
|
-
sendJson(res, 401, { error: { code: 401, message: 'Invalid API key', status: 'UNAUTHENTICATED' } });
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
const parsedUrl = new URL(req.url || '/', `http://${req.headers.host ?? 'localhost'}`);
|
|
75
|
-
const pathname = parsedUrl.pathname;
|
|
76
|
-
try {
|
|
77
|
-
// Gemini-compatible endpoints
|
|
78
|
-
// GET /v1/models - List models
|
|
31
|
+
this.server = await this.createHttpServer({
|
|
32
|
+
port,
|
|
33
|
+
host,
|
|
34
|
+
apiKey,
|
|
35
|
+
rateLimitConfig,
|
|
36
|
+
defaultClientId: 'gemini',
|
|
37
|
+
authHeaderFn: (req) => (req.headers['x-goog-api-key'] || req.headers['authorization']?.replace(/^Bearer\s+/i, '')),
|
|
38
|
+
healthEndpoints: ['/v1/health', '/'],
|
|
39
|
+
mode: 'gemini',
|
|
40
|
+
onRequest: async (req, res, pathname, clientId) => {
|
|
79
41
|
if (pathname === '/v1/models' && req.method === 'GET') {
|
|
80
42
|
sendJson(res, 200, {
|
|
81
43
|
models: [{
|
|
@@ -87,16 +49,10 @@ export class GeminiAdapter extends BaseAdapter {
|
|
|
87
49
|
});
|
|
88
50
|
return;
|
|
89
51
|
}
|
|
90
|
-
// GET /v1/tools - List available tools/functions
|
|
91
52
|
if (pathname === '/v1/tools' && req.method === 'GET') {
|
|
92
|
-
sendJson(res, 200, {
|
|
93
|
-
tools: [{
|
|
94
|
-
functionDeclarations: this.getGeminiFunctionDeclarations(),
|
|
95
|
-
}],
|
|
96
|
-
});
|
|
53
|
+
sendJson(res, 200, { tools: [{ functionDeclarations: this.getGeminiFunctionDeclarations() }] });
|
|
97
54
|
return;
|
|
98
55
|
}
|
|
99
|
-
// POST /v1/functions/call - Call a function directly
|
|
100
56
|
if (pathname === '/v1/functions/call' && req.method === 'POST') {
|
|
101
57
|
const body = await parseBody(req);
|
|
102
58
|
const { name, args } = body;
|
|
@@ -104,14 +60,10 @@ export class GeminiAdapter extends BaseAdapter {
|
|
|
104
60
|
sendJson(res, 400, { error: { code: 400, message: 'Function name required', status: 'INVALID_ARGUMENT' } });
|
|
105
61
|
return;
|
|
106
62
|
}
|
|
107
|
-
const result = await this.callTool(name, args || {});
|
|
108
|
-
sendJson(res, 200, {
|
|
109
|
-
name,
|
|
110
|
-
response: { result },
|
|
111
|
-
});
|
|
63
|
+
const result = await this.callTool(name, args || {}, clientId);
|
|
64
|
+
sendJson(res, 200, { name, response: { result } });
|
|
112
65
|
return;
|
|
113
66
|
}
|
|
114
|
-
// POST /v1/function_calls - Process function calls (batch)
|
|
115
67
|
if (pathname === '/v1/function_calls' && req.method === 'POST') {
|
|
116
68
|
const body = await parseBody(req);
|
|
117
69
|
const { functionCalls } = body;
|
|
@@ -120,80 +72,40 @@ export class GeminiAdapter extends BaseAdapter {
|
|
|
120
72
|
return;
|
|
121
73
|
}
|
|
122
74
|
const results = await this.processFunctionCalls(functionCalls);
|
|
123
|
-
sendJson(res, 200, {
|
|
124
|
-
functionResponses: results,
|
|
125
|
-
});
|
|
75
|
+
sendJson(res, 200, { functionResponses: results });
|
|
126
76
|
return;
|
|
127
77
|
}
|
|
128
|
-
// POST /v1/models/envcp:generateContent - Gemini-style content generation
|
|
129
78
|
if ((pathname === '/v1/models/envcp:generateContent' || pathname === '/v1beta/models/envcp:generateContent') && req.method === 'POST') {
|
|
130
79
|
const body = await parseBody(req);
|
|
131
80
|
const contents = body.contents;
|
|
132
|
-
// Look for function calls in the content
|
|
133
81
|
const functionCalls = [];
|
|
134
82
|
if (contents) {
|
|
135
83
|
for (const content of contents) {
|
|
136
84
|
for (const part of content.parts || []) {
|
|
137
|
-
if (part.functionCall)
|
|
85
|
+
if (part.functionCall)
|
|
138
86
|
functionCalls.push(part.functionCall);
|
|
139
|
-
}
|
|
140
87
|
}
|
|
141
88
|
}
|
|
142
89
|
}
|
|
143
90
|
if (functionCalls.length > 0) {
|
|
144
91
|
const results = await this.processFunctionCalls(functionCalls);
|
|
145
92
|
sendJson(res, 200, {
|
|
146
|
-
candidates: [{
|
|
147
|
-
content: {
|
|
148
|
-
parts: results.map(r => ({
|
|
149
|
-
functionResponse: r,
|
|
150
|
-
})),
|
|
151
|
-
role: 'model',
|
|
152
|
-
},
|
|
153
|
-
finishReason: 'STOP',
|
|
154
|
-
}],
|
|
93
|
+
candidates: [{ content: { parts: results.map(r => ({ functionResponse: r })), role: 'model' }, finishReason: 'STOP' }],
|
|
155
94
|
});
|
|
156
95
|
return;
|
|
157
96
|
}
|
|
158
|
-
// Return available tools if no function calls
|
|
159
97
|
sendJson(res, 200, {
|
|
160
|
-
candidates: [{
|
|
161
|
-
|
|
162
|
-
parts: [{
|
|
163
|
-
text: 'EnvCP tools available. Use function calling to interact with environment variables.',
|
|
164
|
-
}],
|
|
165
|
-
role: 'model',
|
|
166
|
-
},
|
|
167
|
-
finishReason: 'STOP',
|
|
168
|
-
}],
|
|
169
|
-
availableTools: [{
|
|
170
|
-
functionDeclarations: this.getGeminiFunctionDeclarations(),
|
|
171
|
-
}],
|
|
98
|
+
candidates: [{ content: { parts: [{ text: 'EnvCP tools available. Use function calling to interact with environment variables.' }], role: 'model' }, finishReason: 'STOP' }],
|
|
99
|
+
availableTools: [{ functionDeclarations: this.getGeminiFunctionDeclarations() }],
|
|
172
100
|
});
|
|
173
101
|
return;
|
|
174
102
|
}
|
|
175
|
-
// Health check
|
|
176
103
|
if (pathname === '/v1/health' || pathname === '/') {
|
|
177
|
-
sendJson(res, 200, {
|
|
178
|
-
status: 'ok',
|
|
179
|
-
version: VERSION,
|
|
180
|
-
mode: 'gemini',
|
|
181
|
-
endpoints: ['/v1/models', '/v1/tools', '/v1/functions/call', '/v1/function_calls', '/v1/models/envcp:generateContent'],
|
|
182
|
-
});
|
|
104
|
+
sendJson(res, 200, { status: 'ok', version: VERSION, mode: 'gemini', endpoints: ['/v1/models', '/v1/tools', '/v1/functions/call', '/v1/function_calls', '/v1/models/envcp:generateContent'] });
|
|
183
105
|
return;
|
|
184
106
|
}
|
|
185
|
-
// 404
|
|
186
107
|
sendJson(res, 404, { error: { code: 404, message: 'Not found', status: 'NOT_FOUND' } });
|
|
187
|
-
}
|
|
188
|
-
catch (error) {
|
|
189
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
190
|
-
sendJson(res, 500, { error: { code: 500, message, status: 'INTERNAL' } });
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
return new Promise((resolve) => {
|
|
194
|
-
this.server.listen(port, host, () => {
|
|
195
|
-
resolve();
|
|
196
|
-
});
|
|
108
|
+
},
|
|
197
109
|
});
|
|
198
110
|
}
|
|
199
111
|
stopServer() {
|
|
@@ -201,7 +113,6 @@ export class GeminiAdapter extends BaseAdapter {
|
|
|
201
113
|
this.server.close();
|
|
202
114
|
this.server = null;
|
|
203
115
|
}
|
|
204
|
-
this.rateLimiter?.destroy();
|
|
205
116
|
}
|
|
206
117
|
}
|
|
207
118
|
//# sourceMappingURL=gemini.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { BaseAdapter } from './base.js';
|
|
2
|
-
import {
|
|
2
|
+
import { OpenAIFunction, OpenAIToolCall, OpenAIMessage, RateLimitConfig } from '../types.js';
|
|
3
3
|
export declare class OpenAIAdapter extends BaseAdapter {
|
|
4
4
|
private server;
|
|
5
|
-
private rateLimiter;
|
|
6
|
-
constructor(config: EnvCPConfig, projectPath: string, password?: string, vaultPath?: string);
|
|
7
|
-
protected registerTools(): void;
|
|
8
5
|
getOpenAIFunctions(): OpenAIFunction[];
|
|
9
6
|
processToolCalls(toolCalls: OpenAIToolCall[]): Promise<OpenAIMessage[]>;
|
|
10
7
|
startServer(port: number, host: string, apiKey?: string, rateLimitConfig?: RateLimitConfig): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK7F,qBAAa,aAAc,SAAQ,WAAW;IAC5C,OAAO,CAAC,MAAM,CAA4B;IAE1C,kBAAkB,IAAI,cAAc,EAAE;IAIhC,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAyBvE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAyFhH,UAAU,IAAI,IAAI;CAMnB"}
|
package/dist/adapters/openai.js
CHANGED
|
@@ -1,29 +1,11 @@
|
|
|
1
1
|
import { BaseAdapter } from './base.js';
|
|
2
|
-
import {
|
|
2
|
+
import { sendJson, parseBody } from '../utils/http.js';
|
|
3
3
|
import { VERSION } from '../version.js';
|
|
4
|
-
import * as http from 'http';
|
|
5
4
|
export class OpenAIAdapter extends BaseAdapter {
|
|
6
5
|
server = null;
|
|
7
|
-
rateLimiter = new RateLimiter(60, 60000);
|
|
8
|
-
constructor(config, projectPath, password, vaultPath) {
|
|
9
|
-
super(config, projectPath, password, vaultPath);
|
|
10
|
-
}
|
|
11
|
-
registerTools() {
|
|
12
|
-
this.registerDefaultTools();
|
|
13
|
-
}
|
|
14
|
-
// Convert tools to OpenAI function format
|
|
15
6
|
getOpenAIFunctions() {
|
|
16
|
-
return this.
|
|
17
|
-
name: tool.name,
|
|
18
|
-
description: tool.description,
|
|
19
|
-
parameters: {
|
|
20
|
-
type: 'object',
|
|
21
|
-
properties: tool.parameters.properties || {},
|
|
22
|
-
required: tool.parameters.required,
|
|
23
|
-
},
|
|
24
|
-
}));
|
|
7
|
+
return this.getStructuredToolDefinitions();
|
|
25
8
|
}
|
|
26
|
-
// Process OpenAI tool calls
|
|
27
9
|
async processToolCalls(toolCalls) {
|
|
28
10
|
const results = [];
|
|
29
11
|
for (const call of toolCalls) {
|
|
@@ -49,57 +31,29 @@ export class OpenAIAdapter extends BaseAdapter {
|
|
|
49
31
|
}
|
|
50
32
|
async startServer(port, host, apiKey, rateLimitConfig) {
|
|
51
33
|
await this.init();
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
if (rateLimitEnabled && !rateLimitMiddleware(this.rateLimiter, req, res, whitelist)) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
// API key validation
|
|
69
|
-
if (apiKey) {
|
|
70
|
-
const providedKey = req.headers['authorization']?.replace(/^Bearer\s+/i, '');
|
|
71
|
-
if (!validateApiKey(providedKey, apiKey)) {
|
|
72
|
-
await this.logs.log({ timestamp: new Date().toISOString(), operation: 'auth_failure', variable: '', source: 'api', success: false, message: `Invalid API key from ${req.socket.remoteAddress || 'unknown'}` });
|
|
73
|
-
sendJson(res, 401, { error: { message: 'Invalid API key', type: 'invalid_api_key' } });
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
const parsedUrl = new URL(req.url || '/', `http://${req.headers.host ?? 'localhost'}`);
|
|
78
|
-
const pathname = parsedUrl.pathname;
|
|
79
|
-
try {
|
|
80
|
-
// OpenAI-compatible endpoints
|
|
81
|
-
// GET /v1/models - List models (for compatibility)
|
|
34
|
+
this.server = await this.createHttpServer({
|
|
35
|
+
port,
|
|
36
|
+
host,
|
|
37
|
+
apiKey,
|
|
38
|
+
rateLimitConfig,
|
|
39
|
+
defaultClientId: 'openai',
|
|
40
|
+
authHeaderFn: (req) => req.headers['authorization']?.replace(/^Bearer\s+/i, ''),
|
|
41
|
+
authFailureResponse: (message) => ({ error: { message, type: 'invalid_api_key' } }),
|
|
42
|
+
internalErrorResponse: (message) => ({ error: { message, type: 'internal_error' } }),
|
|
43
|
+
healthEndpoints: ['/v1/health', '/'],
|
|
44
|
+
mode: 'openai',
|
|
45
|
+
onRequest: async (req, res, pathname, clientId) => {
|
|
82
46
|
if (pathname === '/v1/models' && req.method === 'GET') {
|
|
83
47
|
sendJson(res, 200, {
|
|
84
48
|
object: 'list',
|
|
85
|
-
data: [{
|
|
86
|
-
id: `envcp-${VERSION}`,
|
|
87
|
-
object: 'model',
|
|
88
|
-
created: Date.now(),
|
|
89
|
-
owned_by: 'envcp',
|
|
90
|
-
}],
|
|
49
|
+
data: [{ id: `envcp-${VERSION}`, object: 'model', created: Date.now(), owned_by: 'envcp' }],
|
|
91
50
|
});
|
|
92
51
|
return;
|
|
93
52
|
}
|
|
94
|
-
// GET /v1/functions - List available functions
|
|
95
53
|
if (pathname === '/v1/functions' && req.method === 'GET') {
|
|
96
|
-
sendJson(res, 200, {
|
|
97
|
-
object: 'list',
|
|
98
|
-
data: this.getOpenAIFunctions(),
|
|
99
|
-
});
|
|
54
|
+
sendJson(res, 200, { object: 'list', data: this.getOpenAIFunctions() });
|
|
100
55
|
return;
|
|
101
56
|
}
|
|
102
|
-
// POST /v1/functions/call - Call a function directly
|
|
103
57
|
if (pathname === '/v1/functions/call' && req.method === 'POST') {
|
|
104
58
|
const body = await parseBody(req);
|
|
105
59
|
const { name, arguments: args } = body;
|
|
@@ -107,15 +61,10 @@ export class OpenAIAdapter extends BaseAdapter {
|
|
|
107
61
|
sendJson(res, 400, { error: { message: 'Function name required', type: 'invalid_request_error' } });
|
|
108
62
|
return;
|
|
109
63
|
}
|
|
110
|
-
const result = await this.callTool(name, args || {});
|
|
111
|
-
sendJson(res, 200, {
|
|
112
|
-
object: 'function_result',
|
|
113
|
-
name,
|
|
114
|
-
result,
|
|
115
|
-
});
|
|
64
|
+
const result = await this.callTool(name, args || {}, clientId);
|
|
65
|
+
sendJson(res, 200, { object: 'function_result', name, result });
|
|
116
66
|
return;
|
|
117
67
|
}
|
|
118
|
-
// POST /v1/tool_calls - Process tool calls (batch)
|
|
119
68
|
if (pathname === '/v1/tool_calls' && req.method === 'POST') {
|
|
120
69
|
const body = await parseBody(req);
|
|
121
70
|
const { tool_calls } = body;
|
|
@@ -124,14 +73,9 @@ export class OpenAIAdapter extends BaseAdapter {
|
|
|
124
73
|
return;
|
|
125
74
|
}
|
|
126
75
|
const results = await this.processToolCalls(tool_calls);
|
|
127
|
-
sendJson(res, 200, {
|
|
128
|
-
object: 'list',
|
|
129
|
-
data: results,
|
|
130
|
-
});
|
|
76
|
+
sendJson(res, 200, { object: 'list', data: results });
|
|
131
77
|
return;
|
|
132
78
|
}
|
|
133
|
-
// POST /v1/chat/completions - For integration with proxies
|
|
134
|
-
// This allows tools to be called through a chat completion-like interface
|
|
135
79
|
if (pathname === '/v1/chat/completions' && req.method === 'POST') {
|
|
136
80
|
const body = await parseBody(req);
|
|
137
81
|
const messages = body.messages;
|
|
@@ -139,71 +83,29 @@ export class OpenAIAdapter extends BaseAdapter {
|
|
|
139
83
|
sendJson(res, 400, { error: { message: 'messages array required', type: 'invalid_request_error' } });
|
|
140
84
|
return;
|
|
141
85
|
}
|
|
142
|
-
// Check if last message has tool_calls to process
|
|
143
86
|
const lastMessage = messages[messages.length - 1];
|
|
144
87
|
if (lastMessage?.tool_calls) {
|
|
145
88
|
const results = await this.processToolCalls(lastMessage.tool_calls);
|
|
146
89
|
sendJson(res, 200, {
|
|
147
|
-
id: `chatcmpl-${Date.now()}`,
|
|
148
|
-
|
|
149
|
-
created: Math.floor(Date.now() / 1000),
|
|
150
|
-
model: `envcp-${VERSION}`,
|
|
151
|
-
choices: [{
|
|
152
|
-
index: 0,
|
|
153
|
-
message: {
|
|
154
|
-
role: 'assistant',
|
|
155
|
-
content: null,
|
|
156
|
-
tool_calls: null,
|
|
157
|
-
},
|
|
158
|
-
finish_reason: 'tool_calls',
|
|
159
|
-
}],
|
|
90
|
+
id: `chatcmpl-${Date.now()}`, object: 'chat.completion', created: Math.floor(Date.now() / 1000), model: `envcp-${VERSION}`,
|
|
91
|
+
choices: [{ index: 0, message: { role: 'assistant', content: null, tool_calls: null }, finish_reason: 'tool_calls' }],
|
|
160
92
|
tool_results: results,
|
|
161
93
|
});
|
|
162
94
|
return;
|
|
163
95
|
}
|
|
164
|
-
// Return available tools if no tool_calls
|
|
165
96
|
sendJson(res, 200, {
|
|
166
|
-
id: `chatcmpl-${Date.now()}`,
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
model: `envcp-${VERSION}`,
|
|
170
|
-
choices: [{
|
|
171
|
-
index: 0,
|
|
172
|
-
message: {
|
|
173
|
-
role: 'assistant',
|
|
174
|
-
content: 'EnvCP tools available. Use function calling to interact with environment variables.',
|
|
175
|
-
},
|
|
176
|
-
finish_reason: 'stop',
|
|
177
|
-
}],
|
|
178
|
-
available_tools: this.getOpenAIFunctions().map(f => ({
|
|
179
|
-
type: 'function',
|
|
180
|
-
function: f,
|
|
181
|
-
})),
|
|
97
|
+
id: `chatcmpl-${Date.now()}`, object: 'chat.completion', created: Math.floor(Date.now() / 1000), model: `envcp-${VERSION}`,
|
|
98
|
+
choices: [{ index: 0, message: { role: 'assistant', content: 'EnvCP tools available. Use function calling to interact with environment variables.' }, finish_reason: 'stop' }],
|
|
99
|
+
available_tools: this.getOpenAIFunctions().map(f => ({ type: 'function', function: f })),
|
|
182
100
|
});
|
|
183
101
|
return;
|
|
184
102
|
}
|
|
185
|
-
// Health check
|
|
186
103
|
if (pathname === '/v1/health' || pathname === '/') {
|
|
187
|
-
sendJson(res, 200, {
|
|
188
|
-
status: 'ok',
|
|
189
|
-
version: VERSION,
|
|
190
|
-
mode: 'openai',
|
|
191
|
-
endpoints: ['/v1/models', '/v1/functions', '/v1/functions/call', '/v1/tool_calls', '/v1/chat/completions'],
|
|
192
|
-
});
|
|
104
|
+
sendJson(res, 200, { status: 'ok', version: VERSION, mode: 'openai', endpoints: ['/v1/models', '/v1/functions', '/v1/functions/call', '/v1/tool_calls', '/v1/chat/completions'] });
|
|
193
105
|
return;
|
|
194
106
|
}
|
|
195
|
-
// 404
|
|
196
107
|
sendJson(res, 404, { error: { message: 'Not found', type: 'not_found' } });
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
200
|
-
sendJson(res, 500, { error: { message, type: 'internal_error' } });
|
|
201
|
-
}
|
|
202
|
-
});
|
|
203
|
-
return new Promise((resolve) => {
|
|
204
|
-
this.server.listen(port, host, () => {
|
|
205
|
-
resolve();
|
|
206
|
-
});
|
|
108
|
+
},
|
|
207
109
|
});
|
|
208
110
|
}
|
|
209
111
|
stopServer() {
|
|
@@ -211,7 +113,6 @@ export class OpenAIAdapter extends BaseAdapter {
|
|
|
211
113
|
this.server.close();
|
|
212
114
|
this.server = null;
|
|
213
115
|
}
|
|
214
|
-
this.rateLimiter?.destroy();
|
|
215
116
|
}
|
|
216
117
|
}
|
|
217
118
|
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/adapters/openai.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/rest.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export declare class RESTAdapter extends BaseAdapter {
|
|
|
4
4
|
private server;
|
|
5
5
|
private rateLimiter;
|
|
6
6
|
private lockoutManager?;
|
|
7
|
-
constructor(config: EnvCPConfig, projectPath: string, password?: string, vaultPath?: string);
|
|
7
|
+
constructor(config: EnvCPConfig, projectPath: string, password?: string, vaultPath?: string, sessionPath?: string);
|
|
8
8
|
private clearApiKeyLockout;
|
|
9
9
|
protected registerTools(): void;
|
|
10
10
|
private createResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/adapters/rest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAgC,eAAe,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/adapters/rest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,WAAW,EAAgC,eAAe,EAAE,MAAM,aAAa,CAAC;AAQzF,qBAAa,WAAY,SAAQ,WAAW;IAC1C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;YAUnG,kBAAkB;IAOhC,SAAS,CAAC,aAAa,IAAI,IAAI;IA0F/B,OAAO,CAAC,cAAc;IAUlB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IA4O9G,UAAU,IAAI,IAAI;IAQlB,UAAU,IAAI,MAAM;CAoCrB"}
|