osai-agent 4.2.13 → 4.2.14

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "osai-agent",
3
- "version": "4.2.13",
3
+ "version": "4.2.14",
4
4
  "type": "module",
5
5
  "description": "OS AI Agent - YOUR AI AGENT",
6
6
  "main": "src/index.js",
@@ -239,7 +239,9 @@ export default {
239
239
  if (tool === TOOLS.LOCAL_CMD && /^sudo\b/.test(toolCall.cmd?.trim()) && !this.isSubagent) {
240
240
  if (!this.sudoPassword) {
241
241
  this.onMarkdown('\n_This command requires sudo. Enter your password:_\n');
242
- this.sudoPassword = await this._readPassword(' sudo password: ');
242
+ this.sudoPassword = await new Promise((resolve) => {
243
+ this.readline.question(' sudo password: ', (answer) => resolve(answer.trim()));
244
+ });
243
245
  }
244
246
  }
245
247
 
@@ -436,42 +438,6 @@ export default {
436
438
  });
437
439
  },
438
440
 
439
- _readPassword(prompt) {
440
- return new Promise((resolve) => {
441
- const input = this.readline?.input || process.stdin;
442
- const output = this.readline?.output || process.stdout;
443
-
444
- output.write(prompt);
445
- let password = '';
446
-
447
- const onData = (data) => {
448
- const char = String(data);
449
-
450
- if (char === '\r' || char === '\n') {
451
- input.removeListener('data', onData);
452
- output.write('\n');
453
- resolve(password);
454
- return;
455
- }
456
-
457
- if (char === '\x7f' || char === '\b') {
458
- if (password.length > 0) {
459
- password = password.slice(0, -1);
460
- output.write('\b \b');
461
- }
462
- return;
463
- }
464
-
465
- if (char.charCodeAt(0) < 32 && char !== '\t') return;
466
-
467
- password += char;
468
- output.write('*');
469
- };
470
-
471
- input.on('data', onData);
472
- });
473
- },
474
-
475
441
  async _confirmExecution(toolCall, safety) {
476
442
  const tier = safety.tier || (safety.isDangerous ? SAFETY_TIERS.DANGEROUS : SAFETY_TIERS.WRITE);
477
443
 
@@ -274,7 +274,8 @@ export class AgentLoop {
274
274
  await this._connectWebSocket();
275
275
  } catch (err) {
276
276
  this.onConnectionChange(false);
277
- logger.warn(`WebSocket connection failed, continuing via HTTP: ${err.message}`);
277
+ logger.debug(`WebSocket connection failed: ${err.message}`);
278
+ logger.warn('Server unavailable, running in offline mode');
278
279
  this.ws = null;
279
280
  }
280
281
  } else {