@cogitator-ai/cli 0.3.15 → 0.4.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 (73) hide show
  1. package/README.md +159 -510
  2. package/dist/commands/assistant.d.ts +13 -0
  3. package/dist/commands/assistant.d.ts.map +1 -1
  4. package/dist/commands/assistant.js +64 -58
  5. package/dist/commands/assistant.js.map +1 -1
  6. package/dist/commands/build.d.ts +2 -0
  7. package/dist/commands/build.d.ts.map +1 -1
  8. package/dist/commands/build.js +114 -59
  9. package/dist/commands/build.js.map +1 -1
  10. package/dist/commands/daemon.d.ts.map +1 -1
  11. package/dist/commands/daemon.js +223 -262
  12. package/dist/commands/daemon.js.map +1 -1
  13. package/dist/commands/deploy.d.ts.map +1 -1
  14. package/dist/commands/deploy.js +80 -42
  15. package/dist/commands/deploy.js.map +1 -1
  16. package/dist/commands/init.d.ts +44 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +334 -265
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/logs.d.ts +1 -0
  21. package/dist/commands/logs.d.ts.map +1 -1
  22. package/dist/commands/logs.js +8 -4
  23. package/dist/commands/logs.js.map +1 -1
  24. package/dist/commands/models.d.ts +1 -1
  25. package/dist/commands/models.d.ts.map +1 -1
  26. package/dist/commands/models.js +83 -93
  27. package/dist/commands/models.js.map +1 -1
  28. package/dist/commands/run.d.ts +4 -1
  29. package/dist/commands/run.d.ts.map +1 -1
  30. package/dist/commands/run.js +151 -128
  31. package/dist/commands/run.js.map +1 -1
  32. package/dist/commands/skill.d.ts +17 -0
  33. package/dist/commands/skill.d.ts.map +1 -1
  34. package/dist/commands/skill.js +203 -81
  35. package/dist/commands/skill.js.map +1 -1
  36. package/dist/commands/status.d.ts.map +1 -1
  37. package/dist/commands/status.js +20 -24
  38. package/dist/commands/status.js.map +1 -1
  39. package/dist/commands/up.d.ts +4 -0
  40. package/dist/commands/up.d.ts.map +1 -1
  41. package/dist/commands/up.js +182 -130
  42. package/dist/commands/up.js.map +1 -1
  43. package/dist/commands/wizard.d.ts +6 -0
  44. package/dist/commands/wizard.d.ts.map +1 -1
  45. package/dist/commands/wizard.js +301 -267
  46. package/dist/commands/wizard.js.map +1 -1
  47. package/dist/index.js +8 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/utils/daemon.d.ts +37 -0
  50. package/dist/utils/daemon.d.ts.map +1 -0
  51. package/dist/utils/daemon.js +194 -0
  52. package/dist/utils/daemon.js.map +1 -0
  53. package/dist/utils/docker.d.ts +9 -0
  54. package/dist/utils/docker.d.ts.map +1 -1
  55. package/dist/utils/docker.js +67 -12
  56. package/dist/utils/docker.js.map +1 -1
  57. package/dist/utils/env.d.ts +7 -0
  58. package/dist/utils/env.d.ts.map +1 -0
  59. package/dist/utils/env.js +41 -0
  60. package/dist/utils/env.js.map +1 -0
  61. package/dist/utils/module-loader.d.ts +5 -0
  62. package/dist/utils/module-loader.d.ts.map +1 -0
  63. package/dist/utils/module-loader.js +52 -0
  64. package/dist/utils/module-loader.js.map +1 -0
  65. package/dist/utils/ollama.d.ts +20 -0
  66. package/dist/utils/ollama.d.ts.map +1 -0
  67. package/dist/utils/ollama.js +111 -0
  68. package/dist/utils/ollama.js.map +1 -0
  69. package/dist/utils/provider-models.d.ts +13 -0
  70. package/dist/utils/provider-models.d.ts.map +1 -0
  71. package/dist/utils/provider-models.js +78 -0
  72. package/dist/utils/provider-models.js.map +1 -0
  73. package/package.json +9 -9
@@ -1,52 +1,137 @@
1
- import { Command } from 'commander';
1
+ import { Command, InvalidArgumentError } from 'commander';
2
2
  import chalk from 'chalk';
3
- import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync } from 'node:fs';
4
- import { resolve, dirname } from 'node:path';
5
- import { spawn, execSync } from 'node:child_process';
3
+ import { closeSync, existsSync, mkdirSync, openSync, realpathSync, unlinkSync, writeFileSync, } from 'node:fs';
4
+ import { homedir } from 'node:os';
5
+ import { dirname, resolve } from 'node:path';
6
+ import { execFileSync, spawn } from 'node:child_process';
6
7
  import { log } from '../utils/logger.js';
7
- const DATA_DIR = resolve(process.cwd(), '.cogitator');
8
- const PID_FILE = resolve(DATA_DIR, 'daemon.pid');
9
- const LOG_FILE = resolve(DATA_DIR, 'daemon.log');
10
- function ensureDataDir() {
11
- if (!existsSync(DATA_DIR)) {
12
- mkdirSync(DATA_DIR, { recursive: true });
8
+ import { DAEMON_LABEL, SYSTEMD_UNIT, buildLaunchdPlist, buildSystemdUnit, isDaemonProcess, isProcessAlive, readPidRecord, resolveDaemonLaunch, serializePidRecord, } from '../utils/daemon.js';
9
+ const STOP_POLL_MS = 500;
10
+ const STOP_ATTEMPTS = 20;
11
+ function dataDir() {
12
+ return resolve(process.cwd(), '.cogitator');
13
+ }
14
+ function pidFile() {
15
+ return resolve(dataDir(), 'daemon.pid');
16
+ }
17
+ function logFile() {
18
+ return resolve(dataDir(), 'daemon.log');
19
+ }
20
+ function removePidFile() {
21
+ if (existsSync(pidFile()))
22
+ unlinkSync(pidFile());
23
+ }
24
+ function cliEntry() {
25
+ const entry = process.argv[1];
26
+ if (!entry)
27
+ throw new Error('Cannot determine the cogitator CLI entry point');
28
+ try {
29
+ return realpathSync(entry);
30
+ }
31
+ catch {
32
+ return resolve(entry);
13
33
  }
14
34
  }
15
- function readPid() {
16
- if (!existsSync(PID_FILE))
17
- return null;
18
- const pid = parseInt(readFileSync(PID_FILE, 'utf-8').trim(), 10);
19
- if (isNaN(pid))
35
+ function resolveLaunch(config) {
36
+ try {
37
+ return resolveDaemonLaunch({
38
+ cwd: process.cwd(),
39
+ nodePath: process.execPath,
40
+ cliEntry: cliEntry(),
41
+ config,
42
+ });
43
+ }
44
+ catch (error) {
45
+ log.error(error instanceof Error ? error.message : String(error));
46
+ log.dim('Run "cogitator init" or "cogitator wizard" to create a project first');
47
+ process.exit(1);
48
+ }
49
+ }
50
+ function runningDaemon() {
51
+ const record = readPidRecord(pidFile());
52
+ if (!record)
20
53
  return null;
21
- return pid;
54
+ return isDaemonProcess(record) ? record : null;
22
55
  }
23
- function isRunning(pid) {
56
+ function sendSignal(pid, signal) {
24
57
  try {
25
- process.kill(pid, 0);
58
+ process.kill(pid, signal);
26
59
  return true;
27
60
  }
28
61
  catch {
29
62
  return false;
30
63
  }
31
64
  }
32
- function getProcessUptime(pid) {
65
+ async function stopDaemon(record) {
66
+ sendSignal(record.pid, 'SIGTERM');
67
+ for (let attempt = 0; attempt < STOP_ATTEMPTS; attempt++) {
68
+ await new Promise((r) => setTimeout(r, STOP_POLL_MS));
69
+ if (!isProcessAlive(record.pid)) {
70
+ removePidFile();
71
+ return 'stopped';
72
+ }
73
+ }
74
+ sendSignal(record.pid, 'SIGKILL');
75
+ removePidFile();
76
+ return 'killed';
77
+ }
78
+ function startDaemon(config) {
79
+ const existing = runningDaemon();
80
+ if (existing) {
81
+ log.warn(`Daemon already running (PID: ${existing.pid})`);
82
+ log.dim('Use "cogitator daemon restart" to restart');
83
+ return;
84
+ }
85
+ const launch = resolveLaunch(config);
86
+ mkdirSync(dataDir(), { recursive: true });
87
+ const out = openSync(logFile(), 'a');
88
+ let pid;
33
89
  try {
34
- const output = execSync(`ps -o etime= -p ${pid}`, { encoding: 'utf-8' }).trim();
35
- return output;
90
+ const child = spawn(launch.command, launch.args, {
91
+ detached: true,
92
+ stdio: ['ignore', out, out],
93
+ cwd: process.cwd(),
94
+ env: { ...process.env, COGITATOR_DAEMON: '1' },
95
+ });
96
+ child.on('error', (error) => {
97
+ log.error(`Failed to start daemon: ${error.message}`);
98
+ removePidFile();
99
+ process.exitCode = 1;
100
+ });
101
+ pid = child.pid;
102
+ child.unref();
36
103
  }
37
- catch {
38
- return null;
104
+ finally {
105
+ closeSync(out);
106
+ }
107
+ if (!pid) {
108
+ log.error('Failed to start daemon');
109
+ process.exit(1);
39
110
  }
111
+ writeFileSync(pidFile(), serializePidRecord({ pid, script: launch.args[0] }));
112
+ log.success(`Daemon started (PID: ${pid})`);
113
+ log.dim(`Running ${launch.description}`);
114
+ log.dim(`Logs: ${logFile()}`);
115
+ }
116
+ function parseLineCount(value) {
117
+ if (/^\d+$/.test(value))
118
+ return value;
119
+ throw new InvalidArgumentError('Expected a non-negative number of lines.');
40
120
  }
41
- function getProcessMemory(pid) {
121
+ function formatRss(kb) {
122
+ if (kb < 1024)
123
+ return `${kb} KB`;
124
+ return `${(kb / 1024).toFixed(0)} MB`;
125
+ }
126
+ function psField(pid, field) {
127
+ if (process.platform === 'win32')
128
+ return null;
42
129
  try {
43
- const rss = execSync(`ps -o rss= -p ${pid}`, { encoding: 'utf-8' }).trim();
44
- const kb = parseInt(rss, 10);
45
- if (isNaN(kb))
46
- return null;
47
- if (kb < 1024)
48
- return `${kb} KB`;
49
- return `${(kb / 1024).toFixed(0)} MB`;
130
+ const output = execFileSync('ps', ['-o', `${field}=`, '-p', String(pid)], {
131
+ encoding: 'utf-8',
132
+ stdio: ['ignore', 'pipe', 'ignore'],
133
+ }).trim();
134
+ return output || null;
50
135
  }
51
136
  catch {
52
137
  return null;
@@ -56,330 +141,206 @@ export const daemonCommand = new Command('daemon').description('Manage backgroun
56
141
  daemonCommand
57
142
  .command('start')
58
143
  .description('Start the assistant as a background daemon')
59
- .option('-c, --config <path>', 'Path to gateway config file', 'src/gateway.ts')
60
- .action(async (options) => {
61
- const existingPid = readPid();
62
- if (existingPid && isRunning(existingPid)) {
63
- log.warn(`Daemon already running (PID: ${existingPid})`);
64
- log.dim('Use "cogitator daemon restart" to restart');
65
- return;
66
- }
67
- const configPath = resolve(process.cwd(), options.config);
68
- if (!existsSync(configPath)) {
69
- log.error(`Config not found: ${configPath}`);
70
- log.dim('Run "cogitator init" to create a project first');
71
- process.exit(1);
72
- }
73
- ensureDataDir();
74
- const bundled = resolve(process.cwd(), 'dist/cogitator.mjs');
75
- const entryPoint = existsSync(bundled) ? bundled : configPath;
76
- const useTsx = entryPoint.endsWith('.ts');
77
- const nodeArgs = [];
78
- if (useTsx) {
79
- nodeArgs.push('--import', 'tsx');
80
- }
81
- const child = spawn('node', [...nodeArgs, entryPoint], {
82
- detached: true,
83
- stdio: ['ignore', 'pipe', 'pipe'],
84
- cwd: process.cwd(),
85
- env: { ...process.env, COGITATOR_DAEMON: '1' },
86
- });
87
- if (child.stdout && child.stderr) {
88
- const { createWriteStream } = await import('node:fs');
89
- const logStream = createWriteStream(LOG_FILE, { flags: 'a' });
90
- child.stdout.pipe(logStream);
91
- child.stderr.pipe(logStream);
92
- }
93
- child.unref();
94
- if (child.pid) {
95
- writeFileSync(PID_FILE, String(child.pid));
96
- log.success(`Daemon started (PID: ${child.pid})`);
97
- if (useTsx) {
98
- log.dim('Using tsx for TypeScript support');
99
- }
100
- if (entryPoint === bundled) {
101
- log.dim('Using bundled version from dist/');
102
- }
103
- log.dim(`Logs: ${LOG_FILE}`);
104
- }
105
- else {
106
- log.error('Failed to start daemon');
107
- process.exit(1);
108
- }
144
+ .option('-c, --config <path>', 'Entry to run: cogitator.yml, a gateway module, or a bundle (default: auto-detect)')
145
+ .action((options) => {
146
+ startDaemon(options.config);
109
147
  });
110
148
  daemonCommand
111
149
  .command('stop')
112
150
  .description('Stop the running daemon')
113
- .action(() => {
114
- const pid = readPid();
115
- if (!pid || !isRunning(pid)) {
151
+ .action(async () => {
152
+ const record = runningDaemon();
153
+ if (!record) {
116
154
  log.warn('Daemon is not running');
117
- if (existsSync(PID_FILE))
118
- unlinkSync(PID_FILE);
155
+ removePidFile();
119
156
  return;
120
157
  }
121
- process.kill(pid, 'SIGTERM');
122
- log.success(`Sent SIGTERM to daemon (PID: ${pid})`);
123
- let attempts = 0;
124
- const check = setInterval(() => {
125
- attempts++;
126
- if (!isRunning(pid)) {
127
- clearInterval(check);
128
- if (existsSync(PID_FILE))
129
- unlinkSync(PID_FILE);
130
- log.success('Daemon stopped');
131
- return;
132
- }
133
- if (attempts >= 10) {
134
- clearInterval(check);
135
- log.warn('Daemon did not stop gracefully, sending SIGKILL');
136
- process.kill(pid, 'SIGKILL');
137
- if (existsSync(PID_FILE))
138
- unlinkSync(PID_FILE);
139
- log.success('Daemon killed');
140
- }
141
- }, 500);
158
+ log.step(`Sending SIGTERM to daemon (PID: ${record.pid})`);
159
+ const result = await stopDaemon(record);
160
+ if (result === 'stopped') {
161
+ log.success('Daemon stopped');
162
+ }
163
+ else {
164
+ log.warn('Daemon did not stop gracefully and was killed');
165
+ }
142
166
  });
143
167
  daemonCommand
144
168
  .command('restart')
145
169
  .description('Restart the daemon')
146
- .option('-c, --config <path>', 'Path to gateway config file', 'src/gateway.ts')
170
+ .option('-c, --config <path>', 'Entry to run: cogitator.yml, a gateway module, or a bundle (default: auto-detect)')
147
171
  .action(async (options) => {
148
- const pid = readPid();
149
- if (pid && isRunning(pid)) {
150
- process.kill(pid, 'SIGTERM');
172
+ const record = runningDaemon();
173
+ if (record) {
151
174
  log.step('Stopping current daemon...');
152
- await new Promise((resolve) => {
153
- let attempts = 0;
154
- const check = setInterval(() => {
155
- attempts++;
156
- if (!isRunning(pid) || attempts >= 10) {
157
- clearInterval(check);
158
- if (attempts >= 10) {
159
- process.kill(pid, 'SIGKILL');
160
- }
161
- resolve();
162
- }
163
- }, 500);
164
- });
165
- if (existsSync(PID_FILE))
166
- unlinkSync(PID_FILE);
175
+ await stopDaemon(record);
167
176
  }
168
- log.step('Starting daemon...');
169
- const startCmd = daemonCommand.commands.find((c) => c.name() === 'start');
170
- if (startCmd) {
171
- await startCmd.parseAsync(['node', 'start', '-c', options.config]);
177
+ else {
178
+ removePidFile();
172
179
  }
180
+ log.step('Starting daemon...');
181
+ startDaemon(options.config);
173
182
  });
174
183
  daemonCommand
175
184
  .command('status')
176
185
  .description('Show daemon status')
177
186
  .action(() => {
178
- const pid = readPid();
179
- const running = pid ? isRunning(pid) : false;
187
+ const record = readPidRecord(pidFile());
188
+ const running = record ? isDaemonProcess(record) : false;
180
189
  console.log();
181
190
  console.log(chalk.cyan(' ╭──────────────────────────────────────────╮'));
182
- console.log(chalk.cyan(' │ ') +
183
- chalk.bold('Cogitator Daemon') +
184
- chalk.cyan(' │'));
191
+ console.log(chalk.cyan(' │ ') + chalk.bold('Cogitator Daemon') + chalk.cyan(' │'));
185
192
  console.log(chalk.cyan(' ╰──────────────────────────────────────────╯'));
186
193
  console.log();
187
- if (running && pid) {
188
- const uptime = getProcessUptime(pid) ?? 'unknown';
189
- const memory = getProcessMemory(pid) ?? 'unknown';
194
+ if (running && record) {
195
+ const rss = Number(psField(record.pid, 'rss'));
190
196
  console.log(` ${chalk.bold('Status')} ${chalk.green('● running')}`);
191
- console.log(` ${chalk.bold('PID')} ${pid}`);
192
- console.log(` ${chalk.bold('Uptime')} ${uptime.trim()}`);
193
- console.log(` ${chalk.bold('Memory')} ${memory}`);
197
+ console.log(` ${chalk.bold('PID')} ${record.pid}`);
198
+ console.log(` ${chalk.bold('Uptime')} ${psField(record.pid, 'etime') ?? 'unknown'}`);
199
+ console.log(` ${chalk.bold('Memory')} ${Number.isFinite(rss) && rss > 0 ? formatRss(rss) : 'unknown'}`);
194
200
  }
195
201
  else {
196
202
  console.log(` ${chalk.bold('Status')} ${chalk.red('● stopped')}`);
197
- if (pid) {
198
- log.dim(` Stale PID file found (${pid}), cleaning up`);
199
- if (existsSync(PID_FILE))
200
- unlinkSync(PID_FILE);
203
+ if (record) {
204
+ log.dim(` Stale PID file found (${record.pid}), cleaning up`);
205
+ removePidFile();
201
206
  }
202
207
  }
203
- console.log(` ${chalk.bold('Logs')} ${LOG_FILE}`);
204
- console.log(` ${chalk.bold('PID file')} ${PID_FILE}`);
208
+ console.log(` ${chalk.bold('Logs')} ${logFile()}`);
209
+ console.log(` ${chalk.bold('PID file')} ${pidFile()}`);
205
210
  console.log();
206
211
  });
207
212
  daemonCommand
208
213
  .command('logs')
209
214
  .description('Tail daemon logs')
210
- .option('-n, --lines <number>', 'Number of lines to show', '50')
215
+ .option('-n, --lines <number>', 'Number of lines to show', parseLineCount, '50')
211
216
  .option('-f, --follow', 'Follow log output', false)
212
- .option('--json', 'Output raw JSON logs')
213
217
  .action((options) => {
214
- if (!existsSync(LOG_FILE)) {
218
+ if (!existsSync(logFile())) {
215
219
  log.warn('No log file found');
216
- log.dim(`Expected at: ${LOG_FILE}`);
220
+ log.dim(`Expected at: ${logFile()}`);
217
221
  return;
218
222
  }
219
223
  const args = ['-n', options.lines];
220
224
  if (options.follow)
221
225
  args.push('-f');
222
- args.push(LOG_FILE);
226
+ args.push(logFile());
223
227
  const tail = spawn('tail', args, { stdio: 'inherit' });
228
+ tail.on('error', (error) => {
229
+ log.error(`Failed to run tail: ${error.message}`);
230
+ process.exit(1);
231
+ });
224
232
  tail.on('exit', (code) => process.exit(code ?? 0));
225
233
  });
226
234
  daemonCommand
227
235
  .command('install')
228
- .description('Install as system service (launchd on macOS, systemd on Linux)')
229
- .action(() => {
230
- const platform = process.platform;
231
- if (platform === 'darwin') {
232
- installLaunchd();
236
+ .description('Install as a user service (launchd on macOS, systemd on Linux)')
237
+ .option('-c, --config <path>', 'Entry to run: cogitator.yml, a gateway module, or a bundle (default: auto-detect)')
238
+ .action((options) => {
239
+ if (process.platform !== 'darwin' && process.platform !== 'linux') {
240
+ log.error(`Unsupported platform: ${process.platform}`);
241
+ log.dim('Manual setup required for Windows');
242
+ process.exit(1);
233
243
  }
234
- else if (platform === 'linux') {
235
- installSystemd();
244
+ const launch = resolveLaunch(options.config);
245
+ mkdirSync(dataDir(), { recursive: true });
246
+ const definition = {
247
+ launch,
248
+ cwd: process.cwd(),
249
+ logFile: logFile(),
250
+ path: process.env.PATH,
251
+ };
252
+ if (process.platform === 'darwin') {
253
+ installLaunchd(buildLaunchdPlist(definition));
236
254
  }
237
255
  else {
238
- log.error(`Unsupported platform: ${platform}`);
239
- log.dim('Manual setup required for Windows');
256
+ installSystemd(buildSystemdUnit(definition));
240
257
  }
241
258
  });
242
259
  daemonCommand
243
260
  .command('uninstall')
244
- .description('Remove system service')
261
+ .description('Remove the user service')
245
262
  .action(() => {
246
- const platform = process.platform;
247
- if (platform === 'darwin') {
263
+ if (process.platform === 'darwin') {
248
264
  uninstallLaunchd();
249
265
  }
250
- else if (platform === 'linux') {
266
+ else if (process.platform === 'linux') {
251
267
  uninstallSystemd();
252
268
  }
253
269
  else {
254
- log.error(`Unsupported platform: ${platform}`);
270
+ log.error(`Unsupported platform: ${process.platform}`);
271
+ process.exit(1);
255
272
  }
256
273
  });
257
- function installLaunchd() {
258
- const label = 'ai.cogitator.daemon';
259
- const plistPath = resolve(process.env.HOME ?? '~', `Library/LaunchAgents/${label}.plist`);
260
- const cwd = process.cwd();
261
- const nodePath = process.execPath;
262
- const bundled = resolve(cwd, 'dist/cogitator.mjs');
263
- const configPath = resolve(cwd, 'src/gateway.ts');
264
- const entryPoint = existsSync(bundled) ? bundled : configPath;
265
- const plist = `<?xml version="1.0" encoding="UTF-8"?>
266
- <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
267
- <plist version="1.0">
268
- <dict>
269
- <key>Label</key>
270
- <string>${label}</string>
271
- <key>ProgramArguments</key>
272
- <array>
273
- <string>${nodePath}</string>
274
- <string>${entryPoint}</string>
275
- </array>
276
- <key>WorkingDirectory</key>
277
- <string>${cwd}</string>
278
- <key>RunAtLoad</key>
279
- <true/>
280
- <key>KeepAlive</key>
281
- <true/>
282
- <key>StandardOutPath</key>
283
- <string>${LOG_FILE}</string>
284
- <key>StandardErrorPath</key>
285
- <string>${LOG_FILE}</string>
286
- <key>EnvironmentVariables</key>
287
- <dict>
288
- <key>COGITATOR_DAEMON</key>
289
- <string>1</string>
290
- </dict>
291
- </dict>
292
- </plist>`;
293
- const plistDir = dirname(plistPath);
294
- if (!existsSync(plistDir)) {
295
- mkdirSync(plistDir, { recursive: true });
274
+ function launchdPlistPath() {
275
+ return resolve(homedir(), 'Library/LaunchAgents', `${DAEMON_LABEL}.plist`);
276
+ }
277
+ function systemdUnitPath() {
278
+ return resolve(homedir(), '.config/systemd/user', `${SYSTEMD_UNIT}.service`);
279
+ }
280
+ function tryExec(command, args) {
281
+ try {
282
+ execFileSync(command, args, { stdio: 'pipe' });
283
+ return true;
296
284
  }
285
+ catch {
286
+ return false;
287
+ }
288
+ }
289
+ function installLaunchd(plist) {
290
+ const plistPath = launchdPlistPath();
291
+ mkdirSync(dirname(plistPath), { recursive: true });
292
+ if (existsSync(plistPath))
293
+ tryExec('launchctl', ['unload', plistPath]);
297
294
  writeFileSync(plistPath, plist);
298
295
  log.success(`Plist written to ${plistPath}`);
299
- try {
300
- execSync(`launchctl load ${plistPath}`);
296
+ if (tryExec('launchctl', ['load', '-w', plistPath])) {
301
297
  log.success('Service installed and loaded');
302
- log.dim(`Manage: launchctl start/stop ${label}`);
298
+ log.dim(`Manage: launchctl start/stop ${DAEMON_LABEL}`);
299
+ log.dim(`Logs: ${logFile()}`);
303
300
  }
304
- catch {
301
+ else {
305
302
  log.warn('Failed to load service. Load manually:');
306
- log.dim(` launchctl load ${plistPath}`);
303
+ log.dim(` launchctl load -w "${plistPath}"`);
307
304
  }
308
305
  }
309
306
  function uninstallLaunchd() {
310
- const label = 'ai.cogitator.daemon';
311
- const plistPath = resolve(process.env.HOME ?? '~', `Library/LaunchAgents/${label}.plist`);
307
+ const plistPath = launchdPlistPath();
312
308
  if (!existsSync(plistPath)) {
313
309
  log.warn('Service not installed');
314
310
  return;
315
311
  }
316
- try {
317
- execSync(`launchctl unload ${plistPath}`);
318
- }
319
- catch { }
312
+ tryExec('launchctl', ['unload', '-w', plistPath]);
320
313
  unlinkSync(plistPath);
321
314
  log.success('Service removed');
322
315
  }
323
- function installSystemd() {
324
- const cwd = process.cwd();
325
- const nodePath = process.execPath;
326
- const bundled = resolve(cwd, 'dist/cogitator.mjs');
327
- const configPath = resolve(cwd, 'src/gateway.ts');
328
- const entryPoint = existsSync(bundled) ? bundled : configPath;
329
- const unit = `[Unit]
330
- Description=Cogitator AI Assistant
331
- After=network.target
332
-
333
- [Service]
334
- Type=simple
335
- WorkingDirectory=${cwd}
336
- ExecStart=${nodePath} ${entryPoint}
337
- Restart=always
338
- RestartSec=5
339
- Environment=COGITATOR_DAEMON=1
340
- StandardOutput=append:${LOG_FILE}
341
- StandardError=append:${LOG_FILE}
342
-
343
- [Install]
344
- WantedBy=multi-user.target
345
- `;
346
- const unitPath = resolve(process.env.HOME ?? '~', '.config/systemd/user/cogitator.service');
347
- const unitDir = dirname(unitPath);
348
- if (!existsSync(unitDir)) {
349
- mkdirSync(unitDir, { recursive: true });
350
- }
316
+ function installSystemd(unit) {
317
+ const unitPath = systemdUnitPath();
318
+ mkdirSync(dirname(unitPath), { recursive: true });
351
319
  writeFileSync(unitPath, unit);
352
320
  log.success(`Unit file written to ${unitPath}`);
353
- try {
354
- execSync('systemctl --user daemon-reload');
355
- execSync('systemctl --user enable cogitator');
321
+ if (tryExec('systemctl', ['--user', 'daemon-reload']) &&
322
+ tryExec('systemctl', ['--user', 'enable', SYSTEMD_UNIT])) {
356
323
  log.success('Service enabled (starts on login)');
357
- log.dim(' systemctl --user start cogitator Start now');
358
- log.dim(' systemctl --user status cogitator Check status');
359
- log.dim(' journalctl --user -u cogitator -f View logs');
324
+ log.dim(` systemctl --user start ${SYSTEMD_UNIT} Start now`);
325
+ log.dim(` systemctl --user status ${SYSTEMD_UNIT} Check status`);
326
+ log.dim(` Logs: ${logFile()}`);
327
+ log.dim(' Run "loginctl enable-linger" to keep it running after logout');
360
328
  }
361
- catch {
329
+ else {
362
330
  log.warn('Failed to enable service. Enable manually:');
363
331
  log.dim(' systemctl --user daemon-reload');
364
- log.dim(' systemctl --user enable --now cogitator');
332
+ log.dim(` systemctl --user enable --now ${SYSTEMD_UNIT}`);
365
333
  }
366
334
  }
367
335
  function uninstallSystemd() {
368
- const unitPath = resolve(process.env.HOME ?? '~', '.config/systemd/user/cogitator.service');
336
+ const unitPath = systemdUnitPath();
369
337
  if (!existsSync(unitPath)) {
370
338
  log.warn('Service not installed');
371
339
  return;
372
340
  }
373
- try {
374
- execSync('systemctl --user stop cogitator');
375
- execSync('systemctl --user disable cogitator');
376
- }
377
- catch { }
341
+ tryExec('systemctl', ['--user', 'disable', '--now', SYSTEMD_UNIT]);
378
342
  unlinkSync(unitPath);
379
- try {
380
- execSync('systemctl --user daemon-reload');
381
- }
382
- catch { }
343
+ tryExec('systemctl', ['--user', 'daemon-reload']);
383
344
  log.success('Service removed');
384
345
  }
385
346
  //# sourceMappingURL=daemon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}