@redplanethq/corebrain 2.0.0 → 2.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/server/gateway-client.d.ts +5 -0
- package/dist/server/gateway-client.d.ts.map +1 -1
- package/dist/server/gateway-client.js +29 -13
- package/dist/server/gateway-client.js.map +1 -1
- package/dist/server/gateway-entry.js +28 -3
- package/dist/server/gateway-entry.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ interface GatewayClientConfig {
|
|
|
9
9
|
onReady?: (gatewayId: string) => void;
|
|
10
10
|
onError?: (error: Error) => void;
|
|
11
11
|
onMaxReconnectReached?: () => void;
|
|
12
|
+
logger?: (message: string) => void;
|
|
12
13
|
}
|
|
13
14
|
export type GatewayClientState = 'disconnected' | 'connecting' | 'connected' | 'ready';
|
|
14
15
|
export declare class GatewayClient {
|
|
@@ -22,6 +23,10 @@ export declare class GatewayClient {
|
|
|
22
23
|
private shouldReconnect;
|
|
23
24
|
private pingInterval;
|
|
24
25
|
constructor(config: GatewayClientConfig);
|
|
26
|
+
/**
|
|
27
|
+
* Log a message using the provided logger or console
|
|
28
|
+
*/
|
|
29
|
+
private log;
|
|
25
30
|
/**
|
|
26
31
|
* Build the WebSocket URL from config
|
|
27
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-client.d.ts","sourceRoot":"","sources":["../../src/server/gateway-client.ts"],"names":[],"mappings":"AAgBA,UAAU,mBAAmB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;CACnC;AA+BD,MAAM,MAAM,kBAAkB,GAC3B,cAAc,GACd,YAAY,GACZ,WAAW,GACX,OAAO,CAAC;AAEX,qBAAa,aAAa;IACzB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB;;OAEG;IACH,OAAO,IAAI,IAAI;IAsDf;;OAEG;YACW,aAAa;
|
|
1
|
+
{"version":3,"file":"gateway-client.d.ts","sourceRoot":"","sources":["../../src/server/gateway-client.ts"],"names":[],"mappings":"AAgBA,UAAU,mBAAmB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AA+BD,MAAM,MAAM,kBAAkB,GAC3B,cAAc,GACd,YAAY,GACZ,WAAW,GACX,OAAO,CAAC;AAEX,qBAAa,aAAa;IACzB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAM;IAClC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,YAAY,CAA+B;gBAEvC,MAAM,EAAE,mBAAmB;IAIvC;;OAEG;IACH,OAAO,CAAC,GAAG;IAQX;;OAEG;IACH,OAAO,CAAC,UAAU;IAqBlB;;OAEG;IACH,OAAO,IAAI,IAAI;IAsDf;;OAEG;YACW,aAAa;IA2E3B;;OAEG;YACW,gBAAgB;IA4C9B;;OAEG;IACH,OAAO,CAAC,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,UAAU,IAAI,IAAI;IAmBlB;;OAEG;IACH,QAAQ,IAAI,kBAAkB;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,OAAO,IAAI,OAAO;CAGlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,mBAAmB,GACzB,aAAa,CAIf"}
|
|
@@ -17,6 +17,17 @@ export class GatewayClient {
|
|
|
17
17
|
constructor(config) {
|
|
18
18
|
this.config = config;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Log a message using the provided logger or console
|
|
22
|
+
*/
|
|
23
|
+
log(message) {
|
|
24
|
+
if (this.config.logger) {
|
|
25
|
+
this.config.logger(message);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
console.log(message);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
20
31
|
/**
|
|
21
32
|
* Build the WebSocket URL from config
|
|
22
33
|
*/
|
|
@@ -46,12 +57,12 @@ export class GatewayClient {
|
|
|
46
57
|
this.shouldReconnect = true;
|
|
47
58
|
this.state = 'connecting';
|
|
48
59
|
const wsUrl = this.buildWsUrl();
|
|
49
|
-
|
|
60
|
+
this.log(`Connecting to gateway: ${this.config.url}`);
|
|
50
61
|
this.ws = new WebSocket(wsUrl);
|
|
51
62
|
this.ws.on('open', () => {
|
|
52
63
|
this.state = 'connected';
|
|
53
64
|
this.reconnectAttempts = 0;
|
|
54
|
-
|
|
65
|
+
this.log('Gateway WebSocket connected');
|
|
55
66
|
this.config.onConnect?.();
|
|
56
67
|
// Send init message
|
|
57
68
|
this.send({
|
|
@@ -72,14 +83,14 @@ export class GatewayClient {
|
|
|
72
83
|
await this.handleMessage(message);
|
|
73
84
|
}
|
|
74
85
|
catch (parseErr) {
|
|
75
|
-
|
|
86
|
+
this.log(`ERROR: Failed to parse message: ${parseErr}`);
|
|
76
87
|
}
|
|
77
88
|
});
|
|
78
89
|
this.ws.on('close', () => {
|
|
79
90
|
this.handleDisconnect();
|
|
80
91
|
});
|
|
81
92
|
this.ws.on('error', (wsErr) => {
|
|
82
|
-
|
|
93
|
+
this.log(`ERROR: Gateway WebSocket error: ${wsErr.message}`);
|
|
83
94
|
this.config.onError?.(wsErr);
|
|
84
95
|
});
|
|
85
96
|
}
|
|
@@ -98,13 +109,14 @@ export class GatewayClient {
|
|
|
98
109
|
this.state = 'ready';
|
|
99
110
|
const readyMsg = message;
|
|
100
111
|
this.gatewayId = readyMsg.gatewayId;
|
|
101
|
-
|
|
112
|
+
this.log(`Gateway ready: ${this.gatewayId}`);
|
|
102
113
|
this.config.onReady?.(this.gatewayId);
|
|
103
114
|
break;
|
|
104
115
|
}
|
|
105
116
|
case 'tool_call': {
|
|
106
117
|
const toolCall = message;
|
|
107
|
-
|
|
118
|
+
this.log(`TOOL_CALL: ${toolCall.tool} (id: ${toolCall.id})`);
|
|
119
|
+
this.log(`TOOL_PARAMS: ${JSON.stringify(toolCall.params)}`);
|
|
108
120
|
try {
|
|
109
121
|
let result;
|
|
110
122
|
// Route to appropriate executor based on tool prefix
|
|
@@ -121,6 +133,7 @@ export class GatewayClient {
|
|
|
121
133
|
result = { success: false, error: `Unknown tool: ${toolCall.tool}` };
|
|
122
134
|
}
|
|
123
135
|
if (result.success) {
|
|
136
|
+
this.log(`TOOL_RESULT: ${toolCall.tool} (id: ${toolCall.id}) - success`);
|
|
124
137
|
this.send({
|
|
125
138
|
type: 'tool_result',
|
|
126
139
|
id: toolCall.id,
|
|
@@ -128,6 +141,7 @@ export class GatewayClient {
|
|
|
128
141
|
});
|
|
129
142
|
}
|
|
130
143
|
else {
|
|
144
|
+
this.log(`TOOL_ERROR: ${toolCall.tool} (id: ${toolCall.id}) - ${result.error}`);
|
|
131
145
|
this.send({
|
|
132
146
|
type: 'tool_result',
|
|
133
147
|
id: toolCall.id,
|
|
@@ -136,21 +150,23 @@ export class GatewayClient {
|
|
|
136
150
|
}
|
|
137
151
|
}
|
|
138
152
|
catch (err) {
|
|
153
|
+
const errorMessage = err instanceof Error ? err.message : 'Unknown error';
|
|
154
|
+
this.log(`TOOL_EXCEPTION: ${toolCall.tool} (id: ${toolCall.id}) - ${errorMessage}`);
|
|
139
155
|
this.send({
|
|
140
156
|
type: 'tool_result',
|
|
141
157
|
id: toolCall.id,
|
|
142
|
-
error:
|
|
158
|
+
error: errorMessage,
|
|
143
159
|
});
|
|
144
160
|
}
|
|
145
161
|
break;
|
|
146
162
|
}
|
|
147
163
|
case 'error': {
|
|
148
164
|
const errorMsg = message;
|
|
149
|
-
|
|
165
|
+
this.log(`ERROR: Gateway error: ${errorMsg.message} (${errorMsg.code})`);
|
|
150
166
|
break;
|
|
151
167
|
}
|
|
152
168
|
default:
|
|
153
|
-
|
|
169
|
+
this.log(`Unknown message type: ${message.type}`);
|
|
154
170
|
}
|
|
155
171
|
}
|
|
156
172
|
/**
|
|
@@ -162,11 +178,11 @@ export class GatewayClient {
|
|
|
162
178
|
this.gatewayId = null;
|
|
163
179
|
this.ws = null;
|
|
164
180
|
this.stopPingInterval();
|
|
165
|
-
|
|
181
|
+
this.log('Gateway WebSocket disconnected');
|
|
166
182
|
this.config.onDisconnect?.();
|
|
167
183
|
// Auto-close all browser sessions on disconnect
|
|
168
184
|
if (wasReady) {
|
|
169
|
-
|
|
185
|
+
this.log('Closing all browser sessions...');
|
|
170
186
|
try {
|
|
171
187
|
await browserCloseAll();
|
|
172
188
|
}
|
|
@@ -179,13 +195,13 @@ export class GatewayClient {
|
|
|
179
195
|
this.reconnectAttempts < this.maxReconnectAttempts) {
|
|
180
196
|
const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 30000);
|
|
181
197
|
this.reconnectAttempts++;
|
|
182
|
-
|
|
198
|
+
this.log(`Reconnecting in ${delay}ms (attempt ${this.reconnectAttempts}/${this.maxReconnectAttempts})...`);
|
|
183
199
|
this.reconnectTimer = setTimeout(() => {
|
|
184
200
|
this.connect();
|
|
185
201
|
}, delay);
|
|
186
202
|
}
|
|
187
203
|
else if (this.reconnectAttempts >= this.maxReconnectAttempts) {
|
|
188
|
-
|
|
204
|
+
this.log('Max reconnection attempts reached. Shutting down gateway.');
|
|
189
205
|
this.config.onMaxReconnectReached?.();
|
|
190
206
|
}
|
|
191
207
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../../src/server/gateway-client.ts"],"names":[],"mappings":"AAAA,OAAO,SAAyB,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACjC,OAAO,EAAC,YAAY,EAAE,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAC,SAAS,EAAE,eAAe,EAAC,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../../src/server/gateway-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Gateway client entry point - runs as a detached background process via launchd/systemd
|
|
4
4
|
* Connects to the remote WebSocket server and handles tool calls
|
|
5
5
|
*/
|
|
6
|
-
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
6
|
+
import { writeFileSync, mkdirSync, existsSync, statSync, unlinkSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { hostname } from 'node:os';
|
|
9
9
|
import { GatewayClient } from './gateway-client.js';
|
|
@@ -11,16 +11,38 @@ import { getConfig } from '../config/index.js';
|
|
|
11
11
|
import { getPreferences, updatePreferences } from '../config/preferences.js';
|
|
12
12
|
import { getConfigPath } from '../config/paths.js';
|
|
13
13
|
const LOG_DIR = join(getConfigPath(), 'logs');
|
|
14
|
+
const LOG_FILE = join(LOG_DIR, 'gateway.log');
|
|
15
|
+
const LOG_MAX_AGE_DAYS = 3;
|
|
14
16
|
// Ensure log directory exists
|
|
15
17
|
if (!existsSync(LOG_DIR)) {
|
|
16
18
|
mkdirSync(LOG_DIR, { recursive: true });
|
|
17
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Clear log file if it's older than LOG_MAX_AGE_DAYS
|
|
22
|
+
*/
|
|
23
|
+
function clearOldLogs() {
|
|
24
|
+
try {
|
|
25
|
+
if (!existsSync(LOG_FILE)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const stats = statSync(LOG_FILE);
|
|
29
|
+
const ageMs = Date.now() - stats.mtime.getTime();
|
|
30
|
+
const maxAgeMs = LOG_MAX_AGE_DAYS * 24 * 60 * 60 * 1000;
|
|
31
|
+
if (ageMs > maxAgeMs) {
|
|
32
|
+
unlinkSync(LOG_FILE);
|
|
33
|
+
// Create fresh log file with rotation notice
|
|
34
|
+
writeFileSync(LOG_FILE, `[${new Date().toISOString()}] Log file cleared (was older than ${LOG_MAX_AGE_DAYS} days)\n`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Ignore errors during log rotation
|
|
39
|
+
}
|
|
40
|
+
}
|
|
18
41
|
function log(message) {
|
|
19
42
|
const timestamp = new Date().toISOString();
|
|
20
43
|
const logMessage = `[${timestamp}] ${message}\n`;
|
|
21
44
|
try {
|
|
22
|
-
|
|
23
|
-
writeFileSync(logFile, logMessage, { flag: 'a' });
|
|
45
|
+
writeFileSync(LOG_FILE, logMessage, { flag: 'a' });
|
|
24
46
|
}
|
|
25
47
|
catch {
|
|
26
48
|
// If logging fails, at least try stderr
|
|
@@ -28,6 +50,8 @@ function log(message) {
|
|
|
28
50
|
}
|
|
29
51
|
}
|
|
30
52
|
async function main() {
|
|
53
|
+
// Clear old logs at startup
|
|
54
|
+
clearOldLogs();
|
|
31
55
|
log(`Starting gateway client...`);
|
|
32
56
|
// Load config and preferences
|
|
33
57
|
const config = getConfig();
|
|
@@ -55,6 +79,7 @@ async function main() {
|
|
|
55
79
|
gatewayId: gatewayId,
|
|
56
80
|
name: gatewayName,
|
|
57
81
|
description: gatewayDescription,
|
|
82
|
+
logger: log, // Pass logger to GatewayClient for tool call logging
|
|
58
83
|
onConnect: () => {
|
|
59
84
|
log('Connected to gateway server');
|
|
60
85
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-entry.js","sourceRoot":"","sources":["../../src/server/gateway-entry.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAC,aAAa,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"gateway-entry.js","sourceRoot":"","sources":["../../src/server/gateway-entry.ts"],"names":[],"mappings":"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"}
|