@getaclaw/agent 0.1.8 → 0.1.9
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/cli.js +1 -10
- package/dist/cli.js.map +1 -1
- package/dist/setup/steps/configure.d.ts.map +1 -1
- package/dist/setup/steps/configure.js +52 -8
- package/dist/setup/steps/configure.js.map +1 -1
- package/dist/setup/steps/openclaw.d.ts.map +1 -1
- package/dist/setup/steps/openclaw.js +18 -6
- package/dist/setup/steps/openclaw.js.map +1 -1
- package/dist/setup/steps/service.d.ts.map +1 -1
- package/dist/setup/steps/service.js +48 -14
- package/dist/setup/steps/service.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -137,7 +137,6 @@ Wants=network-online.target
|
|
|
137
137
|
|
|
138
138
|
[Service]
|
|
139
139
|
Type=simple
|
|
140
|
-
User=getaclaw-agent
|
|
141
140
|
ExecStart=/usr/bin/getaclaw-agent serve
|
|
142
141
|
Restart=always
|
|
143
142
|
RestartSec=5
|
|
@@ -149,16 +148,8 @@ WantedBy=multi-user.target
|
|
|
149
148
|
`;
|
|
150
149
|
const servicePath = '/etc/systemd/system/getaclaw-agent.service';
|
|
151
150
|
logger.info('Installing systemd service...');
|
|
152
|
-
// Ensure
|
|
153
|
-
const idResult = await safeExec('getent', ['passwd', 'getaclaw-agent']);
|
|
154
|
-
if (idResult.exitCode !== 0) {
|
|
155
|
-
await safeExec('useradd', ['--system', '--create-home', '--shell', '/usr/sbin/nologin', 'getaclaw-agent']);
|
|
156
|
-
logger.info('Created system user: getaclaw-agent');
|
|
157
|
-
}
|
|
158
|
-
// Give the service user access to config and log directories
|
|
159
|
-
await safeExec('chown', ['-R', 'getaclaw-agent:getaclaw-agent', DEFAULT_CONFIG_DIR]);
|
|
151
|
+
// Ensure log directory exists
|
|
160
152
|
await safeExec('mkdir', ['-p', '/var/log/getaclaw']);
|
|
161
|
-
await safeExec('chown', ['-R', 'getaclaw-agent:getaclaw-agent', '/var/log/getaclaw']);
|
|
162
153
|
fs.writeFileSync(servicePath, serviceContent, 'utf-8');
|
|
163
154
|
await safeExec('systemctl', ['daemon-reload']);
|
|
164
155
|
await safeExec('systemctl', ['enable', 'getaclaw-agent']);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/configure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/configure.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AAY1D,eAAO,MAAM,aAAa,EAAE,SA2D3B,CAAC"}
|
|
@@ -1,21 +1,65 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
1
4
|
import { safeExec } from '../../utils/exec.js';
|
|
2
5
|
import { logger } from '../../utils/logger.js';
|
|
6
|
+
/** Run openclaw config set and throw on failure. */
|
|
7
|
+
async function configSet(key, value) {
|
|
8
|
+
const result = await safeExec('openclaw', ['config', 'set', key, value]);
|
|
9
|
+
if (result.exitCode !== 0) {
|
|
10
|
+
throw new Error(`openclaw config set ${key} failed (exit ${result.exitCode}): ${result.stderr.trim()}`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
3
13
|
export const configureStep = {
|
|
4
14
|
name: 'configure',
|
|
5
|
-
description: '
|
|
15
|
+
description: 'Generate OpenClaw configuration files',
|
|
6
16
|
required: true,
|
|
7
17
|
shouldRun: (_config, results) => !!results.get('openclawVersion'),
|
|
8
18
|
async execute(ctx) {
|
|
9
|
-
|
|
19
|
+
const openclawDir = path.join(os.homedir(), '.openclaw');
|
|
20
|
+
const envPath = path.join(openclawDir, '.env');
|
|
21
|
+
ctx.emit('log', 'configure', 'Configuring OpenClaw via CLI...');
|
|
22
|
+
ctx.emit('step.progress', 'configure', 10);
|
|
23
|
+
await fs.mkdir(openclawDir, { recursive: true });
|
|
24
|
+
// Configure gateway settings via openclaw config set
|
|
25
|
+
// Both password and tailscale modes bind to lan — password auth or tailnet is the security layer
|
|
26
|
+
const bindMode = 'lan';
|
|
27
|
+
await configSet('gateway.mode', 'local');
|
|
28
|
+
await configSet('gateway.port', '18789');
|
|
29
|
+
await configSet('gateway.bind', bindMode);
|
|
10
30
|
ctx.emit('step.progress', 'configure', 30);
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
31
|
+
// Configure gateway auth
|
|
32
|
+
if (ctx.config.securityMode === 'password' && ctx.config.gatewayToken) {
|
|
33
|
+
await configSet('gateway.auth.mode', 'token');
|
|
34
|
+
await configSet('gateway.auth.token', ctx.config.gatewayToken);
|
|
35
|
+
// Allow Control UI over plain HTTP as fallback
|
|
36
|
+
await configSet('gateway.controlUi.allowInsecureAuth', 'true');
|
|
15
37
|
}
|
|
38
|
+
else if (ctx.config.securityMode === 'tailscale') {
|
|
39
|
+
await configSet('gateway.auth.mode', 'token');
|
|
40
|
+
}
|
|
41
|
+
ctx.emit('step.progress', 'configure', 50);
|
|
42
|
+
// Set the default model
|
|
43
|
+
ctx.emit('log', 'configure', 'Setting default model...');
|
|
44
|
+
const model = ctx.config.selectedModels?.[0];
|
|
45
|
+
if (model) {
|
|
46
|
+
const result = await safeExec('openclaw', ['models', 'set', model]);
|
|
47
|
+
if (result.exitCode !== 0) {
|
|
48
|
+
throw new Error(`openclaw models set failed (exit ${result.exitCode}): ${result.stderr.trim()}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ctx.emit('step.progress', 'configure', 70);
|
|
52
|
+
// Write .env file with API keys for the gateway environment
|
|
53
|
+
ctx.emit('log', 'configure', 'Writing environment file...');
|
|
54
|
+
const envContent = [
|
|
55
|
+
`OPENROUTER_API_KEY=${ctx.config.openrouterApiKey}`,
|
|
56
|
+
'',
|
|
57
|
+
].join('\n');
|
|
58
|
+
await fs.writeFile(envPath, envContent, 'utf-8');
|
|
59
|
+
await fs.chmod(envPath, 0o600);
|
|
16
60
|
ctx.emit('step.progress', 'configure', 100);
|
|
17
|
-
ctx.emit('log', 'configure', 'OpenClaw configuration
|
|
18
|
-
logger.info('OpenClaw configuration
|
|
61
|
+
ctx.emit('log', 'configure', 'OpenClaw configuration complete');
|
|
62
|
+
logger.info('OpenClaw configuration written via CLI', { envPath });
|
|
19
63
|
},
|
|
20
64
|
};
|
|
21
65
|
//# sourceMappingURL=configure.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/setup/steps/configure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/setup/steps/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AAG1D,eAAO,MAAM,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"openclaw.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/openclaw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AAG1D,eAAO,MAAM,YAAY,EAAE,SA2C1B,CAAC"}
|
|
@@ -1,22 +1,34 @@
|
|
|
1
|
-
import { safeExec } from '../../utils/exec.js';
|
|
1
|
+
import { safeExec, safeExecPipe } from '../../utils/exec.js';
|
|
2
2
|
export const openclawStep = {
|
|
3
3
|
name: 'openclaw',
|
|
4
4
|
description: 'Install OpenClaw globally via npm',
|
|
5
5
|
required: true,
|
|
6
6
|
shouldRun: () => true,
|
|
7
7
|
async execute(ctx) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
// Check if already installed (e.g. by cloud-init)
|
|
9
|
+
const check = await safeExec('openclaw', ['--version']);
|
|
10
|
+
if (check.exitCode === 0 && check.stdout.trim()) {
|
|
11
|
+
const version = check.stdout.trim();
|
|
12
|
+
ctx.emit('log', 'openclaw', `OpenClaw already installed: ${version}`);
|
|
13
|
+
ctx.results.set('openclawVersion', version);
|
|
14
|
+
ctx.emit('step.progress', 'openclaw', 100);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
ctx.emit('log', 'openclaw', 'Installing openclaw@latest globally...');
|
|
18
|
+
ctx.emit('step.progress', 'openclaw', 10);
|
|
19
|
+
await safeExecPipe('npm', ['install', '-g', 'openclaw@latest'], {}, (output) => ctx.emit('log', 'openclaw', output), (output) => ctx.emit('log', 'openclaw', output));
|
|
20
|
+
ctx.emit('step.progress', 'openclaw', 80);
|
|
21
|
+
// Verify installation
|
|
22
|
+
ctx.emit('log', 'openclaw', 'Verifying openclaw installation...');
|
|
11
23
|
const result = await safeExec('openclaw', ['--version']);
|
|
12
24
|
if (result.exitCode !== 0) {
|
|
13
|
-
throw new Error('OpenClaw
|
|
25
|
+
throw new Error('OpenClaw installation failed — openclaw binary not found after npm install');
|
|
14
26
|
}
|
|
15
27
|
const version = result.stdout.trim();
|
|
16
28
|
ctx.emit('log', 'openclaw', `OpenClaw version: ${version}`);
|
|
17
29
|
ctx.results.set('openclawVersion', version);
|
|
18
30
|
ctx.emit('step.progress', 'openclaw', 100);
|
|
19
|
-
ctx.emit('log', 'openclaw', 'OpenClaw
|
|
31
|
+
ctx.emit('log', 'openclaw', 'OpenClaw installed successfully');
|
|
20
32
|
},
|
|
21
33
|
};
|
|
22
34
|
//# sourceMappingURL=openclaw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../../src/setup/steps/openclaw.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../../src/setup/steps/openclaw.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,mCAAmC;IAChD,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;IAErB,KAAK,CAAC,OAAO,CAAC,GAAgB;QAC5B,kDAAkD;QAClD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAChD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,+BAA+B,OAAO,EAAE,CAAC,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,wCAAwC,CAAC,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAE1C,MAAM,YAAY,CAChB,KAAK,EACL,CAAC,SAAS,EAAE,IAAI,EAAE,iBAAiB,CAAC,EACpC,EAAE,EACF,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EACvD,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CACxD,CAAC;QAEF,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAE1C,sBAAsB;QACtB,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,oCAAoC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAChG,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAE5D,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,iCAAiC,CAAC,CAAC;IACjE,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/setup/steps/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,aAAa,CAAC;AAI1D,eAAO,MAAM,WAAW,EAAE,SAmEzB,CAAC"}
|
|
@@ -1,28 +1,62 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
1
2
|
import { safeExec } from '../../utils/exec.js';
|
|
2
3
|
import { logger } from '../../utils/logger.js';
|
|
3
4
|
export const serviceStep = {
|
|
4
5
|
name: 'service',
|
|
5
|
-
description: '
|
|
6
|
+
description: 'Set up OpenClaw as a systemd service',
|
|
6
7
|
required: true,
|
|
7
8
|
shouldRun: (_config, results) => !!results.get('openclawVersion'),
|
|
8
9
|
async execute(ctx) {
|
|
9
|
-
ctx.emit('log', 'service', '
|
|
10
|
+
ctx.emit('log', 'service', 'Installing OpenClaw gateway service...');
|
|
11
|
+
ctx.emit('step.progress', 'service', 10);
|
|
12
|
+
// Find openclaw binary path for the ExecStart directive
|
|
13
|
+
const whichResult = await safeExec('bash', ['-c', 'which openclaw']);
|
|
14
|
+
const openclawBin = whichResult.stdout.trim() || '/usr/bin/openclaw';
|
|
15
|
+
ctx.emit('log', 'service', `OpenClaw binary: ${openclawBin}`);
|
|
16
|
+
// Create a system-level systemd service (not user-level).
|
|
17
|
+
// `openclaw gateway install` creates a user-level service that requires
|
|
18
|
+
// lingering + XDG_RUNTIME_DIR — unreliable when running headless as root.
|
|
19
|
+
// A system unit is the recommended approach for always-on servers.
|
|
20
|
+
const serviceContent = `[Unit]
|
|
21
|
+
Description=OpenClaw AI Gateway
|
|
22
|
+
After=network-online.target
|
|
23
|
+
Wants=network-online.target
|
|
24
|
+
|
|
25
|
+
[Service]
|
|
26
|
+
Type=simple
|
|
27
|
+
ExecStart=${openclawBin} gateway --port 18789
|
|
28
|
+
Restart=always
|
|
29
|
+
RestartSec=5
|
|
30
|
+
Environment=NODE_ENV=production
|
|
31
|
+
Environment=HOME=/root
|
|
32
|
+
EnvironmentFile=-/root/.openclaw/.env
|
|
33
|
+
|
|
34
|
+
[Install]
|
|
35
|
+
WantedBy=multi-user.target
|
|
36
|
+
`;
|
|
37
|
+
const servicePath = '/etc/systemd/system/openclaw-gateway.service';
|
|
38
|
+
await fs.writeFile(servicePath, serviceContent, 'utf-8');
|
|
10
39
|
ctx.emit('step.progress', 'service', 30);
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
40
|
+
// Enable and start
|
|
41
|
+
ctx.emit('log', 'service', 'Enabling and starting OpenClaw gateway...');
|
|
42
|
+
await safeExec('systemctl', ['daemon-reload']);
|
|
43
|
+
await safeExec('systemctl', ['enable', 'openclaw-gateway']);
|
|
44
|
+
await safeExec('systemctl', ['start', 'openclaw-gateway']);
|
|
45
|
+
ctx.emit('step.progress', 'service', 60);
|
|
46
|
+
// Give the gateway a moment to initialize
|
|
47
|
+
ctx.emit('log', 'service', 'Waiting for gateway to start...');
|
|
48
|
+
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
49
|
+
// Verify the service is active
|
|
50
|
+
ctx.emit('log', 'service', 'Verifying service is running...');
|
|
51
|
+
const statusResult = await safeExec('systemctl', ['is-active', 'openclaw-gateway']);
|
|
52
|
+
const state = statusResult.stdout.trim();
|
|
21
53
|
if (state !== 'active') {
|
|
22
|
-
|
|
54
|
+
const journal = await safeExec('bash', ['-c', 'journalctl -u openclaw-gateway -n 30 --no-pager 2>&1']);
|
|
55
|
+
ctx.emit('log', 'service', `Service journal:\n${journal.stdout}`);
|
|
56
|
+
throw new Error(`OpenClaw gateway service is not active (state: ${state})`);
|
|
23
57
|
}
|
|
24
58
|
ctx.emit('step.progress', 'service', 100);
|
|
25
|
-
ctx.emit('log', 'service', 'OpenClaw gateway service
|
|
59
|
+
ctx.emit('log', 'service', 'OpenClaw gateway service installed and running');
|
|
26
60
|
logger.info('OpenClaw gateway service is active');
|
|
27
61
|
},
|
|
28
62
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/setup/steps/service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/setup/steps/service.ts"],"names":[],"mappings":"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"}
|