@blocksdiy/react-common 1.6.1 → 1.8.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.
|
@@ -47,6 +47,7 @@ export interface AgentChatContextValue {
|
|
|
47
47
|
setThreadIds: React.Dispatch<SetStateAction<string[]>>;
|
|
48
48
|
appId: string;
|
|
49
49
|
token?: string;
|
|
50
|
+
agentBlockId?: string;
|
|
50
51
|
agentChatId?: string;
|
|
51
52
|
chatId?: string;
|
|
52
53
|
noPersistency?: boolean;
|
|
@@ -70,6 +71,13 @@ export interface AgentChatData {
|
|
|
70
71
|
export interface AgentChatRootProps {
|
|
71
72
|
appId: string;
|
|
72
73
|
token?: string;
|
|
74
|
+
/** Agent persona block id — used for direct AgentBlockService chat when `useAgentBlockDirectChat` is true. */
|
|
75
|
+
agentBlockId?: string;
|
|
76
|
+
/**
|
|
77
|
+
* When true with `agentBlockId`, uses `runAgentBlockChat` instead of the workflow.
|
|
78
|
+
* Set from the host app’s `useFlag("new-agent")` (Remix). Defaults to true for hosted/compiled apps that do not pass it.
|
|
79
|
+
*/
|
|
80
|
+
useAgentBlockDirectChat?: boolean;
|
|
73
81
|
agentChatId?: string;
|
|
74
82
|
defaultThreadId?: string;
|
|
75
83
|
noPersistency?: boolean;
|
|
@@ -78,8 +86,9 @@ export interface AgentChatRootProps {
|
|
|
78
86
|
chatContext?: any;
|
|
79
87
|
chatContextFiles?: Attachment[];
|
|
80
88
|
agentChatData?: AgentChatData;
|
|
89
|
+
memoryEnabled?: boolean;
|
|
81
90
|
}
|
|
82
|
-
export declare const AgentChatRoot: ({ appId, token, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, }: AgentChatRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
91
|
+
export declare const AgentChatRoot: ({ appId, token, agentBlockId, useAgentBlockDirectChat, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, memoryEnabled, }: AgentChatRootProps) => import("react/jsx-runtime").JSX.Element;
|
|
83
92
|
export interface AgentChatVoiceContextValue {
|
|
84
93
|
isConnected: boolean;
|
|
85
94
|
isConnecting: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAiB,SAAS,EAAE,cAAc,EAAwD,MAAM,OAAO,CAAC;AAEvH,OAAO,EAAgB,KAAK,gBAAgB,EAA4B,MAAM,yBAAyB,CAAC;AAqBxG,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAqBD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC;AAEzC,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,qBAAqB,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,cAAc,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,aAAa,CAAC;IAG9B,WAAW,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IAClD,cAAc,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IACpD,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAG7B,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC7D,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5D,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACvE,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAGvD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAUD,eAAO,MAAM,YAAY,6BAMxB,CAAC;AAiHF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,eAAe,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,aAAa,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AACD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8GAA8G;IAC9G,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,aAAa,GAAI,sLAc3B,kBAAkB,4CAmVpB,CAAC;AAMF,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC1C,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5E;AAkBD,eAAO,MAAM,iBAAiB,kCAG7B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CA2P/D;AAID,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,qBAAqB,kDAMjH;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAe,EACf,UAAiB,EACjB,mBAAmB,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,sBAAsB,2CAgEtD;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,sBAAsB,kDASpH;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,sBAAsB,kDASpH;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAe,EACf,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,WAAW,EACX,MAAM,EACN,QAAQ,EACR,WAAkB,EAClB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,mBAAmB,2CA8IxD;AACD,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,OAAe,EACf,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,yBAAyB,2CAe5D;AAED,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,0BAA0B,CAAC,EACzC,OAAe,EACf,OAAO,EACP,QAAQ,EACR,MAAM,EACN,QAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,+BAA+B,2CAqDlE;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,wBAAwB,2CAIxD;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,UAAU,EACV,OAAe,EACf,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,8BAA8B,2CAcjE;AAID,MAAM,WAAW,+BAA+B;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CAAC,EACzC,OAAe,EACf,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,+BAA+B,2CAelE;AAED,MAAM,WAAW,6BAA6B;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,wBAAwB,CAAC,EACvC,OAAe,EACf,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,6BAA6B,2CAehE;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,OAAe,EACf,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,8BAA8B,2CAiBjE;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,yBAAyB,2CAezD;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,OAAe,EACf,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,yBAAyB,2CAiBzD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { AppVersionService, DataApiService, websocketsService } from "@blocksdiy/blocks-client-api";
|
|
3
|
+
import { runAgentBlockChat } from "@blocksdiy/blocks-client-api";
|
|
3
4
|
import { getApiHost } from "@blocksdiy/blocks-client-api/envService";
|
|
4
5
|
import { WorkflowRequest } from "@blocksdiy/blocks-client-api/workflowService";
|
|
5
6
|
import { Slot } from "@radix-ui/react-slot";
|
|
@@ -9,6 +10,10 @@ import { useVoiceCall } from "../hooks/use-voice-call.js";
|
|
|
9
10
|
const CHAT_AGENT_HISTORY_TABLE_BLOCK_ID = "688ed13adefd8b565c779b8e";
|
|
10
11
|
const CHAT_AGENT_CALL_ACTION_BLOCK_ID = "688ed4d77b454b1fdaf5cf2d";
|
|
11
12
|
/* end of blocks common */
|
|
13
|
+
/** Dedupe auto-run of `initialPrompt` across remounts when history is still empty (e.g. failed first request). */
|
|
14
|
+
function agentChatInitialPromptStorageKey(appId, agentChatId, chatId, threadId) {
|
|
15
|
+
return `blocks:agentChat:initialPromptSent:${appId}:${agentChatId ?? ""}:${chatId ?? ""}:${threadId ?? ""}`;
|
|
16
|
+
}
|
|
12
17
|
// File upload constraints
|
|
13
18
|
const MAX_FILE_SIZE_MB = 5;
|
|
14
19
|
const MAX_FILE_SIZE_BYTES = MAX_FILE_SIZE_MB * 1024 * 1024;
|
|
@@ -113,7 +118,7 @@ const uploadAttachments = async ({ attachments, token, appId, }) => {
|
|
|
113
118
|
: undefined;
|
|
114
119
|
return uploadAttachments;
|
|
115
120
|
};
|
|
116
|
-
export const AgentChatRoot = ({ appId, token, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, }) => {
|
|
121
|
+
export const AgentChatRoot = ({ appId, token, agentBlockId, useAgentBlockDirectChat = true, agentChatId, children, chatId, noPersistency, defaultThreadId, chatContext, chatContextFiles, agentChatData, memoryEnabled = false, }) => {
|
|
117
122
|
const [prompt, setPrompt] = useState("");
|
|
118
123
|
const [attachments, setAttachments] = useState([]);
|
|
119
124
|
const [messages, setMessages] = useState([]);
|
|
@@ -220,26 +225,50 @@ export const AgentChatRoot = ({ appId, token, agentChatId, children, chatId, noP
|
|
|
220
225
|
appId,
|
|
221
226
|
token,
|
|
222
227
|
});
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
228
|
+
let result;
|
|
229
|
+
if (agentBlockId && useAgentBlockDirectChat) {
|
|
230
|
+
result = (await runAgentBlockChat({
|
|
231
|
+
token,
|
|
232
|
+
payload: {
|
|
233
|
+
appId,
|
|
234
|
+
agentBlockId,
|
|
235
|
+
agentChatId,
|
|
236
|
+
chatId,
|
|
237
|
+
noPersistency,
|
|
238
|
+
prompt: content ?? "",
|
|
239
|
+
hiddenPrompt: hiddenContent ?? "",
|
|
240
|
+
files: uploadedAttachments,
|
|
241
|
+
messages: messages.map((m) => m.msg),
|
|
242
|
+
threadId: currentThreadId,
|
|
243
|
+
chatContextFiles,
|
|
244
|
+
chatContext: chatContext ? `Context: \n${JSON.stringify(chatContext)}` : undefined,
|
|
245
|
+
memoryEnabled,
|
|
246
|
+
},
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
result = await WorkflowRequest.run({
|
|
251
|
+
workflowBlockId: CHAT_AGENT_CALL_ACTION_BLOCK_ID,
|
|
252
|
+
appId,
|
|
253
|
+
token,
|
|
254
|
+
context: { appId, agentChatId },
|
|
255
|
+
input: {
|
|
256
|
+
prompt: content ?? "",
|
|
257
|
+
hiddenPrompt: hiddenContent ?? "",
|
|
258
|
+
files: uploadedAttachments,
|
|
259
|
+
messages: messages.map((m) => m.msg),
|
|
260
|
+
chatId,
|
|
261
|
+
noPersistency,
|
|
262
|
+
threadId: currentThreadId,
|
|
263
|
+
chatContextFiles,
|
|
264
|
+
chatContext: chatContext ? `Context: \n${JSON.stringify(chatContext)}` : undefined,
|
|
265
|
+
memoryEnabled,
|
|
266
|
+
},
|
|
267
|
+
onChunk: (chunk) => {
|
|
268
|
+
updateMessageWithChunk(chunk.msgId, { content: chunk.content });
|
|
269
|
+
},
|
|
270
|
+
});
|
|
271
|
+
}
|
|
243
272
|
addMessages(result.messages);
|
|
244
273
|
}
|
|
245
274
|
catch (error) {
|
|
@@ -262,6 +291,8 @@ export const AgentChatRoot = ({ appId, token, agentChatId, children, chatId, noP
|
|
|
262
291
|
}, [
|
|
263
292
|
addMessages,
|
|
264
293
|
updateMessageWithChunk,
|
|
294
|
+
agentBlockId,
|
|
295
|
+
useAgentBlockDirectChat,
|
|
265
296
|
agentChatId,
|
|
266
297
|
appId,
|
|
267
298
|
messages,
|
|
@@ -271,11 +302,16 @@ export const AgentChatRoot = ({ appId, token, agentChatId, children, chatId, noP
|
|
|
271
302
|
noPersistency,
|
|
272
303
|
chatContext,
|
|
273
304
|
chatContextFiles,
|
|
305
|
+
memoryEnabled,
|
|
274
306
|
]);
|
|
275
307
|
useEffect(() => {
|
|
276
308
|
if (!agentChatData || initializedAgentChatDataRef.current) {
|
|
277
309
|
return;
|
|
278
310
|
}
|
|
311
|
+
// Wait until persisted history is loaded so we do not treat an existing thread as "first open".
|
|
312
|
+
if (!noPersistency && isFetchingMessages) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
279
315
|
const { initialMessages, initialPrompt } = agentChatData;
|
|
280
316
|
if (initialMessages && initialMessages.length > 0) {
|
|
281
317
|
setMessages((prevMessages) => {
|
|
@@ -293,11 +329,47 @@ export const AgentChatRoot = ({ appId, token, agentChatId, children, chatId, noP
|
|
|
293
329
|
];
|
|
294
330
|
});
|
|
295
331
|
}
|
|
296
|
-
|
|
297
|
-
|
|
332
|
+
const hasInitialPrompt = Boolean(initialPrompt?.content || initialPrompt?.hiddenContent);
|
|
333
|
+
if (hasInitialPrompt) {
|
|
334
|
+
const hasPersistedHumanTurn = messages.some((m) => m.msg.role === "human");
|
|
335
|
+
let alreadySentThisSession = false;
|
|
336
|
+
if (typeof sessionStorage !== "undefined") {
|
|
337
|
+
try {
|
|
338
|
+
alreadySentThisSession =
|
|
339
|
+
sessionStorage.getItem(agentChatInitialPromptStorageKey(appId, agentChatId, chatId, currentThreadId)) ===
|
|
340
|
+
"1";
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
// private mode / blocked storage
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
if (!hasPersistedHumanTurn && !alreadySentThisSession) {
|
|
347
|
+
if (typeof sessionStorage !== "undefined") {
|
|
348
|
+
try {
|
|
349
|
+
sessionStorage.setItem(agentChatInitialPromptStorageKey(appId, agentChatId, chatId, currentThreadId), "1");
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
// ignore
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
void sendMessage({
|
|
356
|
+
content: initialPrompt?.content,
|
|
357
|
+
hiddenContent: initialPrompt?.hiddenContent,
|
|
358
|
+
});
|
|
359
|
+
}
|
|
298
360
|
}
|
|
299
361
|
initializedAgentChatDataRef.current = true;
|
|
300
|
-
}, [
|
|
362
|
+
}, [
|
|
363
|
+
agentChatData,
|
|
364
|
+
sendMessage,
|
|
365
|
+
isFetchingMessages,
|
|
366
|
+
noPersistency,
|
|
367
|
+
messages,
|
|
368
|
+
appId,
|
|
369
|
+
agentChatId,
|
|
370
|
+
chatId,
|
|
371
|
+
currentThreadId,
|
|
372
|
+
]);
|
|
301
373
|
const sendFromInputs = useCallback(async () => {
|
|
302
374
|
if (isThinking || isFetchingMessages || (!prompt && attachments.length === 0)) {
|
|
303
375
|
return;
|
|
@@ -341,6 +413,7 @@ export const AgentChatRoot = ({ appId, token, agentChatId, children, chatId, noP
|
|
|
341
413
|
// Config
|
|
342
414
|
appId,
|
|
343
415
|
token,
|
|
416
|
+
agentBlockId,
|
|
344
417
|
agentChatId,
|
|
345
418
|
chatId,
|
|
346
419
|
noPersistency,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blocksdiy/react-common",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "React common",
|
|
6
6
|
"keywords": [],
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"penpal": "^7.0.6",
|
|
35
35
|
"@vapi-ai/web": "^2.5.2",
|
|
36
36
|
"react": "^19.2.4",
|
|
37
|
-
"@blocksdiy/blocks-client-api": "1.
|
|
37
|
+
"@blocksdiy/blocks-client-api": "1.8.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/react": "^19.2.14",
|