@assistant-ui/react 0.1.7 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +5 -3
- package/dist/{Thread-ZUDFhMtm.d.mts → ThreadActions-DqqhRbf1.d.mts} +8 -3
- package/dist/{Thread-ZUDFhMtm.d.ts → ThreadActions-DqqhRbf1.d.ts} +8 -3
- package/dist/{chunk-XVZ2GVQM.mjs → chunk-7O2URLFI.mjs} +1 -1
- package/dist/chunk-7O2URLFI.mjs.map +1 -0
- package/dist/experimental.d.mts +40 -33
- package/dist/experimental.d.ts +40 -33
- package/dist/experimental.js +26 -26
- package/dist/experimental.js.map +1 -1
- package/dist/experimental.mjs +24 -24
- package/dist/experimental.mjs.map +1 -1
- package/dist/index.d.mts +4 -3
- package/dist/index.d.ts +4 -3
- package/dist/index.js +156 -120
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +157 -121
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -4
- package/dist/chunk-XVZ2GVQM.mjs.map +0 -1
package/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
|
1
|
+
<a href="https://www.assistant-ui.com">
|
2
|
+
<img src="https://raw.githubusercontent.com/Yonom/assistant-ui/main/.github/assets/header.svg" alt="assistant-ui Header" width="100%" />
|
3
|
+
</a>
|
2
4
|
|
3
|
-
|
5
|
+
assistant-ui is a set of React components for AI chat.
|
4
6
|
|
5
7
|
- [Discord](https://discord.gg/S9dwgCNEFs)
|
6
8
|
- [Website](https://assistant-ui.com/)
|
@@ -25,4 +27,4 @@ Step 3: Run the app:
|
|
25
27
|
|
26
28
|
```sh
|
27
29
|
npm run dev
|
28
|
-
```
|
30
|
+
```
|
@@ -61,6 +61,7 @@ type UIContentPartComponent = ComponentType<UIContentPartProps>;
|
|
61
61
|
type ToolCallContentPartProps<TArgs = any, TResult = any> = {
|
62
62
|
part: ToolCallContentPart<TArgs, TResult>;
|
63
63
|
status: ContentPartStatus;
|
64
|
+
addResult: (result: any) => void;
|
64
65
|
};
|
65
66
|
type ToolCallContentPartComponent<TArgs = any, TResult = any> = ComponentType<ToolCallContentPartProps<TArgs, TResult>>;
|
66
67
|
|
@@ -79,14 +80,18 @@ type ModelConfigProvider = () => ModelConfig;
|
|
79
80
|
|
80
81
|
type Unsubscribe = () => void;
|
81
82
|
|
82
|
-
type ThreadState = {
|
83
|
+
type ThreadState = Readonly<{
|
83
84
|
messages: readonly ThreadMessage[];
|
84
85
|
isRunning: boolean;
|
86
|
+
}>;
|
87
|
+
|
88
|
+
type ThreadActionsState = Readonly<{
|
85
89
|
getBranches: (messageId: string) => readonly string[];
|
86
90
|
switchToBranch: (branchId: string) => void;
|
87
91
|
append: (message: AppendMessage) => void;
|
88
92
|
startRun: (parentId: string | null) => void;
|
89
93
|
cancelRun: () => void;
|
90
|
-
|
94
|
+
addToolResult: (toolCallId: string, result: any) => void;
|
95
|
+
}>;
|
91
96
|
|
92
|
-
export type { AssistantContentPart as A, ImageContentPartComponent as I, ModelConfigProvider as M, TextContentPartComponent as T, UIContentPartComponent as U, ToolCallContentPartComponent as a, ToolCallContentPartProps as b, ThreadState as c,
|
97
|
+
export type { AssistantContentPart as A, ImageContentPartComponent as I, ModelConfigProvider as M, TextContentPartComponent as T, UIContentPartComponent as U, ToolCallContentPartComponent as a, ToolCallContentPartProps as b, ThreadState as c, ThreadActionsState as d, Unsubscribe as e, ThreadMessage as f, ModelConfig as g, AppendMessage as h, AssistantMessage as i, UserMessage as j, UserContentPart as k, AppendContentPart as l, TextContentPart as m, Tool as n, ImageContentPart as o, ToolCallContentPart as p, UIContentPart as q, TextContentPartProps as r, ImageContentPartProps as s, UIContentPartProps as t };
|
@@ -61,6 +61,7 @@ type UIContentPartComponent = ComponentType<UIContentPartProps>;
|
|
61
61
|
type ToolCallContentPartProps<TArgs = any, TResult = any> = {
|
62
62
|
part: ToolCallContentPart<TArgs, TResult>;
|
63
63
|
status: ContentPartStatus;
|
64
|
+
addResult: (result: any) => void;
|
64
65
|
};
|
65
66
|
type ToolCallContentPartComponent<TArgs = any, TResult = any> = ComponentType<ToolCallContentPartProps<TArgs, TResult>>;
|
66
67
|
|
@@ -79,14 +80,18 @@ type ModelConfigProvider = () => ModelConfig;
|
|
79
80
|
|
80
81
|
type Unsubscribe = () => void;
|
81
82
|
|
82
|
-
type ThreadState = {
|
83
|
+
type ThreadState = Readonly<{
|
83
84
|
messages: readonly ThreadMessage[];
|
84
85
|
isRunning: boolean;
|
86
|
+
}>;
|
87
|
+
|
88
|
+
type ThreadActionsState = Readonly<{
|
85
89
|
getBranches: (messageId: string) => readonly string[];
|
86
90
|
switchToBranch: (branchId: string) => void;
|
87
91
|
append: (message: AppendMessage) => void;
|
88
92
|
startRun: (parentId: string | null) => void;
|
89
93
|
cancelRun: () => void;
|
90
|
-
|
94
|
+
addToolResult: (toolCallId: string, result: any) => void;
|
95
|
+
}>;
|
91
96
|
|
92
|
-
export type { AssistantContentPart as A, ImageContentPartComponent as I, ModelConfigProvider as M, TextContentPartComponent as T, UIContentPartComponent as U, ToolCallContentPartComponent as a, ToolCallContentPartProps as b, ThreadState as c,
|
97
|
+
export type { AssistantContentPart as A, ImageContentPartComponent as I, ModelConfigProvider as M, TextContentPartComponent as T, UIContentPartComponent as U, ToolCallContentPartComponent as a, ToolCallContentPartProps as b, ThreadState as c, ThreadActionsState as d, Unsubscribe as e, ThreadMessage as f, ModelConfig as g, AppendMessage as h, AssistantMessage as i, UserMessage as j, UserContentPart as k, AppendContentPart as l, TextContentPart as m, Tool as n, ImageContentPart as o, ToolCallContentPart as p, UIContentPart as q, TextContentPartProps as r, ImageContentPartProps as s, UIContentPartProps as t };
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/context/MessageContext.ts","../src/context/ThreadContext.ts","../src/context/ComposerContext.ts","../src/context/AssistantContext.ts","../src/context/ContentPartContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { MessageState } from \"./stores/Message\";\nimport type { EditComposerState } from \"./stores/MessageComposer\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\nimport { MessageUtilsState } from \"./stores/MessageUtils\";\n\nexport type MessageContextValue = {\n useMessage: ReadonlyStore<MessageState>;\n useMessageUtils: ReadonlyStore<MessageUtilsState>;\n useComposer: ReadonlyStore<EditComposerState>;\n};\n\nexport const MessageContext = createContext<MessageContextValue | null>(null);\n\nexport const useMessageContext = () => {\n const context = useContext(MessageContext);\n if (!context)\n throw new Error(\n \"This component can only be used inside a component passed to <ThreadPrimitive.Messages components={...} />.\",\n );\n return context;\n};\n","import { createContext, useContext } from \"react\";\nimport type { ComposerState } from \"./stores/Composer\";\nimport type { ThreadState } from \"./stores/Thread\";\nimport type { ThreadViewportState } from \"./stores/ThreadViewport\";\nimport { ThreadActionsState } from \"./stores/ThreadActions\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type ThreadContextValue = {\n useThread: ReadonlyStore<ThreadState>;\n useThreadActions: ReadonlyStore<ThreadActionsState>;\n useComposer: ReadonlyStore<ComposerState>;\n useViewport: ReadonlyStore<ThreadViewportState>;\n};\n\nexport const ThreadContext = createContext<ThreadContextValue | null>(null);\n\nexport const useThreadContext = (): ThreadContextValue => {\n const context = useContext(ThreadContext);\n if (!context)\n throw new Error(\n \"This component must be used within an AssistantRuntimeProvider.\",\n );\n return context;\n};\n","import { useContext, useMemo } from \"react\";\nimport { MessageContext } from \"./MessageContext\";\nimport { useThreadContext } from \"./ThreadContext\";\nimport type { ComposerState } from \"./stores/Composer\";\nimport type { EditComposerState } from \"./stores/MessageComposer\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type ComposerContextValue = {\n useComposer: ReadonlyStore<EditComposerState | ComposerState>;\n type: \"edit\" | \"new\";\n};\n\nexport const useComposerContext = (): ComposerContextValue => {\n const { useComposer } = useThreadContext();\n const { useComposer: useEditComposer } = useContext(MessageContext) ?? {};\n return useMemo(\n () => ({\n useComposer: (useEditComposer ?? useComposer) as ReadonlyStore<\n EditComposerState | ComposerState\n >,\n type: useEditComposer ? (\"edit\" as const) : (\"new\" as const),\n }),\n [useEditComposer, useComposer],\n );\n};\n","import { createContext, useContext } from \"react\";\nimport type { AssistantModelConfigState } from \"./stores/AssistantModelConfig\";\nimport type { AssistantToolUIsState } from \"./stores/AssistantToolUIs\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type AssistantContextValue = {\n useModelConfig: ReadonlyStore<AssistantModelConfigState>;\n useToolUIs: ReadonlyStore<AssistantToolUIsState>;\n};\n\nexport const AssistantContext = createContext<AssistantContextValue | null>(\n null,\n);\n\nexport const useAssistantContext = (): AssistantContextValue => {\n const context = useContext(AssistantContext);\n if (!context)\n throw new Error(\n \"This component must be used within an AssistantRuntimeProvider.\",\n );\n return context;\n};\n","import { createContext, useContext } from \"react\";\nimport type { ContentPartState } from \"./stores/ContentPart\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type ContentPartContextValue = {\n useContentPart: ReadonlyStore<ContentPartState>;\n};\n\nexport const ContentPartContext = createContext<ContentPartContextValue | null>(\n null,\n);\n\nexport const useContentPartContext = (): ContentPartContextValue => {\n const context = useContext(ContentPartContext);\n if (!context)\n throw new Error(\n \"This component can only be used inside a component passed to <MessagePrimitive.Content components={...} >.\",\n );\n return context;\n};\n"],"mappings":";;;;;;;AAAA,SAAS,eAAe,kBAAkB;AAYnC,IAAM,iBAAiB,cAA0C,IAAI;AAErE,IAAM,oBAAoB,MAAM;AACrC,QAAM,UAAU,WAAW,cAAc;AACzC,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,SAAO;AACT;;;ACrBA,SAAS,iBAAAA,gBAAe,cAAAC,mBAAkB;AAcnC,IAAM,gBAAgBD,eAAyC,IAAI;AAEnE,IAAM,mBAAmB,MAA0B;AACxD,QAAM,UAAUC,YAAW,aAAa;AACxC,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,SAAO;AACT;;;ACvBA,SAAS,cAAAC,aAAY,eAAe;AAY7B,IAAM,qBAAqB,MAA4B;AAC5D,QAAM,EAAE,YAAY,IAAI,iBAAiB;AACzC,QAAM,EAAE,aAAa,gBAAgB,IAAIC,YAAW,cAAc,KAAK,CAAC;AACxE,SAAO;AAAA,IACL,OAAO;AAAA,MACL,aAAc,mBAAmB;AAAA,MAGjC,MAAM,kBAAmB,SAAoB;AAAA,IAC/C;AAAA,IACA,CAAC,iBAAiB,WAAW;AAAA,EAC/B;AACF;;;ACxBA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAkB;AAUnC,IAAM,mBAAmBD;AAAA,EAC9B;AACF;AAEO,IAAM,sBAAsB,MAA6B;AAC9D,QAAM,UAAUC,YAAW,gBAAgB;AAC3C,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,SAAO;AACT;;;ACrBA,SAAS,iBAAAC,gBAAe,cAAAC,mBAAkB;AAQnC,IAAM,qBAAqBD;AAAA,EAChC;AACF;AAEO,IAAM,wBAAwB,MAA+B;AAClE,QAAM,UAAUC,YAAW,kBAAkB;AAC7C,MAAI,CAAC;AACH,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,SAAO;AACT;","names":["createContext","useContext","useContext","useContext","createContext","useContext","createContext","useContext"]}
|
package/dist/experimental.d.mts
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
import { M as ModelConfigProvider,
|
2
|
-
export {
|
3
|
-
import { ReactNode } from 'react';
|
1
|
+
import { M as ModelConfigProvider, f as ThreadMessage, e as Unsubscribe, a as ToolCallContentPartComponent, c as ThreadState, d as ThreadActionsState, n as Tool } from './ThreadActions-DqqhRbf1.mjs';
|
2
|
+
export { o as ImageContentPart, I as ImageContentPartComponent, s as ImageContentPartProps, g as ModelConfig, T as TextContentPartComponent, r as TextContentPartProps, p as ToolCallContentPart, b as ToolCallContentPartProps, q as UIContentPart, U as UIContentPartComponent, t as UIContentPartProps } from './ThreadActions-DqqhRbf1.mjs';
|
4
3
|
import { UseBoundStore, StoreApi } from 'zustand';
|
4
|
+
import { ReactNode } from 'react';
|
5
5
|
import 'zod';
|
6
6
|
|
7
|
-
type AssistantModelConfigState = {
|
7
|
+
type AssistantModelConfigState = Readonly<{
|
8
8
|
getModelConfig: ModelConfigProvider;
|
9
9
|
registerModelConfigProvider: (provider: ModelConfigProvider) => () => void;
|
10
|
-
}
|
10
|
+
}>;
|
11
11
|
|
12
12
|
type ContentPartState = Readonly<{
|
13
13
|
status: "in_progress" | "done" | "error";
|
@@ -19,12 +19,6 @@ type MessageState = Readonly<{
|
|
19
19
|
parentId: string | null;
|
20
20
|
branches: readonly string[];
|
21
21
|
isLast: boolean;
|
22
|
-
inProgressIndicator: ReactNode | null;
|
23
|
-
setInProgressIndicator: (value: ReactNode | null) => void;
|
24
|
-
isCopied: boolean;
|
25
|
-
setIsCopied: (value: boolean) => void;
|
26
|
-
isHovering: boolean;
|
27
|
-
setIsHovering: (value: boolean) => void;
|
28
22
|
}>;
|
29
23
|
|
30
24
|
type BaseComposerState = Readonly<{
|
@@ -32,6 +26,8 @@ type BaseComposerState = Readonly<{
|
|
32
26
|
setValue: (value: string) => void;
|
33
27
|
}>;
|
34
28
|
|
29
|
+
type ReadonlyStore<T> = UseBoundStore<Omit<StoreApi<T>, "setState" | "destroy" | "getInitialState">>;
|
30
|
+
|
35
31
|
type EditComposerState = BaseComposerState & Readonly<{
|
36
32
|
isEditing: boolean;
|
37
33
|
edit: () => void;
|
@@ -45,63 +41,74 @@ type ComposerState = BaseComposerState & Readonly<{
|
|
45
41
|
cancel: () => boolean;
|
46
42
|
}>;
|
47
43
|
|
48
|
-
type ThreadViewportState = {
|
44
|
+
type ThreadViewportState = Readonly<{
|
49
45
|
isAtBottom: boolean;
|
50
46
|
scrollToBottom: () => void;
|
51
47
|
onScrollToBottom: (callback: () => void) => Unsubscribe;
|
52
|
-
}
|
48
|
+
}>;
|
53
49
|
|
54
|
-
type
|
55
|
-
|
56
|
-
|
57
|
-
}
|
50
|
+
type AssistantToolUIsState = Readonly<{
|
51
|
+
getToolUI: (toolName: string) => ToolCallContentPartComponent | null;
|
52
|
+
setToolUI: (toolName: string, render: ToolCallContentPartComponent) => () => void;
|
53
|
+
}>;
|
58
54
|
|
59
55
|
type AssistantContextValue = {
|
60
|
-
useModelConfig:
|
61
|
-
|
56
|
+
useModelConfig: ReadonlyStore<AssistantModelConfigState>;
|
57
|
+
useToolUIs: ReadonlyStore<AssistantToolUIsState>;
|
62
58
|
};
|
63
59
|
declare const useAssistantContext: () => AssistantContextValue;
|
64
60
|
|
65
61
|
type ThreadContextValue = {
|
66
|
-
useThread:
|
67
|
-
|
68
|
-
|
62
|
+
useThread: ReadonlyStore<ThreadState>;
|
63
|
+
useThreadActions: ReadonlyStore<ThreadActionsState>;
|
64
|
+
useComposer: ReadonlyStore<ComposerState>;
|
65
|
+
useViewport: ReadonlyStore<ThreadViewportState>;
|
69
66
|
};
|
70
67
|
declare const useThreadContext: () => ThreadContextValue;
|
71
68
|
|
72
69
|
type ComposerContextValue = {
|
73
|
-
useComposer:
|
70
|
+
useComposer: ReadonlyStore<EditComposerState | ComposerState>;
|
74
71
|
type: "edit" | "new";
|
75
72
|
};
|
76
73
|
declare const useComposerContext: () => ComposerContextValue;
|
77
74
|
|
75
|
+
type MessageUtilsState = Readonly<{
|
76
|
+
inProgressIndicator: ReactNode | null;
|
77
|
+
setInProgressIndicator: (value: ReactNode | null) => void;
|
78
|
+
isCopied: boolean;
|
79
|
+
setIsCopied: (value: boolean) => void;
|
80
|
+
isHovering: boolean;
|
81
|
+
setIsHovering: (value: boolean) => void;
|
82
|
+
}>;
|
83
|
+
|
78
84
|
type MessageContextValue = {
|
79
|
-
useMessage:
|
80
|
-
|
85
|
+
useMessage: ReadonlyStore<MessageState>;
|
86
|
+
useMessageUtils: ReadonlyStore<MessageUtilsState>;
|
87
|
+
useComposer: ReadonlyStore<EditComposerState>;
|
81
88
|
};
|
82
89
|
declare const useMessageContext: () => MessageContextValue;
|
83
90
|
|
84
91
|
type ContentPartContextValue = {
|
85
|
-
useContentPart:
|
92
|
+
useContentPart: ReadonlyStore<ContentPartState>;
|
86
93
|
};
|
87
94
|
declare const useContentPartContext: () => ContentPartContextValue;
|
88
95
|
|
89
96
|
declare const useAssistantInstructions: (instruction: string) => void;
|
90
97
|
|
91
98
|
type AssistantToolProps<TArgs, TResult> = Tool<TArgs, TResult> & {
|
92
|
-
|
99
|
+
toolName: string;
|
93
100
|
render?: ToolCallContentPartComponent<TArgs, TResult>;
|
94
101
|
};
|
95
102
|
declare const useAssistantTool: <TArgs, TResult>(tool: AssistantToolProps<TArgs, TResult>) => void;
|
96
103
|
|
97
|
-
type
|
98
|
-
|
104
|
+
type AssistantToolUIProps<TArgs, TResult> = {
|
105
|
+
toolName: string;
|
99
106
|
render: ToolCallContentPartComponent<TArgs, TResult>;
|
100
107
|
};
|
101
|
-
declare const
|
108
|
+
declare const useAssistantToolUI: (tool: AssistantToolUIProps<any, any> | null) => void;
|
102
109
|
|
103
|
-
declare const
|
110
|
+
declare const makeAssistantTool: <TArgs, TResult>(tool: AssistantToolProps<TArgs, TResult>) => () => null;
|
104
111
|
|
105
|
-
declare const
|
112
|
+
declare const makeAssistantToolUI: <TArgs, TResult>(tool: AssistantToolUIProps<TArgs, TResult>) => () => null;
|
106
113
|
|
107
|
-
export { type AssistantContextValue, type AssistantModelConfigState, type AssistantToolProps, type
|
114
|
+
export { type AssistantContextValue, type AssistantModelConfigState, type AssistantToolProps, type AssistantToolUIProps, type ComposerContextValue, type ComposerState, type ContentPartContextValue, type ContentPartState, type EditComposerState, type MessageContextValue, type MessageState, ModelConfigProvider, type ThreadContextValue, ThreadState, type ThreadViewportState, ToolCallContentPartComponent, makeAssistantTool, makeAssistantToolUI, useAssistantContext, useAssistantInstructions, useAssistantTool, useAssistantToolUI, useComposerContext, useContentPartContext, useMessageContext, useThreadContext };
|
package/dist/experimental.d.ts
CHANGED
@@ -1,13 +1,13 @@
|
|
1
|
-
import { M as ModelConfigProvider,
|
2
|
-
export {
|
3
|
-
import { ReactNode } from 'react';
|
1
|
+
import { M as ModelConfigProvider, f as ThreadMessage, e as Unsubscribe, a as ToolCallContentPartComponent, c as ThreadState, d as ThreadActionsState, n as Tool } from './ThreadActions-DqqhRbf1.js';
|
2
|
+
export { o as ImageContentPart, I as ImageContentPartComponent, s as ImageContentPartProps, g as ModelConfig, T as TextContentPartComponent, r as TextContentPartProps, p as ToolCallContentPart, b as ToolCallContentPartProps, q as UIContentPart, U as UIContentPartComponent, t as UIContentPartProps } from './ThreadActions-DqqhRbf1.js';
|
4
3
|
import { UseBoundStore, StoreApi } from 'zustand';
|
4
|
+
import { ReactNode } from 'react';
|
5
5
|
import 'zod';
|
6
6
|
|
7
|
-
type AssistantModelConfigState = {
|
7
|
+
type AssistantModelConfigState = Readonly<{
|
8
8
|
getModelConfig: ModelConfigProvider;
|
9
9
|
registerModelConfigProvider: (provider: ModelConfigProvider) => () => void;
|
10
|
-
}
|
10
|
+
}>;
|
11
11
|
|
12
12
|
type ContentPartState = Readonly<{
|
13
13
|
status: "in_progress" | "done" | "error";
|
@@ -19,12 +19,6 @@ type MessageState = Readonly<{
|
|
19
19
|
parentId: string | null;
|
20
20
|
branches: readonly string[];
|
21
21
|
isLast: boolean;
|
22
|
-
inProgressIndicator: ReactNode | null;
|
23
|
-
setInProgressIndicator: (value: ReactNode | null) => void;
|
24
|
-
isCopied: boolean;
|
25
|
-
setIsCopied: (value: boolean) => void;
|
26
|
-
isHovering: boolean;
|
27
|
-
setIsHovering: (value: boolean) => void;
|
28
22
|
}>;
|
29
23
|
|
30
24
|
type BaseComposerState = Readonly<{
|
@@ -32,6 +26,8 @@ type BaseComposerState = Readonly<{
|
|
32
26
|
setValue: (value: string) => void;
|
33
27
|
}>;
|
34
28
|
|
29
|
+
type ReadonlyStore<T> = UseBoundStore<Omit<StoreApi<T>, "setState" | "destroy" | "getInitialState">>;
|
30
|
+
|
35
31
|
type EditComposerState = BaseComposerState & Readonly<{
|
36
32
|
isEditing: boolean;
|
37
33
|
edit: () => void;
|
@@ -45,63 +41,74 @@ type ComposerState = BaseComposerState & Readonly<{
|
|
45
41
|
cancel: () => boolean;
|
46
42
|
}>;
|
47
43
|
|
48
|
-
type ThreadViewportState = {
|
44
|
+
type ThreadViewportState = Readonly<{
|
49
45
|
isAtBottom: boolean;
|
50
46
|
scrollToBottom: () => void;
|
51
47
|
onScrollToBottom: (callback: () => void) => Unsubscribe;
|
52
|
-
}
|
48
|
+
}>;
|
53
49
|
|
54
|
-
type
|
55
|
-
|
56
|
-
|
57
|
-
}
|
50
|
+
type AssistantToolUIsState = Readonly<{
|
51
|
+
getToolUI: (toolName: string) => ToolCallContentPartComponent | null;
|
52
|
+
setToolUI: (toolName: string, render: ToolCallContentPartComponent) => () => void;
|
53
|
+
}>;
|
58
54
|
|
59
55
|
type AssistantContextValue = {
|
60
|
-
useModelConfig:
|
61
|
-
|
56
|
+
useModelConfig: ReadonlyStore<AssistantModelConfigState>;
|
57
|
+
useToolUIs: ReadonlyStore<AssistantToolUIsState>;
|
62
58
|
};
|
63
59
|
declare const useAssistantContext: () => AssistantContextValue;
|
64
60
|
|
65
61
|
type ThreadContextValue = {
|
66
|
-
useThread:
|
67
|
-
|
68
|
-
|
62
|
+
useThread: ReadonlyStore<ThreadState>;
|
63
|
+
useThreadActions: ReadonlyStore<ThreadActionsState>;
|
64
|
+
useComposer: ReadonlyStore<ComposerState>;
|
65
|
+
useViewport: ReadonlyStore<ThreadViewportState>;
|
69
66
|
};
|
70
67
|
declare const useThreadContext: () => ThreadContextValue;
|
71
68
|
|
72
69
|
type ComposerContextValue = {
|
73
|
-
useComposer:
|
70
|
+
useComposer: ReadonlyStore<EditComposerState | ComposerState>;
|
74
71
|
type: "edit" | "new";
|
75
72
|
};
|
76
73
|
declare const useComposerContext: () => ComposerContextValue;
|
77
74
|
|
75
|
+
type MessageUtilsState = Readonly<{
|
76
|
+
inProgressIndicator: ReactNode | null;
|
77
|
+
setInProgressIndicator: (value: ReactNode | null) => void;
|
78
|
+
isCopied: boolean;
|
79
|
+
setIsCopied: (value: boolean) => void;
|
80
|
+
isHovering: boolean;
|
81
|
+
setIsHovering: (value: boolean) => void;
|
82
|
+
}>;
|
83
|
+
|
78
84
|
type MessageContextValue = {
|
79
|
-
useMessage:
|
80
|
-
|
85
|
+
useMessage: ReadonlyStore<MessageState>;
|
86
|
+
useMessageUtils: ReadonlyStore<MessageUtilsState>;
|
87
|
+
useComposer: ReadonlyStore<EditComposerState>;
|
81
88
|
};
|
82
89
|
declare const useMessageContext: () => MessageContextValue;
|
83
90
|
|
84
91
|
type ContentPartContextValue = {
|
85
|
-
useContentPart:
|
92
|
+
useContentPart: ReadonlyStore<ContentPartState>;
|
86
93
|
};
|
87
94
|
declare const useContentPartContext: () => ContentPartContextValue;
|
88
95
|
|
89
96
|
declare const useAssistantInstructions: (instruction: string) => void;
|
90
97
|
|
91
98
|
type AssistantToolProps<TArgs, TResult> = Tool<TArgs, TResult> & {
|
92
|
-
|
99
|
+
toolName: string;
|
93
100
|
render?: ToolCallContentPartComponent<TArgs, TResult>;
|
94
101
|
};
|
95
102
|
declare const useAssistantTool: <TArgs, TResult>(tool: AssistantToolProps<TArgs, TResult>) => void;
|
96
103
|
|
97
|
-
type
|
98
|
-
|
104
|
+
type AssistantToolUIProps<TArgs, TResult> = {
|
105
|
+
toolName: string;
|
99
106
|
render: ToolCallContentPartComponent<TArgs, TResult>;
|
100
107
|
};
|
101
|
-
declare const
|
108
|
+
declare const useAssistantToolUI: (tool: AssistantToolUIProps<any, any> | null) => void;
|
102
109
|
|
103
|
-
declare const
|
110
|
+
declare const makeAssistantTool: <TArgs, TResult>(tool: AssistantToolProps<TArgs, TResult>) => () => null;
|
104
111
|
|
105
|
-
declare const
|
112
|
+
declare const makeAssistantToolUI: <TArgs, TResult>(tool: AssistantToolUIProps<TArgs, TResult>) => () => null;
|
106
113
|
|
107
|
-
export { type AssistantContextValue, type AssistantModelConfigState, type AssistantToolProps, type
|
114
|
+
export { type AssistantContextValue, type AssistantModelConfigState, type AssistantToolProps, type AssistantToolUIProps, type ComposerContextValue, type ComposerState, type ContentPartContextValue, type ContentPartState, type EditComposerState, type MessageContextValue, type MessageState, ModelConfigProvider, type ThreadContextValue, ThreadState, type ThreadViewportState, ToolCallContentPartComponent, makeAssistantTool, makeAssistantToolUI, useAssistantContext, useAssistantInstructions, useAssistantTool, useAssistantToolUI, useComposerContext, useContentPartContext, useMessageContext, useThreadContext };
|
package/dist/experimental.js
CHANGED
@@ -20,12 +20,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
20
20
|
// src/experimental.ts
|
21
21
|
var experimental_exports = {};
|
22
22
|
__export(experimental_exports, {
|
23
|
-
|
24
|
-
|
23
|
+
makeAssistantTool: () => makeAssistantTool,
|
24
|
+
makeAssistantToolUI: () => makeAssistantToolUI,
|
25
25
|
useAssistantContext: () => useAssistantContext,
|
26
26
|
useAssistantInstructions: () => useAssistantInstructions,
|
27
27
|
useAssistantTool: () => useAssistantTool,
|
28
|
-
|
28
|
+
useAssistantToolUI: () => useAssistantToolUI,
|
29
29
|
useComposerContext: () => useComposerContext,
|
30
30
|
useContentPartContext: () => useContentPartContext,
|
31
31
|
useMessageContext: () => useMessageContext,
|
@@ -119,41 +119,41 @@ var useAssistantInstructions = (instruction) => {
|
|
119
119
|
// src/model-config/useAssistantTool.tsx
|
120
120
|
var import_react7 = require("react");
|
121
121
|
var useAssistantTool = (tool) => {
|
122
|
-
const { useModelConfig,
|
122
|
+
const { useModelConfig, useToolUIs } = useAssistantContext();
|
123
123
|
const registerModelConfigProvider = useModelConfig(
|
124
124
|
(s) => s.registerModelConfigProvider
|
125
125
|
);
|
126
|
-
const
|
126
|
+
const setToolUI = useToolUIs((s) => s.setToolUI);
|
127
127
|
(0, import_react7.useEffect)(() => {
|
128
|
-
const {
|
128
|
+
const { toolName, render, ...rest } = tool;
|
129
129
|
const config = {
|
130
130
|
tools: {
|
131
|
-
[tool.
|
131
|
+
[tool.toolName]: rest
|
132
132
|
}
|
133
133
|
};
|
134
134
|
const unsub1 = registerModelConfigProvider(() => config);
|
135
|
-
const unsub2 = render ?
|
135
|
+
const unsub2 = render ? setToolUI(toolName, render) : void 0;
|
136
136
|
return () => {
|
137
137
|
unsub1();
|
138
138
|
unsub2?.();
|
139
139
|
};
|
140
|
-
}, [registerModelConfigProvider,
|
140
|
+
}, [registerModelConfigProvider, setToolUI, tool]);
|
141
141
|
};
|
142
142
|
|
143
|
-
// src/model-config/
|
143
|
+
// src/model-config/useAssistantToolUI.tsx
|
144
144
|
var import_react8 = require("react");
|
145
|
-
var
|
146
|
-
const {
|
147
|
-
const
|
145
|
+
var useAssistantToolUI = (tool) => {
|
146
|
+
const { useToolUIs } = useAssistantContext();
|
147
|
+
const setToolUI = useToolUIs((s) => s.setToolUI);
|
148
148
|
(0, import_react8.useEffect)(() => {
|
149
149
|
if (!tool) return;
|
150
|
-
const {
|
151
|
-
return
|
152
|
-
}, [
|
150
|
+
const { toolName, render } = tool;
|
151
|
+
return setToolUI(toolName, render);
|
152
|
+
}, [setToolUI, tool]);
|
153
153
|
};
|
154
154
|
|
155
|
-
// src/model-config/
|
156
|
-
var
|
155
|
+
// src/model-config/makeAssistantTool.tsx
|
156
|
+
var makeAssistantTool = (tool) => {
|
157
157
|
const Tool = () => {
|
158
158
|
useAssistantTool(tool);
|
159
159
|
return null;
|
@@ -161,22 +161,22 @@ var makeTool = (tool) => {
|
|
161
161
|
return Tool;
|
162
162
|
};
|
163
163
|
|
164
|
-
// src/model-config/
|
165
|
-
var
|
166
|
-
const
|
167
|
-
|
164
|
+
// src/model-config/makeAssistantToolUI.tsx
|
165
|
+
var makeAssistantToolUI = (tool) => {
|
166
|
+
const ToolUI = () => {
|
167
|
+
useAssistantToolUI(tool);
|
168
168
|
return null;
|
169
169
|
};
|
170
|
-
return
|
170
|
+
return ToolUI;
|
171
171
|
};
|
172
172
|
// Annotate the CommonJS export names for ESM import in node:
|
173
173
|
0 && (module.exports = {
|
174
|
-
|
175
|
-
|
174
|
+
makeAssistantTool,
|
175
|
+
makeAssistantToolUI,
|
176
176
|
useAssistantContext,
|
177
177
|
useAssistantInstructions,
|
178
178
|
useAssistantTool,
|
179
|
-
|
179
|
+
useAssistantToolUI,
|
180
180
|
useComposerContext,
|
181
181
|
useContentPartContext,
|
182
182
|
useMessageContext,
|
package/dist/experimental.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/experimental.ts","../src/context/AssistantContext.ts","../src/context/ThreadContext.ts","../src/context/ComposerContext.ts","../src/context/MessageContext.ts","../src/context/ContentPartContext.ts","../src/model-config/useAssistantInstructions.tsx","../src/model-config/useAssistantTool.tsx","../src/model-config/useAssistantToolRenderer.tsx","../src/model-config/makeTool.tsx","../src/model-config/makeToolRenderer.tsx"],"sourcesContent":["export type {\n ImageContentPart,\n ToolCallContentPart,\n UIContentPart,\n} from \"./utils/AssistantTypes\";\n\nexport type {\n ModelConfigProvider,\n ModelConfig,\n} from \"./utils/ModelConfigTypes\";\n\nexport type {\n TextContentPartProps,\n TextContentPartComponent,\n ImageContentPartProps,\n ImageContentPartComponent,\n UIContentPartProps,\n UIContentPartComponent,\n ToolCallContentPartProps,\n ToolCallContentPartComponent,\n} from \"./primitives/message/ContentPartComponentTypes\";\n\nexport * from \"./context\";\nexport { useAssistantInstructions } from \"./model-config/useAssistantInstructions\";\nexport {\n useAssistantTool,\n type AssistantToolProps,\n} from \"./model-config/useAssistantTool\";\nexport {\n useAssistantToolRenderer,\n type AssistantToolRendererProps,\n} from \"./model-config/useAssistantToolRenderer\";\nexport { makeTool } from \"./model-config/makeTool\";\nexport { makeToolRenderer } from \"./model-config/makeToolRenderer\";\n","import { createContext, useContext } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\nimport type { AssistantModelConfigState } from \"./stores/AssistantModelConfig\";\nimport type { AssistantToolRenderersState } from \"./stores/AssistantToolRenderers\";\n\nexport type AssistantContextValue = {\n useModelConfig: UseBoundStore<StoreApi<AssistantModelConfigState>>;\n useToolRenderers: UseBoundStore<StoreApi<AssistantToolRenderersState>>;\n};\n\nexport const AssistantContext = createContext<AssistantContextValue | null>(\n null,\n);\n\nexport const useAssistantContext = (): AssistantContextValue => {\n const context = useContext(AssistantContext);\n if (!context)\n throw new Error(\n \"This component must be used within an AssistantRuntimeProvider.\",\n );\n return context;\n};\n","import { createContext, useContext } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\nimport type { ComposerState } from \"./stores/Composer\";\nimport type { ThreadState } from \"./stores/Thread\";\nimport type { ThreadViewportState } from \"./stores/ThreadViewport\";\n\nexport type ThreadContextValue = {\n useThread: UseBoundStore<StoreApi<ThreadState>>;\n useComposer: UseBoundStore<StoreApi<ComposerState>>;\n useViewport: UseBoundStore<StoreApi<ThreadViewportState>>;\n};\n\nexport const ThreadContext = createContext<ThreadContextValue | null>(null);\n\nexport const useThreadContext = (): ThreadContextValue => {\n const context = useContext(ThreadContext);\n if (!context)\n throw new Error(\n \"This component must be used within an AssistantRuntimeProvider.\",\n );\n return context;\n};\n","import { useContext, useMemo } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\nimport { MessageContext } from \"./MessageContext\";\nimport { useThreadContext } from \"./ThreadContext\";\nimport type { ComposerState } from \"./stores/Composer\";\nimport type { EditComposerState } from \"./stores/MessageComposer\";\n\nexport type ComposerContextValue = {\n useComposer: UseBoundStore<StoreApi<EditComposerState | ComposerState>>;\n type: \"edit\" | \"new\";\n};\n\nexport const useComposerContext = (): ComposerContextValue => {\n const { useComposer } = useThreadContext();\n const { useComposer: useEditComposer } = useContext(MessageContext) ?? {};\n return useMemo(\n () => ({\n useComposer: (useEditComposer ?? useComposer) as UseBoundStore<\n StoreApi<EditComposerState | ComposerState>\n >,\n type: useEditComposer ? (\"edit\" as const) : (\"new\" as const),\n }),\n [useEditComposer, useComposer],\n );\n};\n","import { createContext, useContext } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\nimport type { MessageState } from \"./stores/Message\";\nimport type { EditComposerState } from \"./stores/MessageComposer\";\n\nexport type MessageContextValue = {\n useMessage: UseBoundStore<StoreApi<MessageState>>;\n useComposer: UseBoundStore<StoreApi<EditComposerState>>;\n};\n\nexport const MessageContext = createContext<MessageContextValue | null>(null);\n\nexport const useMessageContext = () => {\n const context = useContext(MessageContext);\n if (!context)\n throw new Error(\n \"This component can only be used inside a component passed to <ThreadPrimitive.Messages components={...} />.\",\n );\n return context;\n};\n","import { createContext, useContext } from \"react\";\nimport type { StoreApi, UseBoundStore } from \"zustand\";\nimport type { ContentPartState } from \"./stores/ContentPart\";\n\nexport type ContentPartContextValue = {\n useContentPart: UseBoundStore<StoreApi<ContentPartState>>;\n};\n\nexport const ContentPartContext = createContext<ContentPartContextValue | null>(\n null,\n);\n\nexport const useContentPartContext = (): ContentPartContextValue => {\n const context = useContext(ContentPartContext);\n if (!context)\n throw new Error(\n \"This component can only be used inside a component passed to <MessagePrimitive.Content components={...} >.\",\n );\n return context;\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useAssistantContext } from \"../context/AssistantContext\";\n\nexport const useAssistantInstructions = (instruction: string) => {\n const { useModelConfig } = useAssistantContext();\n const registerModelConfigProvider = useModelConfig(\n (s) => s.registerModelConfigProvider,\n );\n useEffect(() => {\n const config = {\n system: instruction,\n };\n return registerModelConfigProvider(() => config);\n }, [registerModelConfigProvider, instruction]);\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useAssistantContext } from \"../context/AssistantContext\";\nimport type { ToolCallContentPartComponent } from \"../primitives/message/ContentPartComponentTypes\";\nimport type { Tool } from \"../utils/ModelConfigTypes\";\n\nexport type AssistantToolProps<TArgs, TResult> = Tool<TArgs, TResult> & {\n name: string;\n render?: ToolCallContentPartComponent<TArgs, TResult>;\n};\n\nexport const useAssistantTool = <TArgs, TResult>(\n tool: AssistantToolProps<TArgs, TResult>,\n) => {\n const { useModelConfig, useToolRenderers } = useAssistantContext();\n const registerModelConfigProvider = useModelConfig(\n (s) => s.registerModelConfigProvider,\n );\n const setToolRenderer = useToolRenderers((s) => s.setToolRenderer);\n useEffect(() => {\n const { name, render, ...rest } = tool;\n const config = {\n tools: {\n [tool.name]: rest,\n },\n };\n const unsub1 = registerModelConfigProvider(() => config);\n const unsub2 = render ? setToolRenderer(name, render) : undefined;\n return () => {\n unsub1();\n unsub2?.();\n };\n }, [registerModelConfigProvider, setToolRenderer, tool]);\n};\n","\"use client\";\nimport { useEffect } from \"react\";\nimport { useAssistantContext } from \"../context/AssistantContext\";\nimport type { ToolCallContentPartComponent } from \"../primitives/message/ContentPartComponentTypes\";\n\nexport type AssistantToolRendererProps<TArgs, TResult> = {\n name: string;\n render: ToolCallContentPartComponent<TArgs, TResult>;\n};\n\nexport const useAssistantToolRenderer = (\n tool: AssistantToolRendererProps<any, any> | null,\n) => {\n const { useToolRenderers } = useAssistantContext();\n const setToolRenderer = useToolRenderers((s) => s.setToolRenderer);\n useEffect(() => {\n if (!tool) return;\n const { name, render } = tool;\n return setToolRenderer(name, render);\n }, [setToolRenderer, tool]);\n};\n","\"use client\";\nimport { type AssistantToolProps, useAssistantTool } from \"./useAssistantTool\";\n\nexport const makeTool = <TArgs, TResult>(\n tool: AssistantToolProps<TArgs, TResult>,\n) => {\n const Tool = () => {\n useAssistantTool(tool);\n return null;\n };\n return Tool;\n};\n","\"use client\";\nimport {\n type AssistantToolRendererProps,\n useAssistantToolRenderer,\n} from \"./useAssistantToolRenderer\";\n\nexport const makeToolRenderer = <TArgs, TResult>(\n tool: AssistantToolRendererProps<TArgs, TResult>,\n) => {\n const ToolRenderer = () => {\n useAssistantToolRenderer(tool);\n return null;\n };\n return ToolRenderer;\n};\n"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_react","import_react","import_react"]}
|
1
|
+
{"version":3,"sources":["../src/experimental.ts","../src/context/AssistantContext.ts","../src/context/ThreadContext.ts","../src/context/ComposerContext.ts","../src/context/MessageContext.ts","../src/context/ContentPartContext.ts","../src/model-config/useAssistantInstructions.tsx","../src/model-config/useAssistantTool.tsx","../src/model-config/useAssistantToolUI.tsx","../src/model-config/makeAssistantTool.tsx","../src/model-config/makeAssistantToolUI.tsx"],"sourcesContent":["export type {\n ImageContentPart,\n ToolCallContentPart,\n UIContentPart,\n} from \"./utils/AssistantTypes\";\n\nexport type {\n ModelConfigProvider,\n ModelConfig,\n} from \"./utils/ModelConfigTypes\";\n\nexport type {\n TextContentPartProps,\n TextContentPartComponent,\n ImageContentPartProps,\n ImageContentPartComponent,\n UIContentPartProps,\n UIContentPartComponent,\n ToolCallContentPartProps,\n ToolCallContentPartComponent,\n} from \"./primitives/message/ContentPartComponentTypes\";\n\nexport * from \"./context\";\nexport { useAssistantInstructions } from \"./model-config/useAssistantInstructions\";\nexport {\n useAssistantTool,\n type AssistantToolProps,\n} from \"./model-config/useAssistantTool\";\nexport {\n useAssistantToolUI,\n type AssistantToolUIProps,\n} from \"./model-config/useAssistantToolUI\";\nexport { makeAssistantTool } from \"./model-config/makeAssistantTool\";\nexport { makeAssistantToolUI } from \"./model-config/makeAssistantToolUI\";\n","import { createContext, useContext } from \"react\";\nimport type { AssistantModelConfigState } from \"./stores/AssistantModelConfig\";\nimport type { AssistantToolUIsState } from \"./stores/AssistantToolUIs\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type AssistantContextValue = {\n useModelConfig: ReadonlyStore<AssistantModelConfigState>;\n useToolUIs: ReadonlyStore<AssistantToolUIsState>;\n};\n\nexport const AssistantContext = createContext<AssistantContextValue | null>(\n null,\n);\n\nexport const useAssistantContext = (): AssistantContextValue => {\n const context = useContext(AssistantContext);\n if (!context)\n throw new Error(\n \"This component must be used within an AssistantRuntimeProvider.\",\n );\n return context;\n};\n","import { createContext, useContext } from \"react\";\nimport type { ComposerState } from \"./stores/Composer\";\nimport type { ThreadState } from \"./stores/Thread\";\nimport type { ThreadViewportState } from \"./stores/ThreadViewport\";\nimport { ThreadActionsState } from \"./stores/ThreadActions\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type ThreadContextValue = {\n useThread: ReadonlyStore<ThreadState>;\n useThreadActions: ReadonlyStore<ThreadActionsState>;\n useComposer: ReadonlyStore<ComposerState>;\n useViewport: ReadonlyStore<ThreadViewportState>;\n};\n\nexport const ThreadContext = createContext<ThreadContextValue | null>(null);\n\nexport const useThreadContext = (): ThreadContextValue => {\n const context = useContext(ThreadContext);\n if (!context)\n throw new Error(\n \"This component must be used within an AssistantRuntimeProvider.\",\n );\n return context;\n};\n","import { useContext, useMemo } from \"react\";\nimport { MessageContext } from \"./MessageContext\";\nimport { useThreadContext } from \"./ThreadContext\";\nimport type { ComposerState } from \"./stores/Composer\";\nimport type { EditComposerState } from \"./stores/MessageComposer\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type ComposerContextValue = {\n useComposer: ReadonlyStore<EditComposerState | ComposerState>;\n type: \"edit\" | \"new\";\n};\n\nexport const useComposerContext = (): ComposerContextValue => {\n const { useComposer } = useThreadContext();\n const { useComposer: useEditComposer } = useContext(MessageContext) ?? {};\n return useMemo(\n () => ({\n useComposer: (useEditComposer ?? useComposer) as ReadonlyStore<\n EditComposerState | ComposerState\n >,\n type: useEditComposer ? (\"edit\" as const) : (\"new\" as const),\n }),\n [useEditComposer, useComposer],\n );\n};\n","import { createContext, useContext } from \"react\";\nimport type { MessageState } from \"./stores/Message\";\nimport type { EditComposerState } from \"./stores/MessageComposer\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\nimport { MessageUtilsState } from \"./stores/MessageUtils\";\n\nexport type MessageContextValue = {\n useMessage: ReadonlyStore<MessageState>;\n useMessageUtils: ReadonlyStore<MessageUtilsState>;\n useComposer: ReadonlyStore<EditComposerState>;\n};\n\nexport const MessageContext = createContext<MessageContextValue | null>(null);\n\nexport const useMessageContext = () => {\n const context = useContext(MessageContext);\n if (!context)\n throw new Error(\n \"This component can only be used inside a component passed to <ThreadPrimitive.Messages components={...} />.\",\n );\n return context;\n};\n","import { createContext, useContext } from \"react\";\nimport type { ContentPartState } from \"./stores/ContentPart\";\nimport { ReadonlyStore } from \"./ReadonlyStore\";\n\nexport type ContentPartContextValue = {\n useContentPart: ReadonlyStore<ContentPartState>;\n};\n\nexport const ContentPartContext = createContext<ContentPartContextValue | null>(\n null,\n);\n\nexport const useContentPartContext = (): ContentPartContextValue => {\n const context = useContext(ContentPartContext);\n if (!context)\n throw new Error(\n \"This component can only be used inside a component passed to <MessagePrimitive.Content components={...} >.\",\n );\n return context;\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useAssistantContext } from \"../context/AssistantContext\";\n\nexport const useAssistantInstructions = (instruction: string) => {\n const { useModelConfig } = useAssistantContext();\n const registerModelConfigProvider = useModelConfig(\n (s) => s.registerModelConfigProvider,\n );\n useEffect(() => {\n const config = {\n system: instruction,\n };\n return registerModelConfigProvider(() => config);\n }, [registerModelConfigProvider, instruction]);\n};\n","\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useAssistantContext } from \"../context/AssistantContext\";\nimport type { ToolCallContentPartComponent } from \"../primitives/message/ContentPartComponentTypes\";\nimport type { Tool } from \"../utils/ModelConfigTypes\";\n\nexport type AssistantToolProps<TArgs, TResult> = Tool<TArgs, TResult> & {\n toolName: string;\n render?: ToolCallContentPartComponent<TArgs, TResult>;\n};\n\nexport const useAssistantTool = <TArgs, TResult>(\n tool: AssistantToolProps<TArgs, TResult>,\n) => {\n const { useModelConfig, useToolUIs } = useAssistantContext();\n const registerModelConfigProvider = useModelConfig(\n (s) => s.registerModelConfigProvider,\n );\n const setToolUI = useToolUIs((s) => s.setToolUI);\n useEffect(() => {\n const { toolName, render, ...rest } = tool;\n const config = {\n tools: {\n [tool.toolName]: rest,\n },\n };\n const unsub1 = registerModelConfigProvider(() => config);\n const unsub2 = render ? setToolUI(toolName, render) : undefined;\n return () => {\n unsub1();\n unsub2?.();\n };\n }, [registerModelConfigProvider, setToolUI, tool]);\n};\n","\"use client\";\nimport { useEffect } from \"react\";\nimport { useAssistantContext } from \"../context/AssistantContext\";\nimport type { ToolCallContentPartComponent } from \"../primitives/message/ContentPartComponentTypes\";\n\nexport type AssistantToolUIProps<TArgs, TResult> = {\n toolName: string;\n render: ToolCallContentPartComponent<TArgs, TResult>;\n};\n\nexport const useAssistantToolUI = (\n tool: AssistantToolUIProps<any, any> | null,\n) => {\n const { useToolUIs } = useAssistantContext();\n const setToolUI = useToolUIs((s) => s.setToolUI);\n useEffect(() => {\n if (!tool) return;\n const { toolName, render } = tool;\n return setToolUI(toolName, render);\n }, [setToolUI, tool]);\n};\n","\"use client\";\nimport { type AssistantToolProps, useAssistantTool } from \"./useAssistantTool\";\n\nexport const makeAssistantTool = <TArgs, TResult>(\n tool: AssistantToolProps<TArgs, TResult>,\n) => {\n const Tool = () => {\n useAssistantTool(tool);\n return null;\n };\n return Tool;\n};\n","\"use client\";\nimport {\n type AssistantToolUIProps,\n useAssistantToolUI,\n} from \"./useAssistantToolUI\";\n\nexport const makeAssistantToolUI = <TArgs, TResult>(\n tool: AssistantToolUIProps<TArgs, TResult>,\n) => {\n const ToolUI = () => {\n useAssistantToolUI(tool);\n return null;\n };\n return ToolUI;\n};\n"],"mappings":"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","names":["import_react","import_react","import_react","import_react","import_react","import_react","import_react"]}
|