@luckydraw/cumulus 0.29.1 → 0.30.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/CHANGELOG.md +30 -2
- package/dist/gateway/adapters/webchat.d.ts.map +1 -1
- package/dist/gateway/adapters/webchat.js +8 -0
- package/dist/gateway/adapters/webchat.js.map +1 -1
- package/dist/gateway/daemon.d.ts +7 -1
- package/dist/gateway/daemon.d.ts.map +1 -1
- package/dist/gateway/daemon.js +44 -1
- package/dist/gateway/daemon.js.map +1 -1
- package/dist/gateway/setup.d.ts +21 -0
- package/dist/gateway/setup.d.ts.map +1 -0
- package/dist/gateway/setup.js +426 -0
- package/dist/gateway/setup.js.map +1 -0
- package/dist/gateway/static/blex.min.js +97 -9
- package/dist/gateway/static/widget.js +5 -1
- package/dist/lib/agentic-loop.d.ts.map +1 -1
- package/dist/lib/agentic-loop.js +15 -3
- package/dist/lib/agentic-loop.js.map +1 -1
- package/dist/lib/gateway.d.ts +3 -7
- package/dist/lib/gateway.d.ts.map +1 -1
- package/dist/lib/gateway.js +212 -15
- package/dist/lib/gateway.js.map +1 -1
- package/dist/lib/intent-reviewer.d.ts +103 -0
- package/dist/lib/intent-reviewer.d.ts.map +1 -0
- package/dist/lib/intent-reviewer.js +363 -0
- package/dist/lib/intent-reviewer.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cumulus-gateway setup wizard and config management.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1: `cumulus-gateway setup --project-root <path>` — instant non-interactive setup
|
|
5
|
+
* Phase 2: `cumulus-gateway setup` — interactive prompts with auto-detection
|
|
6
|
+
* Phase 4: `cumulus-gateway config set/get/list` — post-install config changes
|
|
7
|
+
*/
|
|
8
|
+
import { execSync } from 'child_process';
|
|
9
|
+
import { randomBytes } from 'crypto';
|
|
10
|
+
import * as fs from 'fs';
|
|
11
|
+
import * as os from 'os';
|
|
12
|
+
import * as path from 'path';
|
|
13
|
+
const CUMULUS_DIR = process.env.CUMULUS_DIR || path.join(os.homedir(), '.cumulus');
|
|
14
|
+
const CONFIG_PATH = path.join(CUMULUS_DIR, 'gateway.config.json');
|
|
15
|
+
const DEFAULT_PORT = 8080;
|
|
16
|
+
const PROJECT_MARKERS = [
|
|
17
|
+
'.git',
|
|
18
|
+
'package.json',
|
|
19
|
+
'Cargo.toml',
|
|
20
|
+
'go.mod',
|
|
21
|
+
'pyproject.toml',
|
|
22
|
+
'Makefile',
|
|
23
|
+
'CMakeLists.txt',
|
|
24
|
+
];
|
|
25
|
+
const CANDIDATE_DIRS = [
|
|
26
|
+
'Documents/_Projects',
|
|
27
|
+
'Documents',
|
|
28
|
+
'projects',
|
|
29
|
+
'dev',
|
|
30
|
+
'code',
|
|
31
|
+
'src',
|
|
32
|
+
'workspace',
|
|
33
|
+
'repos',
|
|
34
|
+
];
|
|
35
|
+
function detectProjectDirs() {
|
|
36
|
+
const home = os.homedir();
|
|
37
|
+
const results = [];
|
|
38
|
+
for (const candidate of CANDIDATE_DIRS) {
|
|
39
|
+
const dir = path.join(home, candidate);
|
|
40
|
+
if (!fs.existsSync(dir))
|
|
41
|
+
continue;
|
|
42
|
+
try {
|
|
43
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
44
|
+
let projectCount = 0;
|
|
45
|
+
for (const entry of entries) {
|
|
46
|
+
if (!entry.isDirectory() || entry.name.startsWith('.'))
|
|
47
|
+
continue;
|
|
48
|
+
const subdir = path.join(dir, entry.name);
|
|
49
|
+
for (const marker of PROJECT_MARKERS) {
|
|
50
|
+
if (fs.existsSync(path.join(subdir, marker))) {
|
|
51
|
+
projectCount++;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (projectCount > 0) {
|
|
57
|
+
results.push({ path: dir, projectCount });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Permission denied or other error — skip
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Sort by project count descending
|
|
65
|
+
results.sort((a, b) => b.projectCount - a.projectCount);
|
|
66
|
+
return results.slice(0, 5);
|
|
67
|
+
}
|
|
68
|
+
// ─── Interactive readline helpers ────────────────────────────
|
|
69
|
+
async function ask(question, defaultValue) {
|
|
70
|
+
const readline = await import('readline');
|
|
71
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
72
|
+
const prompt = defaultValue ? `${question} [${defaultValue}]: ` : `${question}: `;
|
|
73
|
+
const answer = await new Promise(resolve => {
|
|
74
|
+
rl.question(prompt, resolve);
|
|
75
|
+
});
|
|
76
|
+
rl.close();
|
|
77
|
+
return answer.trim() || defaultValue || '';
|
|
78
|
+
}
|
|
79
|
+
async function askYesNo(question, defaultYes = true) {
|
|
80
|
+
const hint = defaultYes ? '[Y/n]' : '[y/N]';
|
|
81
|
+
const answer = await ask(`${question} ${hint}`);
|
|
82
|
+
if (!answer)
|
|
83
|
+
return defaultYes;
|
|
84
|
+
return answer.toLowerCase().startsWith('y');
|
|
85
|
+
}
|
|
86
|
+
function generateConfig(opts) {
|
|
87
|
+
return {
|
|
88
|
+
apiKeys: [`sk-cml-${randomBytes(16).toString('hex')}`],
|
|
89
|
+
port: opts.port || DEFAULT_PORT,
|
|
90
|
+
projectRoot: opts.projectRoot || undefined,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function writeConfig(config) {
|
|
94
|
+
fs.mkdirSync(CUMULUS_DIR, { recursive: true });
|
|
95
|
+
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
96
|
+
}
|
|
97
|
+
// ─── Service installation ────────────────────────────────────
|
|
98
|
+
function getNodePath() {
|
|
99
|
+
return process.execPath;
|
|
100
|
+
}
|
|
101
|
+
function getBinDir() {
|
|
102
|
+
return path.dirname(getNodePath());
|
|
103
|
+
}
|
|
104
|
+
function generatePlist(projectRoot) {
|
|
105
|
+
const nodePath = getNodePath();
|
|
106
|
+
const binDir = getBinDir();
|
|
107
|
+
// Find cumulus-gateway binary — it's in the same directory as node
|
|
108
|
+
const gatewayBin = path.join(binDir, 'cumulus-gateway');
|
|
109
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
110
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
111
|
+
<plist version="1.0">
|
|
112
|
+
<dict>
|
|
113
|
+
<key>Label</key>
|
|
114
|
+
<string>com.luckydraw.cumulus-gateway</string>
|
|
115
|
+
<key>ProgramArguments</key>
|
|
116
|
+
<array>
|
|
117
|
+
<string>${nodePath}</string>
|
|
118
|
+
<string>${gatewayBin}</string>
|
|
119
|
+
<string>start</string>
|
|
120
|
+
</array>
|
|
121
|
+
<key>EnvironmentVariables</key>
|
|
122
|
+
<dict>
|
|
123
|
+
<key>PATH</key>
|
|
124
|
+
<string>${binDir}:/usr/local/bin:/usr/bin:/bin</string>
|
|
125
|
+
<key>HOME</key>
|
|
126
|
+
<string>${os.homedir()}</string>
|
|
127
|
+
</dict>${projectRoot
|
|
128
|
+
? `
|
|
129
|
+
<key>WorkingDirectory</key>
|
|
130
|
+
<string>${projectRoot}</string>`
|
|
131
|
+
: ''}
|
|
132
|
+
<key>RunAtLoad</key>
|
|
133
|
+
<true/>
|
|
134
|
+
<key>KeepAlive</key>
|
|
135
|
+
<true/>
|
|
136
|
+
<key>StandardOutPath</key>
|
|
137
|
+
<string>${path.join(CUMULUS_DIR, 'gateway.log')}</string>
|
|
138
|
+
<key>StandardErrorPath</key>
|
|
139
|
+
<string>${path.join(CUMULUS_DIR, 'gateway.log')}</string>
|
|
140
|
+
</dict>
|
|
141
|
+
</plist>`;
|
|
142
|
+
}
|
|
143
|
+
function generateSystemdUnit() {
|
|
144
|
+
const nodePath = getNodePath();
|
|
145
|
+
const binDir = getBinDir();
|
|
146
|
+
const gatewayBin = path.join(binDir, 'cumulus-gateway');
|
|
147
|
+
return `[Unit]
|
|
148
|
+
Description=Cumulus Gateway
|
|
149
|
+
After=network.target
|
|
150
|
+
|
|
151
|
+
[Service]
|
|
152
|
+
Type=simple
|
|
153
|
+
ExecStart=${nodePath} ${gatewayBin} start --foreground
|
|
154
|
+
Environment=PATH=${binDir}:/usr/local/bin:/usr/bin:/bin
|
|
155
|
+
Environment=HOME=${os.homedir()}
|
|
156
|
+
Restart=always
|
|
157
|
+
RestartSec=5
|
|
158
|
+
|
|
159
|
+
[Install]
|
|
160
|
+
WantedBy=default.target
|
|
161
|
+
`;
|
|
162
|
+
}
|
|
163
|
+
function installMacOSService(projectRoot) {
|
|
164
|
+
const plistPath = path.join(os.homedir(), 'Library', 'LaunchAgents', 'com.luckydraw.cumulus-gateway.plist');
|
|
165
|
+
const plistDir = path.dirname(plistPath);
|
|
166
|
+
fs.mkdirSync(plistDir, { recursive: true });
|
|
167
|
+
// Unload existing if present
|
|
168
|
+
try {
|
|
169
|
+
execSync(`launchctl unload "${plistPath}" 2>/dev/null`, { stdio: 'ignore' });
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Not loaded — fine
|
|
173
|
+
}
|
|
174
|
+
fs.writeFileSync(plistPath, generatePlist(projectRoot), 'utf-8');
|
|
175
|
+
try {
|
|
176
|
+
execSync(`launchctl load "${plistPath}"`, { stdio: 'inherit' });
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
console.error(` Failed to load LaunchAgent. You can load it manually:`);
|
|
181
|
+
console.error(` launchctl load "${plistPath}"`);
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function installLinuxService() {
|
|
186
|
+
const serviceDir = path.join(os.homedir(), '.config', 'systemd', 'user');
|
|
187
|
+
const servicePath = path.join(serviceDir, 'cumulus-gateway.service');
|
|
188
|
+
fs.mkdirSync(serviceDir, { recursive: true });
|
|
189
|
+
fs.writeFileSync(servicePath, generateSystemdUnit(), 'utf-8');
|
|
190
|
+
try {
|
|
191
|
+
execSync('systemctl --user daemon-reload', { stdio: 'inherit' });
|
|
192
|
+
execSync('systemctl --user enable --now cumulus-gateway', { stdio: 'inherit' });
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
console.error(` Failed to enable systemd service. You can enable it manually:`);
|
|
197
|
+
console.error(` systemctl --user enable --now cumulus-gateway`);
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export async function cmdSetup(args) {
|
|
202
|
+
console.log('');
|
|
203
|
+
console.log(' Cumulus Gateway Setup');
|
|
204
|
+
console.log(' ─────────────────────');
|
|
205
|
+
console.log('');
|
|
206
|
+
// Check for existing config
|
|
207
|
+
if (fs.existsSync(CONFIG_PATH) && !args.force) {
|
|
208
|
+
console.log(` Existing config found: ${CONFIG_PATH}`);
|
|
209
|
+
if (process.stdin.isTTY) {
|
|
210
|
+
const overwrite = await askYesNo(' Overwrite?', false);
|
|
211
|
+
if (!overwrite) {
|
|
212
|
+
console.log(' Setup cancelled. Use --force to overwrite.');
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
console.log(' Use --force to overwrite. Aborting.');
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
let projectRoot = args.projectRoot;
|
|
222
|
+
let port = args.port || DEFAULT_PORT;
|
|
223
|
+
// Phase 2: Interactive mode when no --project-root is given
|
|
224
|
+
if (!projectRoot && process.stdin.isTTY) {
|
|
225
|
+
const detected = detectProjectDirs();
|
|
226
|
+
if (detected.length > 0) {
|
|
227
|
+
console.log(' Project root (where thread folders are created):');
|
|
228
|
+
console.log('');
|
|
229
|
+
console.log(' Detected directories with projects:');
|
|
230
|
+
detected.forEach((d, i) => {
|
|
231
|
+
const rel = d.path.replace(os.homedir(), '~');
|
|
232
|
+
console.log(` [${i + 1}] ${rel} (${d.projectCount} projects)`);
|
|
233
|
+
});
|
|
234
|
+
console.log(` [${detected.length + 1}] Custom path...`);
|
|
235
|
+
console.log('');
|
|
236
|
+
const choice = await ask(` Choice`, '1');
|
|
237
|
+
const choiceNum = parseInt(choice, 10);
|
|
238
|
+
if (choiceNum >= 1 && choiceNum <= detected.length) {
|
|
239
|
+
projectRoot = detected[choiceNum - 1].path;
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
projectRoot = await ask(' Enter project root path');
|
|
243
|
+
// Expand ~ to home
|
|
244
|
+
if (projectRoot.startsWith('~')) {
|
|
245
|
+
projectRoot = path.join(os.homedir(), projectRoot.slice(1));
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
console.log(' No project directories auto-detected.');
|
|
251
|
+
projectRoot = await ask(' Project root path (where thread folders are created)');
|
|
252
|
+
if (projectRoot.startsWith('~')) {
|
|
253
|
+
projectRoot = path.join(os.homedir(), projectRoot.slice(1));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
// Validate path
|
|
257
|
+
if (projectRoot && !fs.existsSync(projectRoot)) {
|
|
258
|
+
const create = await askYesNo(` ${projectRoot} does not exist. Create it?`);
|
|
259
|
+
if (create) {
|
|
260
|
+
fs.mkdirSync(projectRoot, { recursive: true });
|
|
261
|
+
console.log(` Created ${projectRoot}`);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Ask about port
|
|
265
|
+
const portAnswer = await ask(' Port', String(port));
|
|
266
|
+
const parsedPort = parseInt(portAnswer, 10);
|
|
267
|
+
if (!isNaN(parsedPort) && parsedPort > 0 && parsedPort <= 65535) {
|
|
268
|
+
port = parsedPort;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
else if (projectRoot) {
|
|
272
|
+
// Non-interactive: expand ~ and validate
|
|
273
|
+
if (projectRoot.startsWith('~')) {
|
|
274
|
+
projectRoot = path.join(os.homedir(), projectRoot.slice(1));
|
|
275
|
+
}
|
|
276
|
+
if (!fs.existsSync(projectRoot)) {
|
|
277
|
+
fs.mkdirSync(projectRoot, { recursive: true });
|
|
278
|
+
console.log(` Created ${projectRoot}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Generate and write config
|
|
282
|
+
const config = generateConfig({ projectRoot, port });
|
|
283
|
+
writeConfig(config);
|
|
284
|
+
const apiKey = config.apiKeys[0];
|
|
285
|
+
const displayRoot = projectRoot ? projectRoot.replace(os.homedir(), '~') : '(not set)';
|
|
286
|
+
console.log('');
|
|
287
|
+
console.log(` Config: ${CONFIG_PATH}`);
|
|
288
|
+
console.log(` API key: ${apiKey}`);
|
|
289
|
+
console.log(` Project root: ${displayRoot}`);
|
|
290
|
+
console.log(` Port: ${port}`);
|
|
291
|
+
// Platform-specific service installation
|
|
292
|
+
if (process.stdin.isTTY) {
|
|
293
|
+
console.log('');
|
|
294
|
+
if (process.platform === 'darwin') {
|
|
295
|
+
const install = await askYesNo(' Install macOS LaunchAgent? (auto-start on login)');
|
|
296
|
+
if (install) {
|
|
297
|
+
const ok = installMacOSService(projectRoot);
|
|
298
|
+
console.log(ok ? ' ✓ LaunchAgent installed and running' : ' ✗ LaunchAgent installation failed');
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
else if (process.platform === 'linux') {
|
|
302
|
+
const install = await askYesNo(' Install systemd user service? (auto-start on login)');
|
|
303
|
+
if (install) {
|
|
304
|
+
const ok = installLinuxService();
|
|
305
|
+
console.log(ok
|
|
306
|
+
? ' ✓ systemd service installed and running'
|
|
307
|
+
: ' ✗ systemd service installation failed');
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
console.log('');
|
|
312
|
+
console.log(` Open http://localhost:${port}/chat`);
|
|
313
|
+
console.log(` API key: ${apiKey}`);
|
|
314
|
+
console.log('');
|
|
315
|
+
}
|
|
316
|
+
function loadRawConfig() {
|
|
317
|
+
if (!fs.existsSync(CONFIG_PATH)) {
|
|
318
|
+
console.error(`No config found at ${CONFIG_PATH}. Run 'cumulus-gateway setup' first.`);
|
|
319
|
+
process.exit(1);
|
|
320
|
+
}
|
|
321
|
+
return JSON.parse(fs.readFileSync(CONFIG_PATH, 'utf-8'));
|
|
322
|
+
}
|
|
323
|
+
function redactValue(key, value) {
|
|
324
|
+
if (typeof value === 'string' &&
|
|
325
|
+
(key.toLowerCase().includes('key') ||
|
|
326
|
+
key.toLowerCase().includes('secret') ||
|
|
327
|
+
key.toLowerCase().includes('token'))) {
|
|
328
|
+
if (value.length > 12) {
|
|
329
|
+
return value.slice(0, 8) + '...' + value.slice(-4);
|
|
330
|
+
}
|
|
331
|
+
return '***';
|
|
332
|
+
}
|
|
333
|
+
if (Array.isArray(value)) {
|
|
334
|
+
return value.map((v, i) => redactValue(`${key}[${i}]`, v));
|
|
335
|
+
}
|
|
336
|
+
return value;
|
|
337
|
+
}
|
|
338
|
+
function getNestedValue(obj, keyPath) {
|
|
339
|
+
const parts = keyPath.split('.');
|
|
340
|
+
let current = obj;
|
|
341
|
+
for (const part of parts) {
|
|
342
|
+
if (current === null || current === undefined || typeof current !== 'object')
|
|
343
|
+
return undefined;
|
|
344
|
+
current = current[part];
|
|
345
|
+
}
|
|
346
|
+
return current;
|
|
347
|
+
}
|
|
348
|
+
function setNestedValue(obj, keyPath, value) {
|
|
349
|
+
const parts = keyPath.split('.');
|
|
350
|
+
let current = obj;
|
|
351
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
352
|
+
const part = parts[i];
|
|
353
|
+
if (current[part] === undefined || typeof current[part] !== 'object') {
|
|
354
|
+
current[part] = {};
|
|
355
|
+
}
|
|
356
|
+
current = current[part];
|
|
357
|
+
}
|
|
358
|
+
current[parts[parts.length - 1]] = value;
|
|
359
|
+
}
|
|
360
|
+
function parseConfigValue(value) {
|
|
361
|
+
// Try JSON parse for arrays, objects, numbers, booleans
|
|
362
|
+
try {
|
|
363
|
+
return JSON.parse(value);
|
|
364
|
+
}
|
|
365
|
+
catch {
|
|
366
|
+
// Plain string
|
|
367
|
+
return value;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
export function cmdConfig(args) {
|
|
371
|
+
switch (args.subcommand) {
|
|
372
|
+
case 'list': {
|
|
373
|
+
const config = loadRawConfig();
|
|
374
|
+
const redacted = {};
|
|
375
|
+
for (const [key, val] of Object.entries(config)) {
|
|
376
|
+
redacted[key] = redactValue(key, val);
|
|
377
|
+
}
|
|
378
|
+
console.log(JSON.stringify(redacted, null, 2));
|
|
379
|
+
break;
|
|
380
|
+
}
|
|
381
|
+
case 'get': {
|
|
382
|
+
if (!args.key) {
|
|
383
|
+
console.error('Usage: cumulus-gateway config get <key>');
|
|
384
|
+
console.error('Example: cumulus-gateway config get projectRoot');
|
|
385
|
+
process.exit(1);
|
|
386
|
+
}
|
|
387
|
+
const config = loadRawConfig();
|
|
388
|
+
const value = getNestedValue(config, args.key);
|
|
389
|
+
if (value === undefined) {
|
|
390
|
+
console.error(`Key "${args.key}" not found in config.`);
|
|
391
|
+
process.exit(1);
|
|
392
|
+
}
|
|
393
|
+
if (typeof value === 'object') {
|
|
394
|
+
console.log(JSON.stringify(value, null, 2));
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
console.log(String(value));
|
|
398
|
+
}
|
|
399
|
+
break;
|
|
400
|
+
}
|
|
401
|
+
case 'set': {
|
|
402
|
+
if (!args.key || args.value === undefined) {
|
|
403
|
+
console.error('Usage: cumulus-gateway config set <key> <value>');
|
|
404
|
+
console.error('Examples:');
|
|
405
|
+
console.error(' cumulus-gateway config set projectRoot ~/projects');
|
|
406
|
+
console.error(' cumulus-gateway config set port 8090');
|
|
407
|
+
console.error(' cumulus-gateway config set models \'[{"id":"claude","label":"Claude","provider":"claude-cli"}]\'');
|
|
408
|
+
process.exit(1);
|
|
409
|
+
}
|
|
410
|
+
const config = loadRawConfig();
|
|
411
|
+
const parsed = parseConfigValue(args.value);
|
|
412
|
+
// Expand ~ in path-like values
|
|
413
|
+
if (typeof parsed === 'string' && parsed.startsWith('~')) {
|
|
414
|
+
setNestedValue(config, args.key, path.join(os.homedir(), parsed.slice(1)));
|
|
415
|
+
}
|
|
416
|
+
else {
|
|
417
|
+
setNestedValue(config, args.key, parsed);
|
|
418
|
+
}
|
|
419
|
+
fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
420
|
+
const displayVal = typeof parsed === 'string' ? parsed : JSON.stringify(parsed);
|
|
421
|
+
console.log(`Set ${args.key} = ${displayVal}`);
|
|
422
|
+
break;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/gateway/setup.ts"],"names":[],"mappings":"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"}
|