open-agents-ai 0.78.0 → 0.79.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.
Files changed (2) hide show
  1. package/dist/index.js +25 -11
  2. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -11433,7 +11433,7 @@ process.on('SIGINT', () => process.emit('SIGTERM'));
11433
11433
  ];
11434
11434
  NexusTool = class {
11435
11435
  name = "nexus";
11436
- description = "Decentralized agent-to-agent communication via open-agents-nexus v1.2.1. Spawns a background Node.js process with real network sockets for libp2p + NATS P2P mesh. Simple flow: connect \u2192 join room \u2192 send messages. Auto-installs nexus if needed. Also supports direct peer invoke (streaming inference), IPFS content storage, direct messages, peer discovery, x402 micropayments, and inference proofs.";
11436
+ description = "Decentralized agent-to-agent communication via open-agents-nexus v1.3.0. Spawns a background Node.js process with real network sockets for libp2p + NATS P2P mesh. Simple flow: connect \u2192 join room \u2192 send messages. Auto-installs nexus if needed. Also supports direct peer invoke (streaming inference), IPFS content storage, direct messages, peer discovery, x402 micropayments, and inference proofs. Onboarding: curl openagents.nexus/llms.txt for full instructions, /.well-known/agent.json for machine-readable manifest.";
11437
11437
  parameters = {
11438
11438
  type: "object",
11439
11439
  properties: {
@@ -30103,6 +30103,10 @@ function modelOnnxPath(id) {
30103
30103
  function modelConfigPath(id) {
30104
30104
  return join40(modelDir(id), "config.json");
30105
30105
  }
30106
+ function emotionToPitchBias(emotion) {
30107
+ const raw = emotion.valence * 0.6 + (emotion.arousal - 0.5) * 0.4;
30108
+ return Math.max(-0.1, Math.min(0.1, raw * 0.1));
30109
+ }
30106
30110
  function resetNarrationContext() {
30107
30111
  narration.toolCount = 0;
30108
30112
  narration.toolCounts = {};
@@ -30595,17 +30599,23 @@ var init_voice = __esm({
30595
30599
  * Speak text asynchronously (non-blocking) at full volume.
30596
30600
  * Long text is chunked on sentence/line boundaries for reliable TTS.
30597
30601
  * Chunks are queued FIFO and played back-to-back without cutoff.
30602
+ * If emotion context is provided, pitch is biased by valence/arousal:
30603
+ * excited (high valence + high arousal) → higher pitch
30604
+ * dejected (low valence + low arousal) → lower pitch
30598
30605
  */
30599
- speak(text) {
30600
- this.enqueueSpeech(text, 1, 1);
30606
+ speak(text, emotion) {
30607
+ const pitchBias = emotion ? emotionToPitchBias(emotion) : 0;
30608
+ this.enqueueSpeech(text, 1, 1 + pitchBias);
30601
30609
  }
30602
30610
  /**
30603
- * Speak text at reduced volume with slight pitch shift to indicate
30611
+ * Speak text at reduced volume with pitch shift to indicate
30604
30612
  * subordinate/secondary output (sub-agent activity, tool narration, etc.).
30605
- * Volume: 55% of primary. Pitch: shifted down slightly (0.92x).
30613
+ * Volume: 55% of primary. Base pitch: 0.92x (lower).
30614
+ * Emotion further modulates pitch on top of the subordinate base.
30606
30615
  */
30607
- speakSubordinate(text) {
30608
- this.enqueueSpeech(text, 0.55, 0.92);
30616
+ speakSubordinate(text, emotion) {
30617
+ const pitchBias = emotion ? emotionToPitchBias(emotion) : 0;
30618
+ this.enqueueSpeech(text, 0.55, 0.92 + pitchBias);
30609
30619
  }
30610
30620
  enqueueSpeech(text, volume, pitchFactor) {
30611
30621
  if (!this.enabled || !this.ready)
@@ -38279,7 +38289,7 @@ ${entry.fullContent}`
38279
38289
  const emoCtx = emoState ? { valence: emoState.valence, arousal: emoState.arousal, label: emoState.label, emoji: emoState.emoji } : void 0;
38280
38290
  const desc = describeToolCall(event.toolName ?? "unknown", event.toolArgs ?? {}, vLevel, emoCtx);
38281
38291
  renderVoiceText(desc);
38282
- voice.speakSubordinate(desc);
38292
+ voice.speakSubordinate(desc, emoCtx);
38283
38293
  }
38284
38294
  renderToolCallStart(event.toolName ?? "unknown", event.toolArgs ?? {}, config.verbose);
38285
38295
  });
@@ -38317,7 +38327,7 @@ ${entry.fullContent}`
38317
38327
  const desc = describeToolResult(event.toolName ?? "unknown", event.success ?? false, vLevel, event.content ?? void 0, emoCtx2);
38318
38328
  if (desc) {
38319
38329
  renderVoiceText(desc);
38320
- voice.speakSubordinate(desc);
38330
+ voice.speakSubordinate(desc, emoCtx2);
38321
38331
  }
38322
38332
  }
38323
38333
  });
@@ -38419,12 +38429,16 @@ ${emotionContext}` : `Working directory: ${repoRoot}`;
38419
38429
  if (onComplete)
38420
38430
  onComplete(result.summary, { turns: result.turns, toolCalls: result.toolCalls, durationMs: result.durationMs, model: config.model });
38421
38431
  if (voice?.enabled && result.summary) {
38422
- voice.speak(describeTaskComplete(result.summary, true, vLevel));
38432
+ const emoFinal = emotionEngine?.getState();
38433
+ const emoCtxFinal = emoFinal ? { valence: emoFinal.valence, arousal: emoFinal.arousal, label: emoFinal.label, emoji: emoFinal.emoji } : void 0;
38434
+ voice.speak(describeTaskComplete(result.summary, true, vLevel), emoCtxFinal);
38423
38435
  }
38424
38436
  } else {
38425
38437
  renderTaskIncomplete(result.turns, result.toolCalls, result.durationMs, tokens);
38426
38438
  if (voice?.enabled) {
38427
- voice.speak(describeTaskComplete("", false, vLevel));
38439
+ const emoFinal2 = emotionEngine?.getState();
38440
+ const emoCtxFinal2 = emoFinal2 ? { valence: emoFinal2.valence, arousal: emoFinal2.arousal, label: emoFinal2.label, emoji: emoFinal2.emoji } : void 0;
38441
+ voice.speak(describeTaskComplete("", false, vLevel), emoCtxFinal2);
38428
38442
  }
38429
38443
  }
38430
38444
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.78.0",
3
+ "version": "0.79.0",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -70,6 +70,6 @@
70
70
  },
71
71
  "optionalDependencies": {
72
72
  "moondream": "^0.2.0",
73
- "open-agents-nexus": "^1.2.1"
73
+ "open-agents-nexus": "^1.3.0"
74
74
  }
75
75
  }