@assistant-ui/react 0.5.72 → 0.5.73

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.mjs CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  toLanguageModelMessages,
11
11
  toLanguageModelTools,
12
12
  toolResultStream
13
- } from "./chunk-DC342I2Q.mjs";
13
+ } from "./chunk-SNNYBBO6.mjs";
14
14
  import {
15
15
  __export
16
16
  } from "./chunk-BJPOCE4O.mjs";
@@ -3688,7 +3688,7 @@ var ThreadRuntimeImpl = class {
3688
3688
  };
3689
3689
 
3690
3690
  // src/runtimes/edge/converters/fromLanguageModelMessages.ts
3691
- var fromLanguageModelMessages = (lm, { mergeRoundtrips }) => {
3691
+ var fromLanguageModelMessages = (lm, { mergeSteps }) => {
3692
3692
  const messages2 = [];
3693
3693
  for (const lmMessage of lm) {
3694
3694
  const role = lmMessage.role;
@@ -3751,7 +3751,7 @@ var fromLanguageModelMessages = (lm, { mergeRoundtrips }) => {
3751
3751
  }
3752
3752
  return part;
3753
3753
  });
3754
- if (mergeRoundtrips) {
3754
+ if (mergeSteps) {
3755
3755
  const previousMessage = messages2[messages2.length - 1];
3756
3756
  if (previousMessage?.role === "assistant") {
3757
3757
  previousMessage.content.push(...newContent);
@@ -3862,7 +3862,7 @@ function assistantDecoderStream() {
3862
3862
  let currentToolCall;
3863
3863
  return new TransformStream({
3864
3864
  transform({ type, value }, controller) {
3865
- if (currentToolCall && type !== "2" /* ToolCallArgsTextDelta */ && type !== "E" /* Error */) {
3865
+ if (currentToolCall && type !== "c" /* ToolCallDelta */ && type !== "3" /* Error */) {
3866
3866
  controller.enqueue({
3867
3867
  type: "tool-call",
3868
3868
  toolCallType: "function",
@@ -3880,48 +3880,82 @@ function assistantDecoderStream() {
3880
3880
  });
3881
3881
  break;
3882
3882
  }
3883
- case "1" /* ToolCallBegin */: {
3884
- const { id, name } = value;
3883
+ case "b" /* ToolCallBegin */: {
3884
+ const { toolCallId: id, toolName: name } = value;
3885
3885
  toolCallNames.set(id, name);
3886
3886
  currentToolCall = { id, name, argsText: "" };
3887
3887
  break;
3888
3888
  }
3889
- case "2" /* ToolCallArgsTextDelta */: {
3890
- const delta = value;
3891
- currentToolCall.argsText += delta;
3889
+ case "c" /* ToolCallDelta */: {
3890
+ const { toolCallId, argsTextDelta } = value;
3891
+ if (currentToolCall?.id !== toolCallId) {
3892
+ throw new Error(
3893
+ `Received tool call delta for unknown tool call "${toolCallId}".`
3894
+ );
3895
+ }
3896
+ currentToolCall.argsText += argsTextDelta;
3892
3897
  controller.enqueue({
3893
3898
  type: "tool-call-delta",
3894
3899
  toolCallType: "function",
3895
3900
  toolCallId: currentToolCall.id,
3896
3901
  toolName: currentToolCall.name,
3897
- argsTextDelta: delta
3902
+ argsTextDelta
3898
3903
  });
3899
3904
  break;
3900
3905
  }
3901
- case "3" /* ToolCallResult */: {
3906
+ case "a" /* ToolCallResult */: {
3902
3907
  controller.enqueue({
3903
3908
  type: "tool-result",
3904
3909
  toolCallType: "function",
3905
- toolCallId: value.id,
3906
- toolName: toolCallNames.get(value.id),
3910
+ toolCallId: value.toolCallId,
3911
+ toolName: toolCallNames.get(value.toolCallId),
3907
3912
  result: value.result
3908
3913
  });
3909
3914
  break;
3910
3915
  }
3911
- case "F" /* Finish */: {
3916
+ case "d" /* Finish */: {
3912
3917
  controller.enqueue({
3913
3918
  type: "finish",
3914
3919
  ...value
3915
3920
  });
3916
3921
  break;
3917
3922
  }
3918
- case "E" /* Error */: {
3923
+ case "3" /* Error */: {
3919
3924
  controller.enqueue({
3920
3925
  type: "error",
3921
3926
  error: value
3922
3927
  });
3923
3928
  break;
3924
3929
  }
3930
+ case "9" /* ToolCall */: {
3931
+ const { toolCallId, toolName, args } = value;
3932
+ const argsText = JSON.stringify(args);
3933
+ controller.enqueue({
3934
+ type: "tool-call-delta",
3935
+ toolCallType: "function",
3936
+ toolCallId,
3937
+ toolName,
3938
+ argsTextDelta: argsText
3939
+ });
3940
+ controller.enqueue({
3941
+ type: "tool-call",
3942
+ toolCallType: "function",
3943
+ toolCallId,
3944
+ toolName,
3945
+ args: argsText
3946
+ });
3947
+ break;
3948
+ }
3949
+ case "e" /* StepFinish */: {
3950
+ controller.enqueue({
3951
+ type: "step-finish",
3952
+ ...value
3953
+ });
3954
+ break;
3955
+ }
3956
+ // TODO
3957
+ case "2" /* Data */:
3958
+ break;
3925
3959
  default: {
3926
3960
  const unhandledType = type;
3927
3961
  throw new Error(`Unhandled chunk type: ${unhandledType}`);
@@ -3981,9 +4015,14 @@ var EdgeChatAdapter = class {
3981
4015
 
3982
4016
  // src/runtimes/local/LocalRuntimeOptions.tsx
3983
4017
  var splitLocalRuntimeOptions = (options) => {
3984
- const { initialMessages, maxToolRoundtrips, adapters, ...rest } = options;
4018
+ const { initialMessages, maxToolRoundtrips, maxSteps, adapters, ...rest } = options;
3985
4019
  return {
3986
- localRuntimeOptions: { initialMessages, maxToolRoundtrips, adapters },
4020
+ localRuntimeOptions: {
4021
+ initialMessages,
4022
+ maxToolRoundtrips,
4023
+ maxSteps,
4024
+ adapters
4025
+ },
3987
4026
  otherOptions: rest
3988
4027
  };
3989
4028
  };
@@ -4157,29 +4196,21 @@ var LocalThreadRuntimeCore = class {
4157
4196
  this.abortController?.abort();
4158
4197
  this.abortController = new AbortController();
4159
4198
  const initialContent = message.content;
4160
- const initialRoundtrips = message.metadata?.roundtrips;
4199
+ const initialSteps = message.metadata?.steps;
4161
4200
  const initalCustom = message.metadata?.custom;
4162
4201
  const updateMessage = (m) => {
4202
+ const newSteps = m.metadata?.steps || m.metadata?.roundtrips;
4203
+ const steps2 = newSteps ? [...initialSteps ?? [], ...newSteps] : void 0;
4163
4204
  message = {
4164
4205
  ...message,
4165
4206
  ...m.content ? { content: [...initialContent, ...m.content ?? []] } : void 0,
4166
4207
  status: m.status ?? message.status,
4167
4208
  // TODO deprecated, remove in v0.6
4168
- ...m.metadata?.roundtrips ? {
4169
- roundtrips: [
4170
- ...initialRoundtrips ?? [],
4171
- ...m.metadata.roundtrips
4172
- ]
4173
- } : void 0,
4209
+ ...steps2 ? { roundtrips: steps2 } : void 0,
4174
4210
  ...m.metadata ? {
4175
4211
  metadata: {
4176
4212
  ...message.metadata,
4177
- ...m.metadata.roundtrips ? {
4178
- roundtrips: [
4179
- ...initialRoundtrips ?? [],
4180
- ...m.metadata.roundtrips
4181
- ]
4182
- } : void 0,
4213
+ ...steps2 ? { roundtrips: steps2, steps: steps2 } : void 0,
4183
4214
  ...m.metadata?.custom ? {
4184
4215
  custom: { ...initalCustom ?? {}, ...m.metadata.custom }
4185
4216
  } : void 0
@@ -4189,9 +4220,9 @@ var LocalThreadRuntimeCore = class {
4189
4220
  this.repository.addOrUpdateMessage(parentId, message);
4190
4221
  this.notifySubscribers();
4191
4222
  };
4192
- const maxToolRoundtrips = this.options.maxToolRoundtrips ?? 1;
4193
- const toolRoundtrips = message.metadata?.roundtrips?.length ?? 0;
4194
- if (toolRoundtrips > maxToolRoundtrips) {
4223
+ const maxSteps = this.options.maxSteps ? this.options.maxSteps : (this.options.maxToolRoundtrips ?? 1) + 1;
4224
+ const steps = message.metadata?.steps?.length ?? 0;
4225
+ if (steps >= maxSteps) {
4195
4226
  updateMessage({
4196
4227
  status: {
4197
4228
  type: "incomplete",
@@ -5916,9 +5947,14 @@ var edit_composer_default = Object.assign(EditComposer, exports11);
5916
5947
  // src/ui/thread.tsx
5917
5948
  import { Fragment as Fragment6, jsx as jsx49, jsxs as jsxs13 } from "react/jsx-runtime";
5918
5949
  var Thread = (config) => {
5919
- const { components: { Composer: ComposerComponent = composer_default } = {} } = config;
5950
+ const {
5951
+ components: {
5952
+ Composer: ComposerComponent = composer_default,
5953
+ ThreadWelcome: ThreadWelcomeComponent = thread_welcome_default
5954
+ } = {}
5955
+ } = config;
5920
5956
  return /* @__PURE__ */ jsx49(ThreadRoot, { config, children: /* @__PURE__ */ jsxs13(ThreadViewport, { children: [
5921
- /* @__PURE__ */ jsx49(thread_welcome_default, {}),
5957
+ /* @__PURE__ */ jsx49(ThreadWelcomeComponent, {}),
5922
5958
  /* @__PURE__ */ jsx49(ThreadMessages, {}),
5923
5959
  /* @__PURE__ */ jsx49(ThreadFollowupSuggestions, {}),
5924
5960
  /* @__PURE__ */ jsxs13(ThreadViewportFooter, { children: [