@fentz26/envcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/.github/workflows/publish.yml +27 -0
  2. package/LICENSE +21 -0
  3. package/README.md +381 -0
  4. package/dist/adapters/base.d.ts +79 -0
  5. package/dist/adapters/base.d.ts.map +1 -0
  6. package/dist/adapters/base.js +317 -0
  7. package/dist/adapters/base.js.map +1 -0
  8. package/dist/adapters/gemini.d.ts +12 -0
  9. package/dist/adapters/gemini.d.ts.map +1 -0
  10. package/dist/adapters/gemini.js +284 -0
  11. package/dist/adapters/gemini.js.map +1 -0
  12. package/dist/adapters/index.d.ts +5 -0
  13. package/dist/adapters/index.d.ts.map +1 -0
  14. package/dist/adapters/index.js +5 -0
  15. package/dist/adapters/index.js.map +1 -0
  16. package/dist/adapters/openai.d.ts +12 -0
  17. package/dist/adapters/openai.d.ts.map +1 -0
  18. package/dist/adapters/openai.js +294 -0
  19. package/dist/adapters/openai.js.map +1 -0
  20. package/dist/adapters/rest.d.ts +12 -0
  21. package/dist/adapters/rest.d.ts.map +1 -0
  22. package/dist/adapters/rest.js +265 -0
  23. package/dist/adapters/rest.js.map +1 -0
  24. package/dist/cli/index.d.ts +2 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +472 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/cli.d.ts +3 -0
  29. package/dist/cli.d.ts.map +1 -0
  30. package/dist/cli.js +3 -0
  31. package/dist/cli.js.map +1 -0
  32. package/dist/config/manager.d.ts +11 -0
  33. package/dist/config/manager.d.ts.map +1 -0
  34. package/dist/config/manager.js +117 -0
  35. package/dist/config/manager.js.map +1 -0
  36. package/dist/index.d.ts +5 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +5 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/mcp/index.d.ts +2 -0
  41. package/dist/mcp/index.d.ts.map +1 -0
  42. package/dist/mcp/index.js +2 -0
  43. package/dist/mcp/index.js.map +1 -0
  44. package/dist/mcp/server.d.ts +24 -0
  45. package/dist/mcp/server.d.ts.map +1 -0
  46. package/dist/mcp/server.js +539 -0
  47. package/dist/mcp/server.js.map +1 -0
  48. package/dist/server/index.d.ts +2 -0
  49. package/dist/server/index.d.ts.map +1 -0
  50. package/dist/server/index.js +2 -0
  51. package/dist/server/index.js.map +1 -0
  52. package/dist/server/unified.d.ts +21 -0
  53. package/dist/server/unified.d.ts.map +1 -0
  54. package/dist/server/unified.js +397 -0
  55. package/dist/server/unified.js.map +1 -0
  56. package/dist/storage/index.d.ts +23 -0
  57. package/dist/storage/index.d.ts.map +1 -0
  58. package/dist/storage/index.js +92 -0
  59. package/dist/storage/index.js.map +1 -0
  60. package/dist/types.d.ts +404 -0
  61. package/dist/types.d.ts.map +1 -0
  62. package/dist/types.js +92 -0
  63. package/dist/types.js.map +1 -0
  64. package/dist/utils/crypto.d.ts +17 -0
  65. package/dist/utils/crypto.d.ts.map +1 -0
  66. package/dist/utils/crypto.js +73 -0
  67. package/dist/utils/crypto.js.map +1 -0
  68. package/dist/utils/http.d.ts +6 -0
  69. package/dist/utils/http.d.ts.map +1 -0
  70. package/dist/utils/http.js +43 -0
  71. package/dist/utils/http.js.map +1 -0
  72. package/dist/utils/session.d.ts +19 -0
  73. package/dist/utils/session.d.ts.map +1 -0
  74. package/dist/utils/session.js +112 -0
  75. package/dist/utils/session.js.map +1 -0
  76. package/package.json +50 -0
  77. package/src/adapters/base.ts +411 -0
  78. package/src/adapters/gemini.ts +314 -0
  79. package/src/adapters/index.ts +4 -0
  80. package/src/adapters/openai.ts +324 -0
  81. package/src/adapters/rest.ts +294 -0
  82. package/src/cli/index.ts +640 -0
  83. package/src/cli.ts +2 -0
  84. package/src/config/manager.ts +134 -0
  85. package/src/index.ts +4 -0
  86. package/src/mcp/index.ts +1 -0
  87. package/src/mcp/server.ts +623 -0
  88. package/src/server/index.ts +1 -0
  89. package/src/server/unified.ts +460 -0
  90. package/src/storage/index.ts +112 -0
  91. package/src/types.ts +181 -0
  92. package/src/utils/crypto.ts +100 -0
  93. package/src/utils/http.ts +45 -0
  94. package/src/utils/session.ts +141 -0
  95. package/tsconfig.json +20 -0
@@ -0,0 +1,472 @@
1
+ import { Command } from 'commander';
2
+ import inquirer from 'inquirer';
3
+ import chalk from 'chalk';
4
+ import * as path from 'path';
5
+ import * as fs from 'fs-extra';
6
+ import { loadConfig, initConfig } from '../config/manager.js';
7
+ import { StorageManager } from '../storage/index.js';
8
+ import { SessionManager } from '../utils/session.js';
9
+ import { maskValue, validatePassword } from '../utils/crypto.js';
10
+ const program = new Command();
11
+ program
12
+ .name('envcp')
13
+ .description('Secure environment variable management for AI-assisted coding')
14
+ .version('1.0.0');
15
+ program
16
+ .command('init')
17
+ .description('Initialize EnvCP in the current project')
18
+ .option('-p, --project <name>', 'Project name')
19
+ .option('-e, --encrypted', 'Enable encryption', true)
20
+ .action(async (options) => {
21
+ const projectPath = process.cwd();
22
+ const projectName = options.project || path.basename(projectPath);
23
+ console.log(chalk.blue('Initializing EnvCP...'));
24
+ const config = await initConfig(projectPath, projectName);
25
+ console.log(chalk.green('EnvCP initialized successfully!'));
26
+ console.log(chalk.gray(` Project: ${config.project}`));
27
+ console.log(chalk.gray(` Storage: ${config.storage.path}`));
28
+ console.log(chalk.gray(` Encrypted: ${config.storage.encrypted}`));
29
+ console.log(chalk.gray(` Session timeout: ${config.session?.timeout_minutes || 30} minutes`));
30
+ console.log(chalk.gray(` AI active check: ${config.access?.allow_ai_active_check ? 'enabled' : 'disabled'}`));
31
+ });
32
+ program
33
+ .command('unlock')
34
+ .description('Unlock EnvCP session with password')
35
+ .option('-p, --password <password>', 'Password (will prompt if not provided)')
36
+ .action(async (options) => {
37
+ const projectPath = process.cwd();
38
+ const config = await loadConfig(projectPath);
39
+ let password = options.password;
40
+ if (!password) {
41
+ const answer = await inquirer.prompt([
42
+ {
43
+ type: 'password',
44
+ name: 'password',
45
+ message: 'Enter password:',
46
+ mask: '*'
47
+ }
48
+ ]);
49
+ password = answer.password;
50
+ }
51
+ const validation = validatePassword(password, config.password || {});
52
+ if (!validation.valid) {
53
+ console.log(chalk.red(validation.error));
54
+ return;
55
+ }
56
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
57
+ await sessionManager.init();
58
+ const storage = new StorageManager(path.join(projectPath, config.storage.path), config.storage.encrypted);
59
+ storage.setPassword(password);
60
+ const storeExists = await storage.exists();
61
+ if (!storeExists) {
62
+ const confirm = await inquirer.prompt([
63
+ { type: 'password', name: 'password', message: 'Confirm password:', mask: '*' }
64
+ ]);
65
+ if (confirm.password !== password) {
66
+ console.log(chalk.red('Passwords do not match'));
67
+ return;
68
+ }
69
+ }
70
+ try {
71
+ await storage.load();
72
+ }
73
+ catch (error) {
74
+ console.log(chalk.red('Invalid password'));
75
+ return;
76
+ }
77
+ const session = await sessionManager.create(password);
78
+ console.log(chalk.green('Session unlocked!'));
79
+ console.log(chalk.gray(` Session ID: ${session.id}`));
80
+ console.log(chalk.gray(` Expires in: ${config.session?.timeout_minutes || 30} minutes`));
81
+ const maxExt = config.session?.max_extensions || 5;
82
+ console.log(chalk.gray(` Extensions remaining: ${maxExt - session.extensions}/${maxExt}`));
83
+ });
84
+ program
85
+ .command('lock')
86
+ .description('Lock EnvCP session')
87
+ .action(async () => {
88
+ const projectPath = process.cwd();
89
+ const config = await loadConfig(projectPath);
90
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
91
+ await sessionManager.init();
92
+ await sessionManager.destroy();
93
+ console.log(chalk.green('Session locked'));
94
+ });
95
+ program
96
+ .command('status')
97
+ .description('Check session status')
98
+ .action(async () => {
99
+ const projectPath = process.cwd();
100
+ const config = await loadConfig(projectPath);
101
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
102
+ await sessionManager.init();
103
+ const answer = await inquirer.prompt([
104
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
105
+ ]);
106
+ const session = await sessionManager.load(answer.password);
107
+ if (!session) {
108
+ console.log(chalk.yellow('No active session (expired, invalid password, or not unlocked)'));
109
+ console.log(chalk.gray('Run: envcp unlock'));
110
+ return;
111
+ }
112
+ const remaining = sessionManager.getRemainingTime();
113
+ const maxExt = config.session?.max_extensions || 5;
114
+ console.log(chalk.green('Session active'));
115
+ console.log(chalk.gray(` Session ID: ${session.id}`));
116
+ console.log(chalk.gray(` Remaining: ${remaining} minutes`));
117
+ console.log(chalk.gray(` Extensions remaining: ${maxExt - session.extensions}/${maxExt}`));
118
+ });
119
+ program
120
+ .command('extend')
121
+ .description('Extend session timeout')
122
+ .action(async () => {
123
+ const projectPath = process.cwd();
124
+ const config = await loadConfig(projectPath);
125
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
126
+ await sessionManager.init();
127
+ const answer = await inquirer.prompt([
128
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
129
+ ]);
130
+ const loaded = await sessionManager.load(answer.password);
131
+ if (!loaded) {
132
+ console.log(chalk.red('Cannot extend session. No active session or invalid password.'));
133
+ return;
134
+ }
135
+ const session = await sessionManager.extend();
136
+ if (!session) {
137
+ console.log(chalk.red('Cannot extend session. Session expired or max extensions reached.'));
138
+ return;
139
+ }
140
+ const maxExt = config.session?.max_extensions || 5;
141
+ console.log(chalk.green('Session extended!'));
142
+ console.log(chalk.gray(` Remaining: ${sessionManager.getRemainingTime()} minutes`));
143
+ console.log(chalk.gray(` Extensions remaining: ${maxExt - session.extensions}/${maxExt}`));
144
+ });
145
+ program
146
+ .command('add <name>')
147
+ .description('Add a new environment variable')
148
+ .option('-v, --value <value>', 'Variable value')
149
+ .option('-t, --tags <tags>', 'Tags (comma-separated)')
150
+ .option('-d, --description <desc>', 'Description')
151
+ .action(async (name, options) => {
152
+ const projectPath = process.cwd();
153
+ const config = await loadConfig(projectPath);
154
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
155
+ await sessionManager.init();
156
+ let session = await sessionManager.load();
157
+ let password = '';
158
+ if (!session) {
159
+ const answer = await inquirer.prompt([
160
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
161
+ ]);
162
+ password = answer.password;
163
+ const validation = validatePassword(password, config.password || {});
164
+ if (!validation.valid) {
165
+ console.log(chalk.red(validation.error));
166
+ return;
167
+ }
168
+ session = await sessionManager.create(password);
169
+ }
170
+ password = sessionManager.getPassword() || password;
171
+ let value = options.value;
172
+ let tags = [];
173
+ let description = options.description;
174
+ if (!value) {
175
+ const answers = await inquirer.prompt([
176
+ { type: 'password', name: 'value', message: 'Enter value:', mask: '*' },
177
+ { type: 'input', name: 'tags', message: 'Tags (comma-separated):' },
178
+ { type: 'input', name: 'description', message: 'Description:' },
179
+ ]);
180
+ value = answers.value;
181
+ tags = answers.tags.split(',').map((t) => t.trim()).filter(Boolean);
182
+ description = answers.description;
183
+ }
184
+ else if (options.tags) {
185
+ tags = options.tags.split(',').map((t) => t.trim()).filter(Boolean);
186
+ }
187
+ const storage = new StorageManager(path.join(projectPath, config.storage.path), config.storage.encrypted);
188
+ if (password)
189
+ storage.setPassword(password);
190
+ const now = new Date().toISOString();
191
+ const variable = {
192
+ name,
193
+ value,
194
+ encrypted: config.storage.encrypted,
195
+ tags: tags.length > 0 ? tags : undefined,
196
+ description,
197
+ created: now,
198
+ updated: now,
199
+ sync_to_env: true,
200
+ };
201
+ await storage.set(name, variable);
202
+ console.log(chalk.green(`Variable '${name}' added successfully`));
203
+ });
204
+ program
205
+ .command('list')
206
+ .description('List all variables (names only, values hidden)')
207
+ .option('-v, --show-values', 'Show actual values')
208
+ .action(async (options) => {
209
+ const projectPath = process.cwd();
210
+ const config = await loadConfig(projectPath);
211
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
212
+ await sessionManager.init();
213
+ let session = await sessionManager.load();
214
+ let password = '';
215
+ if (!session) {
216
+ const answer = await inquirer.prompt([
217
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
218
+ ]);
219
+ password = answer.password;
220
+ session = await sessionManager.create(password);
221
+ }
222
+ password = sessionManager.getPassword() || password;
223
+ const storage = new StorageManager(path.join(projectPath, config.storage.path), config.storage.encrypted);
224
+ if (password)
225
+ storage.setPassword(password);
226
+ const variables = await storage.load();
227
+ const names = Object.keys(variables);
228
+ if (names.length === 0) {
229
+ console.log(chalk.yellow('No variables found'));
230
+ return;
231
+ }
232
+ console.log(chalk.blue(`\nVariables (${names.length}):\n`));
233
+ for (const name of names) {
234
+ const v = variables[name];
235
+ const value = options.showValues ? v.value : maskValue(v.value);
236
+ const tags = v.tags ? chalk.gray(` [${v.tags.join(', ')}]`) : '';
237
+ console.log(` ${chalk.cyan(name)} = ${value}${tags}`);
238
+ }
239
+ console.log('');
240
+ });
241
+ program
242
+ .command('get <name>')
243
+ .description('Get a variable value')
244
+ .action(async (name) => {
245
+ const projectPath = process.cwd();
246
+ const config = await loadConfig(projectPath);
247
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
248
+ await sessionManager.init();
249
+ let session = await sessionManager.load();
250
+ let password = '';
251
+ if (!session) {
252
+ const answer = await inquirer.prompt([
253
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
254
+ ]);
255
+ password = answer.password;
256
+ session = await sessionManager.create(password);
257
+ }
258
+ password = sessionManager.getPassword() || password;
259
+ const storage = new StorageManager(path.join(projectPath, config.storage.path), config.storage.encrypted);
260
+ if (password)
261
+ storage.setPassword(password);
262
+ const variable = await storage.get(name);
263
+ if (!variable) {
264
+ console.log(chalk.red(`Variable '${name}' not found`));
265
+ return;
266
+ }
267
+ console.log(chalk.cyan(name));
268
+ console.log(` Value: ${variable.value}`);
269
+ if (variable.tags)
270
+ console.log(` Tags: ${variable.tags.join(', ')}`);
271
+ if (variable.description)
272
+ console.log(` Description: ${variable.description}`);
273
+ });
274
+ program
275
+ .command('remove <name>')
276
+ .description('Remove a variable')
277
+ .action(async (name) => {
278
+ const projectPath = process.cwd();
279
+ const config = await loadConfig(projectPath);
280
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
281
+ await sessionManager.init();
282
+ let session = await sessionManager.load();
283
+ let password = '';
284
+ if (!session) {
285
+ const answer = await inquirer.prompt([
286
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
287
+ ]);
288
+ password = answer.password;
289
+ session = await sessionManager.create(password);
290
+ }
291
+ password = sessionManager.getPassword() || password;
292
+ const storage = new StorageManager(path.join(projectPath, config.storage.path), config.storage.encrypted);
293
+ if (password)
294
+ storage.setPassword(password);
295
+ const deleted = await storage.delete(name);
296
+ if (deleted) {
297
+ console.log(chalk.green(`Variable '${name}' removed`));
298
+ }
299
+ else {
300
+ console.log(chalk.red(`Variable '${name}' not found`));
301
+ }
302
+ });
303
+ program
304
+ .command('sync')
305
+ .description('Sync variables to .env file')
306
+ .action(async () => {
307
+ const projectPath = process.cwd();
308
+ const config = await loadConfig(projectPath);
309
+ if (!config.sync.enabled) {
310
+ console.log(chalk.yellow('Sync is disabled in configuration'));
311
+ return;
312
+ }
313
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
314
+ await sessionManager.init();
315
+ let session = await sessionManager.load();
316
+ let password = '';
317
+ if (!session) {
318
+ const answer = await inquirer.prompt([
319
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
320
+ ]);
321
+ password = answer.password;
322
+ session = await sessionManager.create(password);
323
+ }
324
+ password = sessionManager.getPassword() || password;
325
+ const storage = new StorageManager(path.join(projectPath, config.storage.path), config.storage.encrypted);
326
+ if (password)
327
+ storage.setPassword(password);
328
+ const variables = await storage.load();
329
+ const lines = [];
330
+ if (config.sync.header) {
331
+ lines.push(config.sync.header);
332
+ }
333
+ for (const [name, variable] of Object.entries(variables)) {
334
+ lines.push(`${name}=${variable.value}`);
335
+ }
336
+ await fs.writeFile(path.join(projectPath, config.sync.target), lines.join('\n'), 'utf8');
337
+ console.log(chalk.green(`Synced ${lines.length} variables to ${config.sync.target}`));
338
+ });
339
+ program
340
+ .command('serve')
341
+ .description('Start EnvCP server')
342
+ .option('-p, --password <password>', 'Encryption password')
343
+ .option('-m, --mode <mode>', 'Server mode: mcp, rest, openai, gemini, all, auto', 'auto')
344
+ .option('--port <port>', 'HTTP port (for non-MCP modes)', '3456')
345
+ .option('--host <host>', 'HTTP host', '127.0.0.1')
346
+ .option('-k, --api-key <key>', 'API key for HTTP authentication')
347
+ .action(async (options) => {
348
+ const projectPath = process.cwd();
349
+ const config = await loadConfig(projectPath);
350
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
351
+ await sessionManager.init();
352
+ let session = await sessionManager.load();
353
+ let password = options.password;
354
+ if (!session && !password) {
355
+ const answer = await inquirer.prompt([
356
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
357
+ ]);
358
+ password = answer.password;
359
+ const validation = validatePassword(password, config.password || {});
360
+ if (!validation.valid) {
361
+ console.log(chalk.red(validation.error));
362
+ return;
363
+ }
364
+ session = await sessionManager.create(password);
365
+ }
366
+ password = sessionManager.getPassword() || password;
367
+ const mode = options.mode;
368
+ const port = parseInt(options.port, 10);
369
+ const host = options.host;
370
+ const apiKey = options.apiKey;
371
+ // MCP mode uses stdio
372
+ if (mode === 'mcp') {
373
+ const { EnvCPServer } = await import('../mcp/server.js');
374
+ const server = new EnvCPServer(config, projectPath, password);
375
+ await server.start();
376
+ return;
377
+ }
378
+ // HTTP-based modes
379
+ const { UnifiedServer } = await import('../server/unified.js');
380
+ const serverConfig = {
381
+ mode: mode,
382
+ port,
383
+ host,
384
+ api_key: apiKey,
385
+ cors: true,
386
+ auto_detect: mode === 'auto',
387
+ };
388
+ const server = new UnifiedServer(config, serverConfig, projectPath, password);
389
+ console.log(chalk.blue('Starting EnvCP server...'));
390
+ console.log(chalk.gray(` Mode: ${mode}`));
391
+ console.log(chalk.gray(` Host: ${host}`));
392
+ console.log(chalk.gray(` Port: ${port}`));
393
+ if (apiKey)
394
+ console.log(chalk.gray(` API Key: ${apiKey.substring(0, 4)}...`));
395
+ console.log('');
396
+ await server.start();
397
+ console.log(chalk.green(`EnvCP server running at http://${host}:${port}`));
398
+ console.log('');
399
+ console.log(chalk.blue('Available endpoints:'));
400
+ if (mode === 'auto' || mode === 'all') {
401
+ console.log(chalk.gray(' REST API: /api/*'));
402
+ console.log(chalk.gray(' OpenAI: /v1/chat/completions, /v1/functions/*'));
403
+ console.log(chalk.gray(' Gemini: /v1/models/envcp:generateContent'));
404
+ console.log('');
405
+ console.log(chalk.yellow('Auto-detection enabled: Server will detect client type from request headers'));
406
+ }
407
+ else if (mode === 'rest') {
408
+ console.log(chalk.gray(' GET /api/variables - List variables'));
409
+ console.log(chalk.gray(' GET /api/variables/:name - Get variable'));
410
+ console.log(chalk.gray(' POST /api/variables - Create variable'));
411
+ console.log(chalk.gray(' PUT /api/variables/:name - Update variable'));
412
+ console.log(chalk.gray(' DELETE /api/variables/:name - Delete variable'));
413
+ console.log(chalk.gray(' POST /api/sync - Sync to .env'));
414
+ console.log(chalk.gray(' POST /api/tools/:name - Call tool'));
415
+ }
416
+ else if (mode === 'openai') {
417
+ console.log(chalk.gray(' GET /v1/models - List models'));
418
+ console.log(chalk.gray(' GET /v1/functions - List functions'));
419
+ console.log(chalk.gray(' POST /v1/functions/call - Call function'));
420
+ console.log(chalk.gray(' POST /v1/tool_calls - Process tool calls'));
421
+ console.log(chalk.gray(' POST /v1/chat/completions - Chat completions'));
422
+ }
423
+ else if (mode === 'gemini') {
424
+ console.log(chalk.gray(' GET /v1/models - List models'));
425
+ console.log(chalk.gray(' GET /v1/tools - List tools'));
426
+ console.log(chalk.gray(' POST /v1/functions/call - Call function'));
427
+ console.log(chalk.gray(' POST /v1/function_calls - Process function calls'));
428
+ console.log(chalk.gray(' POST /v1/models/envcp:generateContent'));
429
+ }
430
+ console.log('');
431
+ console.log(chalk.gray('Press Ctrl+C to stop'));
432
+ });
433
+ program
434
+ .command('export')
435
+ .description('Export variables')
436
+ .option('-f, --format <format>', 'Output format: env, json, yaml', 'env')
437
+ .action(async (options) => {
438
+ const projectPath = process.cwd();
439
+ const config = await loadConfig(projectPath);
440
+ const sessionManager = new SessionManager(path.join(projectPath, config.session?.path || '.envcp/.session'), config.session?.timeout_minutes || 30, config.session?.max_extensions || 5);
441
+ await sessionManager.init();
442
+ let session = await sessionManager.load();
443
+ let password = '';
444
+ if (!session) {
445
+ const answer = await inquirer.prompt([
446
+ { type: 'password', name: 'password', message: 'Enter password:', mask: '*' }
447
+ ]);
448
+ password = answer.password;
449
+ session = await sessionManager.create(password);
450
+ }
451
+ password = sessionManager.getPassword() || password;
452
+ const storage = new StorageManager(path.join(projectPath, config.storage.path), config.storage.encrypted);
453
+ if (password)
454
+ storage.setPassword(password);
455
+ const variables = await storage.load();
456
+ let output;
457
+ switch (options.format) {
458
+ case 'json':
459
+ output = JSON.stringify(variables, null, 2);
460
+ break;
461
+ case 'yaml':
462
+ const yaml = await import('js-yaml');
463
+ output = yaml.dump(variables);
464
+ break;
465
+ default:
466
+ const lines = Object.entries(variables).map(([k, v]) => `${k}=${v.value}`);
467
+ output = lines.join('\n');
468
+ }
469
+ console.log(output);
470
+ });
471
+ program.parse();
472
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import './cli/index.js';
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,gBAAgB,CAAC"}
package/dist/cli.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import './cli/index.js';
3
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { EnvCPConfig } from '../types.js';
2
+ export declare function loadConfig(projectPath: string): Promise<EnvCPConfig>;
3
+ export declare function saveConfig(config: EnvCPConfig, projectPath: string): Promise<void>;
4
+ export declare function initConfig(projectPath: string, projectName?: string): Promise<EnvCPConfig>;
5
+ export declare function validateVariableName(name: string): boolean;
6
+ export declare function matchesPattern(name: string, pattern: string): boolean;
7
+ export declare function canAccess(name: string, config: EnvCPConfig): boolean;
8
+ export declare function isBlacklisted(name: string, config: EnvCPConfig): boolean;
9
+ export declare function canAIActiveCheck(config: EnvCPConfig): boolean;
10
+ export declare function requiresUserReference(config: EnvCPConfig): boolean;
11
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AA0C7D,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAW1E;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxF;AAED,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAuBhG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGrE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAoBpE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAKxE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAE7D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAElE"}