@openclaw-caribbean/agent 0.1.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.
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,289 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { randomUUID } from 'crypto';
4
+ import { Agent } from './index.js';
5
+ import { OpenClawConfigFixer } from './config-fixer.js';
6
+ import { StatusCollector } from './collector.js';
7
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
8
+ import { join } from 'path';
9
+ import { homedir } from 'os';
10
+ import { readPid, removePid, processExists, spawnDaemon, stopDaemon, } from '@openclaw-caribbean/shared';
11
+ const program = new Command();
12
+ const CONFIG_PATH = join(homedir(), '.caribbean', 'agent.json');
13
+ const PID_PATH = join(homedir(), '.caribbean', 'agent.pid');
14
+ const LOG_PATH = join(homedir(), '.caribbean', 'agent.log');
15
+ program
16
+ .name('caribbean-agent')
17
+ .description('Caribbean Agent - Node monitoring and management')
18
+ .version('0.1.0');
19
+ program
20
+ .command('init')
21
+ .description('Initialize agent configuration')
22
+ .option('--server <url>', 'Server WebSocket URL', 'ws://localhost:8080/ws/agent')
23
+ .option('--name <name>', 'Node name', `node-${randomUUID().slice(0, 8)}`)
24
+ .option('--token <token>', 'Authentication token')
25
+ .action((options) => {
26
+ const configDir = join(homedir(), '.caribbean');
27
+ const config = {
28
+ server: {
29
+ url: options.server,
30
+ reconnectInterval: 5000,
31
+ heartbeatInterval: 30000
32
+ },
33
+ node: {
34
+ id: randomUUID(),
35
+ name: options.name,
36
+ tags: []
37
+ },
38
+ openclaw: {
39
+ configPath: join(homedir(), '.openclaw', 'config.yaml'),
40
+ apiPort: 8080
41
+ },
42
+ auth: {
43
+ token: options.token || ''
44
+ }
45
+ };
46
+ if (!existsSync(configDir)) {
47
+ mkdirSync(configDir, { recursive: true });
48
+ process.stdout.write(`Creating config directory: ${configDir}\n`);
49
+ }
50
+ writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2));
51
+ console.log(`\n✓ Agent configuration created at ${CONFIG_PATH}`);
52
+ console.log(`\nNode ID: ${config.node.id}`);
53
+ console.log(`Node Name: ${config.node.name}`);
54
+ console.log(`\nNext steps:`);
55
+ console.log(` caribbean-agent start`);
56
+ });
57
+ program
58
+ .command('start')
59
+ .description('Start the agent')
60
+ .option('--server <url>', 'Override server URL')
61
+ .option('--config <path>', 'Config file path', CONFIG_PATH)
62
+ .option('--foreground', 'Run in foreground')
63
+ .option('--debug', 'Enable debug logging')
64
+ .action(async (options) => {
65
+ const configPath = options.config;
66
+ if (!options.foreground) {
67
+ const existingPid = readPid(PID_PATH);
68
+ if (existingPid && processExists(existingPid)) {
69
+ console.error(`Agent is already running (PID: ${existingPid})`);
70
+ console.error('Use `caribbean-agent stop` to stop it first.');
71
+ process.exit(1);
72
+ }
73
+ if (existingPid)
74
+ removePid(PID_PATH);
75
+ const args = [process.argv[1], 'start', '--foreground'];
76
+ if (configPath !== CONFIG_PATH)
77
+ args.push('--config', configPath);
78
+ if (options.server)
79
+ args.push('--server', options.server);
80
+ if (options.debug)
81
+ args.push('--debug');
82
+ const pid = spawnDaemon({
83
+ pidPath: PID_PATH,
84
+ logPath: LOG_PATH,
85
+ spawnArgs: args,
86
+ });
87
+ console.log(`Agent started in background (PID: ${pid})`);
88
+ console.log(`Log file: ${LOG_PATH}`);
89
+ return;
90
+ }
91
+ let config;
92
+ if (options.server) {
93
+ config = {
94
+ server: { url: options.server },
95
+ node: {
96
+ id: randomUUID(),
97
+ name: `node-${randomUUID().slice(0, 8)}`,
98
+ tags: []
99
+ }
100
+ };
101
+ }
102
+ else {
103
+ try {
104
+ const configContent = readFileSync(configPath, 'utf-8');
105
+ config = JSON.parse(configContent);
106
+ }
107
+ catch (error) {
108
+ console.error(`Failed to read config file: ${configPath}`);
109
+ console.error('Run `caribbean-agent init` first.');
110
+ process.exit(1);
111
+ }
112
+ }
113
+ const agent = new Agent(config, options.debug);
114
+ await agent.start();
115
+ process.on('SIGINT', () => {
116
+ console.log('\n[Agent] Shutting down...');
117
+ agent.stop();
118
+ removePid(PID_PATH);
119
+ process.exit(0);
120
+ });
121
+ process.on('SIGTERM', () => {
122
+ console.log('\n[Agent] Shutting down...');
123
+ agent.stop();
124
+ removePid(PID_PATH);
125
+ process.exit(0);
126
+ });
127
+ });
128
+ program
129
+ .command('status')
130
+ .description('Show agent status')
131
+ .option('--config <path>', 'Config file path', CONFIG_PATH)
132
+ .action((options) => {
133
+ try {
134
+ const configContent = readFileSync(options.config, 'utf-8');
135
+ const config = JSON.parse(configContent);
136
+ const pid = readPid(PID_PATH);
137
+ const running = pid !== null && processExists(pid);
138
+ console.log('\nAgent Status:');
139
+ console.log(` Running: ${running ? `Yes (PID: ${pid})` : 'No'}`);
140
+ console.log(` Node ID: ${config.node.id}`);
141
+ console.log(` Node Name: ${config.node.name}`);
142
+ console.log(` Server: ${config.server.url}`);
143
+ console.log(` Tags: ${config.node.tags?.join(', ') || 'none'}`);
144
+ }
145
+ catch (error) {
146
+ console.error(`Failed to read config file: ${options.config}`);
147
+ process.exit(1);
148
+ }
149
+ });
150
+ program
151
+ .command('stop')
152
+ .description('Stop the agent')
153
+ .action(async () => {
154
+ await stopDaemon(PID_PATH, 'Agent');
155
+ });
156
+ program
157
+ .command('restart')
158
+ .description('Restart the agent')
159
+ .option('--config <path>', 'Config file path', CONFIG_PATH)
160
+ .option('--server <url>', 'Override server URL')
161
+ .option('--debug', 'Enable debug logging')
162
+ .action(async (options) => {
163
+ await stopDaemon(PID_PATH, 'Agent');
164
+ const configPath = options.config;
165
+ const args = [process.argv[1], 'start', '--foreground'];
166
+ if (configPath !== CONFIG_PATH)
167
+ args.push('--config', configPath);
168
+ if (options.server)
169
+ args.push('--server', options.server);
170
+ if (options.debug)
171
+ args.push('--debug');
172
+ const pid = spawnDaemon({
173
+ pidPath: PID_PATH,
174
+ logPath: LOG_PATH,
175
+ spawnArgs: args,
176
+ });
177
+ console.log(`Agent restarted in background (PID: ${pid})`);
178
+ console.log(`Log file: ${LOG_PATH}`);
179
+ });
180
+ program
181
+ .command('logs')
182
+ .description('Show agent logs')
183
+ .option('--lines <number>', 'Number of lines to show', '50')
184
+ .action((options) => {
185
+ if (!existsSync(LOG_PATH)) {
186
+ console.log('No log file found');
187
+ return;
188
+ }
189
+ const content = readFileSync(LOG_PATH, 'utf-8');
190
+ const n = parseInt(options.lines, 10);
191
+ const lines = content.split('\n').slice(-n);
192
+ console.log(lines.join('\n'));
193
+ });
194
+ program
195
+ .command('openclaw-status')
196
+ .description('Check OpenClaw gateway status and configuration')
197
+ .action(() => {
198
+ console.log('\n🔍 Checking OpenClaw Gateway Status...\n');
199
+ const collector = new StatusCollector();
200
+ const status = collector.collect();
201
+ const gatewayStatus = status.openclawGateway;
202
+ if (!gatewayStatus) {
203
+ console.log('❌ OpenClaw gateway status not available');
204
+ return;
205
+ }
206
+ if (typeof gatewayStatus === 'string') {
207
+ console.log(`Status: ${gatewayStatus}`);
208
+ console.log('\nCannot perform detailed check. OpenClaw gateway is not running.');
209
+ return;
210
+ }
211
+ console.log(`📊 Gateway Status: ${gatewayStatus.status}`);
212
+ if (gatewayStatus.version) {
213
+ console.log(`🏷️ Version: ${gatewayStatus.version}`);
214
+ }
215
+ if (gatewayStatus.port) {
216
+ console.log(`🔌 Port: ${gatewayStatus.port}`);
217
+ }
218
+ });
219
+ program
220
+ .command('fix-openclaw')
221
+ .description('Automatically fix common OpenClaw configuration issues')
222
+ .option('--dry-run', 'Show what would be fixed without making changes')
223
+ .option('--backup', 'Create a backup before fixing')
224
+ .action((options) => {
225
+ console.log('\n🔧 Fixing OpenClaw Configuration Issues...\n');
226
+ const collector = new StatusCollector();
227
+ const status = collector.collect();
228
+ const gatewayStatus = status.openclawGateway;
229
+ if (!gatewayStatus || typeof gatewayStatus === 'string') {
230
+ console.log(`❌ OpenClaw gateway is not running (${gatewayStatus || 'unknown status'})`);
231
+ console.log(' Please start OpenClaw gateway first.');
232
+ return;
233
+ }
234
+ const warnings = gatewayStatus.doctorWarnings || [];
235
+ const troubles = gatewayStatus.troubles || [];
236
+ if (warnings.length === 0 && troubles.length === 0) {
237
+ console.log('✅ No issues to fix. OpenClaw configuration looks good!');
238
+ return;
239
+ }
240
+ console.log(`Found ${warnings.length} warnings and ${troubles.length} troubles.\n`);
241
+ if (options.dryRun) {
242
+ console.log('🔍 Dry run mode - showing what would be fixed:\n');
243
+ warnings.forEach(warning => {
244
+ console.log(`⚠️ Warning: ${warning.type}`);
245
+ console.log(` ${warning.message}`);
246
+ if (warning.suggestion) {
247
+ console.log(` 💡 Would apply: ${warning.suggestion}`);
248
+ }
249
+ });
250
+ troubles.forEach(trouble => {
251
+ console.log(`🚨 Trouble: ${trouble.type}`);
252
+ console.log(` ${trouble.message}`);
253
+ });
254
+ console.log('\nRun without --dry-run to apply fixes.');
255
+ return;
256
+ }
257
+ const fixer = new OpenClawConfigFixer();
258
+ if (options.backup) {
259
+ const backupPath = fixer.backupConfig();
260
+ console.log(`💾 Backup created at: ${backupPath}\n`);
261
+ }
262
+ const result = fixer.fixIssues(warnings, troubles);
263
+ if (result.success) {
264
+ console.log(`✅ ${result.message}`);
265
+ console.log('\n🔄 Please restart OpenClaw gateway for changes to take effect.');
266
+ }
267
+ else {
268
+ console.log(`❌ Failed to fix issues: ${result.message}`);
269
+ }
270
+ });
271
+ program
272
+ .command('validate-openclaw')
273
+ .description('Validate OpenClaw configuration file')
274
+ .action(() => {
275
+ console.log('\n🔍 Validating OpenClaw Configuration...\n');
276
+ const fixer = new OpenClawConfigFixer();
277
+ const result = fixer.validateConfig();
278
+ if (result.valid) {
279
+ console.log('✅ OpenClaw configuration is valid!');
280
+ }
281
+ else {
282
+ console.log('❌ OpenClaw configuration has errors:\n');
283
+ result.errors.forEach((error, index) => {
284
+ console.log(` ${index + 1}. ${error}`);
285
+ });
286
+ }
287
+ });
288
+ program.parse();
289
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { NodeStatus } from '@openclaw-caribbean/shared';
2
+ export declare class StatusCollector {
3
+ private startTime;
4
+ private cpuPercent;
5
+ private cpuPollingTimer;
6
+ private osUtils;
7
+ constructor();
8
+ private startCpuMonitoring;
9
+ destroy(): void;
10
+ collect(): NodeStatus;
11
+ private collectMemory;
12
+ private collectMacOSMemory;
13
+ private collectDefaultMemory;
14
+ private collectCpu;
15
+ private collectAgents;
16
+ private collectSkills;
17
+ private collectOpenClawGatewayStatus;
18
+ private collectDetailedOpenClawStatus;
19
+ private collectDoctorWarnings;
20
+ private collectTroubles;
21
+ }
22
+ //# sourceMappingURL=collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.d.ts","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAkF,MAAM,4BAA4B,CAAC;AAO7I,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAO;IACxB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,OAAO,CAAmB;;IAOlC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,IAAI,IAAI;IAOf,OAAO,IAAI,UAAU;IAYrB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,4BAA4B;IAqBpC,OAAO,CAAC,6BAA6B;IAmDrC,OAAO,CAAC,qBAAqB;IA4C7B,OAAO,CAAC,eAAe;CAkDxB"}
@@ -0,0 +1,269 @@
1
+ import os from 'os';
2
+ import { readFileSync, existsSync } from 'fs';
3
+ import { join } from 'path';
4
+ import { execSync } from 'child_process';
5
+ import { createOSUtils } from 'node-os-utils';
6
+ export class StatusCollector {
7
+ startTime;
8
+ cpuPercent = 0;
9
+ cpuPollingTimer = null;
10
+ osUtils = createOSUtils();
11
+ constructor() {
12
+ this.startTime = new Date();
13
+ this.startCpuMonitoring();
14
+ }
15
+ startCpuMonitoring() {
16
+ const poll = async () => {
17
+ try {
18
+ const result = await this.osUtils.cpu.usage();
19
+ if (result.success && result.data !== null && result.data !== undefined) {
20
+ this.cpuPercent = Math.round(result.data);
21
+ }
22
+ }
23
+ catch {
24
+ this.cpuPercent = 0;
25
+ }
26
+ };
27
+ poll();
28
+ this.cpuPollingTimer = setInterval(poll, 5000);
29
+ }
30
+ destroy() {
31
+ if (this.cpuPollingTimer) {
32
+ clearInterval(this.cpuPollingTimer);
33
+ this.cpuPollingTimer = null;
34
+ }
35
+ }
36
+ collect() {
37
+ return {
38
+ version: '0.1.0',
39
+ uptime: Math.floor((Date.now() - this.startTime.getTime()) / 1000),
40
+ memory: this.collectMemory(),
41
+ cpu: this.collectCpu(),
42
+ agents: this.collectAgents(),
43
+ skills: this.collectSkills(),
44
+ openclawGateway: this.collectOpenClawGatewayStatus()
45
+ };
46
+ }
47
+ collectMemory() {
48
+ const totalMem = os.totalmem() / (1024 * 1024 * 1024);
49
+ if (process.platform === 'darwin') {
50
+ return this.collectMacOSMemory(totalMem);
51
+ }
52
+ return this.collectDefaultMemory(totalMem);
53
+ }
54
+ collectMacOSMemory(totalMem) {
55
+ try {
56
+ const vmstat = execSync('vm_stat', { timeout: 3000 }).toString();
57
+ const pageSize = 16384;
58
+ const extractPages = (pattern) => {
59
+ const match = vmstat.match(pattern);
60
+ return match ? parseInt(match[1], 10) : 0;
61
+ };
62
+ const active = extractPages(/Pages active:\s*(\d+)/);
63
+ const wired = extractPages(/Pages wired down:\s*(\d+)/);
64
+ const compressed = extractPages(/Pages occupied by compressor:\s*(\d+)/);
65
+ const usedBytes = (active + wired + compressed) * pageSize;
66
+ const usedMem = usedBytes / (1024 * 1024 * 1024);
67
+ const percent = Math.round((usedMem / totalMem) * 100);
68
+ return {
69
+ used: Number(usedMem.toFixed(2)),
70
+ total: Number(totalMem.toFixed(2)),
71
+ percent
72
+ };
73
+ }
74
+ catch {
75
+ return this.collectDefaultMemory(totalMem);
76
+ }
77
+ }
78
+ collectDefaultMemory(totalMem) {
79
+ const freeMem = os.freemem() / (1024 * 1024 * 1024);
80
+ const usedMem = totalMem - freeMem;
81
+ const percent = Math.round((usedMem / totalMem) * 100);
82
+ return {
83
+ used: Number(usedMem.toFixed(2)),
84
+ total: Number(totalMem.toFixed(2)),
85
+ percent
86
+ };
87
+ }
88
+ collectCpu() {
89
+ return { percent: this.cpuPercent };
90
+ }
91
+ collectAgents() {
92
+ try {
93
+ const configPath = join(process.env.HOME || '', '.openclaw', 'config.yaml');
94
+ const config = readFileSync(configPath, 'utf-8');
95
+ const activeMatch = config.match(/agents:\s*\n\s*active:\s*(\d+)/);
96
+ const maxMatch = config.match(/agents:\s*\n\s*max:\s*(\d+)/);
97
+ const active = activeMatch ? parseInt(activeMatch[1], 10) : 0;
98
+ const max = maxMatch ? parseInt(maxMatch[1], 10) : 10;
99
+ const listMatch = config.match(/agents:\s*\n\s*list:\s*\[([^\]]+)\]/);
100
+ const list = listMatch
101
+ ? listMatch[1].split(',').map(s => s.trim().replace(/"/g, ''))
102
+ : ['reef', 'navigator', 'shell'];
103
+ return { active, max, list };
104
+ }
105
+ catch {
106
+ return { active: 3, max: 10, list: ['reef', 'navigator', 'shell'] };
107
+ }
108
+ }
109
+ collectSkills() {
110
+ try {
111
+ const configPath = join(process.env.HOME || '', '.openclaw', 'config.yaml');
112
+ const config = readFileSync(configPath, 'utf-8');
113
+ const skillsMatch = config.match(/skills:\s*\[([^\]]+)\]/);
114
+ if (skillsMatch) {
115
+ return skillsMatch[1].split(',').map(s => s.trim().replace(/"/g, ''));
116
+ }
117
+ }
118
+ catch {
119
+ return ['shell', 'github', 'tmux', 'browser'];
120
+ }
121
+ return ['shell', 'github', 'tmux', 'browser'];
122
+ }
123
+ collectOpenClawGatewayStatus() {
124
+ try {
125
+ const statusOutput = execSync('openclaw gateway status', {
126
+ encoding: 'utf-8',
127
+ timeout: 5000
128
+ });
129
+ const runningMatch = statusOutput.match(/Runtime:\s*(\w+)/i);
130
+ const status = runningMatch ? runningMatch[1].toLowerCase() : 'stopped';
131
+ if (status !== 'running') {
132
+ return 'stopped';
133
+ }
134
+ const detailedStatus = this.collectDetailedOpenClawStatus(statusOutput);
135
+ return detailedStatus;
136
+ }
137
+ catch (error) {
138
+ return 'stopped';
139
+ }
140
+ }
141
+ collectDetailedOpenClawStatus(statusOutput) {
142
+ const status = {
143
+ status: 'running',
144
+ healthy: true,
145
+ doctorWarnings: [],
146
+ troubles: []
147
+ };
148
+ try {
149
+ const versionMatch = statusOutput.match(/OpenClaw\s+([\d.]+)/);
150
+ if (versionMatch) {
151
+ status.version = versionMatch[1];
152
+ }
153
+ const portMatch = statusOutput.match(/port=(\d+)/);
154
+ if (portMatch) {
155
+ status.port = parseInt(portMatch[1], 10);
156
+ }
157
+ const configPath = join(process.env.HOME || '', '.openclaw', 'openclaw.json');
158
+ if (existsSync(configPath)) {
159
+ const config = JSON.parse(readFileSync(configPath, 'utf-8'));
160
+ const doctorWarnings = this.collectDoctorWarnings(config);
161
+ status.doctorWarnings = doctorWarnings;
162
+ if (doctorWarnings.some(w => w.severity === 'error')) {
163
+ status.healthy = false;
164
+ }
165
+ }
166
+ const troubles = this.collectTroubles();
167
+ status.troubles = troubles;
168
+ if (troubles.some(t => t.severity === 'error')) {
169
+ status.healthy = false;
170
+ }
171
+ }
172
+ catch (error) {
173
+ status.status = 'error';
174
+ status.healthy = false;
175
+ status.doctorWarnings?.push({
176
+ type: 'config_error',
177
+ message: `Failed to read openclaw config: ${error instanceof Error ? error.message : String(error)}`,
178
+ severity: 'error'
179
+ });
180
+ }
181
+ return status;
182
+ }
183
+ collectDoctorWarnings(config) {
184
+ const warnings = [];
185
+ try {
186
+ if (config.channels?.telegram?.groupPolicy === 'allowlist') {
187
+ const allowFrom = config.channels?.telegram?.groupAllowFrom || config.channels?.telegram?.allowFrom;
188
+ if (!allowFrom || (Array.isArray(allowFrom) && allowFrom.length === 0)) {
189
+ warnings.push({
190
+ type: 'telegram_group_policy',
191
+ message: 'channels.telegram.groupPolicy is "allowlist" but groupAllowFrom (and allowFrom) is empty',
192
+ suggestion: 'Add sender IDs to channels.telegram.groupAllowFrom or channels.telegram.allowFrom, or set groupPolicy to "open"',
193
+ severity: 'warning'
194
+ });
195
+ }
196
+ }
197
+ if (!config.skills || (Array.isArray(config.skills) && config.skills.length === 0)) {
198
+ warnings.push({
199
+ type: 'no_skills',
200
+ message: 'No skills configured',
201
+ suggestion: 'Add skills to the configuration to enable OpenClaw functionality',
202
+ severity: 'warning'
203
+ });
204
+ }
205
+ if (!config.agents || !config.agents.list || config.agents.list.length === 0) {
206
+ warnings.push({
207
+ type: 'no_agents',
208
+ message: 'No agents configured',
209
+ suggestion: 'Add agents to the configuration to enable task execution',
210
+ severity: 'warning'
211
+ });
212
+ }
213
+ }
214
+ catch (error) {
215
+ warnings.push({
216
+ type: 'doctor_check_error',
217
+ message: `Failed to check doctor warnings: ${error instanceof Error ? error.message : String(error)}`,
218
+ severity: 'error'
219
+ });
220
+ }
221
+ return warnings;
222
+ }
223
+ collectTroubles() {
224
+ const troubles = [];
225
+ try {
226
+ const configPath = join(process.env.HOME || '', '.openclaw', 'openclaw.json');
227
+ if (!existsSync(configPath)) {
228
+ troubles.push({
229
+ type: 'config_missing',
230
+ message: 'OpenClaw configuration file not found',
231
+ severity: 'error'
232
+ });
233
+ return troubles;
234
+ }
235
+ const config = JSON.parse(readFileSync(configPath, 'utf-8'));
236
+ if (!config.gateway || !config.gateway.port) {
237
+ troubles.push({
238
+ type: 'gateway_port_missing',
239
+ message: 'Gateway port not configured',
240
+ severity: 'error'
241
+ });
242
+ }
243
+ if (!config.apiKey && !config.jwt) {
244
+ troubles.push({
245
+ type: 'auth_missing',
246
+ message: 'No authentication configured (apiKey or jwt)',
247
+ severity: 'warning'
248
+ });
249
+ }
250
+ const pidFile = join(process.env.HOME || '', '.openclaw', 'gateway.pid');
251
+ if (!existsSync(pidFile)) {
252
+ troubles.push({
253
+ type: 'pid_file_missing',
254
+ message: 'Gateway PID file not found',
255
+ severity: 'warning'
256
+ });
257
+ }
258
+ }
259
+ catch (error) {
260
+ troubles.push({
261
+ type: 'trouble_check_error',
262
+ message: `Failed to check troubles: ${error instanceof Error ? error.message : String(error)}`,
263
+ severity: 'error'
264
+ });
265
+ }
266
+ return troubles;
267
+ }
268
+ }
269
+ //# sourceMappingURL=collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../src/collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { DoctorWarning, Trouble } from '@openclaw-caribbean/shared';
2
+ export interface ConfigFixResult {
3
+ success: boolean;
4
+ message: string;
5
+ warningsFixed: number;
6
+ troublesFixed: number;
7
+ }
8
+ export declare class OpenClawConfigFixer {
9
+ private configPath;
10
+ constructor();
11
+ fixIssues(warnings: DoctorWarning[], troubles: Trouble[]): ConfigFixResult;
12
+ private fixWarning;
13
+ private fixTrouble;
14
+ private generateApiKey;
15
+ validateConfig(): {
16
+ valid: boolean;
17
+ errors: string[];
18
+ };
19
+ backupConfig(): string;
20
+ }
21
+ //# sourceMappingURL=config-fixer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-fixer.d.ts","sourceRoot":"","sources":["../src/config-fixer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAS;;IAM3B,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,eAAe;IAuD1E,OAAO,CAAC,UAAU;IAwClB,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,cAAc;IAItB,cAAc,IAAI;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IA4CtD,YAAY,IAAI,MAAM;CAQvB"}