@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.
@@ -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
- * Waits for and returns the next incoming message.
384
- * If a message is already in the queue, returns it immediately.
385
- * Otherwise, waits for the next message to arrive.
386
- * @returns {Promise<FlatUserMessage>} A promise that resolves with the next message
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
  /**
@@ -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
- * Waits for and returns the next incoming message.
154
- * If a message is already in the queue, returns it immediately.
155
- * Otherwise, waits for the next message to arrive.
156
- * @returns {Promise<FlatUserMessage>} A promise that resolves with the next message
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
- console.log('[Codebolt] getMessage ');
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
- const message = this.messageQueue.shift();
166
- return Promise.resolve(message);
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
  }
@@ -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:', wsUrl);
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codebolt/codeboltjs",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "",