@cogitator-ai/cli 0.3.6 → 0.3.13

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.
@@ -0,0 +1,385 @@
1
+ import { Command } from 'commander';
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';
6
+ 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 });
13
+ }
14
+ }
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))
20
+ return null;
21
+ return pid;
22
+ }
23
+ function isRunning(pid) {
24
+ try {
25
+ process.kill(pid, 0);
26
+ return true;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ function getProcessUptime(pid) {
33
+ try {
34
+ const output = execSync(`ps -o etime= -p ${pid}`, { encoding: 'utf-8' }).trim();
35
+ return output;
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ function getProcessMemory(pid) {
42
+ 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`;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ export const daemonCommand = new Command('daemon').description('Manage background daemon process');
56
+ daemonCommand
57
+ .command('start')
58
+ .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
+ }
109
+ });
110
+ daemonCommand
111
+ .command('stop')
112
+ .description('Stop the running daemon')
113
+ .action(() => {
114
+ const pid = readPid();
115
+ if (!pid || !isRunning(pid)) {
116
+ log.warn('Daemon is not running');
117
+ if (existsSync(PID_FILE))
118
+ unlinkSync(PID_FILE);
119
+ return;
120
+ }
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);
142
+ });
143
+ daemonCommand
144
+ .command('restart')
145
+ .description('Restart the daemon')
146
+ .option('-c, --config <path>', 'Path to gateway config file', 'src/gateway.ts')
147
+ .action(async (options) => {
148
+ const pid = readPid();
149
+ if (pid && isRunning(pid)) {
150
+ process.kill(pid, 'SIGTERM');
151
+ 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);
167
+ }
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]);
172
+ }
173
+ });
174
+ daemonCommand
175
+ .command('status')
176
+ .description('Show daemon status')
177
+ .action(() => {
178
+ const pid = readPid();
179
+ const running = pid ? isRunning(pid) : false;
180
+ console.log();
181
+ console.log(chalk.cyan(' ╭──────────────────────────────────────────╮'));
182
+ console.log(chalk.cyan(' │ ') +
183
+ chalk.bold('Cogitator Daemon') +
184
+ chalk.cyan(' │'));
185
+ console.log(chalk.cyan(' ╰──────────────────────────────────────────╯'));
186
+ console.log();
187
+ if (running && pid) {
188
+ const uptime = getProcessUptime(pid) ?? 'unknown';
189
+ const memory = getProcessMemory(pid) ?? 'unknown';
190
+ 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}`);
194
+ }
195
+ else {
196
+ 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);
201
+ }
202
+ }
203
+ console.log(` ${chalk.bold('Logs')} ${LOG_FILE}`);
204
+ console.log(` ${chalk.bold('PID file')} ${PID_FILE}`);
205
+ console.log();
206
+ });
207
+ daemonCommand
208
+ .command('logs')
209
+ .description('Tail daemon logs')
210
+ .option('-n, --lines <number>', 'Number of lines to show', '50')
211
+ .option('-f, --follow', 'Follow log output', false)
212
+ .option('--json', 'Output raw JSON logs')
213
+ .action((options) => {
214
+ if (!existsSync(LOG_FILE)) {
215
+ log.warn('No log file found');
216
+ log.dim(`Expected at: ${LOG_FILE}`);
217
+ return;
218
+ }
219
+ const args = ['-n', options.lines];
220
+ if (options.follow)
221
+ args.push('-f');
222
+ args.push(LOG_FILE);
223
+ const tail = spawn('tail', args, { stdio: 'inherit' });
224
+ tail.on('exit', (code) => process.exit(code ?? 0));
225
+ });
226
+ daemonCommand
227
+ .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();
233
+ }
234
+ else if (platform === 'linux') {
235
+ installSystemd();
236
+ }
237
+ else {
238
+ log.error(`Unsupported platform: ${platform}`);
239
+ log.dim('Manual setup required for Windows');
240
+ }
241
+ });
242
+ daemonCommand
243
+ .command('uninstall')
244
+ .description('Remove system service')
245
+ .action(() => {
246
+ const platform = process.platform;
247
+ if (platform === 'darwin') {
248
+ uninstallLaunchd();
249
+ }
250
+ else if (platform === 'linux') {
251
+ uninstallSystemd();
252
+ }
253
+ else {
254
+ log.error(`Unsupported platform: ${platform}`);
255
+ }
256
+ });
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 });
296
+ }
297
+ writeFileSync(plistPath, plist);
298
+ log.success(`Plist written to ${plistPath}`);
299
+ try {
300
+ execSync(`launchctl load ${plistPath}`);
301
+ log.success('Service installed and loaded');
302
+ log.dim(`Manage: launchctl start/stop ${label}`);
303
+ }
304
+ catch {
305
+ log.warn('Failed to load service. Load manually:');
306
+ log.dim(` launchctl load ${plistPath}`);
307
+ }
308
+ }
309
+ function uninstallLaunchd() {
310
+ const label = 'ai.cogitator.daemon';
311
+ const plistPath = resolve(process.env.HOME ?? '~', `Library/LaunchAgents/${label}.plist`);
312
+ if (!existsSync(plistPath)) {
313
+ log.warn('Service not installed');
314
+ return;
315
+ }
316
+ try {
317
+ execSync(`launchctl unload ${plistPath}`);
318
+ }
319
+ catch { }
320
+ unlinkSync(plistPath);
321
+ log.success('Service removed');
322
+ }
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
+ }
351
+ writeFileSync(unitPath, unit);
352
+ log.success(`Unit file written to ${unitPath}`);
353
+ try {
354
+ execSync('systemctl --user daemon-reload');
355
+ execSync('systemctl --user enable cogitator');
356
+ 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');
360
+ }
361
+ catch {
362
+ log.warn('Failed to enable service. Enable manually:');
363
+ log.dim(' systemctl --user daemon-reload');
364
+ log.dim(' systemctl --user enable --now cogitator');
365
+ }
366
+ }
367
+ function uninstallSystemd() {
368
+ const unitPath = resolve(process.env.HOME ?? '~', '.config/systemd/user/cogitator.service');
369
+ if (!existsSync(unitPath)) {
370
+ log.warn('Service not installed');
371
+ return;
372
+ }
373
+ try {
374
+ execSync('systemctl --user stop cogitator');
375
+ execSync('systemctl --user disable cogitator');
376
+ }
377
+ catch { }
378
+ unlinkSync(unitPath);
379
+ try {
380
+ execSync('systemctl --user daemon-reload');
381
+ }
382
+ catch { }
383
+ log.success('Service removed');
384
+ }
385
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
- /**
2
- * cogitator init <name> - scaffold new project
3
- */
4
1
  import { Command } from 'commander';
5
2
  export declare const initCommand: Command;
6
3
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,WAAW,SAiMpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,eAAO,MAAM,WAAW,SAiDpB,CAAC"}