@blocksdiy/react-common 1.17.1 → 1.19.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.
@@ -1,5 +1,6 @@
1
1
  import { ReactNode, SetStateAction } from "react";
2
2
  import { type VoiceCallMessage } from "../hooks/use-voice-call.js";
3
+ export declare const ASK_USER_TOOL_NAME = "ask_user";
3
4
  export interface Attachment {
4
5
  url: string;
5
6
  fileType: string;
@@ -24,9 +25,50 @@ export interface LegacyMessagePayload {
24
25
  payload: Record<string, any>;
25
26
  hiddenContent?: string;
26
27
  }
28
+ export type AskUserQuestionType = "text" | "single_select" | "multi_select";
29
+ export interface AskUserQuestionOption {
30
+ id: string;
31
+ label: string;
32
+ }
33
+ export interface AskUserQuestion {
34
+ id: string;
35
+ label: string;
36
+ type: AskUserQuestionType;
37
+ required?: boolean;
38
+ placeholder?: string;
39
+ options?: AskUserQuestionOption[];
40
+ choices?: string[];
41
+ allowOther?: boolean;
42
+ otherLabel?: string;
43
+ }
44
+ export interface AskUserPayload {
45
+ questions?: AskUserQuestion[];
46
+ }
47
+ export interface AskUserSubmittedAnswer {
48
+ questionId: string;
49
+ question: string;
50
+ type: AskUserQuestionType;
51
+ value?: string;
52
+ values?: string[];
53
+ label?: string;
54
+ labels?: string[];
55
+ other?: string;
56
+ }
57
+ export interface ToolResumeInput {
58
+ toolCallId?: string;
59
+ toolName?: string;
60
+ type?: string;
61
+ skipped?: boolean;
62
+ [key: string]: unknown;
63
+ }
64
+ export interface SubmitAskUserAnswersInput extends ToolResumeInput {
65
+ type?: "ask_user";
66
+ answers: AskUserSubmittedAnswer[];
67
+ }
27
68
  type CopilotMessageMetadata = {
28
69
  version?: 1;
29
70
  hiddenPrompt?: string;
71
+ kind?: "tool-resume";
30
72
  };
31
73
  type CopilotToolCall = {
32
74
  id?: string;
@@ -71,6 +113,8 @@ export interface AgentChatContextValue {
71
113
  threadIds: string[];
72
114
  agentChatData?: AgentChatData;
73
115
  sendMessage: (message: Omit<LegacyMessagePayload, "id" | "role" | "type" | "payload">) => Promise<void>;
116
+ submitToolResume: (input: ToolResumeInput) => Promise<void>;
117
+ submitAskUserAnswers: (input: SubmitAskUserAnswersInput) => Promise<void>;
74
118
  sendFromInputs: () => Promise<void>;
75
119
  addMessages: (newMessages: MessageItem[]) => void;
76
120
  addAttachments: (attachments: Attachment[]) => void;
@@ -88,6 +132,9 @@ export interface AgentChatContextValue {
88
132
  chatId?: string;
89
133
  noPersistency?: boolean;
90
134
  }
135
+ export declare const formatAskUserAnswerSummary: (answers: AskUserSubmittedAnswer[]) => string;
136
+ export declare const buildToolResumeHiddenContent: ({ toolName, type, skipped, ...resumePayload }: ToolResumeInput) => string;
137
+ export declare const buildAskUserAnswersHiddenContent: (input: SubmitAskUserAnswersInput) => string;
91
138
  export declare const useAgentChat: () => AgentChatContextValue;
92
139
  export interface ToolCardContextValue {
93
140
  open: boolean;
@@ -162,9 +209,45 @@ export interface AgentChatRootProps {
162
209
  isEnabled: boolean;
163
210
  isPersistent?: boolean;
164
211
  };
212
+ useDynamicUI?: boolean;
165
213
  }
166
- export type ResolvedAgentChatConfig = Pick<AgentChatRootProps, "agentBlockId" | "agentHarness" | "agentChatData" | "shortTermMemory">;
167
- export declare const AgentChatRoot: ({ appId, token, agentBlockId, agentHarness, useAgentBlockDirectChat, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, memoryEnabled, shortTermMemory, }: AgentChatRootProps) => import("react/jsx-runtime").JSX.Element | null;
214
+ export type ResolvedAgentChatConfig = Pick<AgentChatRootProps, "agentBlockId" | "agentHarness" | "agentChatData" | "shortTermMemory" | "useDynamicUI">;
215
+ interface HitlResumeRequestBodyInput {
216
+ appId: string;
217
+ agentBlockId?: string;
218
+ agentChatId?: string;
219
+ chatId?: string;
220
+ currentThreadId?: string;
221
+ noPersistency?: boolean;
222
+ shortTermMemory: {
223
+ isEnabled: boolean;
224
+ isPersistent?: boolean;
225
+ };
226
+ chatContextFiles?: Attachment[];
227
+ chatContext: unknown;
228
+ requestMessages: CopilotMessage[];
229
+ messageId: string;
230
+ input: ToolResumeInput;
231
+ }
232
+ export declare const buildHitlResumeRequestBody: ({ appId, agentBlockId, agentChatId, chatId, currentThreadId, noPersistency, shortTermMemory, chatContextFiles, chatContext, requestMessages, messageId, input, }: HitlResumeRequestBodyInput) => {
233
+ appId: string;
234
+ agentBlockId: string | undefined;
235
+ agentChatId: string | undefined;
236
+ chatId: string | undefined;
237
+ threadId: string | undefined;
238
+ noPersistency: boolean | undefined;
239
+ shortTermMemory: {
240
+ isEnabled: boolean;
241
+ isPersistent?: boolean;
242
+ };
243
+ chatContextFiles: Attachment[] | undefined;
244
+ chatContext: string | undefined;
245
+ files: never[];
246
+ messages: CopilotMessage[];
247
+ messageId: string;
248
+ hitlResume: ToolResumeInput;
249
+ };
250
+ export declare const AgentChatRoot: ({ appId, token, agentBlockId, agentHarness, useAgentBlockDirectChat, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, memoryEnabled, shortTermMemory, useDynamicUI, }: AgentChatRootProps) => import("react/jsx-runtime").JSX.Element | null;
168
251
  export interface AgentChatVoiceContextValue {
169
252
  isConnected: boolean;
170
253
  isConnecting: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ const CHAT_AGENT_CALL_ACTION_BLOCK_ID = "688ed4d77b454b1fdaf5cf2d";
15
15
  const MAX_FILE_SIZE_MB = 5;
16
16
  const MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024;
17
17
  const DEFAULT_SHORT_TERM_MEMORY = { isEnabled: true, isPersistent: true };
18
+ export const ASK_USER_TOOL_NAME = "ask_user";
18
19
  const validateAndConvertFiles = (files) => {
19
20
  if (files.length === 0) {
20
21
  return null;
@@ -36,11 +37,92 @@ const generateId = (length = 10) => {
36
37
  .toString(36)
37
38
  .substring(2, 2 + length);
38
39
  };
40
+ export const formatAskUserAnswerSummary = (answers) => {
41
+ const lines = answers.map((answer) => {
42
+ const selectedValues = answer.values !== undefined ? [...(answer.labels || []), answer.other].filter(Boolean).join(", ") : undefined;
43
+ const value = selectedValues || answer.other || answer.label || answer.value || "No answer";
44
+ return `- ${answer.question}: ${value}`;
45
+ });
46
+ return lines.join("\n");
47
+ };
48
+ export const buildToolResumeHiddenContent = ({ toolName = "tool", type = "tool", skipped, ...resumePayload }) => [
49
+ `The user submitted a resume payload to ${toolName}.`,
50
+ JSON.stringify({
51
+ type: "tool_resume",
52
+ status: skipped ? "skipped" : "answered",
53
+ resumeType: type,
54
+ toolName,
55
+ skipped,
56
+ ...resumePayload,
57
+ }, null, 2),
58
+ ].join("\n\n");
59
+ export const buildAskUserAnswersHiddenContent = (input) => buildToolResumeHiddenContent({
60
+ ...input,
61
+ toolName: input.toolName ?? ASK_USER_TOOL_NAME,
62
+ type: "ask_user",
63
+ });
64
+ const isToolResumeHiddenContent = (hiddenContent) => typeof hiddenContent === "string" && hiddenContent.includes('"tool_resume"');
65
+ const isToolResumeCopilotMessage = (message) => message.metadata?.kind === "tool-resume" || isToolResumeHiddenContent(message.metadata?.hiddenPrompt);
66
+ /**
67
+ * Suppress the synthetic `TOOL_CALL_START` / `TOOL_CALL_ARGS` / `TOOL_CALL_END`
68
+ * events that the AGUI LangGraph agent re-emits when a previously-streamed
69
+ * tool resumes from a LangGraph `interrupt()` (e.g. the `ask_user` HITL flow).
70
+ *
71
+ * On resume the model is NOT re-invoked for the tool args — it just continues
72
+ * from the checkpoint — so `has_function_streaming` resets to False and the
73
+ * AGUI agent dispatches a synthetic START/ARGS/END pair before the real
74
+ * `TOOL_CALL_RESULT`. Applied client-side by `@ag-ui/client`'s default reducer
75
+ * those events:
76
+ * 1. Create a synthetic empty assistant message (parent_message_id maps to
77
+ * the new ToolMessage's id, which doesn't exist yet → new bubble pushed).
78
+ * 2. Append the full args JSON onto the original assistant message's
79
+ * already-complete tool call args (corrupting them so `parseMaybeJson`
80
+ * fails and the `AskUserPart` can't render the form input).
81
+ *
82
+ * Both effects flash as empty bubbles in the chat until the run-end
83
+ * `MESSAGES_SNAPSHOT` reconciles them. Suppressing the duplicate START (and
84
+ * its paired ARGS/END) at the subscriber layer keeps the original tool call
85
+ * intact and lets `TOOL_CALL_RESULT` resolve it cleanly through the existing
86
+ * `normalizeCopilotToolCall` pairing logic.
87
+ */
88
+ const createDuplicateToolCallSuppressor = () => {
89
+ const suppressedToolCallIds = new Set();
90
+ return {
91
+ onToolCallStartEvent: ({ event, messages }) => {
92
+ const toolCallId = event.toolCallId;
93
+ if (!toolCallId) {
94
+ return undefined;
95
+ }
96
+ const alreadyPresent = messages.some((message) => message.role === "assistant" &&
97
+ Array.isArray(message.toolCalls) &&
98
+ message.toolCalls.some((tc) => tc.id === toolCallId));
99
+ if (alreadyPresent) {
100
+ suppressedToolCallIds.add(toolCallId);
101
+ return { stopPropagation: true };
102
+ }
103
+ return undefined;
104
+ },
105
+ onToolCallArgsEvent: ({ event }) => {
106
+ if (event.toolCallId && suppressedToolCallIds.has(event.toolCallId)) {
107
+ return { stopPropagation: true };
108
+ }
109
+ return undefined;
110
+ },
111
+ onToolCallEndEvent: ({ event }) => {
112
+ if (event.toolCallId && suppressedToolCallIds.has(event.toolCallId)) {
113
+ suppressedToolCallIds.delete(event.toolCallId);
114
+ return { stopPropagation: true };
115
+ }
116
+ return undefined;
117
+ },
118
+ };
119
+ };
39
120
  class BlocksCopilotHttpAgent extends HttpAgent {
40
121
  requestHeaders = {};
41
122
  requestBody = {};
42
123
  constructor({ url }) {
43
124
  super({ url, headers: {} });
125
+ this.subscribe(createDuplicateToolCallSuppressor());
44
126
  }
45
127
  setRequestOptions({ headers, body }) {
46
128
  this.requestHeaders = headers;
@@ -80,8 +162,12 @@ const legacyPayloadToCopilotMessage = (message) => ({
80
162
  version: 1,
81
163
  hiddenPrompt: message.hiddenContent,
82
164
  },
165
+ ...(Array.isArray(message.payload?.toolCalls) ? { toolCalls: message.payload.toolCalls } : {}),
83
166
  });
84
167
  const messageItemToCopilotMessage = (message) => {
168
+ if (isToolResumeHiddenContent(message.msg.hiddenContent)) {
169
+ return null;
170
+ }
85
171
  return legacyPayloadToCopilotMessage(message.msg);
86
172
  };
87
173
  const normalizeCopilotToolCall = (toolCall, allMessages) => {
@@ -101,6 +187,9 @@ const normalizeCopilotToolCall = (toolCall, allMessages) => {
101
187
  };
102
188
  };
103
189
  const copilotMessageToLegacyPayload = (message, allMessages = []) => {
190
+ if (isToolResumeCopilotMessage(message)) {
191
+ return null;
192
+ }
104
193
  if (!message.id || (message.role !== "user" && message.role !== "assistant")) {
105
194
  return null;
106
195
  }
@@ -117,7 +206,34 @@ const copilotMessageToLegacyPayload = (message, allMessages = []) => {
117
206
  payload: toolCalls.length ? { toolCalls } : {},
118
207
  };
119
208
  };
120
- const messageItemToLegacyPayload = (message) => message.msg;
209
+ const messageItemToLegacyPayload = (message) => isToolResumeHiddenContent(message.msg.hiddenContent) ? null : message.msg;
210
+ const getToolCallName = (toolCall) => toolCall.toolName ||
211
+ toolCall.function?.name ||
212
+ toolCall.name ||
213
+ (typeof toolCall.type === "string" ? toolCall.type.replace(/^tool-/, "") : undefined);
214
+ const getToolCallId = (toolCall) => toolCall.toolCallId || toolCall.id;
215
+ const isResolvedToolCall = (toolCall) => toolCall.state === "output-available" || toolCall.output !== undefined;
216
+ const findPendingAskUserToolCall = (messages) => {
217
+ for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex -= 1) {
218
+ const toolCalls = messages[messageIndex].msg.payload?.toolCalls;
219
+ if (!Array.isArray(toolCalls)) {
220
+ continue;
221
+ }
222
+ for (let toolIndex = toolCalls.length - 1; toolIndex >= 0; toolIndex -= 1) {
223
+ const toolCall = toolCalls[toolIndex];
224
+ if (!toolCall || typeof toolCall !== "object") {
225
+ continue;
226
+ }
227
+ if (getToolCallName(toolCall) === ASK_USER_TOOL_NAME && !isResolvedToolCall(toolCall)) {
228
+ return {
229
+ toolCallId: getToolCallId(toolCall),
230
+ toolName: ASK_USER_TOOL_NAME,
231
+ };
232
+ }
233
+ }
234
+ }
235
+ return null;
236
+ };
121
237
  const appendCopilotErrorMessage = (messages, error) => {
122
238
  const text = "Error: " + (error instanceof Error ? error.message : "Unknown error");
123
239
  const lastMessage = messages[messages.length - 1];
@@ -134,11 +250,14 @@ const appendCopilotErrorMessage = (messages, error) => {
134
250
  },
135
251
  ];
136
252
  };
137
- const storedMessageToLegacyView = (message) => {
253
+ const storedMessageToLegacyView = (message, allMessages = []) => {
138
254
  if ("type" in message.msg) {
255
+ if (message.msg.role !== "human" && message.msg.role !== "ai") {
256
+ return null;
257
+ }
139
258
  return message;
140
259
  }
141
- const legacyPayload = copilotMessageToLegacyPayload(message.msg);
260
+ const legacyPayload = copilotMessageToLegacyPayload(message.msg, allMessages);
142
261
  if (legacyPayload) {
143
262
  return {
144
263
  ...message,
@@ -146,16 +265,7 @@ const storedMessageToLegacyView = (message) => {
146
265
  msg: legacyPayload,
147
266
  };
148
267
  }
149
- return {
150
- ...message,
151
- msg: {
152
- id: message.msg.id ?? generateId(),
153
- role: "ai",
154
- type: "text",
155
- content: "",
156
- payload: {},
157
- },
158
- };
268
+ return null;
159
269
  };
160
270
  export const useAgentChat = () => {
161
271
  const context = useContext(AgentChatContext);
@@ -316,6 +426,7 @@ const resolveAgentChatConfig = async ({ agentChatId, token, }) => {
316
426
  agentBlockId: agentHarness ? agentBlockId : undefined,
317
427
  agentHarness,
318
428
  shortTermMemory: agentChatBlockData?.shortTermMemory ?? DEFAULT_SHORT_TERM_MEMORY,
429
+ useDynamicUI: agentChatBlockData?.useDynamicUI,
319
430
  agentChatData: {
320
431
  agent: {
321
432
  title: agentBlockData?.title,
@@ -354,6 +465,21 @@ const mergeMessageItemsById = (currentMessages, incomingMessages) => {
354
465
  return nextMessages;
355
466
  };
356
467
  const formatChatContext = (chatContext) => (chatContext ? `Context: \n${JSON.stringify(chatContext)}` : undefined);
468
+ export const buildHitlResumeRequestBody = ({ appId, agentBlockId, agentChatId, chatId, currentThreadId, noPersistency, shortTermMemory, chatContextFiles, chatContext, requestMessages, messageId, input, }) => ({
469
+ appId,
470
+ agentBlockId,
471
+ agentChatId,
472
+ chatId,
473
+ threadId: currentThreadId,
474
+ noPersistency,
475
+ shortTermMemory,
476
+ chatContextFiles,
477
+ chatContext: formatChatContext(chatContext),
478
+ files: [],
479
+ messages: requestMessages,
480
+ messageId,
481
+ hitlResume: input,
482
+ });
357
483
  function useAgentChatInputState({ isThinking, isFetchingMessages, sendMessage, }) {
358
484
  const [prompt, setPrompt] = useState("");
359
485
  const [attachments, setAttachments] = useState([]);
@@ -415,13 +541,14 @@ function useAgentChatDataInitialization({ agentChatData, addMessages, sendMessag
415
541
  function AgentChatContextProvider({ children, ...value }) {
416
542
  return _jsx(AgentChatContext.Provider, { value: value, children: children });
417
543
  }
418
- export const AgentChatRoot = ({ appId, token, agentBlockId, agentHarness, useAgentBlockDirectChat, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, memoryEnabled = false, shortTermMemory, }) => {
544
+ export const AgentChatRoot = ({ appId, token, agentBlockId, agentHarness, useAgentBlockDirectChat, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, memoryEnabled = false, shortTermMemory, useDynamicUI, }) => {
419
545
  const [resolvedAgentChatConfig, setResolvedAgentChatConfig] = useState(null);
420
546
  const isResolvingAgentChatConfig = Boolean(agentChatId && !resolvedAgentChatConfig);
421
547
  const effectiveAgentBlockId = resolvedAgentChatConfig?.agentBlockId ?? agentBlockId;
422
548
  const effectiveAgentHarness = resolvedAgentChatConfig?.agentHarness ?? agentHarness;
423
549
  const effectiveAgentChatData = agentChatData ?? resolvedAgentChatConfig?.agentChatData;
424
550
  const effectiveShortTermMemory = shortTermMemory ?? resolvedAgentChatConfig?.shortTermMemory ?? DEFAULT_SHORT_TERM_MEMORY;
551
+ const effectiveUseDynamicUI = useDynamicUI ?? resolvedAgentChatConfig?.useDynamicUI;
425
552
  const shouldUseAgentBlockDirectChat = useAgentBlockDirectChat ?? effectiveAgentHarness === "deep_agent";
426
553
  const isNewAgent = Boolean(effectiveAgentBlockId && shouldUseAgentBlockDirectChat);
427
554
  // isPersistent supersedes noPersistency on the new direct-chat path.
@@ -541,6 +668,7 @@ export const AgentChatRoot = ({ appId, token, agentBlockId, agentHarness, useAge
541
668
  agentChatData: effectiveAgentChatData,
542
669
  memoryEnabled,
543
670
  shortTermMemory: effectiveShortTermMemory,
671
+ useDynamicUI: effectiveUseDynamicUI,
544
672
  isFetchingMessages,
545
673
  currentThreadId,
546
674
  setCurrentThreadId,
@@ -561,6 +689,9 @@ function LegacyAgentChatProvider({ appId, token, agentChatId, children, chatId,
561
689
  const newMessages = [...prevMessages];
562
690
  for (const rawMessageToAdd of messagesToAdd) {
563
691
  const messageToAdd = storedMessageToLegacyView(rawMessageToAdd);
692
+ if (!messageToAdd) {
693
+ continue;
694
+ }
564
695
  const existingIndex = newMessages.findIndex((m) => m.msg.id === messageToAdd.msg.id);
565
696
  if (existingIndex !== -1) {
566
697
  newMessages[existingIndex] = messageToAdd;
@@ -672,6 +803,18 @@ function LegacyAgentChatProvider({ appId, token, agentChatId, children, chatId,
672
803
  memoryEnabled,
673
804
  shortTermMemory,
674
805
  ]);
806
+ const submitToolResume = useCallback(async (input) => {
807
+ await sendMessage({
808
+ content: "",
809
+ hiddenContent: buildToolResumeHiddenContent(input),
810
+ });
811
+ }, [sendMessage]);
812
+ const submitAskUserAnswers = useCallback(async (input) => {
813
+ await sendMessage({
814
+ content: formatAskUserAnswerSummary(input.answers),
815
+ hiddenContent: buildAskUserAnswersHiddenContent(input),
816
+ });
817
+ }, [sendMessage]);
675
818
  useAgentChatDataInitialization({
676
819
  agentChatData,
677
820
  addMessages,
@@ -679,7 +822,7 @@ function LegacyAgentChatProvider({ appId, token, agentChatId, children, chatId,
679
822
  isPersistentFlow,
680
823
  });
681
824
  const inputState = useAgentChatInputState({ isThinking, isFetchingMessages, sendMessage });
682
- return (_jsx(AgentChatContextProvider, { ...inputState, messages: flattenLegacyMessages(messages), initialAgentMessages: initialAgentMessages, isThinking: isThinking, isFetchingMessages: isFetchingMessages, currentThreadId: currentThreadId, agentChatData: agentChatData, sendMessage: sendMessage, addMessages: addMessages, setCurrentThreadId: setCurrentThreadId, appId: appId, token: token, agentChatId: agentChatId, chatId: chatId, noPersistency: noPersistency, children: children }));
825
+ return (_jsx(AgentChatContextProvider, { ...inputState, messages: flattenLegacyMessages(messages), initialAgentMessages: initialAgentMessages, isThinking: isThinking, isFetchingMessages: isFetchingMessages, currentThreadId: currentThreadId, agentChatData: agentChatData, sendMessage: sendMessage, submitToolResume: submitToolResume, submitAskUserAnswers: submitAskUserAnswers, addMessages: addMessages, setCurrentThreadId: setCurrentThreadId, appId: appId, token: token, agentChatId: agentChatId, chatId: chatId, noPersistency: noPersistency, children: children }));
683
826
  }
684
827
  function CopilotAgentChatRootProvider({ appId, token, ...props }) {
685
828
  const copilotRuntimeUrl = `${getApiHost()}/agent-chat-stream`;
@@ -687,10 +830,15 @@ function CopilotAgentChatRootProvider({ appId, token, ...props }) {
687
830
  const agents = useMemo(() => ({ default: agent }), [agent]);
688
831
  return (_jsx(CopilotKit, { runtimeUrl: copilotRuntimeUrl, agents__unsafe_dev_only: agents, children: _jsx(CopilotAgentChatProvider, { ...props, appId: appId, token: token, copilotAgent: agent }) }));
689
832
  }
690
- function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, children, chatId, noPersistency, currentThreadId, chatContext, chatContextFiles, agentChatData, shortTermMemory = { isEnabled: true, isPersistent: true }, isFetchingMessages, setCurrentThreadId, fetchedMessages, initialAgentMessages, isPersistentFlow, copilotAgent, }) {
833
+ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, children, chatId, noPersistency, currentThreadId, chatContext, chatContextFiles, agentChatData, shortTermMemory = { isEnabled: true, isPersistent: true }, useDynamicUI, isFetchingMessages, setCurrentThreadId, fetchedMessages, initialAgentMessages, isPersistentFlow, copilotAgent, }) {
691
834
  const [externalMessages, setExternalMessages] = useState([]);
692
835
  const copilotMessageCreatedAtByIdRef = useRef({});
693
836
  const previousCopilotChatIdRef = useRef(undefined);
837
+ // Latest snapshot of public `messages` for callbacks that read it after an
838
+ // await. The closure value goes stale after `runHitlResume` resolves — the
839
+ // resume's stream events update copilotMessages → messages, but the callback
840
+ // still sees the value captured at invocation time.
841
+ const messagesRef = useRef([]);
694
842
  const copilotChatId = useMemo(() => [appId, agentChatId, chatId, currentThreadId].filter(Boolean).join(":"), [appId, agentChatId, chatId, currentThreadId]);
695
843
  const { messages: copilotMessages, sendMessage: sendCopilotMessage, setMessages: setCopilotMessages, isLoading: isCopilotLoading, } = useCopilotChatInternal();
696
844
  // Wait one commit before firing the init send: CopilotKit's setup effect aborts the
@@ -723,7 +871,12 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
723
871
  })
724
872
  .filter((message) => Boolean(message)), [copilotMessages]);
725
873
  const messages = useMemo(() => {
726
- const fetchedMessageItems = fetchedMessages.map(storedMessageToLegacyView);
874
+ const fetchedCopilotMessages = fetchedMessages
875
+ .map((message) => message.msg)
876
+ .filter((message) => !("type" in message));
877
+ const fetchedMessageItems = fetchedMessages
878
+ .map((message) => storedMessageToLegacyView(message, fetchedCopilotMessages))
879
+ .filter((message) => Boolean(message));
727
880
  // Seed initial agent messages so the stream echo merges by id and keeps the early createdAt.
728
881
  const nextMessages = mergeMessageItemsById(mergeMessageItemsById(initialAgentMessages, fetchedMessageItems), externalMessages);
729
882
  for (const messageItem of copilotMessageItems) {
@@ -743,15 +896,94 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
743
896
  return nextMessages;
744
897
  }, [copilotMessageItems, externalMessages, fetchedMessages, initialAgentMessages]);
745
898
  const isThinking = isCopilotLoading;
899
+ useEffect(() => {
900
+ messagesRef.current = messages;
901
+ }, [messages]);
746
902
  const addExternalMessages = useCallback((messagesToAdd) => {
747
- const normalizedMessages = messagesToAdd.map(storedMessageToLegacyView);
903
+ const copilotMessagesToAdd = messagesToAdd
904
+ .map((message) => message.msg)
905
+ .filter((message) => !("type" in message));
906
+ const normalizedMessages = messagesToAdd
907
+ .map((message) => storedMessageToLegacyView(message, copilotMessagesToAdd))
908
+ .filter((message) => Boolean(message));
748
909
  setExternalMessages((prevMessages) => mergeMessageItemsById(prevMessages, normalizedMessages));
749
910
  }, []);
750
911
  const addCopilotErrorMessage = useCallback((error) => {
751
912
  setCopilotMessages(appendCopilotErrorMessage(copilotMessages, error));
752
913
  }, [copilotMessages, setCopilotMessages]);
914
+ const runHitlResume = useCallback(async (input) => {
915
+ const messageId = generateId();
916
+ const hiddenContent = buildToolResumeHiddenContent(input);
917
+ const userCopilotMessage = {
918
+ id: messageId,
919
+ role: "user",
920
+ content: "",
921
+ metadata: { version: 1, hiddenPrompt: hiddenContent, kind: "tool-resume" },
922
+ };
923
+ // Always read the latest snapshot — the resume flow can be invoked from
924
+ // sendMessage's skipped path right after another awaited resume settled.
925
+ const latestMessages = messagesRef.current;
926
+ const requestMessages = latestMessages
927
+ .map(messageItemToCopilotMessage)
928
+ .filter((requestMessage) => Boolean(requestMessage));
929
+ setCopilotMessages(requestMessages);
930
+ copilotAgent.setRequestOptions({
931
+ headers: {
932
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
933
+ ...(AppVersionService.getCurrentVersionNumber()
934
+ ? { "x-app-version": String(AppVersionService.getCurrentVersionNumber()) }
935
+ : {}),
936
+ ...(websocketsService.getSocketId() ? { "x-socket-id": websocketsService.getSocketId() } : {}),
937
+ ...(appId ? { "x-app-id": appId } : {}),
938
+ },
939
+ body: buildHitlResumeRequestBody({
940
+ appId,
941
+ agentBlockId,
942
+ agentChatId,
943
+ chatId,
944
+ currentThreadId,
945
+ noPersistency,
946
+ shortTermMemory,
947
+ chatContextFiles,
948
+ chatContext,
949
+ requestMessages,
950
+ messageId,
951
+ input,
952
+ }),
953
+ });
954
+ try {
955
+ await sendCopilotMessage(userCopilotMessage);
956
+ }
957
+ finally {
958
+ copilotAgent.clearRequestOptions();
959
+ }
960
+ }, [
961
+ agentBlockId,
962
+ agentChatId,
963
+ appId,
964
+ chatId,
965
+ chatContext,
966
+ chatContextFiles,
967
+ copilotAgent,
968
+ currentThreadId,
969
+ noPersistency,
970
+ sendCopilotMessage,
971
+ setCopilotMessages,
972
+ shortTermMemory,
973
+ token,
974
+ ]);
753
975
  const sendMessage = useCallback(async ({ content, hiddenContent, ...message }) => {
754
976
  try {
977
+ const pendingAskUser = findPendingAskUserToolCall(messages);
978
+ if (pendingAskUser?.toolCallId) {
979
+ await runHitlResume({
980
+ toolCallId: pendingAskUser.toolCallId,
981
+ toolName: ASK_USER_TOOL_NAME,
982
+ type: "ask_user",
983
+ answers: [],
984
+ skipped: true,
985
+ });
986
+ }
755
987
  const messageId = generateId();
756
988
  const uploadedAttachments = await uploadAttachments({ attachments: message.attachments, appId, token });
757
989
  const userCopilotMessage = {
@@ -760,7 +992,12 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
760
992
  content: content ?? "",
761
993
  metadata: { version: 1, hiddenPrompt: hiddenContent ?? undefined },
762
994
  };
763
- const requestMessages = messages
995
+ // Read the latest messages snapshot (the closure value is stale after
996
+ // the awaited skipped resume — it still reflects the state before the
997
+ // resume's stream populated copilotMessages with the resolved tool
998
+ // result and any AI follow-up).
999
+ const latestMessages = messagesRef.current;
1000
+ const requestMessages = latestMessages
764
1001
  .map(messageItemToCopilotMessage)
765
1002
  .filter((requestMessage) => Boolean(requestMessage));
766
1003
  setCopilotMessages(requestMessages);
@@ -781,6 +1018,7 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
781
1018
  threadId: currentThreadId,
782
1019
  noPersistency,
783
1020
  shortTermMemory,
1021
+ useDynamicUI,
784
1022
  chatContextFiles,
785
1023
  chatContext: formatChatContext(chatContext),
786
1024
  files: uploadedAttachments,
@@ -809,12 +1047,29 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
809
1047
  currentThreadId,
810
1048
  messages,
811
1049
  noPersistency,
1050
+ runHitlResume,
812
1051
  sendCopilotMessage,
813
1052
  setCopilotMessages,
814
1053
  shortTermMemory,
815
1054
  token,
816
1055
  initialAgentMessages,
1056
+ useDynamicUI,
817
1057
  ]);
1058
+ const submitToolResume = useCallback(async (input) => {
1059
+ try {
1060
+ await runHitlResume(input);
1061
+ }
1062
+ catch (error) {
1063
+ addCopilotErrorMessage(error);
1064
+ }
1065
+ }, [addCopilotErrorMessage, runHitlResume]);
1066
+ const submitAskUserAnswers = useCallback(async (input) => {
1067
+ await submitToolResume({
1068
+ ...input,
1069
+ toolName: input.toolName ?? ASK_USER_TOOL_NAME,
1070
+ type: "ask_user",
1071
+ });
1072
+ }, [submitToolResume]);
818
1073
  useAgentChatDataInitialization({
819
1074
  agentChatData,
820
1075
  addMessages: addExternalMessages,
@@ -823,7 +1078,7 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
823
1078
  isAgentReady: hasMounted && (!isPersistentFlow || (!isFetchingMessages && fetchedMessages.length === 0)),
824
1079
  });
825
1080
  const inputState = useAgentChatInputState({ isThinking, isFetchingMessages, sendMessage });
826
- return (_jsx(AgentChatContextProvider, { ...inputState, messages: messages, initialAgentMessages: initialAgentMessages, isThinking: isThinking, isFetchingMessages: isFetchingMessages, currentThreadId: currentThreadId, agentChatData: agentChatData, sendMessage: sendMessage, addMessages: addExternalMessages, setCurrentThreadId: setCurrentThreadId, appId: appId, token: token, agentBlockId: agentBlockId, agentChatId: agentChatId, chatId: chatId, noPersistency: noPersistency, children: children }));
1081
+ return (_jsx(AgentChatContextProvider, { ...inputState, messages: messages, initialAgentMessages: initialAgentMessages, isThinking: isThinking, isFetchingMessages: isFetchingMessages, currentThreadId: currentThreadId, agentChatData: agentChatData, sendMessage: sendMessage, submitToolResume: submitToolResume, submitAskUserAnswers: submitAskUserAnswers, addMessages: addExternalMessages, setCurrentThreadId: setCurrentThreadId, appId: appId, token: token, agentBlockId: agentBlockId, agentChatId: agentChatId, chatId: chatId, noPersistency: noPersistency, children: children }));
827
1082
  }
828
1083
  const AgentChatVoiceContext = createContext(null);
829
1084
  const noopVoice = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocksdiy/react-common",
3
- "version": "1.17.1",
3
+ "version": "1.19.0",
4
4
  "type": "module",
5
5
  "description": "React common",
6
6
  "keywords": [],