@assistant-ui/react-ai-sdk 0.10.16 → 0.11.0-alpha.0-alpha
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.js +1 -1
- package/dist/frontendTools.js.map +1 -1
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/ui/getVercelAIMessages.d.ts +2 -2
- package/dist/ui/getVercelAIMessages.d.ts.map +1 -1
- package/dist/ui/getVercelAIMessages.js.map +1 -1
- package/dist/ui/index.d.ts +1 -4
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +2 -8
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/use-chat/useAISDKRuntime.d.ts +7 -0
- package/dist/ui/use-chat/useAISDKRuntime.d.ts.map +1 -0
- package/dist/ui/use-chat/useAISDKRuntime.js +53 -0
- package/dist/ui/use-chat/useAISDKRuntime.js.map +1 -0
- package/dist/ui/utils/convertMessage.d.ts +5 -5
- package/dist/ui/utils/convertMessage.d.ts.map +1 -1
- package/dist/ui/utils/convertMessage.js +115 -86
- package/dist/ui/utils/convertMessage.js.map +1 -1
- package/dist/ui/utils/sliceMessagesUntil.d.ts +2 -2
- package/dist/ui/utils/sliceMessagesUntil.d.ts.map +1 -1
- package/dist/ui/utils/sliceMessagesUntil.js.map +1 -1
- package/dist/ui/utils/toCreateMessage.d.ts +2 -2
- package/dist/ui/utils/toCreateMessage.d.ts.map +1 -1
- package/dist/ui/utils/toCreateMessage.js +29 -17
- package/dist/ui/utils/toCreateMessage.js.map +1 -1
- package/dist/ui/utils/vercelAttachmentAdapter.js +1 -1
- package/dist/ui/utils/vercelAttachmentAdapter.js.map +1 -1
- package/package.json +14 -14
- package/src/frontendTools.ts +1 -1
- package/src/index.ts +0 -5
- package/src/ui/getVercelAIMessages.tsx +2 -2
- package/src/ui/index.ts +1 -4
- package/src/ui/use-chat/{useVercelUseChatRuntime.tsx → useAISDKRuntime.tsx} +13 -39
- package/src/ui/utils/convertMessage.ts +162 -117
- package/src/ui/utils/sliceMessagesUntil.tsx +2 -2
- package/src/ui/utils/toCreateMessage.ts +45 -20
- package/src/ui/utils/vercelAttachmentAdapter.ts +1 -1
- package/dist/converters/fromLanguageModelTools.d.ts +0 -7
- package/dist/converters/fromLanguageModelTools.d.ts.map +0 -1
- package/dist/converters/fromLanguageModelTools.js +0 -16
- package/dist/converters/fromLanguageModelTools.js.map +0 -1
- package/dist/converters/index.d.ts +0 -4
- package/dist/converters/index.d.ts.map +0 -1
- package/dist/converters/index.js +0 -10
- package/dist/converters/index.js.map +0 -1
- package/dist/converters/toLanguageModelMessages.d.ts +0 -9
- package/dist/converters/toLanguageModelMessages.d.ts.map +0 -1
- package/dist/converters/toLanguageModelMessages.js +0 -143
- package/dist/converters/toLanguageModelMessages.js.map +0 -1
- package/dist/converters/toLanguageModelTools.d.ts +0 -7
- package/dist/converters/toLanguageModelTools.d.ts.map +0 -1
- package/dist/converters/toLanguageModelTools.js +0 -15
- package/dist/converters/toLanguageModelTools.js.map +0 -1
- package/dist/dangerous-in-browser/DangerousInBrowserAdapter.d.ts +0 -9
- package/dist/dangerous-in-browser/DangerousInBrowserAdapter.d.ts.map +0 -1
- package/dist/dangerous-in-browser/DangerousInBrowserAdapter.js +0 -38
- package/dist/dangerous-in-browser/DangerousInBrowserAdapter.js.map +0 -1
- package/dist/dangerous-in-browser/createEdgeRuntimeAPI.d.ts +0 -56
- package/dist/dangerous-in-browser/createEdgeRuntimeAPI.d.ts.map +0 -1
- package/dist/dangerous-in-browser/createEdgeRuntimeAPI.js +0 -65
- package/dist/dangerous-in-browser/createEdgeRuntimeAPI.js.map +0 -1
- package/dist/dangerous-in-browser/index.d.ts +0 -2
- package/dist/dangerous-in-browser/index.d.ts.map +0 -1
- package/dist/dangerous-in-browser/index.js +0 -8
- package/dist/dangerous-in-browser/index.js.map +0 -1
- package/dist/dangerous-in-browser/useDangerousInBrowserRuntime.d.ts +0 -5
- package/dist/dangerous-in-browser/useDangerousInBrowserRuntime.d.ts.map +0 -1
- package/dist/dangerous-in-browser/useDangerousInBrowserRuntime.js +0 -21
- package/dist/dangerous-in-browser/useDangerousInBrowserRuntime.js.map +0 -1
- package/dist/rsc/RSCDisplay.d.ts +0 -3
- package/dist/rsc/RSCDisplay.d.ts.map +0 -1
- package/dist/rsc/RSCDisplay.js +0 -26
- package/dist/rsc/RSCDisplay.js.map +0 -1
- package/dist/rsc/VercelRSCAdapter.d.ts +0 -17
- package/dist/rsc/VercelRSCAdapter.d.ts.map +0 -1
- package/dist/rsc/VercelRSCAdapter.js +0 -1
- package/dist/rsc/VercelRSCAdapter.js.map +0 -1
- package/dist/rsc/VercelRSCMessage.d.ts +0 -8
- package/dist/rsc/VercelRSCMessage.d.ts.map +0 -1
- package/dist/rsc/VercelRSCMessage.js +0 -2
- package/dist/rsc/VercelRSCMessage.js.map +0 -1
- package/dist/rsc/index.d.ts +0 -5
- package/dist/rsc/index.d.ts.map +0 -1
- package/dist/rsc/index.js +0 -8
- package/dist/rsc/index.js.map +0 -1
- package/dist/rsc/useVercelRSCRuntime.d.ts +0 -3
- package/dist/rsc/useVercelRSCRuntime.d.ts.map +0 -1
- package/dist/rsc/useVercelRSCRuntime.js +0 -57
- package/dist/rsc/useVercelRSCRuntime.js.map +0 -1
- package/dist/rsc/utils/RSCThreadExtras.d.ts +0 -8
- package/dist/rsc/utils/RSCThreadExtras.d.ts.map +0 -1
- package/dist/rsc/utils/RSCThreadExtras.js +0 -8
- package/dist/rsc/utils/RSCThreadExtras.js.map +0 -1
- package/dist/ui/use-assistant/useVercelUseAssistantRuntime.d.ts +0 -7
- package/dist/ui/use-assistant/useVercelUseAssistantRuntime.d.ts.map +0 -1
- package/dist/ui/use-assistant/useVercelUseAssistantRuntime.js +0 -48
- package/dist/ui/use-assistant/useVercelUseAssistantRuntime.js.map +0 -1
- package/dist/ui/use-chat/useVercelUseChatRuntime.d.ts +0 -8
- package/dist/ui/use-chat/useVercelUseChatRuntime.d.ts.map +0 -1
- package/dist/ui/use-chat/useVercelUseChatRuntime.js +0 -75
- package/dist/ui/use-chat/useVercelUseChatRuntime.js.map +0 -1
- package/dist/ui/utils/useInputSync.d.ts +0 -6
- package/dist/ui/utils/useInputSync.d.ts.map +0 -1
- package/dist/ui/utils/useInputSync.js +0 -18
- package/dist/ui/utils/useInputSync.js.map +0 -1
- package/dist/useChatRuntime.d.ts +0 -16
- package/dist/useChatRuntime.d.ts.map +0 -1
- package/dist/useChatRuntime.js +0 -106
- package/dist/useChatRuntime.js.map +0 -1
- package/dist/useCloudRuntime.d.ts +0 -12
- package/dist/useCloudRuntime.d.ts.map +0 -1
- package/dist/useCloudRuntime.js +0 -15
- package/dist/useCloudRuntime.js.map +0 -1
- package/src/converters/fromLanguageModelTools.ts +0 -19
- package/src/converters/index.ts +0 -3
- package/src/converters/toLanguageModelMessages.ts +0 -185
- package/src/converters/toLanguageModelTools.ts +0 -21
- package/src/dangerous-in-browser/DangerousInBrowserAdapter.ts +0 -41
- package/src/dangerous-in-browser/createEdgeRuntimeAPI.ts +0 -145
- package/src/dangerous-in-browser/index.ts +0 -4
- package/src/dangerous-in-browser/useDangerousInBrowserRuntime.ts +0 -26
- package/src/rsc/RSCDisplay.tsx +0 -23
- package/src/rsc/VercelRSCAdapter.tsx +0 -21
- package/src/rsc/VercelRSCMessage.tsx +0 -9
- package/src/rsc/index.ts +0 -4
- package/src/rsc/useVercelRSCRuntime.tsx +0 -70
- package/src/rsc/utils/RSCThreadExtras.tsx +0 -11
- package/src/ui/use-assistant/useVercelUseAssistantRuntime.tsx +0 -60
- package/src/ui/utils/useInputSync.tsx +0 -26
- package/src/useChatRuntime.ts +0 -157
- package/src/useCloudRuntime.ts +0 -21
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// src/rsc/useVercelRSCRuntime.tsx
|
|
4
|
-
import {
|
|
5
|
-
useExternalMessageConverter,
|
|
6
|
-
useExternalStoreRuntime
|
|
7
|
-
} from "@assistant-ui/react";
|
|
8
|
-
import { useCallback, useMemo } from "react";
|
|
9
|
-
import { symbolInternalRSCExtras } from "./utils/RSCThreadExtras.js";
|
|
10
|
-
var vercelToThreadMessage = (converter, rawMessage) => {
|
|
11
|
-
const message = converter(rawMessage);
|
|
12
|
-
return {
|
|
13
|
-
id: message.id,
|
|
14
|
-
role: message.role,
|
|
15
|
-
content: [{ type: "text", text: "[Developer: Please set up RSCDisplay]" }],
|
|
16
|
-
createdAt: message.createdAt
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
var useVercelRSCRuntime = (adapter) => {
|
|
20
|
-
const onNew = adapter.onNew;
|
|
21
|
-
if (!onNew)
|
|
22
|
-
throw new Error("You must pass a onNew function to useVercelRSCRuntime");
|
|
23
|
-
const convertFn = useMemo(() => {
|
|
24
|
-
return adapter.convertMessage?.bind(adapter) ?? ((m) => m);
|
|
25
|
-
}, [adapter]);
|
|
26
|
-
const callback = useCallback(
|
|
27
|
-
(m) => {
|
|
28
|
-
return vercelToThreadMessage(convertFn, m);
|
|
29
|
-
},
|
|
30
|
-
[convertFn]
|
|
31
|
-
);
|
|
32
|
-
const messages = useExternalMessageConverter({
|
|
33
|
-
callback,
|
|
34
|
-
isRunning: adapter.isRunning ?? false,
|
|
35
|
-
messages: adapter.messages
|
|
36
|
-
});
|
|
37
|
-
const eAdapter = {
|
|
38
|
-
isRunning: adapter.isRunning,
|
|
39
|
-
messages,
|
|
40
|
-
onNew,
|
|
41
|
-
onEdit: adapter.onEdit,
|
|
42
|
-
onReload: adapter.onReload,
|
|
43
|
-
adapters: adapter.adapters,
|
|
44
|
-
unstable_capabilities: {
|
|
45
|
-
copy: false
|
|
46
|
-
},
|
|
47
|
-
extras: {
|
|
48
|
-
[symbolInternalRSCExtras]: { convertFn }
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
const runtime = useExternalStoreRuntime(eAdapter);
|
|
52
|
-
return runtime;
|
|
53
|
-
};
|
|
54
|
-
export {
|
|
55
|
-
useVercelRSCRuntime
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=useVercelRSCRuntime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rsc/useVercelRSCRuntime.tsx"],"sourcesContent":["\"use client\";\n\nimport type { VercelRSCAdapter } from \"./VercelRSCAdapter\";\nimport {\n ExternalStoreAdapter,\n ThreadMessageLike,\n useExternalMessageConverter,\n useExternalStoreRuntime,\n} from \"@assistant-ui/react\";\nimport { VercelRSCMessage } from \"./VercelRSCMessage\";\nimport { useCallback, useMemo } from \"react\";\nimport { symbolInternalRSCExtras } from \"./utils/RSCThreadExtras\";\n\nconst vercelToThreadMessage = <T,>(\n converter: (message: T) => VercelRSCMessage,\n rawMessage: T,\n): ThreadMessageLike => {\n const message = converter(rawMessage);\n\n return {\n id: message.id,\n role: message.role,\n content: [{ type: \"text\", text: \"[Developer: Please set up RSCDisplay]\" }],\n createdAt: message.createdAt,\n };\n};\n\nexport const useVercelRSCRuntime = <T extends WeakKey>(\n adapter: VercelRSCAdapter<T>,\n) => {\n const onNew = adapter.onNew;\n if (!onNew)\n throw new Error(\"You must pass a onNew function to useVercelRSCRuntime\");\n\n const convertFn = useMemo(() => {\n return (\n adapter.convertMessage?.bind(adapter) ?? ((m: T) => m as VercelRSCMessage)\n );\n }, [adapter]);\n const callback = useCallback(\n (m: T) => {\n return vercelToThreadMessage(convertFn, m);\n },\n [convertFn],\n );\n\n const messages = useExternalMessageConverter({\n callback,\n isRunning: adapter.isRunning ?? false,\n messages: adapter.messages,\n });\n\n const eAdapter: ExternalStoreAdapter = {\n isRunning: adapter.isRunning,\n messages,\n onNew,\n onEdit: adapter.onEdit,\n onReload: adapter.onReload,\n adapters: adapter.adapters,\n unstable_capabilities: {\n copy: false,\n },\n extras: {\n [symbolInternalRSCExtras]: { convertFn },\n },\n };\n\n const runtime = useExternalStoreRuntime(eAdapter);\n return runtime;\n};\n"],"mappings":";;;AAGA;AAAA,EAGE;AAAA,EACA;AAAA,OACK;AAEP,SAAS,aAAa,eAAe;AACrC,SAAS,+BAA+B;AAExC,IAAM,wBAAwB,CAC5B,WACA,eACsB;AACtB,QAAM,UAAU,UAAU,UAAU;AAEpC,SAAO;AAAA,IACL,IAAI,QAAQ;AAAA,IACZ,MAAM,QAAQ;AAAA,IACd,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,wCAAwC,CAAC;AAAA,IACzE,WAAW,QAAQ;AAAA,EACrB;AACF;AAEO,IAAM,sBAAsB,CACjC,YACG;AACH,QAAM,QAAQ,QAAQ;AACtB,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,uDAAuD;AAEzE,QAAM,YAAY,QAAQ,MAAM;AAC9B,WACE,QAAQ,gBAAgB,KAAK,OAAO,MAAM,CAAC,MAAS;AAAA,EAExD,GAAG,CAAC,OAAO,CAAC;AACZ,QAAM,WAAW;AAAA,IACf,CAAC,MAAS;AACR,aAAO,sBAAsB,WAAW,CAAC;AAAA,IAC3C;AAAA,IACA,CAAC,SAAS;AAAA,EACZ;AAEA,QAAM,WAAW,4BAA4B;AAAA,IAC3C;AAAA,IACA,WAAW,QAAQ,aAAa;AAAA,IAChC,UAAU,QAAQ;AAAA,EACpB,CAAC;AAED,QAAM,WAAiC;AAAA,IACrC,WAAW,QAAQ;AAAA,IACnB;AAAA,IACA;AAAA,IACA,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,UAAU,QAAQ;AAAA,IAClB,uBAAuB;AAAA,MACrB,MAAM;AAAA,IACR;AAAA,IACA,QAAQ;AAAA,MACN,CAAC,uBAAuB,GAAG,EAAE,UAAU;AAAA,IACzC;AAAA,EACF;AAEA,QAAM,UAAU,wBAAwB,QAAQ;AAChD,SAAO;AACT;","names":[]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { VercelRSCMessage } from "../VercelRSCMessage";
|
|
2
|
-
export declare const symbolInternalRSCExtras: unique symbol;
|
|
3
|
-
export type RSCThreadExtras = {
|
|
4
|
-
[symbolInternalRSCExtras]?: {
|
|
5
|
-
convertFn: (message: any) => VercelRSCMessage;
|
|
6
|
-
};
|
|
7
|
-
} | undefined;
|
|
8
|
-
//# sourceMappingURL=RSCThreadExtras.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RSCThreadExtras.d.ts","sourceRoot":"","sources":["../../../src/rsc/utils/RSCThreadExtras.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,eAAO,MAAM,uBAAuB,eAAgC,CAAC;AACrE,MAAM,MAAM,eAAe,GACvB;IACE,CAAC,uBAAuB,CAAC,CAAC,EAAE;QAC1B,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,gBAAgB,CAAC;KAC/C,CAAC;CACH,GACD,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/rsc/utils/RSCThreadExtras.tsx"],"sourcesContent":["\"use client\";\nimport { VercelRSCMessage } from \"../VercelRSCMessage\";\n\nexport const symbolInternalRSCExtras = Symbol(\"internal-rsc-extras\");\nexport type RSCThreadExtras =\n | {\n [symbolInternalRSCExtras]?: {\n convertFn: (message: any) => VercelRSCMessage;\n };\n }\n | undefined;\n"],"mappings":";;;AAGO,IAAM,0BAA0B,OAAO,qBAAqB;","names":[]}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { useAssistant } from "@ai-sdk/react";
|
|
2
|
-
import { ExternalStoreAdapter } from "@assistant-ui/react";
|
|
3
|
-
export type VercelUseChatAdapter = {
|
|
4
|
-
adapters?: Omit<NonNullable<ExternalStoreAdapter["adapters"]>, "attachments"> | undefined;
|
|
5
|
-
};
|
|
6
|
-
export declare const useVercelUseAssistantRuntime: (assistantHelpers: ReturnType<typeof useAssistant>, adapter?: VercelUseChatAdapter) => import("@assistant-ui/react").AssistantRuntime;
|
|
7
|
-
//# sourceMappingURL=useVercelUseAssistantRuntime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,48 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// src/ui/use-assistant/useVercelUseAssistantRuntime.tsx
|
|
4
|
-
import { useExternalStoreRuntime } from "@assistant-ui/react";
|
|
5
|
-
import { useInputSync } from "../utils/useInputSync.js";
|
|
6
|
-
import { toCreateMessage } from "../utils/toCreateMessage.js";
|
|
7
|
-
import { vercelAttachmentAdapter } from "../utils/vercelAttachmentAdapter.js";
|
|
8
|
-
import { AISDKMessageConverter } from "../utils/convertMessage.js";
|
|
9
|
-
var useVercelUseAssistantRuntime = (assistantHelpers, adapter = {}) => {
|
|
10
|
-
const messages = AISDKMessageConverter.useThreadMessages({
|
|
11
|
-
messages: assistantHelpers.messages,
|
|
12
|
-
isRunning: assistantHelpers.status === "in_progress"
|
|
13
|
-
});
|
|
14
|
-
const runtime = useExternalStoreRuntime({
|
|
15
|
-
isRunning: assistantHelpers.status === "in_progress",
|
|
16
|
-
messages,
|
|
17
|
-
onCancel: async () => assistantHelpers.stop(),
|
|
18
|
-
onNew: async (message) => {
|
|
19
|
-
await assistantHelpers.append(await toCreateMessage(message));
|
|
20
|
-
},
|
|
21
|
-
adapters: {
|
|
22
|
-
attachments: vercelAttachmentAdapter,
|
|
23
|
-
...adapter.adapters,
|
|
24
|
-
threadList: new Proxy(adapter.adapters?.threadList ?? {}, {
|
|
25
|
-
get(target, prop, receiver) {
|
|
26
|
-
if (prop === "onSwitchToNewThread") {
|
|
27
|
-
return () => {
|
|
28
|
-
assistantHelpers.messages = [];
|
|
29
|
-
assistantHelpers.input = "";
|
|
30
|
-
assistantHelpers.setMessages([]);
|
|
31
|
-
assistantHelpers.setInput("");
|
|
32
|
-
if (typeof target.onSwitchToNewThread === "function") {
|
|
33
|
-
return target.onSwitchToNewThread.call(target);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
return Reflect.get(target, prop, receiver);
|
|
38
|
-
}
|
|
39
|
-
})
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
useInputSync(assistantHelpers, runtime);
|
|
43
|
-
return runtime;
|
|
44
|
-
};
|
|
45
|
-
export {
|
|
46
|
-
useVercelUseAssistantRuntime
|
|
47
|
-
};
|
|
48
|
-
//# sourceMappingURL=useVercelUseAssistantRuntime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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,8 +0,0 @@
|
|
|
1
|
-
import type { useChat } from "@ai-sdk/react";
|
|
2
|
-
import { ExternalStoreAdapter } from "@assistant-ui/react";
|
|
3
|
-
export type VercelUseChatAdapter = {
|
|
4
|
-
adapters?: Omit<NonNullable<ExternalStoreAdapter["adapters"]>, "attachments"> | undefined;
|
|
5
|
-
unstable_joinStrategy?: "concat-content" | "none";
|
|
6
|
-
};
|
|
7
|
-
export declare const useVercelUseChatRuntime: (chatHelpers: ReturnType<typeof useChat>, adapter?: VercelUseChatAdapter) => import("@assistant-ui/react").AssistantRuntime;
|
|
8
|
-
//# sourceMappingURL=useVercelUseChatRuntime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,75 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// src/ui/use-chat/useVercelUseChatRuntime.tsx
|
|
4
|
-
import { useExternalStoreRuntime } from "@assistant-ui/react";
|
|
5
|
-
import { useInputSync } from "../utils/useInputSync.js";
|
|
6
|
-
import { sliceMessagesUntil } from "../utils/sliceMessagesUntil.js";
|
|
7
|
-
import { toCreateMessage } from "../utils/toCreateMessage.js";
|
|
8
|
-
import { vercelAttachmentAdapter } from "../utils/vercelAttachmentAdapter.js";
|
|
9
|
-
import { getVercelAIMessages } from "../getVercelAIMessages.js";
|
|
10
|
-
import { useState } from "react";
|
|
11
|
-
import { generateId } from "@ai-sdk/ui-utils";
|
|
12
|
-
import { AISDKMessageConverter } from "../utils/convertMessage.js";
|
|
13
|
-
var useVercelUseChatRuntime = (chatHelpers, adapter = {}) => {
|
|
14
|
-
const messages = AISDKMessageConverter.useThreadMessages({
|
|
15
|
-
isRunning: chatHelpers.status === "submitted" || chatHelpers.status == "streaming",
|
|
16
|
-
messages: chatHelpers.messages,
|
|
17
|
-
joinStrategy: adapter.unstable_joinStrategy
|
|
18
|
-
});
|
|
19
|
-
const [threadId, setThreadId] = useState(generateId());
|
|
20
|
-
const runtime = useExternalStoreRuntime({
|
|
21
|
-
isRunning: chatHelpers.isLoading,
|
|
22
|
-
messages,
|
|
23
|
-
setMessages: (messages2) => chatHelpers.setMessages(messages2.map(getVercelAIMessages).flat()),
|
|
24
|
-
onCancel: async () => chatHelpers.stop(),
|
|
25
|
-
onNew: async (message) => {
|
|
26
|
-
await chatHelpers.append(await toCreateMessage(message));
|
|
27
|
-
},
|
|
28
|
-
onEdit: async (message) => {
|
|
29
|
-
const newMessages = sliceMessagesUntil(
|
|
30
|
-
chatHelpers.messages,
|
|
31
|
-
message.parentId
|
|
32
|
-
);
|
|
33
|
-
chatHelpers.setMessages(newMessages);
|
|
34
|
-
await chatHelpers.append(await toCreateMessage(message));
|
|
35
|
-
},
|
|
36
|
-
onReload: async (parentId) => {
|
|
37
|
-
const newMessages = sliceMessagesUntil(chatHelpers.messages, parentId);
|
|
38
|
-
chatHelpers.setMessages(newMessages);
|
|
39
|
-
await chatHelpers.reload();
|
|
40
|
-
},
|
|
41
|
-
onAddToolResult: ({ toolCallId, result }) => {
|
|
42
|
-
chatHelpers.addToolResult({ toolCallId, result });
|
|
43
|
-
},
|
|
44
|
-
adapters: {
|
|
45
|
-
attachments: vercelAttachmentAdapter,
|
|
46
|
-
...adapter.adapters,
|
|
47
|
-
threadList: new Proxy(adapter.adapters?.threadList ?? {}, {
|
|
48
|
-
get(target, prop, receiver) {
|
|
49
|
-
if (prop === "threadId") {
|
|
50
|
-
return target.threadId ?? threadId;
|
|
51
|
-
}
|
|
52
|
-
if (prop === "onSwitchToNewThread") {
|
|
53
|
-
return () => {
|
|
54
|
-
chatHelpers.messages = [];
|
|
55
|
-
chatHelpers.input = "";
|
|
56
|
-
chatHelpers.setMessages([]);
|
|
57
|
-
chatHelpers.setInput("");
|
|
58
|
-
setThreadId(generateId());
|
|
59
|
-
if (typeof target.onSwitchToNewThread === "function") {
|
|
60
|
-
return target.onSwitchToNewThread.call(target);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
return Reflect.get(target, prop, receiver);
|
|
65
|
-
}
|
|
66
|
-
})
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
useInputSync(chatHelpers, runtime);
|
|
70
|
-
return runtime;
|
|
71
|
-
};
|
|
72
|
-
export {
|
|
73
|
-
useVercelUseChatRuntime
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=useVercelUseChatRuntime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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,6 +0,0 @@
|
|
|
1
|
-
import { useAssistant, useChat } from "@ai-sdk/react";
|
|
2
|
-
import { AssistantRuntime } from "@assistant-ui/react";
|
|
3
|
-
type VercelHelpers = ReturnType<typeof useChat> | ReturnType<typeof useAssistant>;
|
|
4
|
-
export declare const useInputSync: ({ setInput, input }: VercelHelpers, runtime: AssistantRuntime) => void;
|
|
5
|
-
export {};
|
|
6
|
-
//# sourceMappingURL=useInputSync.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,18 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// src/ui/utils/useInputSync.tsx
|
|
4
|
-
import { useEffect } from "react";
|
|
5
|
-
var useInputSync = ({ setInput, input }, runtime) => {
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
runtime.thread.composer.setText(input);
|
|
8
|
-
}, [runtime, input]);
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
return runtime.thread.composer.subscribe(() => {
|
|
11
|
-
setInput(runtime.thread.composer.getState().text);
|
|
12
|
-
});
|
|
13
|
-
}, [runtime, setInput]);
|
|
14
|
-
};
|
|
15
|
-
export {
|
|
16
|
-
useInputSync
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=useInputSync.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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/dist/useChatRuntime.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AssistantRuntime, LocalRuntimeOptions, ThreadMessage } from "@assistant-ui/react";
|
|
2
|
-
type HeadersValue = Record<string, string> | Headers;
|
|
3
|
-
export type UseChatRuntimeOptions = {
|
|
4
|
-
api: string;
|
|
5
|
-
onResponse?: (response: Response) => void | Promise<void>;
|
|
6
|
-
onFinish?: (message: ThreadMessage) => void;
|
|
7
|
-
onError?: (error: Error) => void;
|
|
8
|
-
onCancel?: () => void;
|
|
9
|
-
credentials?: RequestCredentials;
|
|
10
|
-
headers?: HeadersValue | (() => Promise<HeadersValue>);
|
|
11
|
-
body?: object;
|
|
12
|
-
sendExtraMessageFields?: boolean;
|
|
13
|
-
} & LocalRuntimeOptions;
|
|
14
|
-
export declare const useChatRuntime: (options: UseChatRuntimeOptions) => AssistantRuntime;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=useChatRuntime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useChatRuntime.d.ts","sourceRoot":"","sources":["../src/useChatRuntime.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAIhB,mBAAmB,EACnB,aAAa,EAGd,MAAM,qBAAqB,CAAC;AAa7B,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC;AAErD,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,EAAE,YAAY,GAAG,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,GAAG,mBAAmB,CAAC;AA6GxB,eAAO,MAAM,cAAc,GACzB,SAAS,qBAAqB,KAC7B,gBAQF,CAAC"}
|
package/dist/useChatRuntime.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
// src/useChatRuntime.ts
|
|
4
|
-
import { toLanguageModelMessages } from "./converters/index.js";
|
|
5
|
-
import {
|
|
6
|
-
INTERNAL,
|
|
7
|
-
useLocalRuntime
|
|
8
|
-
} from "@assistant-ui/react";
|
|
9
|
-
import { z } from "zod";
|
|
10
|
-
import zodToJsonSchema from "zod-to-json-schema";
|
|
11
|
-
import {
|
|
12
|
-
AssistantMessageAccumulator,
|
|
13
|
-
DataStreamDecoder,
|
|
14
|
-
unstable_toolResultStream
|
|
15
|
-
} from "assistant-stream";
|
|
16
|
-
import { asAsyncIterableStream } from "assistant-stream/utils";
|
|
17
|
-
var { splitLocalRuntimeOptions } = INTERNAL;
|
|
18
|
-
var toAISDKTools = (tools) => {
|
|
19
|
-
return Object.fromEntries(
|
|
20
|
-
Object.entries(tools).map(([name, tool]) => [
|
|
21
|
-
name,
|
|
22
|
-
{
|
|
23
|
-
...tool.description ? { description: tool.description } : void 0,
|
|
24
|
-
parameters: tool.parameters instanceof z.ZodType ? zodToJsonSchema(tool.parameters) : tool.parameters
|
|
25
|
-
}
|
|
26
|
-
])
|
|
27
|
-
);
|
|
28
|
-
};
|
|
29
|
-
var getEnabledTools = (tools) => {
|
|
30
|
-
return Object.fromEntries(
|
|
31
|
-
Object.entries(tools).filter(
|
|
32
|
-
([, tool]) => !tool.disabled && tool.type !== "backend"
|
|
33
|
-
)
|
|
34
|
-
);
|
|
35
|
-
};
|
|
36
|
-
var ChatRuntimeAdapter = class {
|
|
37
|
-
constructor(options) {
|
|
38
|
-
this.options = options;
|
|
39
|
-
}
|
|
40
|
-
async *run({
|
|
41
|
-
messages,
|
|
42
|
-
runConfig,
|
|
43
|
-
abortSignal,
|
|
44
|
-
context,
|
|
45
|
-
unstable_assistantMessageId,
|
|
46
|
-
unstable_getMessage
|
|
47
|
-
}) {
|
|
48
|
-
const headersValue = typeof this.options.headers === "function" ? await this.options.headers() : this.options.headers;
|
|
49
|
-
abortSignal.addEventListener(
|
|
50
|
-
"abort",
|
|
51
|
-
() => {
|
|
52
|
-
if (!abortSignal.reason?.detach) this.options.onCancel?.();
|
|
53
|
-
},
|
|
54
|
-
{ once: true }
|
|
55
|
-
);
|
|
56
|
-
const headers = new Headers(headersValue);
|
|
57
|
-
headers.set("Content-Type", "application/json");
|
|
58
|
-
const result = await fetch(this.options.api, {
|
|
59
|
-
method: "POST",
|
|
60
|
-
headers,
|
|
61
|
-
credentials: this.options.credentials ?? "same-origin",
|
|
62
|
-
body: JSON.stringify({
|
|
63
|
-
system: context.system,
|
|
64
|
-
messages: toLanguageModelMessages(messages, {
|
|
65
|
-
unstable_includeId: this.options.sendExtraMessageFields
|
|
66
|
-
}),
|
|
67
|
-
tools: toAISDKTools(
|
|
68
|
-
getEnabledTools(context.tools ?? {})
|
|
69
|
-
),
|
|
70
|
-
...unstable_assistantMessageId ? { unstable_assistantMessageId } : {},
|
|
71
|
-
runConfig,
|
|
72
|
-
state: unstable_getMessage().metadata.unstable_state || void 0,
|
|
73
|
-
...context.callSettings,
|
|
74
|
-
...context.config,
|
|
75
|
-
...this.options.body
|
|
76
|
-
}),
|
|
77
|
-
signal: abortSignal
|
|
78
|
-
});
|
|
79
|
-
await this.options.onResponse?.(result);
|
|
80
|
-
try {
|
|
81
|
-
if (!result.ok) {
|
|
82
|
-
throw new Error(`Status ${result.status}: ${await result.text()}`);
|
|
83
|
-
}
|
|
84
|
-
if (!result.body) {
|
|
85
|
-
throw new Error("Response body is null");
|
|
86
|
-
}
|
|
87
|
-
const stream = result.body.pipeThrough(new DataStreamDecoder()).pipeThrough(unstable_toolResultStream(context.tools, abortSignal)).pipeThrough(new AssistantMessageAccumulator());
|
|
88
|
-
yield* asAsyncIterableStream(stream);
|
|
89
|
-
this.options.onFinish?.(unstable_getMessage());
|
|
90
|
-
} catch (error) {
|
|
91
|
-
this.options.onError?.(error);
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
var useChatRuntime = (options) => {
|
|
97
|
-
const { localRuntimeOptions, otherOptions } = splitLocalRuntimeOptions(options);
|
|
98
|
-
return useLocalRuntime(
|
|
99
|
-
new ChatRuntimeAdapter(otherOptions),
|
|
100
|
-
localRuntimeOptions
|
|
101
|
-
);
|
|
102
|
-
};
|
|
103
|
-
export {
|
|
104
|
-
useChatRuntime
|
|
105
|
-
};
|
|
106
|
-
//# sourceMappingURL=useChatRuntime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/useChatRuntime.ts"],"sourcesContent":["\"use client\";\n\nimport { toLanguageModelMessages } from \"./converters\";\nimport {\n AssistantRuntime,\n ChatModelAdapter,\n ChatModelRunOptions,\n INTERNAL,\n LocalRuntimeOptions,\n ThreadMessage,\n Tool,\n useLocalRuntime,\n} from \"@assistant-ui/react\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport { JSONSchema7 } from \"json-schema\";\nimport {\n AssistantMessageAccumulator,\n DataStreamDecoder,\n unstable_toolResultStream,\n} from \"assistant-stream\";\nimport { asAsyncIterableStream } from \"assistant-stream/utils\";\n\nconst { splitLocalRuntimeOptions } = INTERNAL;\n\ntype HeadersValue = Record<string, string> | Headers;\n\nexport type UseChatRuntimeOptions = {\n api: string;\n onResponse?: (response: Response) => void | Promise<void>;\n onFinish?: (message: ThreadMessage) => void;\n onError?: (error: Error) => void;\n onCancel?: () => void;\n credentials?: RequestCredentials;\n headers?: HeadersValue | (() => Promise<HeadersValue>);\n body?: object;\n sendExtraMessageFields?: boolean;\n} & LocalRuntimeOptions;\n\ntype ChatRuntimeRequestOptions = {\n messages: any[];\n tools: any;\n system?: string | undefined;\n runConfig?: any;\n unstable_assistantMessageId?: string;\n state?: any;\n};\n\nconst toAISDKTools = (tools: Record<string, Tool>) => {\n return Object.fromEntries(\n Object.entries(tools).map(([name, tool]) => [\n name,\n {\n ...(tool.description ? { description: tool.description } : undefined),\n parameters: (tool.parameters instanceof z.ZodType\n ? zodToJsonSchema(tool.parameters)\n : tool.parameters) as JSONSchema7,\n },\n ]),\n );\n};\n\nconst getEnabledTools = (tools: Record<string, Tool>) => {\n return Object.fromEntries(\n Object.entries(tools).filter(\n ([, tool]) => !tool.disabled && tool.type !== \"backend\",\n ),\n );\n};\n\nclass ChatRuntimeAdapter implements ChatModelAdapter {\n constructor(\n private options: Omit<UseChatRuntimeOptions, keyof LocalRuntimeOptions>,\n ) {}\n\n async *run({\n messages,\n runConfig,\n abortSignal,\n context,\n unstable_assistantMessageId,\n unstable_getMessage,\n }: ChatModelRunOptions) {\n const headersValue =\n typeof this.options.headers === \"function\"\n ? await this.options.headers()\n : this.options.headers;\n\n abortSignal.addEventListener(\n \"abort\",\n () => {\n if (!abortSignal.reason?.detach) this.options.onCancel?.();\n },\n { once: true },\n );\n\n const headers = new Headers(headersValue);\n headers.set(\"Content-Type\", \"application/json\");\n\n const result = await fetch(this.options.api, {\n method: \"POST\",\n headers,\n credentials: this.options.credentials ?? \"same-origin\",\n body: JSON.stringify({\n system: context.system,\n messages: toLanguageModelMessages(messages, {\n unstable_includeId: this.options.sendExtraMessageFields,\n }) as ChatRuntimeRequestOptions[\"messages\"],\n tools: toAISDKTools(\n getEnabledTools(context.tools ?? {}),\n ) as unknown as ChatRuntimeRequestOptions[\"tools\"],\n ...(unstable_assistantMessageId ? { unstable_assistantMessageId } : {}),\n runConfig,\n state: unstable_getMessage().metadata.unstable_state || undefined,\n ...context.callSettings,\n ...context.config,\n ...this.options.body,\n } satisfies ChatRuntimeRequestOptions),\n signal: abortSignal,\n });\n\n await this.options.onResponse?.(result);\n\n try {\n if (!result.ok) {\n throw new Error(`Status ${result.status}: ${await result.text()}`);\n }\n if (!result.body) {\n throw new Error(\"Response body is null\");\n }\n\n const stream = result.body\n .pipeThrough(new DataStreamDecoder())\n .pipeThrough(unstable_toolResultStream(context.tools, abortSignal))\n .pipeThrough(new AssistantMessageAccumulator());\n\n yield* asAsyncIterableStream(stream);\n\n this.options.onFinish?.(unstable_getMessage());\n } catch (error: unknown) {\n this.options.onError?.(error as Error);\n throw error;\n }\n }\n}\n\nexport const useChatRuntime = (\n options: UseChatRuntimeOptions,\n): AssistantRuntime => {\n const { localRuntimeOptions, otherOptions } =\n splitLocalRuntimeOptions(options);\n\n return useLocalRuntime(\n new ChatRuntimeAdapter(otherOptions),\n localRuntimeOptions,\n );\n};\n"],"mappings":";;;AAEA,SAAS,+BAA+B;AACxC;AAAA,EAIE;AAAA,EAIA;AAAA,OACK;AACP,SAAS,SAAS;AAClB,OAAO,qBAAqB;AAE5B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,6BAA6B;AAEtC,IAAM,EAAE,yBAAyB,IAAI;AAyBrC,IAAM,eAAe,CAAC,UAAgC;AACpD,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM;AAAA,MAC1C;AAAA,MACA;AAAA,QACE,GAAI,KAAK,cAAc,EAAE,aAAa,KAAK,YAAY,IAAI;AAAA,QAC3D,YAAa,KAAK,sBAAsB,EAAE,UACtC,gBAAgB,KAAK,UAAU,IAC/B,KAAK;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEA,IAAM,kBAAkB,CAAC,UAAgC;AACvD,SAAO,OAAO;AAAA,IACZ,OAAO,QAAQ,KAAK,EAAE;AAAA,MACpB,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,YAAY,KAAK,SAAS;AAAA,IAChD;AAAA,EACF;AACF;AAEA,IAAM,qBAAN,MAAqD;AAAA,EACnD,YACU,SACR;AADQ;AAAA,EACP;AAAA,EAEH,OAAO,IAAI;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAwB;AACtB,UAAM,eACJ,OAAO,KAAK,QAAQ,YAAY,aAC5B,MAAM,KAAK,QAAQ,QAAQ,IAC3B,KAAK,QAAQ;AAEnB,gBAAY;AAAA,MACV;AAAA,MACA,MAAM;AACJ,YAAI,CAAC,YAAY,QAAQ,OAAQ,MAAK,QAAQ,WAAW;AAAA,MAC3D;AAAA,MACA,EAAE,MAAM,KAAK;AAAA,IACf;AAEA,UAAM,UAAU,IAAI,QAAQ,YAAY;AACxC,YAAQ,IAAI,gBAAgB,kBAAkB;AAE9C,UAAM,SAAS,MAAM,MAAM,KAAK,QAAQ,KAAK;AAAA,MAC3C,QAAQ;AAAA,MACR;AAAA,MACA,aAAa,KAAK,QAAQ,eAAe;AAAA,MACzC,MAAM,KAAK,UAAU;AAAA,QACnB,QAAQ,QAAQ;AAAA,QAChB,UAAU,wBAAwB,UAAU;AAAA,UAC1C,oBAAoB,KAAK,QAAQ;AAAA,QACnC,CAAC;AAAA,QACD,OAAO;AAAA,UACL,gBAAgB,QAAQ,SAAS,CAAC,CAAC;AAAA,QACrC;AAAA,QACA,GAAI,8BAA8B,EAAE,4BAA4B,IAAI,CAAC;AAAA,QACrE;AAAA,QACA,OAAO,oBAAoB,EAAE,SAAS,kBAAkB;AAAA,QACxD,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,QACX,GAAG,KAAK,QAAQ;AAAA,MAClB,CAAqC;AAAA,MACrC,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,KAAK,QAAQ,aAAa,MAAM;AAEtC,QAAI;AACF,UAAI,CAAC,OAAO,IAAI;AACd,cAAM,IAAI,MAAM,UAAU,OAAO,MAAM,KAAK,MAAM,OAAO,KAAK,CAAC,EAAE;AAAA,MACnE;AACA,UAAI,CAAC,OAAO,MAAM;AAChB,cAAM,IAAI,MAAM,uBAAuB;AAAA,MACzC;AAEA,YAAM,SAAS,OAAO,KACnB,YAAY,IAAI,kBAAkB,CAAC,EACnC,YAAY,0BAA0B,QAAQ,OAAO,WAAW,CAAC,EACjE,YAAY,IAAI,4BAA4B,CAAC;AAEhD,aAAO,sBAAsB,MAAM;AAEnC,WAAK,QAAQ,WAAW,oBAAoB,CAAC;AAAA,IAC/C,SAAS,OAAgB;AACvB,WAAK,QAAQ,UAAU,KAAc;AACrC,YAAM;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB,CAC5B,YACqB;AACrB,QAAM,EAAE,qBAAqB,aAAa,IACxC,yBAAyB,OAAO;AAElC,SAAO;AAAA,IACL,IAAI,mBAAmB,YAAY;AAAA,IACnC;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { AssistantCloud } from "@assistant-ui/react";
|
|
2
|
-
import { UseChatRuntimeOptions } from "./useChatRuntime";
|
|
3
|
-
type UseCloudRuntimeOptions = Omit<UseChatRuntimeOptions, "api"> & {
|
|
4
|
-
cloud: AssistantCloud;
|
|
5
|
-
assistantId: string;
|
|
6
|
-
};
|
|
7
|
-
/**
|
|
8
|
-
* @deprecated This is under active development and not yet ready for prod use.
|
|
9
|
-
*/
|
|
10
|
-
export declare const useCloudRuntime: (options: UseCloudRuntimeOptions) => import("@assistant-ui/react").AssistantRuntime;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=useCloudRuntime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCloudRuntime.d.ts","sourceRoot":"","sources":["../src/useCloudRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAkB,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,KAAK,sBAAsB,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,GAAG;IACjE,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,sBAAsB,mDAS9D,CAAC"}
|
package/dist/useCloudRuntime.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// src/useCloudRuntime.ts
|
|
2
|
-
import { useChatRuntime } from "./useChatRuntime.js";
|
|
3
|
-
var useCloudRuntime = (options) => {
|
|
4
|
-
const opts = options.cloud.runs.__internal_getAssistantOptions(
|
|
5
|
-
options.assistantId
|
|
6
|
-
);
|
|
7
|
-
return useChatRuntime({
|
|
8
|
-
...options,
|
|
9
|
-
...opts
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
export {
|
|
13
|
-
useCloudRuntime
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=useCloudRuntime.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/useCloudRuntime.ts"],"sourcesContent":["import { AssistantCloud } from \"@assistant-ui/react\";\nimport { useChatRuntime, UseChatRuntimeOptions } from \"./useChatRuntime\";\n\ntype UseCloudRuntimeOptions = Omit<UseChatRuntimeOptions, \"api\"> & {\n cloud: AssistantCloud;\n assistantId: string;\n};\n\n/**\n * @deprecated This is under active development and not yet ready for prod use.\n */\nexport const useCloudRuntime = (options: UseCloudRuntimeOptions) => {\n const opts = options.cloud.runs.__internal_getAssistantOptions(\n options.assistantId,\n );\n\n return useChatRuntime({\n ...options,\n ...opts,\n });\n};\n"],"mappings":";AACA,SAAS,sBAA6C;AAU/C,IAAM,kBAAkB,CAAC,YAAoC;AAClE,QAAM,OAAO,QAAQ,MAAM,KAAK;AAAA,IAC9B,QAAQ;AAAA,EACV;AAEA,SAAO,eAAe;AAAA,IACpB,GAAG;AAAA,IACH,GAAG;AAAA,EACL,CAAC;AACH;","names":[]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { LanguageModelV1FunctionTool } from "@ai-sdk/provider";
|
|
2
|
-
import { Tool } from "@assistant-ui/react";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @deprecated This is an internal API and may change without notice.
|
|
6
|
-
*/
|
|
7
|
-
export const fromLanguageModelTools = (
|
|
8
|
-
tools: LanguageModelV1FunctionTool[],
|
|
9
|
-
): Record<string, Tool<any, any>> => {
|
|
10
|
-
return Object.fromEntries(
|
|
11
|
-
tools.map((tool) => [
|
|
12
|
-
tool.name,
|
|
13
|
-
{
|
|
14
|
-
description: tool.description,
|
|
15
|
-
parameters: tool.parameters,
|
|
16
|
-
},
|
|
17
|
-
]),
|
|
18
|
-
);
|
|
19
|
-
};
|
package/src/converters/index.ts
DELETED