@assistant-ui/react-ai-sdk 0.10.4 → 0.10.6
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/frontendTools.d.ts +11 -0
- package/dist/frontendTools.d.ts.map +1 -0
- package/dist/frontendTools.js +15 -0
- package/dist/frontendTools.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/rsc/VercelRSCAdapter.d.ts +1 -2
- package/dist/rsc/VercelRSCAdapter.d.ts.map +1 -1
- package/dist/rsc/VercelRSCAdapter.js +0 -1
- package/dist/rsc/index.d.ts +0 -1
- package/dist/rsc/index.d.ts.map +1 -1
- package/dist/rsc/index.js +0 -2
- package/dist/rsc/index.js.map +1 -1
- package/dist/ui/getVercelAIMessages.d.ts.map +1 -1
- package/dist/ui/getVercelAIMessages.js +2 -2
- package/dist/ui/getVercelAIMessages.js.map +1 -1
- package/dist/ui/use-assistant/useVercelUseAssistantRuntime.d.ts.map +1 -1
- package/dist/ui/use-assistant/useVercelUseAssistantRuntime.js +2 -0
- package/dist/ui/use-assistant/useVercelUseAssistantRuntime.js.map +1 -1
- package/dist/ui/use-chat/useVercelUseChatRuntime.d.ts.map +1 -1
- package/dist/ui/use-chat/useVercelUseChatRuntime.js +2 -0
- package/dist/ui/use-chat/useVercelUseChatRuntime.js.map +1 -1
- package/dist/ui/utils/convertMessage.d.ts.map +1 -1
- package/dist/ui/utils/convertMessage.js +3 -1
- package/dist/ui/utils/convertMessage.js.map +1 -1
- package/dist/ui/utils/useInputSync.d.ts.map +1 -1
- package/dist/ui/utils/useInputSync.js +2 -0
- package/dist/ui/utils/useInputSync.js.map +1 -1
- package/package.json +7 -6
- package/src/frontendTools.ts +15 -0
- package/src/index.ts +1 -0
- package/src/rsc/VercelRSCAdapter.tsx +1 -3
- package/src/rsc/index.ts +0 -1
- package/src/ui/getVercelAIMessages.tsx +2 -2
- package/src/ui/use-assistant/useVercelUseAssistantRuntime.tsx +2 -0
- package/src/ui/use-chat/useVercelUseChatRuntime.tsx +2 -0
- package/src/ui/utils/convertMessage.ts +9 -7
- package/src/ui/utils/useInputSync.tsx +2 -0
- package/dist/rsc/getVercelRSCMessage.d.ts +0 -7
- package/dist/rsc/getVercelRSCMessage.d.ts.map +0 -1
- package/dist/rsc/getVercelRSCMessage.js +0 -11
- package/dist/rsc/getVercelRSCMessage.js.map +0 -1
- package/src/rsc/getVercelRSCMessage.tsx +0 -12
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { JSONSchema7 } from "json-schema";
|
|
2
|
+
export declare const frontendTools: (tools: Record<string, {
|
|
3
|
+
description?: string;
|
|
4
|
+
parameters: JSONSchema7;
|
|
5
|
+
}>) => {
|
|
6
|
+
[k: string]: {
|
|
7
|
+
parameters: import("ai").Schema<unknown>;
|
|
8
|
+
description?: string;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=frontendTools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontendTools.d.ts","sourceRoot":"","sources":["../src/frontendTools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,eAAO,MAAM,aAAa,GACxB,OAAO,MAAM,CAAC,MAAM,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,CAAC;;;;;CAUvE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/frontendTools.ts
|
|
2
|
+
import { jsonSchema } from "@ai-sdk/ui-utils";
|
|
3
|
+
var frontendTools = (tools) => Object.fromEntries(
|
|
4
|
+
Object.entries(tools).map(([name, tool]) => [
|
|
5
|
+
name,
|
|
6
|
+
{
|
|
7
|
+
...tool.description ? { description: tool.description } : void 0,
|
|
8
|
+
parameters: jsonSchema(tool.parameters)
|
|
9
|
+
}
|
|
10
|
+
])
|
|
11
|
+
);
|
|
12
|
+
export {
|
|
13
|
+
frontendTools
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=frontendTools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/frontendTools.ts"],"sourcesContent":["import { jsonSchema } from \"@ai-sdk/ui-utils\";\nimport type { JSONSchema7 } from \"json-schema\";\n\nexport const frontendTools = (\n tools: Record<string, { description?: string; parameters: JSONSchema7 }>,\n) =>\n Object.fromEntries(\n Object.entries(tools).map(([name, tool]) => [\n name,\n {\n ...(tool.description ? { description: tool.description } : undefined),\n parameters: jsonSchema(tool.parameters),\n },\n ]),\n );\n"],"mappings":";AAAA,SAAS,kBAAkB;AAGpB,IAAM,gBAAgB,CAC3B,UAEA,OAAO;AAAA,EACL,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM;AAAA,IAC1C;AAAA,IACA;AAAA,MACE,GAAI,KAAK,cAAc,EAAE,aAAa,KAAK,YAAY,IAAI;AAAA,MAC3D,YAAY,WAAW,KAAK,UAAU;AAAA,IACxC;AAAA,EACF,CAAC;AACH;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export * from "./rsc";
|
|
|
2
2
|
export * from "./ui";
|
|
3
3
|
export * from "./useChatRuntime";
|
|
4
4
|
export { toLanguageModelMessages, toLanguageModelTools, fromLanguageModelMessages, fromLanguageModelTools, useDangerousInBrowserRuntime, } from "@assistant-ui/react-edge";
|
|
5
|
+
export { frontendTools } from "./frontendTools";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,MAAM,CAAC;AACrB,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,MAAM,CAAC;AACrB,cAAc,kBAAkB,CAAC;AAEjC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,9 +9,11 @@ import {
|
|
|
9
9
|
fromLanguageModelTools,
|
|
10
10
|
useDangerousInBrowserRuntime
|
|
11
11
|
} from "@assistant-ui/react-edge";
|
|
12
|
+
import { frontendTools } from "./frontendTools.js";
|
|
12
13
|
export {
|
|
13
14
|
fromLanguageModelMessages,
|
|
14
15
|
fromLanguageModelTools,
|
|
16
|
+
frontendTools,
|
|
15
17
|
toLanguageModelMessages,
|
|
16
18
|
toLanguageModelTools,
|
|
17
19
|
useDangerousInBrowserRuntime
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./rsc\";\nexport * from \"./ui\";\nexport * from \"./useChatRuntime\";\n\nexport {\n toLanguageModelMessages,\n toLanguageModelTools,\n fromLanguageModelMessages,\n fromLanguageModelTools,\n useDangerousInBrowserRuntime,\n} from \"@assistant-ui/react-edge\";\n"],"mappings":";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./rsc\";\nexport * from \"./ui\";\nexport * from \"./useChatRuntime\";\n\nexport {\n toLanguageModelMessages,\n toLanguageModelTools,\n fromLanguageModelMessages,\n fromLanguageModelTools,\n useDangerousInBrowserRuntime,\n} from \"@assistant-ui/react-edge\";\nexport { frontendTools } from \"./frontendTools\";\n"],"mappings":";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,qBAAqB;","names":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { AppendMessage } from "@assistant-ui/react";
|
|
1
|
+
import type { AppendMessage, ExternalStoreAdapter } from "@assistant-ui/react";
|
|
2
2
|
import type { VercelRSCMessage } from "./VercelRSCMessage";
|
|
3
|
-
import { ExternalStoreAdapter } from "@assistant-ui/react";
|
|
4
3
|
type RSCMessageConverter<T> = {
|
|
5
4
|
convertMessage: (message: T) => VercelRSCMessage;
|
|
6
5
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VercelRSCAdapter.d.ts","sourceRoot":"","sources":["../../src/rsc/VercelRSCAdapter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"VercelRSCAdapter.d.ts","sourceRoot":"","sources":["../../src/rsc/VercelRSCAdapter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,mBAAmB,CAAC,CAAC,IAAI;IAC5B,cAAc,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,gBAAgB,CAAC;CAClD,CAAC;AAEF,KAAK,oBAAoB,CAAC,CAAC,IAAI;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,CAAC,EAAE,CAAC;IAEd,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACjE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IACpE,cAAc,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,gBAAgB,CAAC,GAAG,SAAS,CAAC;IAEhE,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,gBAAgB,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAC1E,CAAC,CAAC,SAAS,gBAAgB,GAAG,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/rsc/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export { useVercelRSCRuntime } from "./useVercelRSCRuntime";
|
|
2
|
-
export { getVercelRSCMessage } from "./getVercelRSCMessage";
|
|
3
2
|
export type { VercelRSCAdapter } from "./VercelRSCAdapter";
|
|
4
3
|
export type { VercelRSCMessage } from "./VercelRSCMessage";
|
|
5
4
|
export { RSCDisplay } from "./RSCDisplay";
|
package/dist/rsc/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rsc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rsc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/rsc/index.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
// src/rsc/index.ts
|
|
2
2
|
import { useVercelRSCRuntime } from "./useVercelRSCRuntime.js";
|
|
3
|
-
import { getVercelRSCMessage } from "./getVercelRSCMessage.js";
|
|
4
3
|
import { RSCDisplay } from "./RSCDisplay.js";
|
|
5
4
|
export {
|
|
6
5
|
RSCDisplay,
|
|
7
|
-
getVercelRSCMessage,
|
|
8
6
|
useVercelRSCRuntime
|
|
9
7
|
};
|
|
10
8
|
//# sourceMappingURL=index.js.map
|
package/dist/rsc/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rsc/index.ts"],"sourcesContent":["export { useVercelRSCRuntime } from \"./useVercelRSCRuntime\";\nexport
|
|
1
|
+
{"version":3,"sources":["../../src/rsc/index.ts"],"sourcesContent":["export { useVercelRSCRuntime } from \"./useVercelRSCRuntime\";\nexport type { VercelRSCAdapter } from \"./VercelRSCAdapter\";\nexport type { VercelRSCMessage } from \"./VercelRSCMessage\";\nexport { RSCDisplay } from \"./RSCDisplay\";\n"],"mappings":";AAAA,SAAS,2BAA2B;AAGpC,SAAS,kBAAkB;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVercelAIMessages.d.ts","sourceRoot":"","sources":["../../src/ui/getVercelAIMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,mBAAmB,GAAI,SAAS,aAAa,
|
|
1
|
+
{"version":3,"file":"getVercelAIMessages.d.ts","sourceRoot":"","sources":["../../src/ui/getVercelAIMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,eAAO,MAAM,mBAAmB,GAAI,SAAS,aAAa,KACZ,OAAO,EACpD,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// src/ui/getVercelAIMessages.tsx
|
|
2
2
|
import {
|
|
3
|
-
|
|
3
|
+
getExternalStoreMessages
|
|
4
4
|
} from "@assistant-ui/react";
|
|
5
5
|
var getVercelAIMessages = (message) => {
|
|
6
|
-
return
|
|
6
|
+
return getExternalStoreMessages(message);
|
|
7
7
|
};
|
|
8
8
|
export {
|
|
9
9
|
getVercelAIMessages
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ui/getVercelAIMessages.tsx"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"sources":["../../src/ui/getVercelAIMessages.tsx"],"sourcesContent":["import {\n getExternalStoreMessages,\n type ThreadMessage,\n} from \"@assistant-ui/react\";\nimport type { Message } from \"@ai-sdk/ui-utils\";\n\nexport const getVercelAIMessages = (message: ThreadMessage) => {\n return getExternalStoreMessages(message) as Message[];\n};\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAEK;AAGA,IAAM,sBAAsB,CAAC,YAA2B;AAC7D,SAAO,yBAAyB,OAAO;AACzC;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVercelUseAssistantRuntime.d.ts","sourceRoot":"","sources":["../../../src/ui/use-assistant/useVercelUseAssistantRuntime.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useVercelUseAssistantRuntime.d.ts","sourceRoot":"","sources":["../../../src/ui/use-assistant/useVercelUseAssistantRuntime.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKlD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EACL,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,GAClE,SAAS,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,kBAAkB,UAAU,CAAC,OAAO,YAAY,CAAC,EACjD,UAAS,oBAAyB,mDAyCnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ui/use-assistant/useVercelUseAssistantRuntime.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/use-assistant/useVercelUseAssistantRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport type { useAssistant } from \"@ai-sdk/react\";\nimport { useExternalStoreRuntime } from \"@assistant-ui/react\";\nimport { useInputSync } from \"../utils/useInputSync\";\nimport { toCreateMessage } from \"../utils/toCreateMessage\";\nimport { vercelAttachmentAdapter } from \"../utils/vercelAttachmentAdapter\";\nimport { ExternalStoreAdapter } from \"@assistant-ui/react\";\nimport { AISDKMessageConverter } from \"../utils/convertMessage\";\n\nexport type VercelUseChatAdapter = {\n adapters?:\n | Omit<NonNullable<ExternalStoreAdapter[\"adapters\"]>, \"attachments\">\n | undefined;\n};\n\nexport const useVercelUseAssistantRuntime = (\n assistantHelpers: ReturnType<typeof useAssistant>,\n adapter: VercelUseChatAdapter = {},\n) => {\n const messages = AISDKMessageConverter.useThreadMessages({\n messages: assistantHelpers.messages,\n isRunning: assistantHelpers.status === \"in_progress\",\n });\n\n const runtime = useExternalStoreRuntime({\n isRunning: assistantHelpers.status === \"in_progress\",\n messages,\n onCancel: async () => assistantHelpers.stop(),\n onNew: async (message) => {\n await assistantHelpers.append(await toCreateMessage(message));\n },\n adapters: {\n attachments: vercelAttachmentAdapter,\n ...adapter.adapters,\n threadList: new Proxy(adapter.adapters?.threadList ?? {}, {\n get(target, prop, receiver) {\n if (prop === \"onSwitchToNewThread\") {\n return () => {\n assistantHelpers.messages = [];\n assistantHelpers.input = \"\";\n assistantHelpers.setMessages([]);\n assistantHelpers.setInput(\"\");\n\n if (typeof target.onSwitchToNewThread === \"function\") {\n return target.onSwitchToNewThread.call(target);\n }\n };\n }\n\n return Reflect.get(target, prop, receiver);\n },\n }),\n },\n });\n\n useInputSync(assistantHelpers, runtime);\n\n return runtime;\n};\n"],"mappings":";;;AAGA,SAAS,+BAA+B;AACxC,SAAS,oBAAoB;AAC7B,SAAS,uBAAuB;AAChC,SAAS,+BAA+B;AAExC,SAAS,6BAA6B;AAQ/B,IAAM,+BAA+B,CAC1C,kBACA,UAAgC,CAAC,MAC9B;AACH,QAAM,WAAW,sBAAsB,kBAAkB;AAAA,IACvD,UAAU,iBAAiB;AAAA,IAC3B,WAAW,iBAAiB,WAAW;AAAA,EACzC,CAAC;AAED,QAAM,UAAU,wBAAwB;AAAA,IACtC,WAAW,iBAAiB,WAAW;AAAA,IACvC;AAAA,IACA,UAAU,YAAY,iBAAiB,KAAK;AAAA,IAC5C,OAAO,OAAO,YAAY;AACxB,YAAM,iBAAiB,OAAO,MAAM,gBAAgB,OAAO,CAAC;AAAA,IAC9D;AAAA,IACA,UAAU;AAAA,MACR,aAAa;AAAA,MACb,GAAG,QAAQ;AAAA,MACX,YAAY,IAAI,MAAM,QAAQ,UAAU,cAAc,CAAC,GAAG;AAAA,QACxD,IAAI,QAAQ,MAAM,UAAU;AAC1B,cAAI,SAAS,uBAAuB;AAClC,mBAAO,MAAM;AACX,+BAAiB,WAAW,CAAC;AAC7B,+BAAiB,QAAQ;AACzB,+BAAiB,YAAY,CAAC,CAAC;AAC/B,+BAAiB,SAAS,EAAE;AAE5B,kBAAI,OAAO,OAAO,wBAAwB,YAAY;AACpD,uBAAO,OAAO,oBAAoB,KAAK,MAAM;AAAA,cAC/C;AAAA,YACF;AAAA,UACF;AAEA,iBAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA,QAC3C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,eAAa,kBAAkB,OAAO;AAEtC,SAAO;AACT;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVercelUseChatRuntime.d.ts","sourceRoot":"","sources":["../../../src/ui/use-chat/useVercelUseChatRuntime.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useVercelUseChatRuntime.d.ts","sourceRoot":"","sources":["../../../src/ui/use-chat/useVercelUseChatRuntime.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAO7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAK3D,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EACL,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,CAAC,GAClE,SAAS,CAAC;IACd,qBAAqB,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,aAAa,UAAU,CAAC,OAAO,OAAO,CAAC,EACvC,UAAS,oBAAyB,mDAqEnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ui/use-chat/useVercelUseChatRuntime.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/use-chat/useVercelUseChatRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport type { useChat } from \"@ai-sdk/react\";\nimport { useExternalStoreRuntime } from \"@assistant-ui/react\";\nimport { useInputSync } from \"../utils/useInputSync\";\nimport { sliceMessagesUntil } from \"../utils/sliceMessagesUntil\";\nimport { toCreateMessage } from \"../utils/toCreateMessage\";\nimport { vercelAttachmentAdapter } from \"../utils/vercelAttachmentAdapter\";\nimport { getVercelAIMessages } from \"../getVercelAIMessages\";\nimport { ExternalStoreAdapter } from \"@assistant-ui/react\";\nimport { useState } from \"react\";\nimport { generateId } from \"@ai-sdk/ui-utils\";\nimport { AISDKMessageConverter } from \"../utils/convertMessage\";\n\nexport type VercelUseChatAdapter = {\n adapters?:\n | Omit<NonNullable<ExternalStoreAdapter[\"adapters\"]>, \"attachments\">\n | undefined;\n unstable_joinStrategy?: \"concat-content\" | \"none\";\n};\n\nexport const useVercelUseChatRuntime = (\n chatHelpers: ReturnType<typeof useChat>,\n adapter: VercelUseChatAdapter = {},\n) => {\n const messages = AISDKMessageConverter.useThreadMessages({\n isRunning:\n chatHelpers.status === \"submitted\" || chatHelpers.status == \"streaming\",\n messages: chatHelpers.messages,\n joinStrategy: adapter.unstable_joinStrategy,\n });\n\n const [threadId, setThreadId] = useState<string>(generateId());\n\n const runtime = useExternalStoreRuntime({\n isRunning: chatHelpers.isLoading,\n messages,\n setMessages: (messages) =>\n chatHelpers.setMessages(messages.map(getVercelAIMessages).flat()),\n onCancel: async () => chatHelpers.stop(),\n onNew: async (message) => {\n await chatHelpers.append(await toCreateMessage(message));\n },\n onEdit: async (message) => {\n const newMessages = sliceMessagesUntil(\n chatHelpers.messages,\n message.parentId,\n );\n chatHelpers.setMessages(newMessages);\n\n await chatHelpers.append(await toCreateMessage(message));\n },\n onReload: async (parentId: string | null) => {\n const newMessages = sliceMessagesUntil(chatHelpers.messages, parentId);\n chatHelpers.setMessages(newMessages);\n\n await chatHelpers.reload();\n },\n onAddToolResult: ({ toolCallId, result }) => {\n chatHelpers.addToolResult({ toolCallId, result });\n },\n adapters: {\n attachments: vercelAttachmentAdapter,\n ...adapter.adapters,\n threadList: new Proxy(adapter.adapters?.threadList ?? {}, {\n get(target, prop, receiver) {\n if (prop === \"threadId\") {\n return target.threadId ?? threadId;\n }\n if (prop === \"onSwitchToNewThread\") {\n return () => {\n chatHelpers.messages = [];\n chatHelpers.input = \"\";\n chatHelpers.setMessages([]);\n chatHelpers.setInput(\"\");\n setThreadId(generateId());\n\n if (typeof target.onSwitchToNewThread === \"function\") {\n return target.onSwitchToNewThread.call(target);\n }\n };\n }\n\n return Reflect.get(target, prop, receiver);\n },\n }),\n },\n });\n\n useInputSync(chatHelpers, runtime);\n\n return runtime;\n};\n"],"mappings":";;;AAGA,SAAS,+BAA+B;AACxC,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AACnC,SAAS,uBAAuB;AAChC,SAAS,+BAA+B;AACxC,SAAS,2BAA2B;AAEpC,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,6BAA6B;AAS/B,IAAM,0BAA0B,CACrC,aACA,UAAgC,CAAC,MAC9B;AACH,QAAM,WAAW,sBAAsB,kBAAkB;AAAA,IACvD,WACE,YAAY,WAAW,eAAe,YAAY,UAAU;AAAA,IAC9D,UAAU,YAAY;AAAA,IACtB,cAAc,QAAQ;AAAA,EACxB,CAAC;AAED,QAAM,CAAC,UAAU,WAAW,IAAI,SAAiB,WAAW,CAAC;AAE7D,QAAM,UAAU,wBAAwB;AAAA,IACtC,WAAW,YAAY;AAAA,IACvB;AAAA,IACA,aAAa,CAACA,cACZ,YAAY,YAAYA,UAAS,IAAI,mBAAmB,EAAE,KAAK,CAAC;AAAA,IAClE,UAAU,YAAY,YAAY,KAAK;AAAA,IACvC,OAAO,OAAO,YAAY;AACxB,YAAM,YAAY,OAAO,MAAM,gBAAgB,OAAO,CAAC;AAAA,IACzD;AAAA,IACA,QAAQ,OAAO,YAAY;AACzB,YAAM,cAAc;AAAA,QAClB,YAAY;AAAA,QACZ,QAAQ;AAAA,MACV;AACA,kBAAY,YAAY,WAAW;AAEnC,YAAM,YAAY,OAAO,MAAM,gBAAgB,OAAO,CAAC;AAAA,IACzD;AAAA,IACA,UAAU,OAAO,aAA4B;AAC3C,YAAM,cAAc,mBAAmB,YAAY,UAAU,QAAQ;AACrE,kBAAY,YAAY,WAAW;AAEnC,YAAM,YAAY,OAAO;AAAA,IAC3B;AAAA,IACA,iBAAiB,CAAC,EAAE,YAAY,OAAO,MAAM;AAC3C,kBAAY,cAAc,EAAE,YAAY,OAAO,CAAC;AAAA,IAClD;AAAA,IACA,UAAU;AAAA,MACR,aAAa;AAAA,MACb,GAAG,QAAQ;AAAA,MACX,YAAY,IAAI,MAAM,QAAQ,UAAU,cAAc,CAAC,GAAG;AAAA,QACxD,IAAI,QAAQ,MAAM,UAAU;AAC1B,cAAI,SAAS,YAAY;AACvB,mBAAO,OAAO,YAAY;AAAA,UAC5B;AACA,cAAI,SAAS,uBAAuB;AAClC,mBAAO,MAAM;AACX,0BAAY,WAAW,CAAC;AACxB,0BAAY,QAAQ;AACpB,0BAAY,YAAY,CAAC,CAAC;AAC1B,0BAAY,SAAS,EAAE;AACvB,0BAAY,WAAW,CAAC;AAExB,kBAAI,OAAO,OAAO,wBAAwB,YAAY;AACpD,uBAAO,OAAO,oBAAoB,KAAK,MAAM;AAAA,cAC/C;AAAA,YACF;AAAA,UACF;AAEA,iBAAO,QAAQ,IAAI,QAAQ,MAAM,QAAQ;AAAA,QAC3C;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,eAAa,aAAa,OAAO;AAEjC,SAAO;AACT;","names":["messages"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertMessage.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/convertMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"convertMessage.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/convertMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAW3C,eAAO,MAAM,qBAAqB;;;;;;;0HAUS,sDACrC;yHAGU,sDAAa;;;CAsI5B,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// src/ui/utils/convertMessage.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
unstable_createMessageConverter
|
|
4
|
+
} from "@assistant-ui/react";
|
|
3
5
|
var AISDKMessageConverter = unstable_createMessageConverter(
|
|
4
6
|
(message) => {
|
|
5
7
|
switch (message.role) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ui/utils/convertMessage.ts"],"sourcesContent":["import { Message } from \"@ai-sdk/ui-utils\";\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/utils/convertMessage.ts"],"sourcesContent":["import { Message } from \"@ai-sdk/ui-utils\";\nimport {\n unstable_createMessageConverter,\n type ReasoningContentPart,\n type ToolCallContentPart,\n type TextContentPart,\n type CompleteAttachment,\n type SourceContentPart,\n type FileContentPart,\n} from \"@assistant-ui/react\";\n\nexport const AISDKMessageConverter = unstable_createMessageConverter(\n (message: Message) => {\n switch (message.role) {\n case \"user\":\n return {\n role: \"user\",\n id: message.id,\n createdAt: message.createdAt,\n content: message.content,\n\n attachments: message.experimental_attachments?.map(\n (attachment, idx) =>\n ({\n id: idx.toString(),\n type: \"file\",\n name: attachment.name ?? attachment.url,\n content: [],\n contentType: attachment.contentType ?? \"unknown/unknown\",\n status: { type: \"complete\" },\n }) satisfies CompleteAttachment,\n ),\n };\n\n case \"system\":\n return {\n role: \"system\",\n id: message.id,\n createdAt: message.createdAt,\n content: message.content,\n };\n\n case \"assistant\":\n return {\n role: \"assistant\",\n id: message.id,\n createdAt: message.createdAt,\n content:\n message.parts\n ?.filter((p) => p.type !== \"step-start\")\n .map((part) => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return {\n type: \"text\",\n text: part.text,\n } satisfies TextContentPart;\n case \"tool-invocation\":\n return {\n type: \"tool-call\",\n toolName: part.toolInvocation.toolName,\n toolCallId: part.toolInvocation.toolCallId,\n argsText: JSON.stringify(part.toolInvocation.args),\n args: part.toolInvocation.args,\n result:\n part.toolInvocation.state === \"result\" &&\n part.toolInvocation.result,\n } satisfies ToolCallContentPart;\n case \"reasoning\":\n return {\n type: \"reasoning\",\n text: part.reasoning,\n } satisfies ReasoningContentPart;\n\n case \"source\":\n return {\n type: \"source\",\n ...part.source,\n } satisfies SourceContentPart;\n\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n } satisfies FileContentPart;\n\n default: {\n const _unsupported: never = type;\n throw new Error(\n `You have a message with an unsupported part type. The type ${_unsupported} is not supported.`,\n );\n }\n }\n }) ??\n (message.content\n ? [\n {\n type: \"text\",\n text: message.content,\n } satisfies TextContentPart,\n ]\n : []),\n metadata: {\n unstable_annotations: message.annotations,\n unstable_data: Array.isArray(message.data)\n ? message.data\n : message.data\n ? [message.data]\n : undefined,\n },\n };\n\n case \"data\": {\n type MaybeSupportedDataMessage =\n | { type?: \"unsafe_other\" }\n | ToolCallContentPart\n | {\n type: \"tool-result\";\n toolCallId: string;\n result: any;\n };\n\n if (\n !message.data ||\n !(typeof message.data === \"object\") ||\n Array.isArray(message.data)\n )\n return [];\n\n const data = message.data as MaybeSupportedDataMessage;\n\n if (data.type === \"tool-call\") {\n return {\n role: \"assistant\",\n id: message.id,\n createdAt: message.createdAt,\n content: [data],\n };\n } else if (data.type === \"tool-result\") {\n return {\n role: \"tool\",\n id: message.id,\n toolCallId: data.toolCallId,\n result: data.result,\n };\n }\n return [];\n }\n\n default:\n // TODO handle tool and function messages\n const _unsupported: \"function\" | \"tool\" = message.role;\n throw new Error(\n `You have a message with an unsupported role. The role ${_unsupported} is not supported.`,\n );\n }\n },\n);\n"],"mappings":"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","names":["_unsupported"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputSync.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/useInputSync.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useInputSync.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/useInputSync.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,KAAK,aAAa,GACd,UAAU,CAAC,OAAO,OAAO,CAAC,GAC1B,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;AAEpC,eAAO,MAAM,YAAY,GACvB,qBAAqB,aAAa,EAClC,SAAS,gBAAgB,SAa1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/ui/utils/useInputSync.tsx"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../../src/ui/utils/useInputSync.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useAssistant, useChat } from \"@ai-sdk/react\";\nimport { AssistantRuntime } from \"@assistant-ui/react\";\n\ntype VercelHelpers =\n | ReturnType<typeof useChat>\n | ReturnType<typeof useAssistant>;\n\nexport const useInputSync = (\n { setInput, input }: VercelHelpers,\n runtime: AssistantRuntime,\n) => {\n // sync input from vercel to assistant-ui\n useEffect(() => {\n runtime.thread.composer.setText(input);\n }, [runtime, input]);\n\n // sync input from assistant-ui to vercel\n useEffect(() => {\n return runtime.thread.composer.subscribe(() => {\n setInput(runtime.thread.composer.getState().text);\n });\n }, [runtime, setInput]);\n};\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAQnB,IAAM,eAAe,CAC1B,EAAE,UAAU,MAAM,GAClB,YACG;AAEH,YAAU,MAAM;AACd,YAAQ,OAAO,SAAS,QAAQ,KAAK;AAAA,EACvC,GAAG,CAAC,SAAS,KAAK,CAAC;AAGnB,YAAU,MAAM;AACd,WAAO,QAAQ,OAAO,SAAS,UAAU,MAAM;AAC7C,eAAS,QAAQ,OAAO,SAAS,SAAS,EAAE,IAAI;AAAA,IAClD,CAAC;AAAA,EACH,GAAG,CAAC,SAAS,QAAQ,CAAC;AACxB;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assistant-ui/react-ai-sdk",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -21,12 +21,13 @@
|
|
|
21
21
|
"@ai-sdk/react": "*",
|
|
22
22
|
"@ai-sdk/ui-utils": "*",
|
|
23
23
|
"@radix-ui/react-use-callback-ref": "^1.1.1",
|
|
24
|
+
"@types/json-schema": "^7.0.15",
|
|
24
25
|
"zod": "^3.24.3",
|
|
25
26
|
"zustand": "^5.0.3",
|
|
26
|
-
"@assistant-ui/react-edge": "0.2.
|
|
27
|
+
"@assistant-ui/react-edge": "0.2.5"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
29
|
-
"@assistant-ui/react": "^0.10.
|
|
30
|
+
"@assistant-ui/react": "^0.10.5",
|
|
30
31
|
"@types/react": "*",
|
|
31
32
|
"react": "^18 || ^19 || ^19.0.0-rc"
|
|
32
33
|
},
|
|
@@ -42,8 +43,7 @@
|
|
|
42
43
|
"eslint-config-next": "15.3.1",
|
|
43
44
|
"react": "^19.1.0",
|
|
44
45
|
"tsx": "^4.19.3",
|
|
45
|
-
"@assistant-ui/
|
|
46
|
-
"@assistant-ui/tsbuildutils": "0.0.1"
|
|
46
|
+
"@assistant-ui/x-buildutils": "0.0.1"
|
|
47
47
|
},
|
|
48
48
|
"publishConfig": {
|
|
49
49
|
"access": "public",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"url": "https://github.com/assistant-ui/assistant-ui/issues"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
|
-
"build": "tsx scripts/build.mts"
|
|
60
|
+
"build": "tsx scripts/build.mts",
|
|
61
|
+
"lint": "eslint ."
|
|
61
62
|
}
|
|
62
63
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsonSchema } from "@ai-sdk/ui-utils";
|
|
2
|
+
import type { JSONSchema7 } from "json-schema";
|
|
3
|
+
|
|
4
|
+
export const frontendTools = (
|
|
5
|
+
tools: Record<string, { description?: string; parameters: JSONSchema7 }>,
|
|
6
|
+
) =>
|
|
7
|
+
Object.fromEntries(
|
|
8
|
+
Object.entries(tools).map(([name, tool]) => [
|
|
9
|
+
name,
|
|
10
|
+
{
|
|
11
|
+
...(tool.description ? { description: tool.description } : undefined),
|
|
12
|
+
parameters: jsonSchema(tool.parameters),
|
|
13
|
+
},
|
|
14
|
+
]),
|
|
15
|
+
);
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import type { AppendMessage } from "@assistant-ui/react";
|
|
1
|
+
import type { AppendMessage, ExternalStoreAdapter } from "@assistant-ui/react";
|
|
3
2
|
import type { VercelRSCMessage } from "./VercelRSCMessage";
|
|
4
|
-
import { ExternalStoreAdapter } from "@assistant-ui/react";
|
|
5
3
|
|
|
6
4
|
type RSCMessageConverter<T> = {
|
|
7
5
|
convertMessage: (message: T) => VercelRSCMessage;
|
package/src/rsc/index.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export { useVercelRSCRuntime } from "./useVercelRSCRuntime";
|
|
2
|
-
export { getVercelRSCMessage } from "./getVercelRSCMessage";
|
|
3
2
|
export type { VercelRSCAdapter } from "./VercelRSCAdapter";
|
|
4
3
|
export type { VercelRSCMessage } from "./VercelRSCMessage";
|
|
5
4
|
export { RSCDisplay } from "./RSCDisplay";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
getExternalStoreMessages,
|
|
3
3
|
type ThreadMessage,
|
|
4
4
|
} from "@assistant-ui/react";
|
|
5
5
|
import type { Message } from "@ai-sdk/ui-utils";
|
|
6
6
|
|
|
7
7
|
export const getVercelAIMessages = (message: ThreadMessage) => {
|
|
8
|
-
return
|
|
8
|
+
return getExternalStoreMessages(message) as Message[];
|
|
9
9
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Message } from "@ai-sdk/ui-utils";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import {
|
|
3
|
+
unstable_createMessageConverter,
|
|
4
|
+
type ReasoningContentPart,
|
|
5
|
+
type ToolCallContentPart,
|
|
6
|
+
type TextContentPart,
|
|
7
|
+
type CompleteAttachment,
|
|
8
|
+
type SourceContentPart,
|
|
9
|
+
type FileContentPart,
|
|
10
|
+
} from "@assistant-ui/react";
|
|
9
11
|
|
|
10
12
|
export const AISDKMessageConverter = unstable_createMessageConverter(
|
|
11
13
|
(message: Message) => {
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type ThreadMessage } from "@assistant-ui/react";
|
|
2
|
-
/**
|
|
3
|
-
* @deprecated Use `getExternalStoreMessage` instead. This method was specific to Vercel RSC
|
|
4
|
-
* implementation and has been replaced by a more generic external store message handler.
|
|
5
|
-
*/
|
|
6
|
-
export declare const getVercelRSCMessage: (message: ThreadMessage) => unknown;
|
|
7
|
-
//# sourceMappingURL=getVercelRSCMessage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getVercelRSCMessage.d.ts","sourceRoot":"","sources":["../../src/rsc/getVercelRSCMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,aAAa,YAEzD,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// src/rsc/getVercelRSCMessage.tsx
|
|
2
|
-
import {
|
|
3
|
-
getExternalStoreMessage
|
|
4
|
-
} from "@assistant-ui/react";
|
|
5
|
-
var getVercelRSCMessage = (message) => {
|
|
6
|
-
return getExternalStoreMessage(message);
|
|
7
|
-
};
|
|
8
|
-
export {
|
|
9
|
-
getVercelRSCMessage
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=getVercelRSCMessage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rsc/getVercelRSCMessage.tsx"],"sourcesContent":["import {\n getExternalStoreMessage,\n type ThreadMessage,\n} from \"@assistant-ui/react\";\n\n/**\n * @deprecated Use `getExternalStoreMessage` instead. This method was specific to Vercel RSC\n * implementation and has been replaced by a more generic external store message handler.\n */\nexport const getVercelRSCMessage = (message: ThreadMessage) => {\n return getExternalStoreMessage(message);\n};\n"],"mappings":";AAAA;AAAA,EACE;AAAA,OAEK;AAMA,IAAM,sBAAsB,CAAC,YAA2B;AAC7D,SAAO,wBAAwB,OAAO;AACxC;","names":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getExternalStoreMessage,
|
|
3
|
-
type ThreadMessage,
|
|
4
|
-
} from "@assistant-ui/react";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @deprecated Use `getExternalStoreMessage` instead. This method was specific to Vercel RSC
|
|
8
|
-
* implementation and has been replaced by a more generic external store message handler.
|
|
9
|
-
*/
|
|
10
|
-
export const getVercelRSCMessage = (message: ThreadMessage) => {
|
|
11
|
-
return getExternalStoreMessage(message);
|
|
12
|
-
};
|