@puukis/core 0.1.4 → 0.1.5

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 (50) hide show
  1. package/dist/brain/Brain.d.ts +1 -0
  2. package/dist/brain/Brain.d.ts.map +1 -1
  3. package/dist/brain/Brain.js +58 -11
  4. package/dist/brain/Brain.js.map +1 -1
  5. package/dist/cli/commands/gateway.d.ts +53 -0
  6. package/dist/cli/commands/gateway.d.ts.map +1 -0
  7. package/dist/cli/commands/gateway.js +594 -0
  8. package/dist/cli/commands/gateway.js.map +1 -0
  9. package/dist/cli/commands/onboarding.js +2 -2
  10. package/dist/cli/commands/onboarding.js.map +1 -1
  11. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  12. package/dist/cli/commands/uninstall.js +6 -3
  13. package/dist/cli/commands/uninstall.js.map +1 -1
  14. package/dist/cli/index.d.ts.map +1 -1
  15. package/dist/cli/index.js +6 -0
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/codex/CodexRpcClient.d.ts +25 -1
  18. package/dist/codex/CodexRpcClient.d.ts.map +1 -1
  19. package/dist/codex/CodexRpcClient.js +187 -19
  20. package/dist/codex/CodexRpcClient.js.map +1 -1
  21. package/dist/codex/types.d.ts +4 -3
  22. package/dist/codex/types.d.ts.map +1 -1
  23. package/dist/config/env.d.ts +4 -0
  24. package/dist/config/env.d.ts.map +1 -1
  25. package/dist/config/env.js +61 -2
  26. package/dist/config/env.js.map +1 -1
  27. package/dist/config/index.d.ts +1 -1
  28. package/dist/config/index.d.ts.map +1 -1
  29. package/dist/config/index.js +1 -1
  30. package/dist/config/index.js.map +1 -1
  31. package/dist/llm/OpenAICodexProvider.d.ts +2 -0
  32. package/dist/llm/OpenAICodexProvider.d.ts.map +1 -1
  33. package/dist/llm/OpenAICodexProvider.js +312 -18
  34. package/dist/llm/OpenAICodexProvider.js.map +1 -1
  35. package/dist/main.js +2 -2
  36. package/dist/main.js.map +1 -1
  37. package/dist/pipeline/normalize.d.ts +1 -1
  38. package/dist/pipeline/normalize.d.ts.map +1 -1
  39. package/dist/pipeline/normalize.js.map +1 -1
  40. package/dist/server/index.d.ts +3 -3
  41. package/dist/server/index.d.ts.map +1 -1
  42. package/dist/server/index.js +7 -5
  43. package/dist/server/index.js.map +1 -1
  44. package/dist/tools/ToolExecutor.d.ts +14 -2
  45. package/dist/tools/ToolExecutor.d.ts.map +1 -1
  46. package/dist/tools/ToolExecutor.js +194 -13
  47. package/dist/tools/ToolExecutor.js.map +1 -1
  48. package/dist/types.d.ts +14 -2
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +1 -1
@@ -0,0 +1,594 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ import { existsSync, promises as fs } from 'node:fs';
4
+ import { spawnSync } from 'node:child_process';
5
+ import { getConfigDir, getConfigHomeDir } from '../../config/env.js';
6
+ const LINUX_UNIT_NAME = 'keygate-gateway.service';
7
+ const MACOS_LABEL = 'dev.keygate.gateway';
8
+ const WINDOWS_TASK_NAME = 'KeygateGateway';
9
+ const GATEWAY_USAGE = 'Usage: keygate gateway <open|close|status>';
10
+ export async function runGatewayCommand(args, depsOverride) {
11
+ const action = parseGatewayAction(args.positional[1]);
12
+ if (!action) {
13
+ throw new Error(GATEWAY_USAGE);
14
+ }
15
+ const deps = createGatewayDeps(depsOverride);
16
+ const adapter = createGatewayAdapter(deps.platform, deps);
17
+ if (action === 'status') {
18
+ const current = await adapter.status();
19
+ printGatewayStatus(deps, current);
20
+ return;
21
+ }
22
+ await adapter.ensureDefinition();
23
+ if (action === 'open') {
24
+ const before = await adapter.status();
25
+ if (before.state === 'running') {
26
+ deps.log('Gateway is already running.');
27
+ printGatewayStatus(deps, before);
28
+ return;
29
+ }
30
+ await adapter.open();
31
+ const after = await adapter.status();
32
+ deps.log('Gateway open requested.');
33
+ printGatewayStatus(deps, after);
34
+ return;
35
+ }
36
+ const before = await adapter.status();
37
+ if (before.state === 'stopped') {
38
+ deps.log('Gateway is already stopped.');
39
+ printGatewayStatus(deps, before);
40
+ return;
41
+ }
42
+ await adapter.close();
43
+ const after = await adapter.status();
44
+ deps.log('Gateway close requested.');
45
+ printGatewayStatus(deps, after);
46
+ }
47
+ export function parseGatewayAction(value) {
48
+ if (value === 'open' || value === 'close' || value === 'status') {
49
+ return value;
50
+ }
51
+ return null;
52
+ }
53
+ export function createGatewayAdapter(platform, deps) {
54
+ if (platform === 'linux') {
55
+ return createLinuxAdapter(deps);
56
+ }
57
+ if (platform === 'darwin') {
58
+ return createMacOSAdapter(deps);
59
+ }
60
+ if (platform === 'win32') {
61
+ return createWindowsAdapter(deps);
62
+ }
63
+ throw unsupportedManagerError(platform, `Unsupported platform "${platform}" for native gateway lifecycle management.`);
64
+ }
65
+ function createGatewayDeps(overrides) {
66
+ const defaults = {
67
+ platform: process.platform,
68
+ uid: typeof process.getuid === 'function' ? process.getuid() : null,
69
+ cwd: process.cwd(),
70
+ homeDir: os.homedir(),
71
+ configDir: getConfigDir(),
72
+ configHomeDir: getConfigHomeDir(),
73
+ envPath: process.env['PATH'],
74
+ envPathExt: process.env['PATHEXT'],
75
+ envCodexBin: process.env['KEYGATE_CODEX_BIN'],
76
+ argv1: process.argv[1],
77
+ execPath: process.execPath,
78
+ log: (message) => {
79
+ console.log(message);
80
+ },
81
+ mkdir: async (targetPath) => {
82
+ await fs.mkdir(targetPath, { recursive: true });
83
+ },
84
+ writeFile: async (targetPath, content) => {
85
+ await fs.writeFile(targetPath, content, 'utf8');
86
+ },
87
+ chmod: async (targetPath, mode) => {
88
+ await fs.chmod(targetPath, mode);
89
+ },
90
+ runCommand: (command, args, options) => runSync(command, args, options),
91
+ };
92
+ if (!overrides) {
93
+ return defaults;
94
+ }
95
+ return {
96
+ ...defaults,
97
+ ...overrides,
98
+ };
99
+ }
100
+ function createLinuxAdapter(deps) {
101
+ const runtimeDir = path.join(deps.configDir, 'gateway');
102
+ const launcherPath = path.join(runtimeDir, 'launch-keygate.sh');
103
+ const systemdUserDir = path.join(deps.configHomeDir, 'systemd', 'user');
104
+ const unitPath = path.join(systemdUserDir, LINUX_UNIT_NAME);
105
+ const launchSpec = resolveServeLaunchSpec(deps);
106
+ return {
107
+ async ensureDefinition() {
108
+ assertLinuxManagerAvailable(deps);
109
+ await deps.mkdir(runtimeDir);
110
+ await deps.mkdir(systemdUserDir);
111
+ await deps.writeFile(launcherPath, buildShellLauncherContent(launchSpec));
112
+ await deps.chmod(launcherPath, 0o755);
113
+ await deps.writeFile(unitPath, buildLinuxUnitContent(launcherPath));
114
+ runOrThrow(deps, 'systemctl', ['--user', 'daemon-reload'], 'Failed to reload systemd user units');
115
+ },
116
+ async open() {
117
+ runOrThrow(deps, 'systemctl', ['--user', 'start', LINUX_UNIT_NAME], 'Failed to start gateway systemd unit');
118
+ },
119
+ async close() {
120
+ const result = deps.runCommand('systemctl', ['--user', 'stop', LINUX_UNIT_NAME]);
121
+ if (result.status === 0) {
122
+ return;
123
+ }
124
+ const message = commandOutput(result);
125
+ if (isNotLoadedMessage(message)) {
126
+ return;
127
+ }
128
+ throw new Error(`Failed to stop gateway systemd unit: ${message}`);
129
+ },
130
+ async status() {
131
+ assertLinuxManagerAvailable(deps);
132
+ const activeResult = deps.runCommand('systemctl', ['--user', 'is-active', LINUX_UNIT_NAME]);
133
+ const activeValue = activeResult.stdout.trim().toLowerCase();
134
+ const detailResult = deps.runCommand('systemctl', [
135
+ '--user',
136
+ 'show',
137
+ LINUX_UNIT_NAME,
138
+ '--property=ActiveState,SubState,UnitFileState',
139
+ '--value',
140
+ ]);
141
+ const detail = summarizeLinuxDetail(detailResult);
142
+ if (activeResult.status === 0 && activeValue === 'active') {
143
+ return { state: 'running', detail };
144
+ }
145
+ if (activeValue === 'inactive' ||
146
+ activeValue === 'failed' ||
147
+ activeValue === 'unknown' ||
148
+ isNotLoadedMessage(commandOutput(activeResult))) {
149
+ return { state: 'stopped', detail };
150
+ }
151
+ return { state: 'unknown', detail };
152
+ },
153
+ };
154
+ }
155
+ function createMacOSAdapter(deps) {
156
+ const runtimeDir = path.join(deps.configDir, 'gateway');
157
+ const launcherPath = path.join(runtimeDir, 'launch-keygate.sh');
158
+ const launchAgentsDir = path.join(deps.homeDir, 'Library', 'LaunchAgents');
159
+ const plistPath = path.join(launchAgentsDir, `${MACOS_LABEL}.plist`);
160
+ const domain = resolveLaunchdDomain(deps);
161
+ const launchSpec = resolveServeLaunchSpec(deps);
162
+ return {
163
+ async ensureDefinition() {
164
+ assertMacOSManagerAvailable(deps);
165
+ await deps.mkdir(runtimeDir);
166
+ await deps.mkdir(launchAgentsDir);
167
+ await deps.writeFile(launcherPath, buildShellLauncherContent(launchSpec));
168
+ await deps.chmod(launcherPath, 0o755);
169
+ await deps.writeFile(plistPath, buildLaunchdPlistContent(launcherPath));
170
+ },
171
+ async open() {
172
+ const bootstrap = deps.runCommand('launchctl', ['bootstrap', domain, plistPath]);
173
+ if (bootstrap.status !== 0) {
174
+ const message = commandOutput(bootstrap);
175
+ if (!isLaunchdAlreadyLoadedMessage(message)) {
176
+ throw new Error(`Failed to bootstrap launchd service: ${message}`);
177
+ }
178
+ }
179
+ runOrThrow(deps, 'launchctl', ['kickstart', '-k', `${domain}/${MACOS_LABEL}`], 'Failed to kickstart launchd service');
180
+ },
181
+ async close() {
182
+ const result = deps.runCommand('launchctl', ['bootout', `${domain}/${MACOS_LABEL}`]);
183
+ if (result.status === 0) {
184
+ return;
185
+ }
186
+ const message = commandOutput(result);
187
+ if (isLaunchdNotLoadedMessage(message)) {
188
+ return;
189
+ }
190
+ throw new Error(`Failed to stop launchd service: ${message}`);
191
+ },
192
+ async status() {
193
+ assertMacOSManagerAvailable(deps);
194
+ const result = deps.runCommand('launchctl', ['print', `${domain}/${MACOS_LABEL}`]);
195
+ const output = commandOutput(result);
196
+ if (result.status !== 0) {
197
+ if (isLaunchdNotLoadedMessage(output)) {
198
+ return { state: 'stopped', detail: 'launchd service is not loaded' };
199
+ }
200
+ return { state: 'unknown', detail: output };
201
+ }
202
+ const stateMatch = result.stdout.match(/state = ([a-zA-Z]+)/);
203
+ const pidMatch = result.stdout.match(/pid = ([0-9]+)/);
204
+ if (pidMatch || stateMatch?.[1]?.toLowerCase() === 'running') {
205
+ const pidSegment = pidMatch ? ` pid=${pidMatch[1]}` : '';
206
+ return {
207
+ state: 'running',
208
+ detail: `launchd state=${stateMatch?.[1] ?? 'running'}${pidSegment}`,
209
+ };
210
+ }
211
+ if (stateMatch?.[1]?.toLowerCase() === 'waiting') {
212
+ return {
213
+ state: 'stopped',
214
+ detail: `launchd state=${stateMatch[1]}`,
215
+ };
216
+ }
217
+ return {
218
+ state: 'unknown',
219
+ detail: output.trim() || 'Unable to determine launchd state',
220
+ };
221
+ },
222
+ };
223
+ }
224
+ function createWindowsAdapter(deps) {
225
+ const runtimeDir = path.join(deps.configDir, 'gateway');
226
+ const launcherPath = path.join(runtimeDir, 'launch-keygate.ps1');
227
+ const launchSpec = resolveServeLaunchSpec(deps);
228
+ const powershell = resolvePowerShellCommand(deps);
229
+ return {
230
+ async ensureDefinition() {
231
+ assertWindowsManagerAvailable(deps, powershell);
232
+ await deps.mkdir(runtimeDir);
233
+ await deps.writeFile(launcherPath, buildPowerShellLauncherContent(launchSpec));
234
+ const registerScript = [
235
+ `$runner = '${escapePowerShellString(launcherPath)}'`,
236
+ "$taskName = 'KeygateGateway'",
237
+ "$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument ('-NoProfile -NonInteractive -ExecutionPolicy Bypass -File \"' + $runner + '\"')",
238
+ "$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit (New-TimeSpan -Hours 0)",
239
+ "Register-ScheduledTask -TaskName $taskName -Action $action -Settings $settings -Description 'Keygate gateway background service' -Force | Out-Null",
240
+ ].join('; ');
241
+ runOrThrow(deps, powershell, ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', registerScript], 'Failed to register scheduled task for Keygate gateway');
242
+ },
243
+ async open() {
244
+ const result = deps.runCommand('schtasks', ['/Run', '/TN', WINDOWS_TASK_NAME]);
245
+ if (result.status === 0) {
246
+ return;
247
+ }
248
+ const message = commandOutput(result);
249
+ if (/already running/i.test(message)) {
250
+ return;
251
+ }
252
+ throw new Error(`Failed to run scheduled task "${WINDOWS_TASK_NAME}": ${message}`);
253
+ },
254
+ async close() {
255
+ const result = deps.runCommand('schtasks', ['/End', '/TN', WINDOWS_TASK_NAME]);
256
+ if (result.status === 0) {
257
+ return;
258
+ }
259
+ const message = commandOutput(result);
260
+ if (isWindowsTaskMissingOrStoppedMessage(message)) {
261
+ return;
262
+ }
263
+ throw new Error(`Failed to stop scheduled task "${WINDOWS_TASK_NAME}": ${message}`);
264
+ },
265
+ async status() {
266
+ assertWindowsManagerAvailable(deps, powershell);
267
+ const script = [
268
+ "$task = Get-ScheduledTask -TaskName 'KeygateGateway' -ErrorAction Stop",
269
+ "$info = Get-ScheduledTaskInfo -TaskName 'KeygateGateway' -ErrorAction Stop",
270
+ 'Write-Output ("State=" + $task.State)',
271
+ 'Write-Output ("LastTaskResult=" + $info.LastTaskResult)',
272
+ ].join('; ');
273
+ const result = deps.runCommand(powershell, [
274
+ '-NoProfile',
275
+ '-NonInteractive',
276
+ '-ExecutionPolicy',
277
+ 'Bypass',
278
+ '-Command',
279
+ script,
280
+ ]);
281
+ const output = commandOutput(result);
282
+ if (result.status !== 0) {
283
+ if (isWindowsTaskMissingOrStoppedMessage(output)) {
284
+ return { state: 'stopped', detail: 'scheduled task does not exist or is not running' };
285
+ }
286
+ return { state: 'unknown', detail: output };
287
+ }
288
+ const state = extractKeyValue(result.stdout, 'State')?.toLowerCase();
289
+ const lastTaskResult = extractKeyValue(result.stdout, 'LastTaskResult') ?? 'unknown';
290
+ const detail = `state=${state ?? 'unknown'}, lastResult=${lastTaskResult}`;
291
+ if (state === 'running') {
292
+ return { state: 'running', detail };
293
+ }
294
+ if (state === 'ready' || state === 'disabled') {
295
+ return { state: 'stopped', detail };
296
+ }
297
+ return { state: 'unknown', detail };
298
+ },
299
+ };
300
+ }
301
+ function resolveServeLaunchSpec(deps) {
302
+ const env = {};
303
+ const inheritedPath = deps.envPath?.trim();
304
+ if (inheritedPath) {
305
+ env['PATH'] = inheritedPath;
306
+ }
307
+ const codexBin = resolveCodexBinary(deps);
308
+ if (codexBin) {
309
+ env['KEYGATE_CODEX_BIN'] = codexBin;
310
+ }
311
+ const entry = deps.argv1?.trim();
312
+ if (entry && entry.length > 0) {
313
+ return {
314
+ command: deps.execPath,
315
+ args: [path.resolve(entry), 'serve'],
316
+ env,
317
+ };
318
+ }
319
+ return {
320
+ command: 'keygate',
321
+ args: ['serve'],
322
+ env,
323
+ };
324
+ }
325
+ export function buildShellLauncherContent(spec) {
326
+ const lines = [
327
+ '#!/usr/bin/env bash',
328
+ 'set -euo pipefail',
329
+ 'export KEYGATE_OPEN_CHAT_ON_START=false',
330
+ ];
331
+ if (spec.env['PATH']) {
332
+ lines.push(`export PATH=${shellQuote(spec.env['PATH'])}`);
333
+ }
334
+ if (spec.env['KEYGATE_CODEX_BIN']) {
335
+ lines.push(`export KEYGATE_CODEX_BIN=${shellQuote(spec.env['KEYGATE_CODEX_BIN'])}`);
336
+ }
337
+ lines.push(`exec ${toShellCommand(spec.command, spec.args)}`);
338
+ lines.push('');
339
+ return lines.join('\n');
340
+ }
341
+ export function buildLinuxUnitContent(launcherPath) {
342
+ return [
343
+ '[Unit]',
344
+ 'Description=Keygate Gateway Service',
345
+ 'After=network.target',
346
+ '',
347
+ '[Service]',
348
+ 'Type=simple',
349
+ `ExecStart=${launcherPath}`,
350
+ 'Restart=on-failure',
351
+ 'RestartSec=2',
352
+ 'Environment=KEYGATE_OPEN_CHAT_ON_START=false',
353
+ '',
354
+ '[Install]',
355
+ 'WantedBy=default.target',
356
+ '',
357
+ ].join('\n');
358
+ }
359
+ export function buildLaunchdPlistContent(launcherPath) {
360
+ const escapedLauncher = escapeXml(launcherPath);
361
+ return [
362
+ '<?xml version="1.0" encoding="UTF-8"?>',
363
+ '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">',
364
+ '<plist version="1.0">',
365
+ '<dict>',
366
+ ' <key>Label</key>',
367
+ ` <string>${MACOS_LABEL}</string>`,
368
+ ' <key>ProgramArguments</key>',
369
+ ' <array>',
370
+ ' <string>/bin/sh</string>',
371
+ ` <string>${escapedLauncher}</string>`,
372
+ ' </array>',
373
+ ' <key>KeepAlive</key>',
374
+ ' <true/>',
375
+ ' <key>RunAtLoad</key>',
376
+ ' <false/>',
377
+ ' <key>EnvironmentVariables</key>',
378
+ ' <dict>',
379
+ ' <key>KEYGATE_OPEN_CHAT_ON_START</key>',
380
+ ' <string>false</string>',
381
+ ' </dict>',
382
+ '</dict>',
383
+ '</plist>',
384
+ '',
385
+ ].join('\n');
386
+ }
387
+ export function buildPowerShellLauncherContent(spec) {
388
+ const lines = [
389
+ "$ErrorActionPreference = 'Stop'",
390
+ "$env:KEYGATE_OPEN_CHAT_ON_START = 'false'",
391
+ ];
392
+ if (spec.env['PATH']) {
393
+ lines.push(`$env:Path = ${quotePowerShell(spec.env['PATH'])}`);
394
+ }
395
+ if (spec.env['KEYGATE_CODEX_BIN']) {
396
+ lines.push(`$env:KEYGATE_CODEX_BIN = ${quotePowerShell(spec.env['KEYGATE_CODEX_BIN'])}`);
397
+ }
398
+ lines.push(`& ${toPowerShellInvocation(spec.command, spec.args)}`);
399
+ lines.push('');
400
+ return lines.join('\n');
401
+ }
402
+ function printGatewayStatus(deps, status) {
403
+ deps.log(`Gateway status: ${status.state}`);
404
+ if (status.detail.trim().length > 0) {
405
+ deps.log(`Detail: ${status.detail}`);
406
+ }
407
+ }
408
+ function resolveLaunchdDomain(deps) {
409
+ if (deps.uid === null) {
410
+ throw unsupportedManagerError('darwin', 'Unable to determine current user id (uid) for launchd domain.');
411
+ }
412
+ return `gui/${deps.uid}`;
413
+ }
414
+ function resolvePowerShellCommand(deps) {
415
+ if (hasCommand(deps, 'powershell')) {
416
+ return 'powershell';
417
+ }
418
+ if (hasCommand(deps, 'pwsh')) {
419
+ return 'pwsh';
420
+ }
421
+ return 'powershell';
422
+ }
423
+ function assertLinuxManagerAvailable(deps) {
424
+ if (!hasCommand(deps, 'systemctl')) {
425
+ throw unsupportedManagerError('linux', 'systemctl is not available.');
426
+ }
427
+ const result = deps.runCommand('systemctl', ['--user', 'show-environment']);
428
+ if (result.error || result.status !== 0) {
429
+ const message = commandOutput(result);
430
+ throw unsupportedManagerError('linux', `systemd --user is not available in this session${message ? ` (${message})` : ''}.`);
431
+ }
432
+ }
433
+ function assertMacOSManagerAvailable(deps) {
434
+ if (!hasCommand(deps, 'launchctl')) {
435
+ throw unsupportedManagerError('darwin', 'launchctl is not available.');
436
+ }
437
+ if (deps.uid === null) {
438
+ throw unsupportedManagerError('darwin', 'Unable to determine current user id (uid).');
439
+ }
440
+ }
441
+ function assertWindowsManagerAvailable(deps, powershell) {
442
+ if (!hasCommand(deps, 'schtasks')) {
443
+ throw unsupportedManagerError('win32', 'schtasks is not available.');
444
+ }
445
+ if (!hasCommand(deps, powershell)) {
446
+ throw unsupportedManagerError('win32', `${powershell} is not available.`);
447
+ }
448
+ }
449
+ function hasCommand(deps, command) {
450
+ const args = command === 'schtasks' ? ['/?'] : ['--help'];
451
+ const result = deps.runCommand(command, args);
452
+ return !result.error;
453
+ }
454
+ function runOrThrow(deps, command, args, failurePrefix, options) {
455
+ const result = deps.runCommand(command, args, options);
456
+ if (result.status === 0) {
457
+ return;
458
+ }
459
+ const message = commandOutput(result);
460
+ throw new Error(`${failurePrefix}: ${message}`);
461
+ }
462
+ function summarizeLinuxDetail(result) {
463
+ if (result.status !== 0) {
464
+ return commandOutput(result);
465
+ }
466
+ const parts = result.stdout
467
+ .split(/\r?\n/g)
468
+ .map((line) => line.trim())
469
+ .filter((line) => line.length > 0);
470
+ if (parts.length >= 3) {
471
+ return `active=${parts[0]}, sub=${parts[1]}, unitFile=${parts[2]}`;
472
+ }
473
+ if (parts.length > 0) {
474
+ return parts.join(', ');
475
+ }
476
+ return 'systemd unit status unavailable';
477
+ }
478
+ function commandOutput(result) {
479
+ if (result.error?.message) {
480
+ return result.error.message;
481
+ }
482
+ const combined = `${result.stdout}\n${result.stderr}`.trim();
483
+ if (combined.length > 0) {
484
+ return combined;
485
+ }
486
+ return `exit code ${result.status ?? 'unknown'}`;
487
+ }
488
+ function isNotLoadedMessage(message) {
489
+ return /not loaded|not-found|could not be found|no such file|unknown unit/i.test(message);
490
+ }
491
+ function isLaunchdAlreadyLoadedMessage(message) {
492
+ return /service already loaded|already bootstrapped|in progress/i.test(message);
493
+ }
494
+ function isLaunchdNotLoadedMessage(message) {
495
+ return /could not find service|service not found|no such process|does not exist|not loaded/i.test(message);
496
+ }
497
+ function isWindowsTaskMissingOrStoppedMessage(message) {
498
+ return /cannot find the file|cannot find the task|not currently running|task does not exist|cannot find path/i.test(message);
499
+ }
500
+ function unsupportedManagerError(platform, reason) {
501
+ const lines = [
502
+ `Gateway background lifecycle is unavailable on ${platform}: ${reason}`,
503
+ 'Run Keygate in foreground instead:',
504
+ ' keygate serve',
505
+ ];
506
+ return new Error(lines.join('\n'));
507
+ }
508
+ function toShellCommand(command, args) {
509
+ return [shellQuote(command), ...args.map((arg) => shellQuote(arg))].join(' ');
510
+ }
511
+ function toPowerShellInvocation(command, args) {
512
+ return [quotePowerShell(command), ...args.map((arg) => quotePowerShell(arg))].join(' ');
513
+ }
514
+ function shellQuote(value) {
515
+ return `'${value.replace(/'/g, `'\\''`)}'`;
516
+ }
517
+ function quotePowerShell(value) {
518
+ return `'${escapePowerShellString(value)}'`;
519
+ }
520
+ function escapePowerShellString(value) {
521
+ return value.replace(/'/g, "''");
522
+ }
523
+ function escapeXml(value) {
524
+ return value
525
+ .replace(/&/g, '&amp;')
526
+ .replace(/</g, '&lt;')
527
+ .replace(/>/g, '&gt;')
528
+ .replace(/"/g, '&quot;')
529
+ .replace(/'/g, '&apos;');
530
+ }
531
+ function extractKeyValue(text, key) {
532
+ const match = text.match(new RegExp(`^${key}=(.+)$`, 'mi'));
533
+ if (!match || !match[1]) {
534
+ return null;
535
+ }
536
+ return match[1].trim();
537
+ }
538
+ function runSync(command, args, options) {
539
+ const spawnOptions = {
540
+ encoding: 'utf8',
541
+ input: options?.input,
542
+ };
543
+ const result = spawnSync(command, args, spawnOptions);
544
+ return {
545
+ status: result.status,
546
+ stdout: (result.stdout ?? '').toString(),
547
+ stderr: (result.stderr ?? '').toString(),
548
+ error: result.error,
549
+ };
550
+ }
551
+ function resolveCodexBinary(deps) {
552
+ const explicit = deps.envCodexBin?.trim();
553
+ if (explicit && path.isAbsolute(explicit)) {
554
+ return explicit;
555
+ }
556
+ const inheritedPath = deps.envPath?.trim();
557
+ if (!inheritedPath) {
558
+ return null;
559
+ }
560
+ return findExecutableInPath('codex', inheritedPath, deps.platform, deps.envPathExt);
561
+ }
562
+ function findExecutableInPath(command, pathValue, platform, pathExtValue) {
563
+ const segments = pathValue
564
+ .split(path.delimiter)
565
+ .map((segment) => segment.trim())
566
+ .filter((segment) => segment.length > 0);
567
+ if (platform !== 'win32') {
568
+ for (const segment of segments) {
569
+ const candidate = path.join(segment, command);
570
+ if (existsSync(candidate)) {
571
+ return candidate;
572
+ }
573
+ }
574
+ return null;
575
+ }
576
+ const extensions = (pathExtValue ?? '.EXE;.CMD;.BAT;.COM')
577
+ .split(';')
578
+ .map((value) => value.trim().toLowerCase())
579
+ .filter((value) => value.length > 0);
580
+ for (const segment of segments) {
581
+ const direct = path.join(segment, command);
582
+ if (existsSync(direct)) {
583
+ return direct;
584
+ }
585
+ for (const ext of extensions) {
586
+ const candidate = path.join(segment, `${command}${ext}`);
587
+ if (existsSync(candidate)) {
588
+ return candidate;
589
+ }
590
+ }
591
+ }
592
+ return null;
593
+ }
594
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/cli/commands/gateway.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import * as readline from 'node:readline';
6
6
  import { createInterface } from 'node:readline/promises';
7
7
  import { stdin as input, stdout as output } from 'node:process';
8
8
  import { getFlagString, hasFlag } from '../argv.js';
9
- import { getConfigDir, updateEnvFile } from '../../config/env.js';
9
+ import { getConfigDir, getDefaultWorkspacePath, updateEnvFile } from '../../config/env.js';
10
10
  import { runAuthCommand } from './auth.js';
11
11
  const RESET = '\x1b[0m';
12
12
  const BOLD = '\x1b[1m';
@@ -107,7 +107,7 @@ function createDefaultState() {
107
107
  apiKey: '',
108
108
  ollamaHost: '',
109
109
  spicyModeEnabled: false,
110
- workspacePath: path.join(os.homedir(), 'keygate-workspace'),
110
+ workspacePath: getDefaultWorkspacePath(),
111
111
  port: 18790,
112
112
  };
113
113
  }