@overlordai/cli 1.0.0 → 1.0.2
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/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +23 -25
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/logs.js +5 -5
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +50 -19
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +16 -47
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +16 -20
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/upgrade.js +7 -7
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/installer/env-checker.d.ts +2 -2
- package/dist/installer/env-checker.d.ts.map +1 -1
- package/dist/installer/env-checker.js +3 -3
- package/dist/installer/env-checker.js.map +1 -1
- package/dist/installer/wizard.d.ts +1 -1
- package/dist/installer/wizard.d.ts.map +1 -1
- package/dist/installer/wizard.js +62 -42
- package/dist/installer/wizard.js.map +1 -1
- package/dist/main.js +18 -0
- package/dist/main.js.map +1 -1
- package/dist/service-manager.d.ts +50 -0
- package/dist/service-manager.d.ts.map +1 -0
- package/dist/service-manager.js +429 -0
- package/dist/service-manager.js.map +1 -0
- package/package.json +2 -2
package/dist/installer/wizard.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import * as p from '@clack/prompts';
|
|
2
|
+
import * as fs from 'node:fs';
|
|
2
3
|
import * as path from 'node:path';
|
|
3
4
|
import * as os from 'node:os';
|
|
5
|
+
import { createRequire } from 'node:module';
|
|
4
6
|
import chalk from 'chalk';
|
|
5
7
|
import { EnvChecker } from './env-checker.js';
|
|
6
8
|
import { SecretGenerator } from './secret-gen.js';
|
|
7
9
|
import { ConfigWriter } from './config-writer.js';
|
|
8
10
|
import { DbInitializer } from './db-initializer.js';
|
|
9
11
|
import { AdminCreator } from './admin-creator.js';
|
|
12
|
+
import { ServiceManager, findBinary } from '../service-manager.js';
|
|
10
13
|
/**
|
|
11
|
-
*
|
|
14
|
+
* Interactive installation wizard using @clack/prompts.
|
|
12
15
|
*/
|
|
13
16
|
export class InstallWizard {
|
|
14
17
|
checker = new EnvChecker();
|
|
@@ -41,36 +44,22 @@ export class InstallWizard {
|
|
|
41
44
|
// Optional CLI checks (non-blocking)
|
|
42
45
|
const claudeCheck = this.checker.checkClaudeCli();
|
|
43
46
|
const cursorCheck = this.checker.checkCursorCli();
|
|
44
|
-
const
|
|
47
|
+
const codexCheck = this.checker.checkCodexCli();
|
|
45
48
|
if (claudeCheck.ok)
|
|
46
49
|
p.log.success(`claude CLI: found`);
|
|
47
50
|
else
|
|
48
51
|
p.log.warn('claude CLI: not found (optional)');
|
|
49
52
|
if (cursorCheck.ok)
|
|
50
|
-
p.log.success(`
|
|
53
|
+
p.log.success(`cursor CLI: found`);
|
|
51
54
|
else
|
|
52
|
-
p.log.warn('
|
|
53
|
-
if (
|
|
54
|
-
p.log.success(`
|
|
55
|
+
p.log.warn('cursor CLI: not found (optional)');
|
|
56
|
+
if (codexCheck.ok)
|
|
57
|
+
p.log.success(`codex CLI: found`);
|
|
55
58
|
else
|
|
56
|
-
p.log.warn('
|
|
57
|
-
// Step 3:
|
|
58
|
-
const installDir =
|
|
59
|
-
|
|
60
|
-
placeholder: path.join(os.homedir(), '.overlord'),
|
|
61
|
-
defaultValue: path.join(os.homedir(), '.overlord'),
|
|
62
|
-
validate: (value) => {
|
|
63
|
-
if (!value)
|
|
64
|
-
return 'Directory is required';
|
|
65
|
-
if (!path.isAbsolute(value))
|
|
66
|
-
return 'Must be an absolute path';
|
|
67
|
-
return undefined;
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
if (p.isCancel(installDir))
|
|
71
|
-
throw new Error('cancelled');
|
|
72
|
-
// Check disk space for chosen directory
|
|
73
|
-
const diskCheck = this.checker.checkDiskSpace(path.dirname(installDir));
|
|
59
|
+
p.log.warn('codex CLI: not found (optional)');
|
|
60
|
+
// Step 3: Resolve install directory
|
|
61
|
+
const installDir = path.join(os.homedir(), '.overlord');
|
|
62
|
+
const diskCheck = this.checker.checkDiskSpace(os.homedir());
|
|
74
63
|
if (!diskCheck.ok) {
|
|
75
64
|
p.log.error(`Disk space: ${diskCheck.detail}`);
|
|
76
65
|
throw new Error('Insufficient disk space');
|
|
@@ -96,25 +85,11 @@ export class InstallWizard {
|
|
|
96
85
|
if (p.isCancel(redisUrl))
|
|
97
86
|
throw new Error('cancelled');
|
|
98
87
|
// Step 6: Configure DB path
|
|
99
|
-
const dbPath =
|
|
100
|
-
message: 'SQLite database path:',
|
|
101
|
-
placeholder: path.join(installDir, 'data', 'overlord.db'),
|
|
102
|
-
defaultValue: path.join(installDir, 'data', 'overlord.db'),
|
|
103
|
-
validate: (value) => {
|
|
104
|
-
if (!value)
|
|
105
|
-
return 'Database path is required';
|
|
106
|
-
if (!path.isAbsolute(value))
|
|
107
|
-
return 'Must be an absolute path';
|
|
108
|
-
return undefined;
|
|
109
|
-
},
|
|
110
|
-
});
|
|
111
|
-
if (p.isCancel(dbPath))
|
|
112
|
-
throw new Error('cancelled');
|
|
88
|
+
const dbPath = path.join(installDir, 'data', 'overlord.db');
|
|
113
89
|
// Step 7: Write .env file
|
|
114
90
|
const envPath = path.join(installDir, '.env');
|
|
115
91
|
const envConfig = {
|
|
116
92
|
NODE_ENV: 'production',
|
|
117
|
-
INSTALL_DIR: installDir,
|
|
118
93
|
DATABASE_PATH: dbPath,
|
|
119
94
|
REDIS_URL: redisUrl,
|
|
120
95
|
JWT_SECRET: secrets.jwtSecret,
|
|
@@ -129,7 +104,19 @@ export class InstallWizard {
|
|
|
129
104
|
writeSpinner.stop('Configuration written');
|
|
130
105
|
p.log.success(`.env written to ${envPath} (chmod 600)`);
|
|
131
106
|
// Step 8: Run migrations
|
|
132
|
-
|
|
107
|
+
let migrationsDir;
|
|
108
|
+
try {
|
|
109
|
+
const require = createRequire(import.meta.url);
|
|
110
|
+
const serverPkgPath = path.dirname(require.resolve('@overlordai/server/package.json'));
|
|
111
|
+
migrationsDir = path.join(serverPkgPath, 'database', 'migrations');
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// Fallback for development mode
|
|
115
|
+
migrationsDir = path.join(process.cwd(), 'database', 'migrations');
|
|
116
|
+
}
|
|
117
|
+
if (!fs.existsSync(migrationsDir)) {
|
|
118
|
+
migrationsDir = path.join(process.cwd(), 'database', 'migrations');
|
|
119
|
+
}
|
|
133
120
|
const migrateSpinner = p.spinner();
|
|
134
121
|
migrateSpinner.start('Initializing database...');
|
|
135
122
|
try {
|
|
@@ -199,8 +186,41 @@ export class InstallWizard {
|
|
|
199
186
|
p.log.error(err instanceof Error ? err.message : String(err));
|
|
200
187
|
throw err;
|
|
201
188
|
}
|
|
202
|
-
// Step 10:
|
|
203
|
-
p.
|
|
189
|
+
// Step 10: Install system services
|
|
190
|
+
const serviceSpinner = p.spinner();
|
|
191
|
+
serviceSpinner.start('Installing system services...');
|
|
192
|
+
try {
|
|
193
|
+
const sm = new ServiceManager();
|
|
194
|
+
const serverBin = findBinary('overlord-server');
|
|
195
|
+
sm.install({
|
|
196
|
+
name: 'overlord-server',
|
|
197
|
+
description: 'Overlord AI Task Orchestration Server',
|
|
198
|
+
execStart: serverBin,
|
|
199
|
+
envFile: envPath,
|
|
200
|
+
workingDirectory: installDir,
|
|
201
|
+
});
|
|
202
|
+
const workerBin = findBinary('overlord-worker');
|
|
203
|
+
sm.install({
|
|
204
|
+
name: 'overlord-worker',
|
|
205
|
+
description: 'Overlord Worker Agent',
|
|
206
|
+
execStart: workerBin,
|
|
207
|
+
envFile: path.join(os.homedir(), '.overlord-worker', '.env'),
|
|
208
|
+
workingDirectory: path.join(os.homedir(), '.overlord-worker'),
|
|
209
|
+
});
|
|
210
|
+
serviceSpinner.stop('System services installed');
|
|
211
|
+
const serviceType = process.platform === 'linux' ? 'systemd' : 'launchd';
|
|
212
|
+
p.log.success(`Services registered with ${serviceType}`);
|
|
213
|
+
if (process.platform === 'linux') {
|
|
214
|
+
p.log.info('Tip: Run `loginctl enable-linger $USER` for services to persist after logout.');
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
serviceSpinner.stop('Service installation skipped');
|
|
219
|
+
p.log.warn(`Could not install system services: ${err instanceof Error ? err.message : String(err)}\n` +
|
|
220
|
+
`You can install them later with ${chalk.cyan('overlord start')}`);
|
|
221
|
+
}
|
|
222
|
+
// Step 11: Complete
|
|
223
|
+
p.note(`Config: ${envPath}\n` +
|
|
204
224
|
`Database: ${dbPath}\n` +
|
|
205
225
|
`Redis: ${redisUrl}\n` +
|
|
206
226
|
`Admin user: ${adminUsername}\n\n` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/installer/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAoB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/installer/wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -26,6 +26,24 @@ program
|
|
|
26
26
|
.description('Stop all processes')
|
|
27
27
|
.argument('[component]', 'Component to stop (server, worker, or all)', 'all')
|
|
28
28
|
.action(stopCommand);
|
|
29
|
+
program
|
|
30
|
+
.command('restart')
|
|
31
|
+
.description('Restart server and/or worker services')
|
|
32
|
+
.argument('[component]', 'Component to restart (server, worker, or all)', 'all')
|
|
33
|
+
.action(async (component) => {
|
|
34
|
+
const { ServiceManager } = await import('./service-manager.js');
|
|
35
|
+
const sm = new ServiceManager();
|
|
36
|
+
const chalk = (await import('chalk')).default;
|
|
37
|
+
console.log(chalk.blue(`Restarting ${component}...`));
|
|
38
|
+
if (component === 'all' || component === 'server') {
|
|
39
|
+
sm.restart('overlord-server');
|
|
40
|
+
console.log(chalk.green(' overlord-server restarted'));
|
|
41
|
+
}
|
|
42
|
+
if (component === 'all' || component === 'worker') {
|
|
43
|
+
sm.restart('overlord-worker');
|
|
44
|
+
console.log(chalk.green(' overlord-worker restarted'));
|
|
45
|
+
}
|
|
46
|
+
});
|
|
29
47
|
program
|
|
30
48
|
.command('status')
|
|
31
49
|
.description('Show process status table')
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mCAAmC,CAAC;KAChD,QAAQ,CAAC,aAAa,EAAE,6CAA6C,EAAE,KAAK,CAAC;KAC7E,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oBAAoB,CAAC;KACjC,QAAQ,CAAC,aAAa,EAAE,4CAA4C,EAAE,KAAK,CAAC;KAC5E,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yBAAyB,CAAC;KACtC,QAAQ,CAAC,aAAa,EAAE,6CAA6C,EAAE,QAAQ,CAAC;KAChF,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAC/D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,YAAY,EAAE,8BAA8B,CAAC;KACpD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ChildProcess } from 'node:child_process';
|
|
2
|
+
export interface ServiceConfig {
|
|
3
|
+
name: string;
|
|
4
|
+
description: string;
|
|
5
|
+
execStart: string;
|
|
6
|
+
envFile?: string;
|
|
7
|
+
workingDirectory?: string;
|
|
8
|
+
env?: Record<string, string>;
|
|
9
|
+
}
|
|
10
|
+
export interface ServiceStatus {
|
|
11
|
+
name: string;
|
|
12
|
+
active: boolean;
|
|
13
|
+
pid: number;
|
|
14
|
+
uptime: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Manages Overlord services using native OS service managers:
|
|
18
|
+
* - systemd (user-level) on Linux
|
|
19
|
+
* - launchd on macOS
|
|
20
|
+
*/
|
|
21
|
+
export declare class ServiceManager {
|
|
22
|
+
private readonly platform;
|
|
23
|
+
constructor(platform?: NodeJS.Platform);
|
|
24
|
+
install(config: ServiceConfig): void;
|
|
25
|
+
uninstall(name: string): void;
|
|
26
|
+
start(name: string): void;
|
|
27
|
+
stop(name: string): void;
|
|
28
|
+
restart(name: string): void;
|
|
29
|
+
status(): ServiceStatus[];
|
|
30
|
+
logs(name: string, lines?: number): ChildProcess;
|
|
31
|
+
isInstalled(name: string): boolean;
|
|
32
|
+
private systemdUnitDir;
|
|
33
|
+
private systemdUnitPath;
|
|
34
|
+
private installSystemd;
|
|
35
|
+
private uninstallSystemd;
|
|
36
|
+
private systemdStatus;
|
|
37
|
+
private launchdLabel;
|
|
38
|
+
private launchdPlistPath;
|
|
39
|
+
private installLaunchd;
|
|
40
|
+
private uninstallLaunchd;
|
|
41
|
+
private launchdStatus;
|
|
42
|
+
private computeUptime;
|
|
43
|
+
private computeLaunchdUptime;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Find the absolute path of a binary by name.
|
|
47
|
+
* Uses `which` and falls back to common bin directories.
|
|
48
|
+
*/
|
|
49
|
+
export declare function findBinary(name: string): string;
|
|
50
|
+
//# sourceMappingURL=service-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-manager.d.ts","sourceRoot":"","sources":["../src/service-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAM5E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAE/B,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ;IAItC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI;IAUpC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU7B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAiBzB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAmBxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA0B3B,MAAM,IAAI,aAAa,EAAE;IAczB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY;IAepD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAalC,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,cAAc;IAyDtB,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,cAAc;IA4EtB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,oBAAoB;CAa7B;AAuBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuB/C"}
|