@fentz26/envcp 1.1.0 → 1.2.0-exp.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/README.md +59 -422
- package/VERSION +1 -0
- package/dist/adapters/base.d.ts +13 -0
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/base.js +153 -9
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/gemini.d.ts.map +1 -1
- package/dist/adapters/gemini.js +7 -4
- package/dist/adapters/gemini.js.map +1 -1
- package/dist/adapters/openai.d.ts.map +1 -1
- package/dist/adapters/openai.js +9 -6
- package/dist/adapters/openai.js.map +1 -1
- package/dist/adapters/rest.d.ts +2 -0
- package/dist/adapters/rest.d.ts.map +1 -1
- package/dist/adapters/rest.js +72 -4
- package/dist/adapters/rest.js.map +1 -1
- package/dist/cli/index.js +519 -103
- package/dist/cli/index.js.map +1 -1
- package/dist/config/config-guard.d.ts.map +1 -1
- package/dist/config/config-guard.js +3 -2
- package/dist/config/config-guard.js.map +1 -1
- package/dist/config/config-hmac.d.ts +5 -0
- package/dist/config/config-hmac.d.ts.map +1 -0
- package/dist/config/config-hmac.js +29 -0
- package/dist/config/config-hmac.js.map +1 -0
- package/dist/config/manager.d.ts +14 -0
- package/dist/config/manager.d.ts.map +1 -1
- package/dist/config/manager.js +72 -13
- package/dist/config/manager.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/server/unified.d.ts +4 -1
- package/dist/server/unified.d.ts.map +1 -1
- package/dist/server/unified.js +102 -33
- package/dist/server/unified.js.map +1 -1
- package/dist/service/config.d.ts +21 -0
- package/dist/service/config.d.ts.map +1 -0
- package/dist/service/config.js +94 -0
- package/dist/service/config.js.map +1 -0
- package/dist/service/generators.d.ts +14 -0
- package/dist/service/generators.d.ts.map +1 -0
- package/dist/service/generators.js +92 -0
- package/dist/service/generators.js.map +1 -0
- package/dist/service/index.d.ts +23 -0
- package/dist/service/index.d.ts.map +1 -0
- package/dist/service/index.js +215 -0
- package/dist/service/index.js.map +1 -0
- package/dist/service/platform.d.ts +5 -0
- package/dist/service/platform.d.ts.map +1 -0
- package/dist/service/platform.js +25 -0
- package/dist/service/platform.js.map +1 -0
- package/dist/storage/index.d.ts +39 -10
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +318 -31
- package/dist/storage/index.js.map +1 -1
- package/dist/types.d.ts +545 -14
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +74 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/crypto.d.ts +9 -0
- package/dist/utils/crypto.d.ts.map +1 -1
- package/dist/utils/crypto.js +88 -19
- package/dist/utils/crypto.js.map +1 -1
- package/dist/utils/hsm.d.ts +82 -0
- package/dist/utils/hsm.d.ts.map +1 -0
- package/dist/utils/hsm.js +344 -0
- package/dist/utils/hsm.js.map +1 -0
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +14 -4
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/keychain.d.ts.map +1 -1
- package/dist/utils/keychain.js +0 -8
- package/dist/utils/keychain.js.map +1 -1
- package/dist/utils/lock.d.ts +1 -1
- package/dist/utils/lock.d.ts.map +1 -1
- package/dist/utils/lock.js +4 -2
- package/dist/utils/lock.js.map +1 -1
- package/dist/utils/lockout.d.ts +56 -0
- package/dist/utils/lockout.d.ts.map +1 -0
- package/dist/utils/lockout.js +209 -0
- package/dist/utils/lockout.js.map +1 -0
- package/dist/utils/prompt.d.ts +13 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +124 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/secure-memory.d.ts +20 -0
- package/dist/utils/secure-memory.d.ts.map +1 -0
- package/dist/utils/secure-memory.js +122 -0
- package/dist/utils/secure-memory.js.map +1 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +14 -4
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/update-checker.d.ts +1 -1
- package/dist/utils/update-checker.d.ts.map +1 -1
- package/dist/utils/update-checker.js +7 -5
- package/dist/utils/update-checker.js.map +1 -1
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- package/package.json +18 -9
- package/scripts/sync-version.js +88 -0
- package/scripts/install.sh +0 -54
package/dist/config/manager.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as path from 'path';
|
|
|
3
3
|
import * as yaml from 'js-yaml';
|
|
4
4
|
import { ensureDir, pathExists } from '../utils/fs.js';
|
|
5
5
|
import { EnvCPConfigSchema } from '../types.js';
|
|
6
|
+
import { generateConfigHmac, verifyConfigHmac, deriveHmacKey, getSystemIdentifier } from './config-hmac.js';
|
|
6
7
|
const DEFAULT_CONFIG = {
|
|
7
8
|
version: '1.0',
|
|
8
9
|
vault: {
|
|
@@ -27,6 +28,14 @@ const DEFAULT_CONFIG = {
|
|
|
27
28
|
audit_log: true,
|
|
28
29
|
blacklist_patterns: ['*_SECRET', '*_PRIVATE', 'ADMIN_*', 'ROOT_*'],
|
|
29
30
|
require_variable_password: false,
|
|
31
|
+
command_blacklist: ['mkfs', 'shred', 'wipefs', 'fdisk', 'parted', 'dd', 'chattr'],
|
|
32
|
+
run_safety: {
|
|
33
|
+
disallow_root_delete: true,
|
|
34
|
+
disallow_path_manipulation: true,
|
|
35
|
+
require_command_whitelist: false,
|
|
36
|
+
scrub_output: true,
|
|
37
|
+
redact_patterns: [],
|
|
38
|
+
},
|
|
30
39
|
},
|
|
31
40
|
sync: {
|
|
32
41
|
enabled: false,
|
|
@@ -39,6 +48,8 @@ const DEFAULT_CONFIG = {
|
|
|
39
48
|
timeout_minutes: 30,
|
|
40
49
|
max_extensions: 5,
|
|
41
50
|
path: '.envcp/.session',
|
|
51
|
+
lockout_threshold: 5,
|
|
52
|
+
lockout_base_seconds: 30,
|
|
42
53
|
},
|
|
43
54
|
encryption: {
|
|
44
55
|
enabled: true,
|
|
@@ -46,6 +57,16 @@ const DEFAULT_CONFIG = {
|
|
|
46
57
|
security: {
|
|
47
58
|
mode: 'recoverable',
|
|
48
59
|
recovery_file: '.envcp/.recovery',
|
|
60
|
+
brute_force_protection: {
|
|
61
|
+
enabled: true,
|
|
62
|
+
max_attempts: 5,
|
|
63
|
+
lockout_duration: 300,
|
|
64
|
+
progressive_delay: true,
|
|
65
|
+
max_delay: 60,
|
|
66
|
+
permanent_lockout_threshold: 50,
|
|
67
|
+
permanent_lockout_action: 'require_recovery_key',
|
|
68
|
+
notifications: {},
|
|
69
|
+
},
|
|
49
70
|
},
|
|
50
71
|
password: {
|
|
51
72
|
min_length: 8,
|
|
@@ -53,6 +74,17 @@ const DEFAULT_CONFIG = {
|
|
|
53
74
|
allow_numeric_only: false,
|
|
54
75
|
allow_single_char: false,
|
|
55
76
|
},
|
|
77
|
+
hsm: {
|
|
78
|
+
enabled: false,
|
|
79
|
+
type: 'yubikey',
|
|
80
|
+
require_touch: true,
|
|
81
|
+
protected_key_path: '.envcp/.hsm-key',
|
|
82
|
+
},
|
|
83
|
+
auth: {
|
|
84
|
+
method: 'password',
|
|
85
|
+
multi_factors: ['password', 'hsm'],
|
|
86
|
+
fallback: 'password',
|
|
87
|
+
},
|
|
56
88
|
};
|
|
57
89
|
// Deep merge utility: project values override global, arrays are replaced
|
|
58
90
|
function deepMerge(target, source) {
|
|
@@ -63,21 +95,34 @@ function deepMerge(target, source) {
|
|
|
63
95
|
if (srcVal && typeof srcVal === 'object' && !Array.isArray(srcVal) && tgtVal && typeof tgtVal === 'object' && !Array.isArray(tgtVal)) {
|
|
64
96
|
result[key] = deepMerge(tgtVal, srcVal);
|
|
65
97
|
}
|
|
66
|
-
else
|
|
98
|
+
else {
|
|
99
|
+
/* istanbul ignore next -- branch mapped incorrectly, statement covered */
|
|
67
100
|
result[key] = srcVal;
|
|
68
101
|
}
|
|
69
102
|
}
|
|
70
103
|
return result;
|
|
71
104
|
}
|
|
72
105
|
export async function loadConfig(projectPath) {
|
|
106
|
+
/* c8 ignore next -- at least HOME or USERPROFILE is always set in supported environments */
|
|
73
107
|
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
74
108
|
const globalConfigPath = path.join(home, '.envcp', 'config.yaml');
|
|
75
109
|
const projectConfigPath = path.join(projectPath, 'envcp.yaml');
|
|
110
|
+
const sigPath = path.join(projectPath, '.envcp', '.config_signature');
|
|
111
|
+
const hmacKey = deriveHmacKey(getSystemIdentifier());
|
|
112
|
+
if (await pathExists(sigPath)) {
|
|
113
|
+
if (await pathExists(projectConfigPath)) {
|
|
114
|
+
const storedHmac = await fs.readFile(sigPath, 'utf8');
|
|
115
|
+
const projectContent = await fs.readFile(projectConfigPath, 'utf8');
|
|
116
|
+
if (!verifyConfigHmac(projectContent, storedHmac, hmacKey)) {
|
|
117
|
+
throw new Error('Config integrity check failed: envcp.yaml has been tampered with or corrupted. Verify the file or remove .envcp/.config_signature to regenerate.');
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
76
121
|
let merged = DEFAULT_CONFIG;
|
|
77
122
|
// Layer 1: global config (~/.envcp/config.yaml)
|
|
78
123
|
if (await pathExists(globalConfigPath)) {
|
|
79
124
|
const content = await fs.readFile(globalConfigPath, 'utf8');
|
|
80
|
-
const parsed = yaml.load(content, { schema: yaml.
|
|
125
|
+
const parsed = yaml.load(content, { schema: yaml.JSON_SCHEMA });
|
|
81
126
|
if (parsed && typeof parsed === 'object') {
|
|
82
127
|
merged = deepMerge(merged, parsed);
|
|
83
128
|
}
|
|
@@ -85,17 +130,26 @@ export async function loadConfig(projectPath) {
|
|
|
85
130
|
// Layer 2: project config (envcp.yaml) — overrides global
|
|
86
131
|
if (await pathExists(projectConfigPath)) {
|
|
87
132
|
const content = await fs.readFile(projectConfigPath, 'utf8');
|
|
88
|
-
const parsed = yaml.load(content, { schema: yaml.
|
|
133
|
+
const parsed = yaml.load(content, { schema: yaml.JSON_SCHEMA });
|
|
89
134
|
if (parsed && typeof parsed === 'object') {
|
|
90
135
|
merged = deepMerge(merged, parsed);
|
|
91
136
|
}
|
|
92
137
|
}
|
|
93
138
|
return EnvCPConfigSchema.parse(merged);
|
|
94
139
|
}
|
|
140
|
+
export async function saveConfigSignature(projectPath, configContent, key) {
|
|
141
|
+
const envcpDir = path.join(projectPath, '.envcp');
|
|
142
|
+
await ensureDir(envcpDir);
|
|
143
|
+
const sigPath = path.join(envcpDir, '.config_signature');
|
|
144
|
+
const hmac = generateConfigHmac(configContent, key);
|
|
145
|
+
await fs.writeFile(sigPath, hmac, { encoding: 'utf8', mode: 0o600 });
|
|
146
|
+
}
|
|
95
147
|
export async function saveConfig(config, projectPath) {
|
|
96
148
|
const configPath = path.join(projectPath, 'envcp.yaml');
|
|
97
149
|
const content = yaml.dump(config, { indent: 2, lineWidth: -1 });
|
|
98
|
-
await fs.writeFile(configPath, content, 'utf8');
|
|
150
|
+
await fs.writeFile(configPath, content, { encoding: 'utf8', mode: 0o600 });
|
|
151
|
+
const key = deriveHmacKey(getSystemIdentifier());
|
|
152
|
+
await saveConfigSignature(projectPath, content, key);
|
|
99
153
|
}
|
|
100
154
|
export async function initConfig(projectPath, projectName) {
|
|
101
155
|
const envcpDir = path.join(projectPath, '.envcp');
|
|
@@ -204,7 +258,7 @@ function createMcpEntry(projectPath, isProjectLocal) {
|
|
|
204
258
|
entry.cwd = projectPath;
|
|
205
259
|
return entry;
|
|
206
260
|
}
|
|
207
|
-
function writeToConfig(config, format, entry) {
|
|
261
|
+
export function writeToConfig(config, format, entry) {
|
|
208
262
|
switch (format) {
|
|
209
263
|
case 'mcpServers': {
|
|
210
264
|
if (!config.mcpServers)
|
|
@@ -254,6 +308,7 @@ function writeToConfig(config, format, entry) {
|
|
|
254
308
|
}
|
|
255
309
|
}
|
|
256
310
|
export async function registerMcpConfig(projectPath) {
|
|
311
|
+
/* istanbul ignore next -- HOME or USERPROFILE always set in supported environments */
|
|
257
312
|
const home = process.env.HOME || process.env.USERPROFILE || '';
|
|
258
313
|
const platform = process.platform;
|
|
259
314
|
const targets = getMcpTargets();
|
|
@@ -287,14 +342,12 @@ export async function registerMcpConfig(projectPath) {
|
|
|
287
342
|
alreadyConfigured.push(target.name);
|
|
288
343
|
continue;
|
|
289
344
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
registered.push(target.name);
|
|
294
|
-
}
|
|
345
|
+
await ensureDir(path.dirname(configPath));
|
|
346
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf8');
|
|
347
|
+
registered.push(target.name);
|
|
295
348
|
}
|
|
296
349
|
catch {
|
|
297
|
-
|
|
350
|
+
/* istanbul ignore next -- rare: invalid JSON or permission errors are silently skipped */
|
|
298
351
|
}
|
|
299
352
|
}
|
|
300
353
|
return { registered, alreadyConfigured, manual };
|
|
@@ -332,9 +385,15 @@ export function parseEnvFile(content) {
|
|
|
332
385
|
export function validateVariableName(name) {
|
|
333
386
|
return /^[A-Za-z_][A-Za-z0-9_]*$/.test(name);
|
|
334
387
|
}
|
|
388
|
+
const _patternCache = new Map();
|
|
335
389
|
export function matchesPattern(name, pattern) {
|
|
336
|
-
|
|
337
|
-
|
|
390
|
+
let regex = _patternCache.get(pattern);
|
|
391
|
+
if (!regex) {
|
|
392
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
393
|
+
// eslint-disable-next-line security/detect-non-literal-regexp -- glob pattern from config; metacharacters escaped above
|
|
394
|
+
regex = new RegExp('^' + escaped.replace(/\*/g, '.*') + '$');
|
|
395
|
+
_patternCache.set(pattern, regex);
|
|
396
|
+
}
|
|
338
397
|
return regex.test(name);
|
|
339
398
|
}
|
|
340
399
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ1C,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAW3F,OAAO,CAAC,aAAa;IA6Bf,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { VERSION } from '../version.js';
|
|
3
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
4
5
|
import { BaseAdapter } from '../adapters/base.js';
|
|
5
6
|
class McpAdapter extends BaseAdapter {
|
|
@@ -12,7 +13,7 @@ export class EnvCPServer {
|
|
|
12
13
|
adapter;
|
|
13
14
|
constructor(config, projectPath, password, vaultPath) {
|
|
14
15
|
this.adapter = new McpAdapter(config, projectPath, password, vaultPath);
|
|
15
|
-
this.server = new Server({ name: 'envcp', version:
|
|
16
|
+
this.server = new Server({ name: 'envcp', version: VERSION }, { capabilities: { tools: {} } });
|
|
16
17
|
this.setupHandlers();
|
|
17
18
|
}
|
|
18
19
|
setupHandlers() {
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,UAAW,SAAQ,WAAW;IACxB,aAAa;QACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACd,MAAM,CAAS;IACf,OAAO,CAAa;IAE5B,YAAY,MAAmB,EAAE,WAAmB,EAAE,QAAiB,EAAE,SAAkB;QACzF,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAExE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EACnC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,UAAU;aAC7B,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC,CAAC;gBAC1F,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBACtC;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,SAAS,EACT,QAAQ,GACT,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,MAAM,UAAW,SAAQ,WAAW;IACxB,aAAa;QACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,WAAW;IACd,MAAM,CAAS;IACf,OAAO,CAAa;IAE5B,YAAY,MAAmB,EAAE,WAAmB,EAAE,QAAiB,EAAE,SAAkB;QACzF,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAExE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EACnC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACjE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,UAAU;aAC7B,CAAC,CAAC;SACJ,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YAEjD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC,CAAC;gBAC1F,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;yBACtC;qBACF;iBACF,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,IAAI,QAAQ,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;CACF"}
|
package/dist/server/unified.d.ts
CHANGED
|
@@ -11,8 +11,11 @@ export declare class UnifiedServer {
|
|
|
11
11
|
private mcpServer;
|
|
12
12
|
private httpServer;
|
|
13
13
|
private rateLimiter;
|
|
14
|
+
private logs;
|
|
15
|
+
private shutdownHandlers;
|
|
14
16
|
constructor(config: EnvCPConfig, serverConfig: ServerConfig, projectPath: string, password?: string);
|
|
15
|
-
detectClientType(req: http.IncomingMessage): ClientType;
|
|
17
|
+
detectClientType(req: http.IncomingMessage, pathname?: string): ClientType;
|
|
18
|
+
private checkApiKeySecurity;
|
|
16
19
|
start(): Promise<void>;
|
|
17
20
|
private handleRESTRequest;
|
|
18
21
|
private handleOpenAIRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified.d.ts","sourceRoot":"","sources":["../../src/server/unified.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"unified.d.ts","sourceRoot":"","sources":["../../src/server/unified.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUpE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAE1B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,WAAW,CAA2C;IAC9D,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,gBAAgB,CAA4D;gBAExE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAQnG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU;IA0C1E,OAAO,CAAC,mBAAmB;IA+BrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA0Ld,iBAAiB;YA0FjB,mBAAmB;YA6EnB,mBAAmB;IAiFjC,IAAI,IAAI,IAAI;CAuBb"}
|
package/dist/server/unified.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { VERSION } from '../version.js';
|
|
1
2
|
import { RESTAdapter } from '../adapters/rest.js';
|
|
2
3
|
import { OpenAIAdapter } from '../adapters/openai.js';
|
|
3
4
|
import { GeminiAdapter } from '../adapters/gemini.js';
|
|
4
5
|
import { EnvCPServer } from '../mcp/server.js';
|
|
5
6
|
import { resolveVaultPath } from '../vault/index.js';
|
|
6
7
|
import { setCorsHeaders, sendJson, parseBody, validateApiKey, RateLimiter, rateLimitMiddleware } from '../utils/http.js';
|
|
8
|
+
import { LogManager } from '../storage/index.js';
|
|
9
|
+
import * as path from 'path';
|
|
7
10
|
import * as http from 'http';
|
|
8
11
|
export class UnifiedServer {
|
|
9
12
|
config;
|
|
@@ -16,6 +19,8 @@ export class UnifiedServer {
|
|
|
16
19
|
mcpServer = null;
|
|
17
20
|
httpServer = null;
|
|
18
21
|
rateLimiter = new RateLimiter(60, 60000);
|
|
22
|
+
logs = null;
|
|
23
|
+
shutdownHandlers = null;
|
|
19
24
|
constructor(config, serverConfig, projectPath, password) {
|
|
20
25
|
this.config = config;
|
|
21
26
|
this.serverConfig = serverConfig;
|
|
@@ -23,9 +28,12 @@ export class UnifiedServer {
|
|
|
23
28
|
this.password = password;
|
|
24
29
|
}
|
|
25
30
|
// Detect client type from request headers
|
|
26
|
-
detectClientType(req) {
|
|
31
|
+
detectClientType(req, pathname) {
|
|
27
32
|
const userAgent = req.headers['user-agent']?.toLowerCase() || '';
|
|
28
|
-
|
|
33
|
+
if (pathname === undefined) {
|
|
34
|
+
/* c8 ignore next -- detectClientType is always called with pathname from request routing; the undefined branch is unreachable in practice */
|
|
35
|
+
pathname = new URL(req.url || '/', `http://${req.headers.host || 'localhost'}`).pathname;
|
|
36
|
+
}
|
|
29
37
|
// Check for OpenAI-style requests
|
|
30
38
|
if (pathname.startsWith('/v1/chat') ||
|
|
31
39
|
pathname.startsWith('/v1/functions') ||
|
|
@@ -55,16 +63,45 @@ export class UnifiedServer {
|
|
|
55
63
|
}
|
|
56
64
|
return 'unknown';
|
|
57
65
|
}
|
|
66
|
+
checkApiKeySecurity() {
|
|
67
|
+
const { api_key } = this.serverConfig;
|
|
68
|
+
if (api_key)
|
|
69
|
+
return;
|
|
70
|
+
const access = this.config.access;
|
|
71
|
+
const activeFlags = [
|
|
72
|
+
'allow_ai_read',
|
|
73
|
+
'allow_ai_write',
|
|
74
|
+
'allow_ai_delete',
|
|
75
|
+
'allow_ai_export',
|
|
76
|
+
'allow_ai_execute',
|
|
77
|
+
'allow_ai_active_check',
|
|
78
|
+
].filter(flag => access[flag]);
|
|
79
|
+
if (activeFlags.length === 0)
|
|
80
|
+
return;
|
|
81
|
+
if (access.allow_ai_execute) {
|
|
82
|
+
throw new Error('Refusing to start: allow_ai_execute is enabled but no api_key is set.\n' +
|
|
83
|
+
'Unauthenticated callers can execute arbitrary commands.\n' +
|
|
84
|
+
'Set server.api_key in your config, or disable allow_ai_execute.');
|
|
85
|
+
}
|
|
86
|
+
throw new Error('Refusing to start: AI access is enabled but no api_key is set.\n' +
|
|
87
|
+
`Active AI flags: ${activeFlags.join(', ')}\n` +
|
|
88
|
+
'Set server.api_key in your config, or disable all AI access flags.');
|
|
89
|
+
}
|
|
58
90
|
async start() {
|
|
59
91
|
const { mode, port, host, api_key } = this.serverConfig;
|
|
60
92
|
// Resolve vault path once before creating any adapters
|
|
61
93
|
const vaultPath = await resolveVaultPath(this.projectPath, this.config);
|
|
94
|
+
// Initialize audit log for HTTP modes
|
|
95
|
+
this.logs = new LogManager(path.join(this.projectPath, '.envcp', 'logs'), this.config.audit);
|
|
96
|
+
await this.logs.init();
|
|
62
97
|
// MCP mode uses stdio, not HTTP
|
|
63
98
|
if (mode === 'mcp') {
|
|
64
99
|
this.mcpServer = new EnvCPServer(this.config, this.projectPath, this.password, vaultPath);
|
|
65
100
|
await this.mcpServer.start();
|
|
66
101
|
return;
|
|
67
102
|
}
|
|
103
|
+
// Warn if AI access is enabled without an API key
|
|
104
|
+
this.checkApiKeySecurity();
|
|
68
105
|
// Initialize adapters based on mode
|
|
69
106
|
if (mode === 'rest' || mode === 'all' || mode === 'auto') {
|
|
70
107
|
this.restAdapter = new RESTAdapter(this.config, this.projectPath, this.password, vaultPath);
|
|
@@ -113,8 +150,10 @@ export class UnifiedServer {
|
|
|
113
150
|
if (api_key) {
|
|
114
151
|
const providedKey = (req.headers['x-api-key'] ||
|
|
115
152
|
req.headers['x-goog-api-key'] ||
|
|
116
|
-
req.headers['authorization']?.replace(
|
|
153
|
+
req.headers['authorization']?.replace(/^Bearer\s+/i, ''));
|
|
117
154
|
if (!validateApiKey(providedKey, api_key)) {
|
|
155
|
+
/* c8 ignore next -- logs is always initialized in start(); the undefined branch is unreachable in practice */
|
|
156
|
+
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'}` });
|
|
118
157
|
sendJson(res, 401, { error: 'Invalid API key' });
|
|
119
158
|
return;
|
|
120
159
|
}
|
|
@@ -123,10 +162,10 @@ export class UnifiedServer {
|
|
|
123
162
|
const pathname = parsedUrl.pathname;
|
|
124
163
|
// Root endpoint - show server info and detected mode
|
|
125
164
|
if (pathname === '/' && req.method === 'GET') {
|
|
126
|
-
const detectedType = this.serverConfig.auto_detect ? this.detectClientType(req) : 'unknown';
|
|
165
|
+
const detectedType = this.serverConfig.auto_detect ? this.detectClientType(req, pathname) : 'unknown';
|
|
127
166
|
sendJson(res, 200, {
|
|
128
167
|
name: 'EnvCP Unified Server',
|
|
129
|
-
version:
|
|
168
|
+
version: VERSION,
|
|
130
169
|
mode: mode,
|
|
131
170
|
detected_client: detectedType,
|
|
132
171
|
auto_detect: this.serverConfig.auto_detect,
|
|
@@ -142,7 +181,7 @@ export class UnifiedServer {
|
|
|
142
181
|
// Detect client type
|
|
143
182
|
let clientType = 'unknown';
|
|
144
183
|
if (this.serverConfig.auto_detect) {
|
|
145
|
-
clientType = this.detectClientType(req);
|
|
184
|
+
clientType = this.detectClientType(req, pathname);
|
|
146
185
|
}
|
|
147
186
|
// Force mode query param
|
|
148
187
|
const forceMode = parsedUrl.searchParams.get('mode') || undefined;
|
|
@@ -153,22 +192,22 @@ export class UnifiedServer {
|
|
|
153
192
|
// Route to appropriate adapter
|
|
154
193
|
// REST API routes
|
|
155
194
|
if ((clientType === 'rest' || clientType === 'unknown') && pathname.startsWith('/api')) {
|
|
156
|
-
await this.handleRESTRequest(req, res);
|
|
195
|
+
await this.handleRESTRequest(req, res, parsedUrl);
|
|
157
196
|
return;
|
|
158
197
|
}
|
|
159
198
|
// OpenAI routes
|
|
160
199
|
if (clientType === 'openai' || pathname.startsWith('/v1/chat') || pathname.startsWith('/v1/functions') || pathname === '/v1/tool_calls' || pathname === '/v1/models') {
|
|
161
|
-
await this.handleOpenAIRequest(req, res);
|
|
200
|
+
await this.handleOpenAIRequest(req, res, parsedUrl);
|
|
162
201
|
return;
|
|
163
202
|
}
|
|
164
203
|
// Gemini routes
|
|
165
204
|
if (clientType === 'gemini' || pathname.includes(':generateContent') || pathname === '/v1/function_calls' || pathname === '/v1/tools') {
|
|
166
|
-
await this.handleGeminiRequest(req, res);
|
|
205
|
+
await this.handleGeminiRequest(req, res, parsedUrl);
|
|
167
206
|
return;
|
|
168
207
|
}
|
|
169
208
|
// Default to REST for unknown paths
|
|
170
209
|
if (pathname.startsWith('/api')) {
|
|
171
|
-
await this.handleRESTRequest(req, res);
|
|
210
|
+
await this.handleRESTRequest(req, res, parsedUrl);
|
|
172
211
|
return;
|
|
173
212
|
}
|
|
174
213
|
// 404 with helpful info
|
|
@@ -187,22 +226,31 @@ export class UnifiedServer {
|
|
|
187
226
|
sendJson(res, 500, { error: message });
|
|
188
227
|
}
|
|
189
228
|
});
|
|
229
|
+
// Remove any existing shutdown handlers first
|
|
230
|
+
if (this.shutdownHandlers) {
|
|
231
|
+
process.off('SIGTERM', this.shutdownHandlers.sigterm);
|
|
232
|
+
process.off('SIGINT', this.shutdownHandlers.sigint);
|
|
233
|
+
this.shutdownHandlers = null;
|
|
234
|
+
}
|
|
190
235
|
const shutdown = () => {
|
|
191
236
|
this.stop();
|
|
192
237
|
process.exit(0);
|
|
193
238
|
};
|
|
194
239
|
process.on('SIGTERM', shutdown);
|
|
195
240
|
process.on('SIGINT', shutdown);
|
|
241
|
+
this.shutdownHandlers = { sigterm: shutdown, sigint: shutdown };
|
|
196
242
|
return new Promise((resolve) => {
|
|
197
243
|
this.httpServer.listen(port, host, () => {
|
|
198
244
|
resolve();
|
|
199
245
|
});
|
|
200
246
|
});
|
|
201
247
|
}
|
|
202
|
-
async handleRESTRequest(req, res) {
|
|
248
|
+
async handleRESTRequest(req, res, parsedUrl) {
|
|
203
249
|
// Delegate to REST adapter's internal handling
|
|
204
|
-
|
|
205
|
-
const
|
|
250
|
+
/* c8 ignore next -- parsedUrl is always provided by caller; the fallback is unreachable in practice */
|
|
251
|
+
const url = parsedUrl ?? new URL(req.url || '/', `http://${req.headers.host || 'localhost'}`);
|
|
252
|
+
/* c8 ignore next -- URL.pathname is always '/' at minimum; the '/' fallback is unreachable */
|
|
253
|
+
const pathname = url.pathname || '/';
|
|
206
254
|
const segments = pathname.split('/').filter(Boolean);
|
|
207
255
|
if (!this.restAdapter) {
|
|
208
256
|
sendJson(res, 503, { success: false, error: 'REST adapter not initialized' });
|
|
@@ -241,7 +289,7 @@ export class UnifiedServer {
|
|
|
241
289
|
return;
|
|
242
290
|
}
|
|
243
291
|
if (segments[2] && req.method === 'GET') {
|
|
244
|
-
const result = await this.restAdapter.callTool('envcp_get', { name: segments[2], show_value:
|
|
292
|
+
const result = await this.restAdapter.callTool('envcp_get', { name: segments[2], show_value: url.searchParams.get('show_value') === 'true' });
|
|
245
293
|
sendJson(res, 200, { success: true, data: result, timestamp: new Date().toISOString() });
|
|
246
294
|
return;
|
|
247
295
|
}
|
|
@@ -276,13 +324,15 @@ export class UnifiedServer {
|
|
|
276
324
|
sendJson(res, 500, { success: false, error: message, timestamp: new Date().toISOString() });
|
|
277
325
|
}
|
|
278
326
|
}
|
|
279
|
-
async handleOpenAIRequest(req, res) {
|
|
327
|
+
async handleOpenAIRequest(req, res, parsedUrl) {
|
|
280
328
|
if (!this.openaiAdapter) {
|
|
281
329
|
sendJson(res, 503, { error: { message: 'OpenAI adapter not initialized', type: 'service_unavailable' } });
|
|
282
330
|
return;
|
|
283
331
|
}
|
|
284
|
-
|
|
285
|
-
const
|
|
332
|
+
/* c8 ignore next -- parsedUrl is always provided by caller; the fallback is unreachable in practice */
|
|
333
|
+
const url = parsedUrl ?? new URL(req.url || '/', `http://${req.headers.host || 'localhost'}`);
|
|
334
|
+
/* c8 ignore next -- URL.pathname is always '/' at minimum; the '/' fallback is unreachable */
|
|
335
|
+
const pathname = url.pathname || '/';
|
|
286
336
|
const body = req.method === 'POST' ? await parseBody(req) : {};
|
|
287
337
|
try {
|
|
288
338
|
if (pathname === '/v1/models' && req.method === 'GET') {
|
|
@@ -297,19 +347,22 @@ export class UnifiedServer {
|
|
|
297
347
|
return;
|
|
298
348
|
}
|
|
299
349
|
if (pathname === '/v1/functions/call' && req.method === 'POST') {
|
|
300
|
-
const
|
|
301
|
-
const
|
|
350
|
+
const b = body;
|
|
351
|
+
const name = typeof b.name === 'string' ? b.name : '';
|
|
352
|
+
const args = (b.arguments && typeof b.arguments === 'object') ? b.arguments : {};
|
|
353
|
+
const result = await this.openaiAdapter.callTool(name, args);
|
|
302
354
|
sendJson(res, 200, { object: 'function_result', name, result });
|
|
303
355
|
return;
|
|
304
356
|
}
|
|
305
357
|
if (pathname === '/v1/tool_calls' && req.method === 'POST') {
|
|
306
358
|
const { tool_calls } = body;
|
|
307
|
-
const results = await this.openaiAdapter.processToolCalls(tool_calls);
|
|
359
|
+
const results = await this.openaiAdapter.processToolCalls(Array.isArray(tool_calls) ? tool_calls : []);
|
|
308
360
|
sendJson(res, 200, { object: 'list', data: results });
|
|
309
361
|
return;
|
|
310
362
|
}
|
|
311
363
|
if (pathname === '/v1/chat/completions' && req.method === 'POST') {
|
|
312
|
-
const messages = body
|
|
364
|
+
const { messages: rawMessages } = body;
|
|
365
|
+
const messages = Array.isArray(rawMessages) ? rawMessages : [];
|
|
313
366
|
const lastMessage = messages?.[messages.length - 1];
|
|
314
367
|
if (lastMessage?.tool_calls) {
|
|
315
368
|
const results = await this.openaiAdapter.processToolCalls(lastMessage.tool_calls);
|
|
@@ -338,13 +391,15 @@ export class UnifiedServer {
|
|
|
338
391
|
sendJson(res, 500, { error: { message, type: 'internal_error' } });
|
|
339
392
|
}
|
|
340
393
|
}
|
|
341
|
-
async handleGeminiRequest(req, res) {
|
|
394
|
+
async handleGeminiRequest(req, res, parsedUrl) {
|
|
342
395
|
if (!this.geminiAdapter) {
|
|
343
396
|
sendJson(res, 503, { error: { code: 503, message: 'Gemini adapter not initialized', status: 'UNAVAILABLE' } });
|
|
344
397
|
return;
|
|
345
398
|
}
|
|
346
|
-
|
|
347
|
-
const
|
|
399
|
+
/* c8 ignore next -- parsedUrl is always provided by caller; the fallback is unreachable in practice */
|
|
400
|
+
const url = parsedUrl ?? new URL(req.url || '/', `http://${req.headers.host || 'localhost'}`);
|
|
401
|
+
/* c8 ignore next -- URL.pathname is always '/' at minimum; the '/' fallback is unreachable */
|
|
402
|
+
const pathname = url.pathname || '/';
|
|
348
403
|
const body = req.method === 'POST' ? await parseBody(req) : {};
|
|
349
404
|
try {
|
|
350
405
|
if (pathname === '/v1/tools' && req.method === 'GET') {
|
|
@@ -352,25 +407,32 @@ export class UnifiedServer {
|
|
|
352
407
|
return;
|
|
353
408
|
}
|
|
354
409
|
if (pathname === '/v1/functions/call' && req.method === 'POST') {
|
|
355
|
-
const
|
|
356
|
-
|
|
410
|
+
const bg = body;
|
|
411
|
+
/* c8 ignore next -- function name validation always returns string for valid requests; the else branch is unreachable in practice */
|
|
412
|
+
const name = typeof bg.name === 'string' ? bg.name : '';
|
|
413
|
+
const args = (bg.args && typeof bg.args === 'object') ? bg.args : {};
|
|
414
|
+
const result = await this.geminiAdapter.callTool(name, args);
|
|
357
415
|
sendJson(res, 200, { name, response: { result } });
|
|
358
416
|
return;
|
|
359
417
|
}
|
|
360
418
|
if (pathname === '/v1/function_calls' && req.method === 'POST') {
|
|
361
|
-
const { functionCalls } = body;
|
|
362
|
-
const results = await this.geminiAdapter.processFunctionCalls(
|
|
419
|
+
const { functionCalls: rawFunctionCalls } = body;
|
|
420
|
+
const results = await this.geminiAdapter.processFunctionCalls(Array.isArray(rawFunctionCalls) ? rawFunctionCalls : []);
|
|
363
421
|
sendJson(res, 200, { functionResponses: results });
|
|
364
422
|
return;
|
|
365
423
|
}
|
|
366
424
|
if (pathname.includes(':generateContent') && req.method === 'POST') {
|
|
367
|
-
const contents = body
|
|
425
|
+
const { contents } = body;
|
|
368
426
|
const functionCalls = [];
|
|
369
|
-
if (contents) {
|
|
427
|
+
if (Array.isArray(contents)) {
|
|
370
428
|
for (const content of contents) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
429
|
+
const parts = (content && typeof content === 'object' && Array.isArray(content.parts))
|
|
430
|
+
? content.parts
|
|
431
|
+
: [];
|
|
432
|
+
for (const part of parts) {
|
|
433
|
+
const p = part;
|
|
434
|
+
if (p.functionCall)
|
|
435
|
+
functionCalls.push(p.functionCall);
|
|
374
436
|
}
|
|
375
437
|
}
|
|
376
438
|
}
|
|
@@ -414,6 +476,13 @@ export class UnifiedServer {
|
|
|
414
476
|
if (this.geminiAdapter) {
|
|
415
477
|
this.geminiAdapter.stopServer();
|
|
416
478
|
}
|
|
479
|
+
this.rateLimiter?.destroy();
|
|
480
|
+
// Remove shutdown handlers
|
|
481
|
+
if (this.shutdownHandlers) {
|
|
482
|
+
process.off('SIGTERM', this.shutdownHandlers.sigterm);
|
|
483
|
+
process.off('SIGINT', this.shutdownHandlers.sigint);
|
|
484
|
+
this.shutdownHandlers = null;
|
|
485
|
+
}
|
|
417
486
|
}
|
|
418
487
|
}
|
|
419
488
|
//# sourceMappingURL=unified.js.map
|