@codebolt/codeboltjs 5.0.1 → 5.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/core/Codebolt.d.ts +11 -4
- package/dist/core/Codebolt.js +28 -10
- package/dist/core/websocket.js +15 -15
- package/package.json +1 -1
package/dist/core/Codebolt.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ declare class Codebolt {
|
|
|
13
13
|
private readyHandlers;
|
|
14
14
|
private messageQueue;
|
|
15
15
|
private messageResolvers;
|
|
16
|
+
private lastUserMessage;
|
|
16
17
|
/**
|
|
17
18
|
* @constructor
|
|
18
19
|
* @description Initializes the websocket connection.
|
|
@@ -380,10 +381,16 @@ declare class Codebolt {
|
|
|
380
381
|
*/
|
|
381
382
|
onReady(handler: () => void | Promise<void>): void;
|
|
382
383
|
/**
|
|
383
|
-
*
|
|
384
|
-
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
384
|
+
* Gets the current or next incoming message.
|
|
385
|
+
* Priority order:
|
|
386
|
+
* 1. Returns the current message being processed (if called during message handling)
|
|
387
|
+
* 2. Returns a queued message (if any are waiting)
|
|
388
|
+
* 3. Waits for the next message to arrive
|
|
389
|
+
*
|
|
390
|
+
* This allows getMessage() to work both during active message processing
|
|
391
|
+
* and when waiting for new messages in a loop.
|
|
392
|
+
*
|
|
393
|
+
* @returns {Promise<FlatUserMessage>} A promise that resolves with the message
|
|
387
394
|
*/
|
|
388
395
|
getMessage(): Promise<FlatUserMessage>;
|
|
389
396
|
/**
|
package/dist/core/Codebolt.js
CHANGED
|
@@ -80,6 +80,7 @@ class Codebolt {
|
|
|
80
80
|
console.log("Codebolt Agent initialized");
|
|
81
81
|
this.readyPromise = this.initializeConnection();
|
|
82
82
|
this.setupMessageListener();
|
|
83
|
+
this.lastUserMessage = undefined;
|
|
83
84
|
}
|
|
84
85
|
/**
|
|
85
86
|
* @method initializeConnection
|
|
@@ -150,22 +151,36 @@ class Codebolt {
|
|
|
150
151
|
}
|
|
151
152
|
}
|
|
152
153
|
/**
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
154
|
+
* Gets the current or next incoming message.
|
|
155
|
+
* Priority order:
|
|
156
|
+
* 1. Returns the current message being processed (if called during message handling)
|
|
157
|
+
* 2. Returns a queued message (if any are waiting)
|
|
158
|
+
* 3. Waits for the next message to arrive
|
|
159
|
+
*
|
|
160
|
+
* This allows getMessage() to work both during active message processing
|
|
161
|
+
* and when waiting for new messages in a loop.
|
|
162
|
+
*
|
|
163
|
+
* @returns {Promise<FlatUserMessage>} A promise that resolves with the message
|
|
157
164
|
*/
|
|
158
165
|
async getMessage() {
|
|
159
166
|
// Wait for WebSocket to be ready first
|
|
160
|
-
console.log('[Codebolt] getMessage ');
|
|
161
|
-
await this.waitForReady();
|
|
162
|
-
|
|
167
|
+
console.log('[Codebolt] getMessage called');
|
|
168
|
+
// await this.waitForReady();
|
|
169
|
+
// First, check if there's a current message being processed
|
|
170
|
+
const currentMessage = user_message_manager_1.userMessageManager.getMessage();
|
|
171
|
+
if (currentMessage) {
|
|
172
|
+
console.log('[Codebolt] Returning current message');
|
|
173
|
+
return Promise.resolve(currentMessage);
|
|
174
|
+
}
|
|
163
175
|
// If there are queued messages, return the first one
|
|
164
|
-
if (this.messageQueue.length > 0) {
|
|
165
|
-
|
|
166
|
-
|
|
176
|
+
if (this.messageQueue.length > 0 || this.lastUserMessage) {
|
|
177
|
+
console.log('[Codebolt] Returning queued message');
|
|
178
|
+
const message = this.messageQueue.shift() || this.lastUserMessage;
|
|
179
|
+
if (message)
|
|
180
|
+
return Promise.resolve(message);
|
|
167
181
|
}
|
|
168
182
|
// Otherwise, create a new promise that will be resolved when a message arrives
|
|
183
|
+
console.log('[Codebolt] Waiting for next message');
|
|
169
184
|
return new Promise((resolve) => {
|
|
170
185
|
this.messageResolvers.push(resolve);
|
|
171
186
|
});
|
|
@@ -192,9 +207,11 @@ class Codebolt {
|
|
|
192
207
|
* @private
|
|
193
208
|
*/
|
|
194
209
|
setupMessageListener() {
|
|
210
|
+
console.log("listener setup");
|
|
195
211
|
this.waitForReady().then(() => {
|
|
196
212
|
const handleSocketMessage = async (response) => {
|
|
197
213
|
var _a, _b;
|
|
214
|
+
console.log(response);
|
|
198
215
|
if (response.type === "messageResponse") {
|
|
199
216
|
// Extract user-facing message from internal socket message
|
|
200
217
|
const userMessage = {
|
|
@@ -219,6 +236,7 @@ class Codebolt {
|
|
|
219
236
|
};
|
|
220
237
|
// Automatically save the user message globally
|
|
221
238
|
user_message_manager_1.userMessageManager.saveMessage(userMessage);
|
|
239
|
+
this.lastUserMessage = userMessage;
|
|
222
240
|
// Handle the message in the queue system for getMessage() resolvers
|
|
223
241
|
this.handleIncomingMessage(userMessage);
|
|
224
242
|
}
|
package/dist/core/websocket.js
CHANGED
|
@@ -65,21 +65,21 @@ class cbws {
|
|
|
65
65
|
const socketPort = process.env.SOCKET_PORT || '12345';
|
|
66
66
|
const serverUrl = process.env.CODEBOLT_SERVER_URL || 'localhost';
|
|
67
67
|
const threadToken = process.env.threadToken || null;
|
|
68
|
-
console.log('[WebSocket] Logging all relevant variables:');
|
|
69
|
-
console.log('uniqueConnectionId:', uniqueConnectionId);
|
|
68
|
+
// console.log('[WebSocket] Logging all relevant variables:');
|
|
69
|
+
// console.log('uniqueConnectionId:', uniqueConnectionId);
|
|
70
70
|
// console.log('initialMessage:', initialMessage);
|
|
71
|
-
console.log('agentIdParam:', agentIdParam);
|
|
72
|
-
console.log('parentIdParam:', parentIdParam);
|
|
73
|
-
console.log('parentAgentInstanceIdParam:', parentAgentInstanceIdParam);
|
|
74
|
-
console.log('agentTask:', agentTask);
|
|
75
|
-
console.log('socketPort:', socketPort);
|
|
76
|
-
console.log('serverUrl:', serverUrl);
|
|
77
|
-
console.log('threadToken:', threadToken);
|
|
78
|
-
console.log('[WebSocket] Environment variables check:');
|
|
79
|
-
console.log('process.env.agentId:', process.env.agentId);
|
|
80
|
-
console.log('process.env.threadToken:', process.env.threadToken);
|
|
81
|
-
console.log('process.env.parentId:', process.env.parentId);
|
|
82
|
-
console.log('process.env.agentTask:', process.env.agentTask);
|
|
71
|
+
// console.log('agentIdParam:', agentIdParam);
|
|
72
|
+
// console.log('parentIdParam:', parentIdParam);
|
|
73
|
+
// console.log('parentAgentInstanceIdParam:', parentAgentInstanceIdParam);
|
|
74
|
+
// console.log('agentTask:', agentTask);
|
|
75
|
+
// console.log('socketPort:', socketPort);
|
|
76
|
+
// console.log('serverUrl:', serverUrl);
|
|
77
|
+
// console.log('threadToken:', threadToken);
|
|
78
|
+
// console.log('[WebSocket] Environment variables check:');
|
|
79
|
+
// console.log('process.env.agentId:', process.env.agentId);
|
|
80
|
+
// console.log('process.env.threadToken:', process.env.threadToken);
|
|
81
|
+
// console.log('process.env.parentId:', process.env.parentId);
|
|
82
|
+
// console.log('process.env.agentTask:', process.env.agentTask);
|
|
83
83
|
const threadTokenParam = threadToken ? `&threadToken=${encodeURIComponent(threadToken)}` : '';
|
|
84
84
|
// Add all custom environment variables as URL parameters
|
|
85
85
|
const knownEnvVars = ['SOCKET_PORT', 'CODEBOLT_SERVER_URL', 'agentId', 'parentId', 'parentAgentInstanceId', 'agentTask', 'threadToken', 'Is_Dev', 'PATH', 'NODE_ENV', 'HOME', 'USER', 'SHELL'];
|
|
@@ -90,7 +90,7 @@ class cbws {
|
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
const wsUrl = `ws://${serverUrl}:${socketPort}/codebolt?id=${uniqueConnectionId}${agentIdParam}${parentIdParam}${parentAgentInstanceIdParam}${agentTask}${threadTokenParam}${customParams}${process.env.Is_Dev ? '&dev=true' : ''}`;
|
|
93
|
-
console.log('[WebSocket] Connecting to:',
|
|
93
|
+
console.log('[WebSocket] Connecting to:', serverUrl);
|
|
94
94
|
this.websocket = new ws_1.default(wsUrl);
|
|
95
95
|
return new Promise((resolve, reject) => {
|
|
96
96
|
// Set a timeout for the connection
|