@blocksdiy/react-common 1.14.0 → 1.14.1

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,3 +1,4 @@
1
+ import { type UIMessage } from "ai";
1
2
  import { ReactNode, SetStateAction } from "react";
2
3
  import { type VoiceCallMessage } from "../hooks/use-voice-call.js";
3
4
  export interface Attachment {
@@ -12,7 +13,8 @@ type MessageType = "progress" | "text" | "missing_integration";
12
13
  *
13
14
  * Consumers of `@blocksdiy/react-common/agent-chat` currently read `msg.content`,
14
15
  * `msg.role` (`human`/`ai`), `msg.attachments`, and the flattened compatibility
15
- * fields returned from `AgentChatContextValue.messages`. Keep this shape stable.
16
+ * fields returned from `AgentChatContextValue.messages`. Keep this shape stable
17
+ * while the runtime underneath moves to AI SDK `UIMessage` objects.
16
18
  */
17
19
  export interface LegacyMessagePayload {
18
20
  id: string;
@@ -24,30 +26,12 @@ export interface LegacyMessagePayload {
24
26
  payload: Record<string, any>;
25
27
  hiddenContent?: string;
26
28
  }
27
- type CopilotMessageMetadata = {
28
- version?: 1;
29
- hiddenPrompt?: string;
30
- };
31
- type CopilotToolCall = {
32
- id?: string;
33
- name?: string;
34
- args?: unknown;
35
- input?: unknown;
36
- function?: {
37
- name?: string;
38
- arguments?: unknown;
29
+ export type V1AiSdkMessagePayload = AgentChatUIMessage & {
30
+ metadata: AgentChatUIMessage["metadata"] & {
31
+ version: 1;
39
32
  };
40
33
  };
41
- type CopilotMessage = {
42
- id?: string;
43
- role?: string;
44
- content?: string;
45
- metadata?: CopilotMessageMetadata;
46
- toolCalls?: CopilotToolCall[];
47
- toolCallId?: string;
48
- name?: string;
49
- };
50
- export type PersistedMessagePayload = LegacyMessagePayload | CopilotMessage;
34
+ export type PersistedMessagePayload = LegacyMessagePayload | V1AiSdkMessagePayload;
51
35
  interface MessageItemBase {
52
36
  createdAt: string;
53
37
  createdBy?: string;
@@ -58,7 +42,10 @@ interface MessageItemBase {
58
42
  export type LegacyMessageItem = MessageItemBase & {
59
43
  msg: LegacyMessagePayload;
60
44
  };
61
- export type MessageItem = LegacyMessageItem;
45
+ export type V1AiSdkMessageItem = MessageItemBase & {
46
+ msg: V1AiSdkMessagePayload;
47
+ };
48
+ export type MessageItem = LegacyMessageItem | V1AiSdkMessageItem;
62
49
  export interface AgentChatContextValue {
63
50
  messages: MessageItem[];
64
51
  attachments: Attachment[];
@@ -87,6 +74,15 @@ export interface AgentChatContextValue {
87
74
  chatId?: string;
88
75
  noPersistency?: boolean;
89
76
  }
77
+ export type AgentChatUIMessage = UIMessage & {
78
+ metadata?: {
79
+ version?: 1;
80
+ hiddenPrompt?: string;
81
+ };
82
+ };
83
+ export declare const isV1AiSdkMessageItem: (message: MessageItem) => message is V1AiSdkMessageItem;
84
+ export declare const isLegacyMessageItem: (message: MessageItem) => message is LegacyMessageItem;
85
+ export declare const uiMessageToV1MessageItem: (message: AgentChatUIMessage, createdAt?: string) => V1AiSdkMessageItem;
90
86
  export declare const useAgentChat: () => AgentChatContextValue;
91
87
  export interface ToolCardContextValue {
92
88
  open: boolean;
@@ -188,7 +184,7 @@ export interface AgentChatMessageProps {
188
184
  message: MessageItem;
189
185
  index: number;
190
186
  }
191
- export declare function AgentChatMessage({ message, index, ...props }: React.ComponentProps<"div"> & AgentChatMessageProps): import("react/jsx-runtime").JSX.Element;
187
+ export declare function AgentChatMessage({ message, index, ...props }: React.ComponentProps<"div"> & AgentChatMessageProps): import("react/jsx-runtime").JSX.Element | null;
192
188
  export interface AgentChatMessagesProps {
193
189
  asChild?: boolean;
194
190
  autoScroll?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"AAMA,OAAO,EAEL,SAAS,EACT,cAAc,EAOf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAgB,KAAK,gBAAgB,EAA4B,MAAM,yBAAyB,CAAC;AAYxG,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;AACzC,KAAK,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,qBAAqB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,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,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,KAAK,sBAAsB,GAAG;IAC5B,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;CACH,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,GAAG,cAAc,CAAC;AAE5E,UAAU,eAAe;IACvB,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,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAAE,GAAG,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAEhF,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAG5C,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,oBAAoB,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,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;AA0JD,eAAO,MAAM,YAAY,6BAMxB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAID,eAAO,MAAM,WAAW,4BAMvB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAe,EACf,WAAmB,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,IAAI,EACJ,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,aAAa,2CAyB7C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAe,EACf,eAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,eAAe,2CAU/C;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,OAAe,EACf,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,cAAc,2CAS9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,gBAAgB,2CAIxG;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAe,EACf,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,wBAAwB,2CAiB3D;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,gBAAgB,2CAKxG;AAiHD,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;AAiBD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,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;IACxB,eAAe,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAClE;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,kBAAkB,EAClB,cAAc,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,CACtE,CAAC;AAqLF,eAAO,MAAM,aAAa,GAAI,qNAgB3B,kBAAkB,mDAwGpB,CAAC;AA+XF,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,2CA8P/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,2CAEjH;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,2CA0FtD;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
+ {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { HttpAgent } from "@ag-ui/client";
2
+ import { useChat } from "@ai-sdk/react";
3
3
  import { AppVersionService, BlocksApiService, DataApiService, websocketsService } from "@blocksdiy/blocks-client-api";
4
4
  import { getApiHost } from "@blocksdiy/blocks-client-api/envService";
5
5
  import { WorkflowRequest } from "@blocksdiy/blocks-client-api/workflowService";
6
- import { CopilotKit, useCopilotChatInternal } from "@copilotkit/react-core";
7
6
  import { Slot } from "@radix-ui/react-slot";
7
+ import { DefaultChatTransport } from "ai";
8
8
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, } from "react";
9
9
  import { useVoiceCall } from "../hooks/use-voice-call.js";
10
10
  /* public decouple - blocks common */
@@ -36,89 +36,77 @@ const generateId = (length = 10) => {
36
36
  .toString(36)
37
37
  .substring(2, 2 + length);
38
38
  };
39
- class BlocksCopilotHttpAgent extends HttpAgent {
40
- requestHeaders = {};
41
- requestBody = {};
42
- constructor({ url }) {
43
- super({ url, headers: {} });
44
- }
45
- setRequestOptions({ headers, body }) {
46
- this.requestHeaders = headers;
47
- this.requestBody = body;
48
- }
49
- clearRequestOptions() {
50
- this.requestHeaders = {};
51
- this.requestBody = {};
52
- }
53
- requestInit(input) {
54
- const init = super.requestInit({ ...input, ...this.requestBody });
55
- return {
56
- ...init,
57
- headers: {
58
- ...init.headers,
59
- ...this.requestHeaders,
60
- },
61
- };
62
- }
63
- }
64
- const parseMaybeJson = (value) => {
65
- if (typeof value !== "string") {
66
- return value;
67
- }
68
- try {
69
- return JSON.parse(value);
70
- }
71
- catch {
72
- return value;
73
- }
74
- };
75
- const legacyPayloadToCopilotMessage = (message) => ({
76
- id: message.id,
77
- role: message.role === "human" ? "user" : "assistant",
78
- content: message.content ?? "",
79
- metadata: {
80
- version: 1,
81
- hiddenPrompt: message.hiddenContent,
82
- },
83
- });
84
- const messageItemToCopilotMessage = (message) => {
85
- return legacyPayloadToCopilotMessage(message.msg);
86
- };
87
- const normalizeCopilotToolCall = (toolCall, allMessages) => {
88
- const toolCallId = toolCall.id;
89
- const toolName = toolCall.function?.name ?? toolCall.name ?? "tool";
90
- const toolResult = toolCallId
91
- ? allMessages.find((candidate) => candidate.role === "tool" && candidate.toolCallId === toolCallId)
92
- : undefined;
93
- return {
94
- ...toolCall,
95
- type: `tool-${toolName}`,
96
- toolCallId,
97
- toolName,
98
- state: toolResult ? "output-available" : "input-available",
99
- input: parseMaybeJson(toolCall.function?.arguments ?? toolCall.args ?? toolCall.input),
100
- ...(toolResult ? { output: parseMaybeJson(toolResult.content) } : {}),
101
- };
102
- };
103
- const copilotMessageToLegacyPayload = (message, allMessages = []) => {
104
- if (!message.id || (message.role !== "user" && message.role !== "assistant")) {
39
+ const isV1AiSdkMessagePayload = (msg) => "metadata" in msg && msg.metadata?.version === 1;
40
+ export const isV1AiSdkMessageItem = (message) => isV1AiSdkMessagePayload(message.msg);
41
+ export const isLegacyMessageItem = (message) => !isV1AiSdkMessageItem(message);
42
+ const attachmentsToUiFileParts = (attachments = []) => attachments.map((attachment) => ({
43
+ type: "file",
44
+ url: attachment.url,
45
+ filename: attachment.fileName,
46
+ mediaType: attachment.fileType,
47
+ }));
48
+ const uiMessageToLegacyPayload = (message) => {
49
+ const text = message.parts
50
+ .filter((part) => part.type === "text")
51
+ .map((part) => part.text)
52
+ .join("");
53
+ const attachments = message.parts
54
+ .filter((part) => part.type === "file")
55
+ .map((part) => ({
56
+ url: part.url,
57
+ fileName: part.filename ?? "File",
58
+ fileType: part.mediaType ?? "application/octet-stream",
59
+ }));
60
+ if (!text && attachments.length === 0) {
105
61
  return null;
106
62
  }
107
- const toolCalls = message.toolCalls?.map((toolCall) => normalizeCopilotToolCall(toolCall, allMessages)) ?? [];
108
63
  return {
109
64
  id: message.id,
110
65
  role: message.role === "user" ? "human" : "ai",
111
66
  type: "text",
112
- content: message.content ?? "",
67
+ content: text,
68
+ attachments: attachments.length > 0 ? attachments : undefined,
113
69
  hiddenContent: message.metadata?.hiddenPrompt,
114
- payload: toolCalls.length ? { toolCalls } : {},
70
+ payload: {},
71
+ };
72
+ };
73
+ const messageItemToLegacyPayload = (message) => {
74
+ if (isLegacyMessageItem(message)) {
75
+ return message.msg;
76
+ }
77
+ return uiMessageToLegacyPayload(message.msg);
78
+ };
79
+ const messageItemToUIMessage = (message) => {
80
+ if (isV1AiSdkMessageItem(message)) {
81
+ return message.msg;
82
+ }
83
+ return {
84
+ id: message.msg.id,
85
+ role: message.msg.role === "human" ? "user" : "assistant",
86
+ parts: [{ type: "text", text: message.msg.content ?? "" }, ...attachmentsToUiFileParts(message.msg.attachments)],
87
+ metadata: {
88
+ version: 1,
89
+ hiddenPrompt: message.msg.hiddenContent,
90
+ },
91
+ };
92
+ };
93
+ export const uiMessageToV1MessageItem = (message, createdAt = new Date().toISOString()) => {
94
+ return {
95
+ createdAt,
96
+ msg: {
97
+ ...message,
98
+ metadata: { ...message.metadata, version: 1 },
99
+ },
115
100
  };
116
101
  };
117
- const messageItemToLegacyPayload = (message) => message.msg;
118
- const appendCopilotErrorMessage = (messages, error) => {
102
+ const appendAiSdkErrorMessage = (messages, error) => {
119
103
  const text = "Error: " + (error instanceof Error ? error.message : "Unknown error");
120
104
  const lastMessage = messages[messages.length - 1];
121
- if (lastMessage?.role === "assistant" && lastMessage.content === text) {
105
+ const lastText = lastMessage?.parts
106
+ ?.filter((part) => part.type === "text")
107
+ .map((part) => part.text)
108
+ .join("");
109
+ if (lastMessage?.role === "assistant" && lastText === text) {
122
110
  return messages;
123
111
  }
124
112
  return [
@@ -126,33 +114,22 @@ const appendCopilotErrorMessage = (messages, error) => {
126
114
  {
127
115
  id: generateId(10),
128
116
  role: "assistant",
129
- content: text,
117
+ parts: [{ type: "text", text }],
130
118
  metadata: { version: 1 },
131
119
  },
132
120
  ];
133
121
  };
134
122
  const storedMessageToLegacyView = (message) => {
135
- if ("type" in message.msg) {
136
- return message;
137
- }
138
- const legacyPayload = copilotMessageToLegacyPayload(message.msg);
139
- if (legacyPayload) {
123
+ if (isV1AiSdkMessagePayload(message.msg)) {
140
124
  return {
141
- ...message,
125
+ ...uiMessageToV1MessageItem(message.msg, message.createdAt),
142
126
  createdAt: message.createdAt,
143
- msg: legacyPayload,
127
+ id: message.id,
128
+ chatId: message.chatId,
129
+ threadId: message.threadId,
144
130
  };
145
131
  }
146
- return {
147
- ...message,
148
- msg: {
149
- id: message.msg.id ?? generateId(),
150
- role: "ai",
151
- type: "text",
152
- content: "",
153
- payload: {},
154
- },
155
- };
132
+ return message;
156
133
  };
157
134
  export const useAgentChat = () => {
158
135
  const context = useContext(AgentChatContext);
@@ -325,7 +302,7 @@ const resolveAgentChatConfig = async ({ agentChatId, token, }) => {
325
302
  },
326
303
  };
327
304
  };
328
- const flattenLegacyMessages = (messages) => messages.map((m) => ({ ...m, ...m.msg }));
305
+ const flattenLegacyMessages = (messages) => messages.map((m) => (isV1AiSdkMessageItem(m) ? m : { ...m, ...m.msg }));
329
306
  const createInitialAgentMessages = (initialMessages = []) => initialMessages.map((initialMessage) => {
330
307
  const id = generateId();
331
308
  return {
@@ -494,7 +471,7 @@ export const AgentChatRoot = ({ appId, token, agentBlockId, agentHarness, useAge
494
471
  fetchedMessages,
495
472
  };
496
473
  if (isNewAgent) {
497
- return _jsx(CopilotAgentChatRootProvider, { ...commonProps });
474
+ return _jsx(AiSdkAgentChatProvider, { ...commonProps });
498
475
  }
499
476
  return _jsx(LegacyAgentChatProvider, { ...commonProps });
500
477
  };
@@ -621,44 +598,50 @@ function LegacyAgentChatProvider({ appId, token, agentChatId, children, chatId,
621
598
  const inputState = useAgentChatInputState({ isThinking, isFetchingMessages, sendMessage });
622
599
  return (_jsx(AgentChatContextProvider, { ...inputState, messages: flattenLegacyMessages(messages), 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 }));
623
600
  }
624
- function CopilotAgentChatRootProvider({ appId, token, ...props }) {
625
- const copilotRuntimeUrl = `${getApiHost()}/agent-chat-stream`;
626
- const agent = useMemo(() => new BlocksCopilotHttpAgent({ url: copilotRuntimeUrl }), [copilotRuntimeUrl]);
627
- const agents = useMemo(() => ({ default: agent }), [agent]);
628
- return (_jsx(CopilotKit, { runtimeUrl: copilotRuntimeUrl, agents__unsafe_dev_only: agents, children: _jsx(CopilotAgentChatProvider, { ...props, appId: appId, token: token, copilotAgent: agent }) }));
629
- }
630
- function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, children, chatId, noPersistency, currentThreadId, chatContext, chatContextFiles, agentChatData, shortTermMemory = { isEnabled: true, isPersistent: false }, isFetchingMessages, setCurrentThreadId, fetchedMessages, copilotAgent, }) {
601
+ function AiSdkAgentChatProvider({ appId, token, agentBlockId, agentChatId, children, chatId, noPersistency, currentThreadId, chatContext, chatContextFiles, agentChatData, shortTermMemory = { isEnabled: true, isPersistent: false }, isFetchingMessages, setCurrentThreadId, fetchedMessages, }) {
631
602
  const [externalMessages, setExternalMessages] = useState([]);
632
- const copilotMessageCreatedAtByIdRef = useRef({});
633
- const previousCopilotChatIdRef = useRef(undefined);
634
- const copilotChatId = useMemo(() => [appId, agentChatId, chatId, currentThreadId].filter(Boolean).join(":"), [appId, agentChatId, chatId, currentThreadId]);
635
- const { messages: copilotMessages, sendMessage: sendCopilotMessage, setMessages: setCopilotMessages, isLoading: isCopilotLoading, } = useCopilotChatInternal();
603
+ const aiMessageCreatedAtByIdRef = useRef({});
604
+ const previousAiChatIdRef = useRef(undefined);
605
+ const aiChatTransport = useMemo(() => new DefaultChatTransport({
606
+ api: `${getApiHost()}/agent-chat-stream`,
607
+ credentials: "include",
608
+ prepareSendMessagesRequest: ({ body, id, messages, trigger, messageId }) => {
609
+ const submittedMessage = messages[messages.length - 1];
610
+ const requestMessages = Array.isArray(body?.messages) ? body.messages : [];
611
+ return {
612
+ body: {
613
+ ...body,
614
+ id,
615
+ trigger,
616
+ messages: submittedMessage ? [...requestMessages, submittedMessage] : requestMessages,
617
+ ...(messageId ? { messageId } : {}),
618
+ },
619
+ };
620
+ },
621
+ }), []);
622
+ const aiChatId = useMemo(() => [appId, agentChatId, chatId, currentThreadId].filter(Boolean).join(":"), [appId, agentChatId, chatId, currentThreadId]);
623
+ const { messages: aiMessages, sendMessage: sendAiSdkMessage, setMessages: setAiMessages, status: aiChatStatus, } = useChat({
624
+ id: aiChatId,
625
+ transport: aiChatTransport,
626
+ onError: (error) => {
627
+ setAiMessages((prev) => appendAiSdkErrorMessage(prev, error));
628
+ },
629
+ });
636
630
  useEffect(() => {
637
- if (previousCopilotChatIdRef.current === copilotChatId) {
631
+ if (previousAiChatIdRef.current === aiChatId) {
638
632
  return;
639
633
  }
640
- previousCopilotChatIdRef.current = copilotChatId;
641
- copilotMessageCreatedAtByIdRef.current = {};
634
+ previousAiChatIdRef.current = aiChatId;
635
+ aiMessageCreatedAtByIdRef.current = {};
642
636
  setExternalMessages([]);
643
- setCopilotMessages([]);
644
- }, [copilotChatId, setCopilotMessages]);
645
- const copilotMessageItems = useMemo(() => copilotMessages
646
- .map((message) => {
647
- const legacyPayload = copilotMessageToLegacyPayload(message, copilotMessages);
648
- if (!legacyPayload) {
649
- return null;
650
- }
651
- copilotMessageCreatedAtByIdRef.current[legacyPayload.id] ??= new Date().toISOString();
652
- return {
653
- createdAt: copilotMessageCreatedAtByIdRef.current[legacyPayload.id],
654
- msg: legacyPayload,
655
- };
656
- })
657
- .filter((message) => Boolean(message)), [copilotMessages]);
637
+ setAiMessages([]);
638
+ }, [aiChatId, setAiMessages]);
658
639
  const messages = useMemo(() => {
659
640
  const fetchedMessageItems = fetchedMessages.map(storedMessageToLegacyView);
660
641
  const nextMessages = mergeMessageItemsById(fetchedMessageItems, externalMessages);
661
- for (const messageItem of copilotMessageItems) {
642
+ for (const aiMessage of aiMessages) {
643
+ aiMessageCreatedAtByIdRef.current[aiMessage.id] ??= new Date().toISOString();
644
+ const messageItem = uiMessageToV1MessageItem(aiMessage, aiMessageCreatedAtByIdRef.current[aiMessage.id]);
662
645
  const existingIndex = nextMessages.findIndex((message) => message.msg.id === messageItem.msg.id);
663
646
  if (existingIndex !== -1) {
664
647
  nextMessages[existingIndex] = {
@@ -673,30 +656,26 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
673
656
  }
674
657
  nextMessages.sort((a, b) => Date.parse(a.createdAt) - Date.parse(b.createdAt));
675
658
  return nextMessages;
676
- }, [copilotMessageItems, externalMessages, fetchedMessages]);
677
- const isThinking = isCopilotLoading;
659
+ }, [aiMessages, externalMessages, fetchedMessages]);
660
+ const isThinking = aiChatStatus === "submitted" || aiChatStatus === "streaming";
678
661
  const addExternalMessages = useCallback((messagesToAdd) => {
679
662
  const normalizedMessages = messagesToAdd.map(storedMessageToLegacyView);
680
663
  setExternalMessages((prevMessages) => mergeMessageItemsById(prevMessages, normalizedMessages));
681
664
  }, []);
682
- const addCopilotErrorMessage = useCallback((error) => {
683
- setCopilotMessages(appendCopilotErrorMessage(copilotMessages, error));
684
- }, [copilotMessages, setCopilotMessages]);
665
+ const addAiSdkErrorMessage = useCallback((error) => {
666
+ setAiMessages((prev) => appendAiSdkErrorMessage(prev, error));
667
+ }, [setAiMessages]);
685
668
  const sendMessage = useCallback(async ({ content, hiddenContent, ...message }) => {
686
669
  try {
687
670
  const messageId = generateId();
688
671
  const uploadedAttachments = await uploadAttachments({ attachments: message.attachments, appId, token });
689
- const userCopilotMessage = {
672
+ const userUiMessage = {
690
673
  id: messageId,
691
674
  role: "user",
692
- content: content ?? "",
675
+ parts: [{ type: "text", text: content ?? "" }, ...attachmentsToUiFileParts(uploadedAttachments)],
693
676
  metadata: { version: 1, hiddenPrompt: hiddenContent ?? undefined },
694
677
  };
695
- const requestMessages = messages
696
- .map(messageItemToCopilotMessage)
697
- .filter((requestMessage) => Boolean(requestMessage));
698
- setCopilotMessages(requestMessages);
699
- copilotAgent.setRequestOptions({
678
+ await sendAiSdkMessage(userUiMessage, {
700
679
  headers: {
701
680
  ...(token ? { Authorization: `Bearer ${token}` } : {}),
702
681
  ...(AppVersionService.getCurrentVersionNumber()
@@ -715,33 +694,25 @@ function CopilotAgentChatProvider({ appId, token, agentBlockId, agentChatId, chi
715
694
  shortTermMemory,
716
695
  chatContextFiles,
717
696
  chatContext: formatChatContext(chatContext),
718
- files: uploadedAttachments,
719
- messages: [...requestMessages, userCopilotMessage],
720
- messageId,
697
+ messages: messages.map(messageItemToUIMessage),
721
698
  },
722
699
  });
723
- await sendCopilotMessage(userCopilotMessage);
724
700
  }
725
701
  catch (error) {
726
- addCopilotErrorMessage(error);
727
- }
728
- finally {
729
- copilotAgent.clearRequestOptions();
702
+ addAiSdkErrorMessage(error);
730
703
  }
731
704
  }, [
732
- addCopilotErrorMessage,
705
+ addAiSdkErrorMessage,
733
706
  agentBlockId,
734
707
  agentChatId,
735
708
  appId,
736
709
  chatId,
737
710
  chatContext,
738
711
  chatContextFiles,
739
- copilotAgent,
740
712
  currentThreadId,
741
713
  messages,
742
714
  noPersistency,
743
- sendCopilotMessage,
744
- setCopilotMessages,
715
+ sendAiSdkMessage,
745
716
  shortTermMemory,
746
717
  token,
747
718
  ]);
@@ -933,7 +904,7 @@ export function AgentChatVoice({ children }) {
933
904
  return;
934
905
  }
935
906
  const conversationHistory = messagesRef.current
936
- .filter((m) => Boolean(m.msg.content) && m.msg.type === "text" && !m.msg.payload?.isVoiceMarker)
907
+ .filter((m) => isLegacyMessageItem(m) && Boolean(m.msg.content) && m.msg.type === "text" && !m.msg.payload?.isVoiceMarker)
937
908
  .slice(-20)
938
909
  .map((m) => ({
939
910
  role: (m.msg.role === "human" ? "user" : "assistant"),
@@ -973,7 +944,18 @@ export function AgentChatVoice({ children }) {
973
944
  say: voiceSay,
974
945
  }, children: children }));
975
946
  }
947
+ const hasRenderableMessageContent = (message) => {
948
+ if (isV1AiSdkMessageItem(message)) {
949
+ return Boolean(message.msg.parts.length);
950
+ }
951
+ const hasTextContent = Boolean(message.msg.content);
952
+ const hasAttachments = Boolean(message.msg.attachments?.length);
953
+ return hasTextContent || hasAttachments;
954
+ };
976
955
  export function AgentChatMessage({ message, index, ...props }) {
956
+ if (!hasRenderableMessageContent(message)) {
957
+ return null;
958
+ }
977
959
  return _jsx("div", { "data-message-index": index, "data-message-role": message.msg.role, ...props });
978
960
  }
979
961
  export function AgentChatMessages({ asChild = false, autoScroll = true, scrollAreaClassName, ...props }) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocksdiy/react-common",
3
- "version": "1.14.0",
3
+ "version": "1.14.1",
4
4
  "type": "module",
5
5
  "description": "React common",
6
6
  "keywords": [],
@@ -30,10 +30,10 @@
30
30
  ]
31
31
  },
32
32
  "dependencies": {
33
- "@ag-ui/client": "^0.0.53",
34
- "@copilotkit/react-core": "^1.57.1",
33
+ "@ai-sdk/react": "^3.0.177",
35
34
  "@radix-ui/react-slot": "^1.2.3",
36
35
  "@vapi-ai/web": "^2.5.2",
36
+ "ai": "^6.0.175",
37
37
  "penpal": "^7.0.6",
38
38
  "react": "^19.2.4",
39
39
  "@blocksdiy/blocks-client-api": "1.5.0"