@livekit/agents 1.0.34 → 1.0.36

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 (117) hide show
  1. package/dist/cli.cjs.map +1 -1
  2. package/dist/inference/api_protos.d.cts +4 -4
  3. package/dist/inference/api_protos.d.ts +4 -4
  4. package/dist/inference/llm.cjs +30 -3
  5. package/dist/inference/llm.cjs.map +1 -1
  6. package/dist/inference/llm.d.cts +3 -1
  7. package/dist/inference/llm.d.ts +3 -1
  8. package/dist/inference/llm.d.ts.map +1 -1
  9. package/dist/inference/llm.js +30 -3
  10. package/dist/inference/llm.js.map +1 -1
  11. package/dist/ipc/inference_proc_executor.cjs.map +1 -1
  12. package/dist/ipc/job_proc_executor.cjs.map +1 -1
  13. package/dist/ipc/job_proc_lazy_main.cjs +1 -1
  14. package/dist/ipc/job_proc_lazy_main.cjs.map +1 -1
  15. package/dist/ipc/job_proc_lazy_main.js +1 -1
  16. package/dist/ipc/job_proc_lazy_main.js.map +1 -1
  17. package/dist/llm/chat_context.cjs +20 -2
  18. package/dist/llm/chat_context.cjs.map +1 -1
  19. package/dist/llm/chat_context.d.cts +9 -0
  20. package/dist/llm/chat_context.d.ts +9 -0
  21. package/dist/llm/chat_context.d.ts.map +1 -1
  22. package/dist/llm/chat_context.js +20 -2
  23. package/dist/llm/chat_context.js.map +1 -1
  24. package/dist/llm/llm.cjs.map +1 -1
  25. package/dist/llm/llm.d.cts +1 -0
  26. package/dist/llm/llm.d.ts +1 -0
  27. package/dist/llm/llm.d.ts.map +1 -1
  28. package/dist/llm/llm.js.map +1 -1
  29. package/dist/llm/provider_format/openai.cjs +43 -20
  30. package/dist/llm/provider_format/openai.cjs.map +1 -1
  31. package/dist/llm/provider_format/openai.d.ts.map +1 -1
  32. package/dist/llm/provider_format/openai.js +43 -20
  33. package/dist/llm/provider_format/openai.js.map +1 -1
  34. package/dist/llm/provider_format/openai.test.cjs +35 -0
  35. package/dist/llm/provider_format/openai.test.cjs.map +1 -1
  36. package/dist/llm/provider_format/openai.test.js +35 -0
  37. package/dist/llm/provider_format/openai.test.js.map +1 -1
  38. package/dist/llm/provider_format/utils.cjs +1 -1
  39. package/dist/llm/provider_format/utils.cjs.map +1 -1
  40. package/dist/llm/provider_format/utils.d.ts.map +1 -1
  41. package/dist/llm/provider_format/utils.js +1 -1
  42. package/dist/llm/provider_format/utils.js.map +1 -1
  43. package/dist/voice/agent_activity.cjs +19 -19
  44. package/dist/voice/agent_activity.cjs.map +1 -1
  45. package/dist/voice/agent_activity.d.ts.map +1 -1
  46. package/dist/voice/agent_activity.js +19 -19
  47. package/dist/voice/agent_activity.js.map +1 -1
  48. package/dist/voice/agent_session.cjs +64 -25
  49. package/dist/voice/agent_session.cjs.map +1 -1
  50. package/dist/voice/agent_session.d.cts +25 -1
  51. package/dist/voice/agent_session.d.ts +25 -1
  52. package/dist/voice/agent_session.d.ts.map +1 -1
  53. package/dist/voice/agent_session.js +64 -25
  54. package/dist/voice/agent_session.js.map +1 -1
  55. package/dist/voice/background_audio.cjs.map +1 -1
  56. package/dist/voice/generation.cjs +2 -1
  57. package/dist/voice/generation.cjs.map +1 -1
  58. package/dist/voice/generation.d.ts.map +1 -1
  59. package/dist/voice/generation.js +2 -1
  60. package/dist/voice/generation.js.map +1 -1
  61. package/dist/voice/index.cjs +14 -1
  62. package/dist/voice/index.cjs.map +1 -1
  63. package/dist/voice/index.d.cts +1 -0
  64. package/dist/voice/index.d.ts +1 -0
  65. package/dist/voice/index.d.ts.map +1 -1
  66. package/dist/voice/index.js +3 -1
  67. package/dist/voice/index.js.map +1 -1
  68. package/dist/voice/room_io/room_io.cjs +1 -0
  69. package/dist/voice/room_io/room_io.cjs.map +1 -1
  70. package/dist/voice/room_io/room_io.d.ts.map +1 -1
  71. package/dist/voice/room_io/room_io.js +1 -0
  72. package/dist/voice/room_io/room_io.js.map +1 -1
  73. package/dist/voice/speech_handle.cjs +12 -3
  74. package/dist/voice/speech_handle.cjs.map +1 -1
  75. package/dist/voice/speech_handle.d.cts +12 -2
  76. package/dist/voice/speech_handle.d.ts +12 -2
  77. package/dist/voice/speech_handle.d.ts.map +1 -1
  78. package/dist/voice/speech_handle.js +10 -2
  79. package/dist/voice/speech_handle.js.map +1 -1
  80. package/dist/voice/testing/index.cjs +52 -0
  81. package/dist/voice/testing/index.cjs.map +1 -0
  82. package/dist/voice/testing/index.d.cts +20 -0
  83. package/dist/voice/testing/index.d.ts +20 -0
  84. package/dist/voice/testing/index.d.ts.map +1 -0
  85. package/dist/voice/testing/index.js +31 -0
  86. package/dist/voice/testing/index.js.map +1 -0
  87. package/dist/voice/testing/run_result.cjs +477 -0
  88. package/dist/voice/testing/run_result.cjs.map +1 -0
  89. package/dist/voice/testing/run_result.d.cts +226 -0
  90. package/dist/voice/testing/run_result.d.ts +226 -0
  91. package/dist/voice/testing/run_result.d.ts.map +1 -0
  92. package/dist/voice/testing/run_result.js +451 -0
  93. package/dist/voice/testing/run_result.js.map +1 -0
  94. package/dist/voice/testing/types.cjs +46 -0
  95. package/dist/voice/testing/types.cjs.map +1 -0
  96. package/dist/voice/testing/types.d.cts +83 -0
  97. package/dist/voice/testing/types.d.ts +83 -0
  98. package/dist/voice/testing/types.d.ts.map +1 -0
  99. package/dist/voice/testing/types.js +19 -0
  100. package/dist/voice/testing/types.js.map +1 -0
  101. package/package.json +3 -3
  102. package/src/inference/llm.ts +42 -3
  103. package/src/ipc/job_proc_lazy_main.ts +1 -1
  104. package/src/llm/chat_context.ts +32 -2
  105. package/src/llm/llm.ts +1 -0
  106. package/src/llm/provider_format/openai.test.ts +40 -0
  107. package/src/llm/provider_format/openai.ts +46 -19
  108. package/src/llm/provider_format/utils.ts +5 -1
  109. package/src/voice/agent_activity.ts +24 -22
  110. package/src/voice/agent_session.ts +73 -28
  111. package/src/voice/generation.ts +1 -0
  112. package/src/voice/index.ts +1 -0
  113. package/src/voice/room_io/room_io.ts +1 -0
  114. package/src/voice/speech_handle.ts +24 -4
  115. package/src/voice/testing/index.ts +49 -0
  116. package/src/voice/testing/run_result.ts +576 -0
  117. package/src/voice/testing/types.ts +118 -0
@@ -971,10 +971,12 @@ ${instructions}` : instructions,
971
971
  replyAbortController
972
972
  );
973
973
  tasks.push(llmTask);
974
- const [ttsTextInput, llmOutput] = llmGenData.textStream.tee();
975
974
  let ttsTask = null;
976
975
  let ttsStream = null;
976
+ let llmOutput;
977
977
  if (audioOutput) {
978
+ const [ttsTextInput, textOutput] = llmGenData.textStream.tee();
979
+ llmOutput = textOutput;
978
980
  [ttsTask, ttsStream] = performTTSInference(
979
981
  (...args) => this.agent.ttsNode(...args),
980
982
  ttsTextInput,
@@ -982,6 +984,8 @@ ${instructions}` : instructions,
982
984
  replyAbortController
983
985
  );
984
986
  tasks.push(ttsTask);
987
+ } else {
988
+ llmOutput = llmGenData.textStream;
985
989
  }
986
990
  await speechHandle.waitIfNotInterrupted([speechHandle._waitForScheduled()]);
987
991
  if (newMessage && speechHandle.scheduled) {
@@ -1028,9 +1032,15 @@ ${instructions}` : instructions,
1028
1032
  } else {
1029
1033
  textOut == null ? void 0 : textOut.firstTextFut.await.finally(onFirstFrame);
1030
1034
  }
1031
- const onToolExecutionStarted = (_) => {
1035
+ const onToolExecutionStarted = (f) => {
1036
+ speechHandle._itemAdded([f]);
1037
+ this.agent._chatCtx.items.push(f);
1038
+ this.agentSession._toolItemsAdded([f]);
1032
1039
  };
1033
- const onToolExecutionCompleted = (_) => {
1040
+ const onToolExecutionCompleted = (out) => {
1041
+ if (out.toolCallOutput) {
1042
+ speechHandle._itemAdded([out.toolCallOutput]);
1043
+ }
1034
1044
  };
1035
1045
  const [executeToolsTask, toolOutput] = performToolExecutions({
1036
1046
  session: this.agentSession,
@@ -1090,6 +1100,7 @@ ${instructions}` : instructions,
1090
1100
  });
1091
1101
  chatCtx.insert(message);
1092
1102
  this.agent._chatCtx.insert(message);
1103
+ speechHandle._itemAdded([message]);
1093
1104
  this.agentSession._conversationItemAdded(message);
1094
1105
  }
1095
1106
  if (this.agentSession.agentState === "speaking") {
@@ -1113,6 +1124,7 @@ ${instructions}` : instructions,
1113
1124
  });
1114
1125
  chatCtx.insert(message);
1115
1126
  this.agent._chatCtx.insert(message);
1127
+ speechHandle._itemAdded([message]);
1116
1128
  this.agentSession._conversationItemAdded(message);
1117
1129
  this.logger.info(
1118
1130
  { speech_id: speechHandle.id, message: textOut.text },
@@ -1181,24 +1193,12 @@ ${instructions}` : instructions,
1181
1193
  ];
1182
1194
  if (shouldGenerateToolReply) {
1183
1195
  chatCtx.insert(toolMessages);
1184
- const handle = SpeechHandle.create({
1185
- allowInterruptions: speechHandle.allowInterruptions,
1186
- stepIndex: speechHandle._stepIndex + 1,
1187
- parent: speechHandle
1188
- });
1189
- this.agentSession.emit(
1190
- AgentSessionEventTypes.SpeechCreated,
1191
- createSpeechCreatedEvent({
1192
- userInitiated: false,
1193
- source: "tool_response",
1194
- speechHandle: handle
1195
- })
1196
- );
1196
+ speechHandle._numSteps += 1;
1197
1197
  const respondToolChoice = draining || modelSettings.toolChoice === "none" ? "none" : "auto";
1198
1198
  const toolResponseTask = this.createSpeechTask({
1199
1199
  task: Task.from(
1200
1200
  () => this.pipelineReplyTask(
1201
- handle,
1201
+ speechHandle,
1202
1202
  chatCtx,
1203
1203
  toolCtx,
1204
1204
  { toolChoice: respondToolChoice },
@@ -1208,11 +1208,11 @@ ${instructions}` : instructions,
1208
1208
  toolMessages
1209
1209
  )
1210
1210
  ),
1211
- ownedSpeechHandle: handle,
1211
+ ownedSpeechHandle: speechHandle,
1212
1212
  name: "AgentActivity.pipelineReply"
1213
1213
  });
1214
1214
  toolResponseTask.finally(() => this.onPipelineReplyDone());
1215
- this.scheduleSpeech(handle, SpeechHandle.SPEECH_PRIORITY_NORMAL, true);
1215
+ this.scheduleSpeech(speechHandle, SpeechHandle.SPEECH_PRIORITY_NORMAL, true);
1216
1216
  } else if (functionToolsExecutedEvent.functionCallOutputs.length > 0) {
1217
1217
  for (const msg of toolMessages) {
1218
1218
  msg.createdAt = replyStartedAt;