@agents24/react 0.2.27 → 0.2.28

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/dist/index.js CHANGED
@@ -929,11 +929,11 @@ function reconcileModelTurnParts(parts, event) {
929
929
  const terminal = eventName === "run.completed" || eventName === "run.failed" || eventName === "run.cancelled";
930
930
  const modelTurnId = typeof payload.model_turn_id === "string" ? payload.model_turn_id : null;
931
931
  let next = parts;
932
- if (eventName === "run.snapshot" || eventName === "assistant.completed" || terminal) {
932
+ if (["run.snapshot", "run.waiting", "run.interrupted", "run.paused", "assistant.completed"].includes(eventName) || terminal) {
933
933
  next = next.filter((part) => part.kind !== "model-turn");
934
934
  } else if (eventName === "assistant.delta" && typeof payload.content === "string" && payload.content) {
935
935
  next = next.filter((part) => part.kind !== "model-turn" || part.turnKind !== "agent");
936
- } else if (eventName.startsWith("tool.") || eventName === "node.status.updated") {
936
+ } else if (eventName === "tool.started") {
937
937
  next = next.filter((part) => part.kind !== "model-turn" || part.turnKind !== "agent");
938
938
  } else if ((eventName === "model.turn.failed" || eventName === "model.turn.completed" && payload.outcome !== "tool_calls") && modelTurnId) {
939
939
  next = next.filter((part) => part.kind !== "model-turn" || part.modelTurnId !== modelTurnId);
@@ -984,12 +984,24 @@ function applyCanonicalRuntimeEvent(state, event) {
984
984
  const distinctSegment = Boolean(segmentId && segmentId !== `${runId}:0`);
985
985
  const messageId = distinctSegment ? `${runId || "run"}-assistant-${segmentId}` : state.streamingMessageId || `${runId || "run"}-assistant`;
986
986
  const terminal = eventName === "run.completed" || eventName === "run.failed" || eventName === "run.cancelled";
987
- const paused = eventName === "run.paused" || projection.parts.some((part) => part.kind === "hitl" && part.status === "pending");
988
- const suspension = eventName === "run.waiting" ? "waiting" : eventName === "run.interrupted" ? "interrupted" : null;
987
+ const snapshotStatus = eventName === "run.snapshot" ? event.payload?.status : null;
988
+ const paused = eventName === "run.paused" || snapshotStatus === "paused" || projection.parts.some((part) => part.kind === "hitl" && part.status === "pending");
989
+ const retainedSuspension = !eventName.startsWith("run.") && !["model.turn.started", "assistant.delta", "tool.started"].includes(eventName) && (state.runState === "waiting" || state.runState === "interrupted") ? state.runState : null;
990
+ const suspension = eventName === "run.waiting" || snapshotStatus === "waiting" ? "waiting" : eventName === "run.interrupted" || snapshotStatus === "interrupted" ? "interrupted" : retainedSuspension;
989
991
  const cancelling = eventName === "run.cancelling" || String(event.payload?.status || "") === "cancelling";
990
992
  const existing = state.messages.find((message) => message.role === "assistant" && message.id === messageId) || (!distinctSegment ? state.messages.find((message) => message.role === "assistant" && Boolean(runId && message.runId === runId)) : void 0);
991
993
  const sealedAfterTerminal = responseCompleted && !state.activeRunId && ["completed", "failed", "cancelled"].includes(state.runState) && existing?.runId === runId;
992
994
  const payload = event.payload || {};
995
+ const wait = payload.capacity_wait;
996
+ const capacityWait = wait && typeof wait.reason === "string" ? {
997
+ reason: wait.reason,
998
+ ...typeof wait.retry_at === "string" ? { retryAt: wait.retry_at } : {},
999
+ ...typeof wait.deadline === "string" ? { deadline: wait.deadline } : {}
1000
+ } : state.runState === "waiting" ? existing?.activity?.capacityWait : void 0;
1001
+ const activity = terminal || paused || responseCompleted || existing?.responseCompletion ? void 0 : {
1002
+ status: suspension || (cancelling ? "cancelling" : "running"),
1003
+ ...suspension === "waiting" && capacityWait ? { capacityWait } : {}
1004
+ };
993
1005
  const eventThreadId = typeof payload.thread_id === "string" && payload.thread_id.trim() ? payload.thread_id.trim() : null;
994
1006
  const contextApplies = (!state.activeThreadId || !eventThreadId || eventThreadId === state.activeThreadId) && (!state.activeRunId || !runId || runId === state.activeRunId);
995
1007
  const contextPayload = payload.context_window && typeof payload.context_window === "object" ? { ...payload.context_window, run_id: runId } : payload.context_window;
@@ -1024,6 +1036,7 @@ function applyCanonicalRuntimeEvent(state, event) {
1024
1036
  content,
1025
1037
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1026
1038
  isFinal: terminal || responseCompleted,
1039
+ activity,
1027
1040
  responseCompletion: completion,
1028
1041
  parts
1029
1042
  }),
@@ -1033,6 +1046,7 @@ function applyCanonicalRuntimeEvent(state, event) {
1033
1046
  content,
1034
1047
  parts,
1035
1048
  isFinal: terminal || responseCompleted || message.isFinal,
1049
+ activity,
1036
1050
  responseCompletion: completion || message.responseCompletion
1037
1051
  })
1038
1052
  });
@@ -1042,10 +1056,12 @@ function applyCanonicalRuntimeEvent(state, event) {
1042
1056
  return {
1043
1057
  ...message,
1044
1058
  isFinal: true,
1059
+ activity: void 0,
1045
1060
  responseCompletion: completion,
1046
1061
  ...segment ? { durableId: segment.message_id } : {}
1047
1062
  };
1048
1063
  });
1064
+ if (terminal || distinctSegment) messages = messages.map((message) => message.role === "assistant" && message.runId === runId && message.activity && (terminal || message.id !== (existing?.id || messageId)) ? { ...message, activity: void 0 } : message);
1049
1065
  const activityStatus = suspension || (paused ? "paused" : cancelling ? "cancelling" : "running");
1050
1066
  const terminalThread = runId && !sealedAfterTerminal ? {
1051
1067
  active_run: terminal ? null : {