@assistant-ui/react 0.7.69 → 0.7.71
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/api/MessageRuntime.d.ts +2 -1
- package/dist/api/MessageRuntime.d.ts.map +1 -1
- package/dist/api/MessageRuntime.js +9 -2
- package/dist/api/MessageRuntime.js.map +1 -1
- package/dist/api/MessageRuntime.mjs +9 -2
- package/dist/api/MessageRuntime.mjs.map +1 -1
- package/dist/cloud/auiV0.d.ts +3 -0
- package/dist/cloud/auiV0.d.ts.map +1 -1
- package/dist/cloud/auiV0.js +6 -0
- package/dist/cloud/auiV0.js.map +1 -1
- package/dist/cloud/auiV0.mjs +6 -0
- package/dist/cloud/auiV0.mjs.map +1 -1
- package/dist/context/providers/ThreadRuntimeProvider.d.ts.map +1 -1
- package/dist/context/providers/ThreadRuntimeProvider.js +3 -5
- package/dist/context/providers/ThreadRuntimeProvider.js.map +1 -1
- package/dist/context/providers/ThreadRuntimeProvider.mjs +3 -5
- package/dist/context/providers/ThreadRuntimeProvider.mjs.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.d.ts +3 -0
- package/dist/context/providers/ThreadViewportProvider.d.ts.map +1 -0
- package/dist/context/providers/ThreadViewportProvider.js +63 -0
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -0
- package/dist/context/providers/ThreadViewportProvider.mjs +42 -0
- package/dist/context/providers/ThreadViewportProvider.mjs.map +1 -0
- package/dist/context/react/ThreadContext.d.ts +0 -18
- package/dist/context/react/ThreadContext.d.ts.map +1 -1
- package/dist/context/react/ThreadContext.js +2 -11
- package/dist/context/react/ThreadContext.js.map +1 -1
- package/dist/context/react/ThreadContext.mjs +1 -8
- package/dist/context/react/ThreadContext.mjs.map +1 -1
- package/dist/context/react/ThreadViewportContext.d.ts +24 -0
- package/dist/context/react/ThreadViewportContext.d.ts.map +1 -0
- package/dist/context/react/ThreadViewportContext.js +44 -0
- package/dist/context/react/ThreadViewportContext.js.map +1 -0
- package/dist/context/react/ThreadViewportContext.mjs +18 -0
- package/dist/context/react/ThreadViewportContext.mjs.map +1 -0
- package/dist/context/react/index.d.ts +2 -1
- package/dist/context/react/index.d.ts.map +1 -1
- package/dist/context/react/index.js +3 -2
- package/dist/context/react/index.js.map +1 -1
- package/dist/context/react/index.mjs +4 -2
- package/dist/context/react/index.mjs.map +1 -1
- package/dist/context/stores/ThreadViewport.d.ts.map +1 -1
- package/dist/context/stores/ThreadViewport.js +1 -0
- package/dist/context/stores/ThreadViewport.js.map +1 -1
- package/dist/context/stores/ThreadViewport.mjs +2 -0
- package/dist/context/stores/ThreadViewport.mjs.map +1 -1
- package/dist/model-context/ModelContextTypes.d.ts +3 -0
- package/dist/model-context/ModelContextTypes.d.ts.map +1 -1
- package/dist/model-context/ModelContextTypes.js.map +1 -1
- package/dist/model-context/ModelContextTypes.mjs.map +1 -1
- package/dist/primitives/contentPart/useContentPartReasoning.d.ts +5 -0
- package/dist/primitives/contentPart/useContentPartReasoning.d.ts.map +1 -0
- package/dist/primitives/contentPart/useContentPartReasoning.js +42 -0
- package/dist/primitives/contentPart/useContentPartReasoning.js.map +1 -0
- package/dist/primitives/contentPart/useContentPartReasoning.mjs +18 -0
- package/dist/primitives/contentPart/useContentPartReasoning.mjs.map +1 -0
- package/dist/primitives/index.d.ts +1 -0
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +3 -0
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/index.mjs +2 -0
- package/dist/primitives/index.mjs.map +1 -1
- package/dist/primitives/message/MessageContent.d.ts +2 -1
- package/dist/primitives/message/MessageContent.d.ts.map +1 -1
- package/dist/primitives/message/MessageContent.js +5 -1
- package/dist/primitives/message/MessageContent.js.map +1 -1
- package/dist/primitives/message/MessageContent.mjs +5 -1
- package/dist/primitives/message/MessageContent.mjs.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js +3 -4
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.mjs +1 -2
- package/dist/primitives/thread/ThreadScrollToBottom.mjs.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +5 -1
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.mjs +5 -1
- package/dist/primitives/thread/ThreadViewport.mjs.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +2 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.mjs +2 -4
- package/dist/primitives/thread/useThreadViewportAutoScroll.mjs.map +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js +1 -0
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs +1 -0
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/edge/EdgeRuntimeRequestOptions.d.ts +6 -6
- package/dist/runtimes/edge/converters/toCoreMessages.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/toCoreMessages.js +2 -1
- package/dist/runtimes/edge/converters/toCoreMessages.js.map +1 -1
- package/dist/runtimes/edge/converters/toCoreMessages.mjs +2 -1
- package/dist/runtimes/edge/converters/toCoreMessages.mjs.map +1 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.js +3 -0
- package/dist/runtimes/edge/converters/toLanguageModelMessages.js.map +1 -1
- package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs +3 -0
- package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts +2 -2
- package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.js +10 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.js.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs +10 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.js +7 -0
- package/dist/runtimes/edge/streams/assistantEncoderStream.js.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs +7 -0
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.js +19 -0
- package/dist/runtimes/edge/streams/runResultStream.js.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.mjs +19 -0
- package/dist/runtimes/edge/streams/runResultStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.js +14 -15
- package/dist/runtimes/edge/streams/toolResultStream.js.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.mjs +14 -15
- package/dist/runtimes/edge/streams/toolResultStream.mjs.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts +2 -2
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.js +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.mjs +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.d.ts +2 -2
- package/dist/runtimes/local/ChatModelAdapter.d.ts.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
- package/dist/styles/index.css +57 -29
- package/dist/styles/index.css.map +1 -1
- package/dist/styles/tailwindcss/thread.css +30 -23
- package/dist/styles/tailwindcss/thread.css.json +31 -25
- package/dist/types/AssistantTypes.d.ts +5 -1
- package/dist/types/AssistantTypes.d.ts.map +1 -1
- package/dist/types/AssistantTypes.js.map +1 -1
- package/dist/types/ContentPartComponentTypes.d.ts +3 -1
- package/dist/types/ContentPartComponentTypes.d.ts.map +1 -1
- package/dist/types/ContentPartComponentTypes.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.js +2 -2
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.mjs +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.mjs.map +1 -1
- package/package.json +14 -14
- package/src/api/MessageRuntime.ts +14 -5
- package/src/cloud/auiV0.ts +11 -0
- package/src/context/providers/ThreadRuntimeProvider.tsx +4 -5
- package/src/context/providers/ThreadViewportProvider.tsx +49 -0
- package/src/context/react/ThreadContext.ts +0 -8
- package/src/context/react/ThreadViewportContext.ts +23 -0
- package/src/context/react/index.ts +4 -1
- package/src/context/stores/ThreadViewport.tsx +2 -0
- package/src/model-context/ModelContextTypes.ts +7 -0
- package/src/primitives/contentPart/useContentPartReasoning.tsx +18 -0
- package/src/primitives/index.ts +1 -0
- package/src/primitives/message/MessageContent.tsx +8 -0
- package/src/primitives/thread/ThreadScrollToBottom.tsx +1 -2
- package/src/primitives/thread/ThreadViewport.tsx +13 -1
- package/src/primitives/thread/useThreadViewportAutoScroll.tsx +2 -4
- package/src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx +4 -1
- package/src/runtimes/edge/converters/toCoreMessages.ts +2 -1
- package/src/runtimes/edge/converters/toLanguageModelMessages.ts +4 -0
- package/src/runtimes/edge/createEdgeRuntimeAPI.ts +12 -3
- package/src/runtimes/edge/streams/assistantEncoderStream.ts +8 -0
- package/src/runtimes/edge/streams/runResultStream.ts +24 -0
- package/src/runtimes/edge/streams/toolResultStream.ts +21 -18
- package/src/runtimes/external-store/ThreadMessageLike.tsx +4 -2
- package/src/runtimes/local/ChatModelAdapter.tsx +2 -1
- package/src/styles/tailwindcss/thread.css +30 -23
- package/src/types/AssistantTypes.ts +7 -0
- package/src/types/ContentPartComponentTypes.tsx +4 -0
- package/src/types/index.ts +3 -0
- package/src/utils/hooks/useOnScrollToBottom.tsx +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/ContentPartComponentTypes.tsx"],"sourcesContent":["import type { ComponentType } from \"react\";\nimport type {\n ContentPartStatus,\n FileContentPart,\n ImageContentPart,\n TextContentPart,\n ToolCallContentPart,\n UIContentPart,\n Unstable_AudioContentPart,\n} from \"./AssistantTypes\";\nimport { ContentPartState } from \"../api/ContentPartRuntime\";\nimport { ReadonlyJSONObject } from \"../utils/json/json-value\";\n\nexport type EmptyContentPartProps = {\n status: ContentPartStatus;\n};\nexport type EmptyContentPartComponent = ComponentType<EmptyContentPartProps>;\n\nexport type TextContentPartProps = ContentPartState & TextContentPart;\nexport type TextContentPartComponent = ComponentType<TextContentPartProps>;\n\nexport type ImageContentPartProps = ContentPartState & ImageContentPart;\nexport type ImageContentPartComponent = ComponentType<ImageContentPartProps>;\n\nexport type FileContentPartProps = ContentPartState & FileContentPart;\nexport type FileContentPartComponent = ComponentType<FileContentPartProps>;\n\nexport type Unstable_AudioContentPartProps = ContentPartState &\n Unstable_AudioContentPart;\nexport type Unstable_AudioContentPartComponent =\n ComponentType<Unstable_AudioContentPartProps>;\n\nexport type UIContentPartProps = ContentPartState & UIContentPart;\nexport type UIContentPartComponent = ComponentType<UIContentPartProps>;\n\nexport type ToolCallContentPartProps<\n TArgs extends ReadonlyJSONObject = any,\n TResult = unknown,\n> = ContentPartState &\n ToolCallContentPart<TArgs, TResult> & {\n addResult: (result: any) => void;\n };\n\nexport type ToolCallContentPartComponent<\n TArgs extends ReadonlyJSONObject = any,\n TResult = any,\n> = ComponentType<ToolCallContentPartProps<TArgs, TResult>>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/types/ContentPartComponentTypes.tsx"],"sourcesContent":["import type { ComponentType } from \"react\";\nimport type {\n ContentPartStatus,\n FileContentPart,\n ImageContentPart,\n ReasoningContentPart,\n TextContentPart,\n ToolCallContentPart,\n UIContentPart,\n Unstable_AudioContentPart,\n} from \"./AssistantTypes\";\nimport { ContentPartState } from \"../api/ContentPartRuntime\";\nimport { ReadonlyJSONObject } from \"../utils/json/json-value\";\n\nexport type EmptyContentPartProps = {\n status: ContentPartStatus;\n};\nexport type EmptyContentPartComponent = ComponentType<EmptyContentPartProps>;\n\nexport type TextContentPartProps = ContentPartState & TextContentPart;\nexport type TextContentPartComponent = ComponentType<TextContentPartProps>;\n\nexport type ReasoningContentPartProps = ContentPartState & ReasoningContentPart;\nexport type ReasoningContentPartComponent = ComponentType<ReasoningContentPartProps>;\n\nexport type ImageContentPartProps = ContentPartState & ImageContentPart;\nexport type ImageContentPartComponent = ComponentType<ImageContentPartProps>;\n\nexport type FileContentPartProps = ContentPartState & FileContentPart;\nexport type FileContentPartComponent = ComponentType<FileContentPartProps>;\n\nexport type Unstable_AudioContentPartProps = ContentPartState &\n Unstable_AudioContentPart;\nexport type Unstable_AudioContentPartComponent =\n ComponentType<Unstable_AudioContentPartProps>;\n\nexport type UIContentPartProps = ContentPartState & UIContentPart;\nexport type UIContentPartComponent = ComponentType<UIContentPartProps>;\n\nexport type ToolCallContentPartProps<\n TArgs extends ReadonlyJSONObject = any,\n TResult = unknown,\n> = ContentPartState &\n ToolCallContentPart<TArgs, TResult> & {\n addResult: (result: any) => void;\n };\n\nexport type ToolCallContentPartComponent<\n TArgs extends ReadonlyJSONObject = any,\n TResult = any,\n> = ComponentType<ToolCallContentPartProps<TArgs, TResult>>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { Attachment, PendingAttachment, CompleteAttachment, AttachmentStatus, } from "./AttachmentTypes";
|
|
2
|
-
export type { AppendMessage, TextContentPart, ImageContentPart, FileContentPart, Unstable_AudioContentPart, ToolCallContentPart, UIContentPart, MessageStatus, ThreadUserContentPart, ThreadAssistantContentPart, ThreadSystemMessage, ThreadAssistantMessage, ThreadUserMessage, ThreadMessage, CoreUserContentPart, CoreAssistantContentPart, CoreSystemMessage, CoreUserMessage, CoreAssistantMessage, CoreMessage, } from "./AssistantTypes";
|
|
3
|
-
export type { EmptyContentPartProps, EmptyContentPartComponent, TextContentPartProps, TextContentPartComponent, ImageContentPartProps, ImageContentPartComponent, FileContentPartProps, FileContentPartComponent, Unstable_AudioContentPartProps, Unstable_AudioContentPartComponent, UIContentPartProps, UIContentPartComponent, ToolCallContentPartProps, ToolCallContentPartComponent, } from "./ContentPartComponentTypes";
|
|
2
|
+
export type { AppendMessage, TextContentPart, ReasoningContentPart, ImageContentPart, FileContentPart, Unstable_AudioContentPart, ToolCallContentPart, UIContentPart, MessageStatus, ThreadUserContentPart, ThreadAssistantContentPart, ThreadSystemMessage, ThreadAssistantMessage, ThreadUserMessage, ThreadMessage, CoreUserContentPart, CoreAssistantContentPart, CoreSystemMessage, CoreUserMessage, CoreAssistantMessage, CoreMessage, } from "./AssistantTypes";
|
|
3
|
+
export type { EmptyContentPartProps, EmptyContentPartComponent, TextContentPartProps, TextContentPartComponent, ReasoningContentPartProps, ReasoningContentPartComponent, ImageContentPartProps, ImageContentPartComponent, FileContentPartProps, FileContentPartComponent, Unstable_AudioContentPartProps, Unstable_AudioContentPartComponent, UIContentPartProps, UIContentPartComponent, ToolCallContentPartProps, ToolCallContentPartComponent, } from "./ContentPartComponentTypes";
|
|
4
4
|
export type { Unsubscribe } from "./Unsubscribe";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,aAAa,EAGb,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EAGb,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,kCAAkC,EAClC,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAErC,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,aAAa,EAGb,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,EAGb,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,kCAAkC,EAClC,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,6BAA6B,CAAC;AAErC,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export type {\n Attachment,\n PendingAttachment,\n CompleteAttachment,\n AttachmentStatus,\n} from \"./AttachmentTypes\";\n\nexport type {\n AppendMessage,\n TextContentPart,\n ImageContentPart,\n FileContentPart,\n Unstable_AudioContentPart,\n ToolCallContentPart,\n UIContentPart,\n MessageStatus,\n\n // thread message types\n ThreadUserContentPart,\n ThreadAssistantContentPart,\n ThreadSystemMessage,\n ThreadAssistantMessage,\n ThreadUserMessage,\n ThreadMessage,\n\n // core message types\n CoreUserContentPart,\n CoreAssistantContentPart,\n CoreSystemMessage,\n CoreUserMessage,\n CoreAssistantMessage,\n CoreMessage,\n} from \"./AssistantTypes\";\n\nexport type {\n EmptyContentPartProps,\n EmptyContentPartComponent,\n TextContentPartProps,\n TextContentPartComponent,\n ImageContentPartProps,\n ImageContentPartComponent,\n FileContentPartProps,\n FileContentPartComponent,\n Unstable_AudioContentPartProps,\n Unstable_AudioContentPartComponent,\n UIContentPartProps,\n UIContentPartComponent,\n ToolCallContentPartProps,\n ToolCallContentPartComponent,\n} from \"./ContentPartComponentTypes\";\n\nexport type { Unsubscribe } from \"./Unsubscribe\";\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["export type {\n Attachment,\n PendingAttachment,\n CompleteAttachment,\n AttachmentStatus,\n} from \"./AttachmentTypes\";\n\nexport type {\n AppendMessage,\n TextContentPart,\n ReasoningContentPart,\n ImageContentPart,\n FileContentPart,\n Unstable_AudioContentPart,\n ToolCallContentPart,\n UIContentPart,\n MessageStatus,\n\n // thread message types\n ThreadUserContentPart,\n ThreadAssistantContentPart,\n ThreadSystemMessage,\n ThreadAssistantMessage,\n ThreadUserMessage,\n ThreadMessage,\n\n // core message types\n CoreUserContentPart,\n CoreAssistantContentPart,\n CoreSystemMessage,\n CoreUserMessage,\n CoreAssistantMessage,\n CoreMessage,\n} from \"./AssistantTypes\";\n\nexport type {\n EmptyContentPartProps,\n EmptyContentPartComponent,\n TextContentPartProps,\n TextContentPartComponent,\n ReasoningContentPartProps,\n ReasoningContentPartComponent,\n ImageContentPartProps,\n ImageContentPartComponent,\n FileContentPartProps,\n FileContentPartComponent,\n Unstable_AudioContentPartProps,\n Unstable_AudioContentPartComponent,\n UIContentPartProps,\n UIContentPartComponent,\n ToolCallContentPartProps,\n ToolCallContentPartComponent,\n} from \"./ContentPartComponentTypes\";\n\nexport type { Unsubscribe } from \"./Unsubscribe\";\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -26,10 +26,10 @@ __export(useOnScrollToBottom_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(useOnScrollToBottom_exports);
|
|
27
27
|
var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
|
|
28
28
|
var import_react = require("react");
|
|
29
|
-
var
|
|
29
|
+
var import_ThreadViewportContext = require("../../context/react/ThreadViewportContext.js");
|
|
30
30
|
var useOnScrollToBottom = (callback) => {
|
|
31
31
|
const callbackRef = (0, import_react_use_callback_ref.useCallbackRef)(callback);
|
|
32
|
-
const onScrollToBottom = (0,
|
|
32
|
+
const onScrollToBottom = (0, import_ThreadViewportContext.useThreadViewport)((vp) => vp.onScrollToBottom);
|
|
33
33
|
(0, import_react.useEffect)(() => {
|
|
34
34
|
return onScrollToBottom(callbackRef);
|
|
35
35
|
}, [onScrollToBottom, callbackRef]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/hooks/useOnScrollToBottom.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEffect } from \"react\";\nimport { useThreadViewport } from \"../../context/react/
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/hooks/useOnScrollToBottom.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEffect } from \"react\";\nimport { useThreadViewport } from \"../../context/react/ThreadViewportContext\";\n\nexport const useOnScrollToBottom = (callback: () => void) => {\n const callbackRef = useCallbackRef(callback);\n const onScrollToBottom = useThreadViewport((vp) => vp.onScrollToBottom);\n\n useEffect(() => {\n return onScrollToBottom(callbackRef);\n }, [onScrollToBottom, callbackRef]);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oCAA+B;AAC/B,mBAA0B;AAC1B,mCAAkC;AAE3B,IAAM,sBAAsB,CAAC,aAAyB;AAC3D,QAAM,kBAAc,8CAAe,QAAQ;AAC3C,QAAM,uBAAmB,gDAAkB,CAAC,OAAO,GAAG,gBAAgB;AAEtE,8BAAU,MAAM;AACd,WAAO,iBAAiB,WAAW;AAAA,EACrC,GAAG,CAAC,kBAAkB,WAAW,CAAC;AACpC;","names":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// src/utils/hooks/useOnScrollToBottom.tsx
|
|
4
4
|
import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
|
|
5
5
|
import { useEffect } from "react";
|
|
6
|
-
import { useThreadViewport } from "../../context/react/
|
|
6
|
+
import { useThreadViewport } from "../../context/react/ThreadViewportContext.mjs";
|
|
7
7
|
var useOnScrollToBottom = (callback) => {
|
|
8
8
|
const callbackRef = useCallbackRef(callback);
|
|
9
9
|
const onScrollToBottom = useThreadViewport((vp) => vp.onScrollToBottom);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/hooks/useOnScrollToBottom.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEffect } from \"react\";\nimport { useThreadViewport } from \"../../context/react/
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/hooks/useOnScrollToBottom.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEffect } from \"react\";\nimport { useThreadViewport } from \"../../context/react/ThreadViewportContext\";\n\nexport const useOnScrollToBottom = (callback: () => void) => {\n const callbackRef = useCallbackRef(callback);\n const onScrollToBottom = useThreadViewport((vp) => vp.onScrollToBottom);\n\n useEffect(() => {\n return onScrollToBottom(callbackRef);\n }, [onScrollToBottom, callbackRef]);\n};\n"],"mappings":";;;AAEA,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,yBAAyB;AAE3B,IAAM,sBAAsB,CAAC,aAAyB;AAC3D,QAAM,cAAc,eAAe,QAAQ;AAC3C,QAAM,mBAAmB,kBAAkB,CAAC,OAAO,GAAG,gBAAgB;AAEtE,YAAU,MAAM;AACd,WAAO,iBAAiB,WAAW;AAAA,EACrC,GAAG,CAAC,kBAAkB,WAAW,CAAC;AACpC;","names":[]}
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"conversational-ui",
|
|
30
30
|
"conversational-ai"
|
|
31
31
|
],
|
|
32
|
-
"version": "0.7.
|
|
32
|
+
"version": "0.7.71",
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"exports": {
|
|
35
35
|
".": {
|
|
@@ -65,29 +65,29 @@
|
|
|
65
65
|
],
|
|
66
66
|
"sideEffects": false,
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"@ai-sdk/provider": "^1.0.
|
|
68
|
+
"@ai-sdk/provider": "^1.0.7",
|
|
69
69
|
"@radix-ui/primitive": "^1.1.1",
|
|
70
|
-
"@radix-ui/react-avatar": "^1.1.
|
|
70
|
+
"@radix-ui/react-avatar": "^1.1.3",
|
|
71
71
|
"@radix-ui/react-compose-refs": "^1.1.1",
|
|
72
72
|
"@radix-ui/react-context": "^1.1.1",
|
|
73
|
-
"@radix-ui/react-dialog": "^1.1.
|
|
74
|
-
"@radix-ui/react-popover": "^1.1.
|
|
75
|
-
"@radix-ui/react-primitive": "^2.0.
|
|
76
|
-
"@radix-ui/react-slot": "^1.1.
|
|
77
|
-
"@radix-ui/react-tooltip": "^1.1.
|
|
73
|
+
"@radix-ui/react-dialog": "^1.1.6",
|
|
74
|
+
"@radix-ui/react-popover": "^1.1.6",
|
|
75
|
+
"@radix-ui/react-primitive": "^2.0.2",
|
|
76
|
+
"@radix-ui/react-slot": "^1.1.2",
|
|
77
|
+
"@radix-ui/react-tooltip": "^1.1.8",
|
|
78
78
|
"@radix-ui/react-use-callback-ref": "^1.1.0",
|
|
79
79
|
"@radix-ui/react-use-escape-keydown": "^1.1.0",
|
|
80
80
|
"class-variance-authority": "^0.7.1",
|
|
81
81
|
"classnames": "^2.5.1",
|
|
82
82
|
"json-schema": "^0.4.0",
|
|
83
|
-
"lucide-react": "^0.
|
|
83
|
+
"lucide-react": "^0.475.0",
|
|
84
84
|
"nanoid": "^5.0.9",
|
|
85
85
|
"react-textarea-autosize": "^8.5.7",
|
|
86
86
|
"secure-json-parse": "^3.0.2",
|
|
87
87
|
"zod": "^3.24.1",
|
|
88
88
|
"zod-to-json-schema": "^3.24.1",
|
|
89
89
|
"zustand": "^5.0.3",
|
|
90
|
-
"assistant-stream": "^0.0.
|
|
90
|
+
"assistant-stream": "^0.0.19"
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
93
|
"@types/react": "*",
|
|
@@ -109,17 +109,17 @@
|
|
|
109
109
|
},
|
|
110
110
|
"devDependencies": {
|
|
111
111
|
"@types/json-schema": "^7.0.15",
|
|
112
|
-
"@types/node": "^22.
|
|
112
|
+
"@types/node": "^22.13.1",
|
|
113
113
|
"autoprefixer": "^10.4.20",
|
|
114
114
|
"eslint": "^9",
|
|
115
|
-
"eslint-config-next": "15.1.
|
|
115
|
+
"eslint-config-next": "15.1.6",
|
|
116
116
|
"postcss": "^8.5.1",
|
|
117
117
|
"tailwindcss": "^3.4.17",
|
|
118
118
|
"tailwindcss-animate": "^1.0.7",
|
|
119
119
|
"tsx": "^4.19.2",
|
|
120
|
+
"@assistant-ui/tsbuildutils": "^0.0.1",
|
|
120
121
|
"@assistant-ui/tailwindcss-transformer": "0.1.0",
|
|
121
|
-
"@assistant-ui/tsconfig": "0.0.0"
|
|
122
|
-
"@assistant-ui/tsbuildutils": "^0.0.1"
|
|
122
|
+
"@assistant-ui/tsconfig": "0.0.0"
|
|
123
123
|
},
|
|
124
124
|
"publishConfig": {
|
|
125
125
|
"access": "public",
|
|
@@ -150,10 +150,7 @@ export class MessageRuntimeImpl implements MessageRuntime {
|
|
|
150
150
|
ref: this.path.ref + `${this.path.ref}.composer`,
|
|
151
151
|
composerSource: "edit",
|
|
152
152
|
},
|
|
153
|
-
getState:
|
|
154
|
-
this._threadBinding
|
|
155
|
-
.getState()
|
|
156
|
-
.getEditComposer(this._core.getState().id),
|
|
153
|
+
getState: this._getEditComposerRuntimeCore,
|
|
157
154
|
subscribe: (callback) => this._threadBinding.subscribe(callback),
|
|
158
155
|
}),
|
|
159
156
|
() => this._threadBinding.getState().beginEdit(this._core.getState().id),
|
|
@@ -177,11 +174,23 @@ export class MessageRuntimeImpl implements MessageRuntime {
|
|
|
177
174
|
|
|
178
175
|
public readonly composer;
|
|
179
176
|
|
|
177
|
+
private _getEditComposerRuntimeCore = () => {
|
|
178
|
+
return this._threadBinding
|
|
179
|
+
.getState()
|
|
180
|
+
.getEditComposer(this._core.getState().id);
|
|
181
|
+
};
|
|
182
|
+
|
|
180
183
|
public getState() {
|
|
181
184
|
return this._core.getState();
|
|
182
185
|
}
|
|
183
186
|
|
|
184
|
-
public reload(
|
|
187
|
+
public reload(reloadConfig: ReloadConfig = {}) {
|
|
188
|
+
const editComposerRuntimeCore = this._getEditComposerRuntimeCore();
|
|
189
|
+
const composerRuntimeCore =
|
|
190
|
+
editComposerRuntimeCore ?? this._threadBinding.getState().composer;
|
|
191
|
+
const composer = editComposerRuntimeCore ?? composerRuntimeCore;
|
|
192
|
+
|
|
193
|
+
const { runConfig = composer.runConfig } = reloadConfig;
|
|
185
194
|
const state = this._core.getState();
|
|
186
195
|
if (state.role !== "assistant")
|
|
187
196
|
throw new Error("Can only reload assistant messages");
|
package/src/cloud/auiV0.ts
CHANGED
|
@@ -15,6 +15,10 @@ type AuiV0MessageContentPart =
|
|
|
15
15
|
readonly type: "text";
|
|
16
16
|
readonly text: string;
|
|
17
17
|
}
|
|
18
|
+
| {
|
|
19
|
+
readonly type: "reasoning";
|
|
20
|
+
readonly text: string;
|
|
21
|
+
}
|
|
18
22
|
| {
|
|
19
23
|
readonly type: "tool-call";
|
|
20
24
|
readonly toolCallId: string;
|
|
@@ -64,6 +68,13 @@ export const auiV0Encode = (message: ThreadMessage): AuiV0Message => {
|
|
|
64
68
|
};
|
|
65
69
|
}
|
|
66
70
|
|
|
71
|
+
case "reasoning": {
|
|
72
|
+
return {
|
|
73
|
+
type: "reasoning",
|
|
74
|
+
text: part.text,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
67
78
|
case "tool-call": {
|
|
68
79
|
if (!isJSONValue(part.result)) {
|
|
69
80
|
console.warn(
|
|
@@ -4,13 +4,13 @@ import type { FC, PropsWithChildren } from "react";
|
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
5
5
|
import type { ThreadContextValue } from "../react/ThreadContext";
|
|
6
6
|
import { ThreadContext } from "../react/ThreadContext";
|
|
7
|
-
import { makeThreadViewportStore } from "../stores/ThreadViewport";
|
|
8
7
|
import { writableStore } from "../ReadonlyStore";
|
|
9
8
|
import { ThreadRuntime } from "../../api/ThreadRuntime";
|
|
10
9
|
import { create } from "zustand";
|
|
11
10
|
import { ThreadListItemRuntime } from "../../api/ThreadListItemRuntime";
|
|
12
11
|
import { ThreadListItemRuntimeProvider } from "./ThreadListItemRuntimeProvider";
|
|
13
12
|
import { ensureBinding } from "../react/utils/ensureBinding";
|
|
13
|
+
import { ThreadViewportProvider } from "./ThreadViewportProvider";
|
|
14
14
|
|
|
15
15
|
type ThreadProviderProps = {
|
|
16
16
|
listItemRuntime: ThreadListItemRuntime;
|
|
@@ -36,18 +36,17 @@ export const ThreadRuntimeProvider: FC<
|
|
|
36
36
|
const useThreadRuntime = useThreadRuntimeStore(runtime);
|
|
37
37
|
|
|
38
38
|
const [context] = useState<ThreadContextValue>(() => {
|
|
39
|
-
const useViewport = makeThreadViewportStore();
|
|
40
|
-
|
|
41
39
|
return {
|
|
42
40
|
useThreadRuntime,
|
|
43
|
-
useViewport,
|
|
44
41
|
};
|
|
45
42
|
});
|
|
46
43
|
|
|
47
44
|
return (
|
|
48
45
|
<ThreadListItemRuntimeProvider runtime={threadListItemRuntime}>
|
|
49
46
|
<ThreadContext.Provider value={context}>
|
|
50
|
-
{
|
|
47
|
+
{/* TODO temporarily allow accessing viewport state from outside the viewport */}
|
|
48
|
+
{/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}
|
|
49
|
+
<ThreadViewportProvider>{children}</ThreadViewportProvider>
|
|
51
50
|
</ThreadContext.Provider>
|
|
52
51
|
</ThreadListItemRuntimeProvider>
|
|
53
52
|
);
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { FC, PropsWithChildren } from "react";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
import { makeThreadViewportStore } from "../stores/ThreadViewport";
|
|
6
|
+
import {
|
|
7
|
+
ThreadViewportContext,
|
|
8
|
+
ThreadViewportContextValue,
|
|
9
|
+
useThreadViewportStore,
|
|
10
|
+
} from "../react/ThreadViewportContext";
|
|
11
|
+
import { writableStore } from "../ReadonlyStore";
|
|
12
|
+
|
|
13
|
+
const useThreadViewportStoreValue = () => {
|
|
14
|
+
const outerViewport = useThreadViewportStore({ optional: true });
|
|
15
|
+
const [store] = useState(() => makeThreadViewportStore());
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
return outerViewport?.getState().onScrollToBottom(() => {
|
|
19
|
+
store.getState().scrollToBottom();
|
|
20
|
+
});
|
|
21
|
+
}, [outerViewport, store]);
|
|
22
|
+
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (!outerViewport) return;
|
|
25
|
+
return store.subscribe((state) => {
|
|
26
|
+
if (outerViewport.getState().isAtBottom !== state.isAtBottom) {
|
|
27
|
+
writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}, [store, outerViewport]);
|
|
31
|
+
|
|
32
|
+
return store;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const ThreadViewportProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
36
|
+
const useThreadViewport = useThreadViewportStoreValue();
|
|
37
|
+
|
|
38
|
+
const [context] = useState<ThreadViewportContextValue>(() => {
|
|
39
|
+
return {
|
|
40
|
+
useThreadViewport,
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<ThreadViewportContext.Provider value={context}>
|
|
46
|
+
{children}
|
|
47
|
+
</ThreadViewportContext.Provider>
|
|
48
|
+
);
|
|
49
|
+
};
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { createContext, useEffect, useState } from "react";
|
|
4
|
-
import type { ThreadViewportState } from "../stores/ThreadViewport";
|
|
5
4
|
import { ReadonlyStore } from "../ReadonlyStore";
|
|
6
5
|
import { UseBoundStore } from "zustand";
|
|
7
6
|
import { createContextHook } from "./utils/createContextHook";
|
|
8
|
-
import { createContextStoreHook } from "./utils/createContextStoreHook";
|
|
9
7
|
import { ThreadRuntime } from "../../api/ThreadRuntime";
|
|
10
8
|
import { ModelContext } from "../../model-context";
|
|
11
9
|
import { createStateHookForRuntime } from "./utils/createStateHookForRuntime";
|
|
@@ -13,7 +11,6 @@ import { ThreadComposerRuntime } from "../../api";
|
|
|
13
11
|
|
|
14
12
|
export type ThreadContextValue = {
|
|
15
13
|
useThreadRuntime: UseBoundStore<ReadonlyStore<ThreadRuntime>>;
|
|
16
|
-
useViewport: UseBoundStore<ReadonlyStore<ThreadViewportState>>;
|
|
17
14
|
};
|
|
18
15
|
|
|
19
16
|
export const ThreadContext = createContext<ThreadContextValue | null>(null);
|
|
@@ -44,11 +41,6 @@ export const useThreadComposer = createStateHookForRuntime(
|
|
|
44
41
|
useThreadComposerRuntime,
|
|
45
42
|
);
|
|
46
43
|
|
|
47
|
-
export const {
|
|
48
|
-
useViewport: useThreadViewport,
|
|
49
|
-
useViewportStore: useThreadViewportStore,
|
|
50
|
-
} = createContextStoreHook(useThreadContext, "useViewport");
|
|
51
|
-
|
|
52
44
|
export function useThreadModelContext(options?: {
|
|
53
45
|
optional?: false | undefined;
|
|
54
46
|
}): ModelContext;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { createContext } from "react";
|
|
4
|
+
import { ReadonlyStore } from "../ReadonlyStore";
|
|
5
|
+
import { UseBoundStore } from "zustand";
|
|
6
|
+
import { createContextHook } from "./utils/createContextHook";
|
|
7
|
+
import { createContextStoreHook } from "./utils/createContextStoreHook";
|
|
8
|
+
import { ThreadViewportState } from "../stores";
|
|
9
|
+
|
|
10
|
+
export type ThreadViewportContextValue = {
|
|
11
|
+
useThreadViewport: UseBoundStore<ReadonlyStore<ThreadViewportState>>;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const ThreadViewportContext =
|
|
15
|
+
createContext<ThreadViewportContextValue | null>(null);
|
|
16
|
+
|
|
17
|
+
const useThreadViewportContext = createContextHook(
|
|
18
|
+
ThreadViewportContext,
|
|
19
|
+
"ThreadPrimitive.Viewport",
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export const { useThreadViewport, useThreadViewportStore } =
|
|
23
|
+
createContextStoreHook(useThreadViewportContext, "useThreadViewport");
|
|
@@ -18,9 +18,12 @@ export {
|
|
|
18
18
|
* @deprecated This method was renamed to `useThreadModelContext`.
|
|
19
19
|
*/
|
|
20
20
|
useThreadModelContext as useThreadModelConfig,
|
|
21
|
+
} from "./ThreadContext";
|
|
22
|
+
|
|
23
|
+
export {
|
|
21
24
|
useThreadViewport,
|
|
22
25
|
useThreadViewportStore,
|
|
23
|
-
} from "./
|
|
26
|
+
} from "./ThreadViewportContext";
|
|
24
27
|
|
|
25
28
|
export {
|
|
26
29
|
useThreadListItemRuntime,
|
|
@@ -27,10 +27,16 @@ export type LanguageModelConfig = z.infer<typeof LanguageModelConfigSchema>;
|
|
|
27
27
|
type ToolExecuteFunction<TArgs, TResult> = (
|
|
28
28
|
args: TArgs,
|
|
29
29
|
context: {
|
|
30
|
+
toolCallId: string;
|
|
30
31
|
abortSignal: AbortSignal;
|
|
31
32
|
},
|
|
32
33
|
) => TResult | Promise<TResult>;
|
|
33
34
|
|
|
35
|
+
type OnSchemaValidationErrorFunction<TResult> = ToolExecuteFunction<
|
|
36
|
+
unknown,
|
|
37
|
+
TResult
|
|
38
|
+
>;
|
|
39
|
+
|
|
34
40
|
export type Tool<
|
|
35
41
|
TArgs extends Record<string, unknown> = Record<string | number, unknown>,
|
|
36
42
|
TResult = unknown,
|
|
@@ -38,6 +44,7 @@ export type Tool<
|
|
|
38
44
|
description?: string | undefined;
|
|
39
45
|
parameters: z.ZodSchema<TArgs> | JSONSchema7;
|
|
40
46
|
execute?: ToolExecuteFunction<TArgs, TResult>;
|
|
47
|
+
experimental_onSchemaValidationError?: OnSchemaValidationErrorFunction<TResult>;
|
|
41
48
|
};
|
|
42
49
|
|
|
43
50
|
export type ModelContext = {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { ContentPartState } from "../../api/ContentPartRuntime";
|
|
4
|
+
import { useContentPart } from "../../context/react/ContentPartContext";
|
|
5
|
+
import { ReasoningContentPart } from "../../types";
|
|
6
|
+
|
|
7
|
+
export const useContentPartReasoning = () => {
|
|
8
|
+
const text = useContentPart((c) => {
|
|
9
|
+
if (c.type !== "reasoning")
|
|
10
|
+
throw new Error(
|
|
11
|
+
"ContentPartReasoning can only be used inside reasoning content parts.",
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
return c as ContentPartState & ReasoningContentPart;
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
return text;
|
|
18
|
+
};
|
package/src/primitives/index.ts
CHANGED
|
@@ -12,4 +12,5 @@ export * as ThreadListItemPrimitive from "./threadListItem";
|
|
|
12
12
|
export { useContentPartDisplay } from "./contentPart/useContentPartDisplay";
|
|
13
13
|
export { useContentPartImage } from "./contentPart/useContentPartImage";
|
|
14
14
|
export { useContentPartText } from "./contentPart/useContentPartText";
|
|
15
|
+
export { useContentPartReasoning } from "./contentPart/useContentPartReasoning";
|
|
15
16
|
export { useThreadViewportAutoScroll } from "./thread/useThreadViewportAutoScroll";
|
|
@@ -24,6 +24,7 @@ import type {
|
|
|
24
24
|
ToolCallContentPartProps,
|
|
25
25
|
UIContentPartComponent,
|
|
26
26
|
FileContentPartComponent,
|
|
27
|
+
ReasoningContentPartComponent,
|
|
27
28
|
} from "../../types/ContentPartComponentTypes";
|
|
28
29
|
import { ContentPartPrimitiveInProgress } from "../contentPart/ContentPartInProgress";
|
|
29
30
|
import { ContentPartStatus } from "../../types/AssistantTypes";
|
|
@@ -33,6 +34,7 @@ export namespace MessagePrimitiveContent {
|
|
|
33
34
|
components?:
|
|
34
35
|
| {
|
|
35
36
|
Empty?: EmptyContentPartComponent | undefined;
|
|
37
|
+
Reasoning?: ReasoningContentPartComponent | undefined;
|
|
36
38
|
Text?: TextContentPartComponent | undefined;
|
|
37
39
|
Image?: ImageContentPartComponent | undefined;
|
|
38
40
|
File?: FileContentPartComponent | undefined;
|
|
@@ -74,6 +76,7 @@ const defaultComponents = {
|
|
|
74
76
|
</ContentPartPrimitiveInProgress>
|
|
75
77
|
</p>
|
|
76
78
|
),
|
|
79
|
+
Reasoning: () => null,
|
|
77
80
|
Image: () => <ContentPartPrimitiveImage />,
|
|
78
81
|
File: () => null,
|
|
79
82
|
Unstable_Audio: () => null,
|
|
@@ -87,6 +90,7 @@ type MessageContentPartComponentProps = {
|
|
|
87
90
|
const MessageContentPartComponent: FC<MessageContentPartComponentProps> = ({
|
|
88
91
|
components: {
|
|
89
92
|
Text = defaultComponents.Text,
|
|
93
|
+
Reasoning = defaultComponents.Reasoning,
|
|
90
94
|
Image = defaultComponents.Image,
|
|
91
95
|
File = defaultComponents.File,
|
|
92
96
|
Unstable_Audio: Audio = defaultComponents.Unstable_Audio,
|
|
@@ -114,6 +118,9 @@ const MessageContentPartComponent: FC<MessageContentPartComponentProps> = ({
|
|
|
114
118
|
case "text":
|
|
115
119
|
return <Text {...part} />;
|
|
116
120
|
|
|
121
|
+
case "reasoning":
|
|
122
|
+
return <Reasoning {...part} />;
|
|
123
|
+
|
|
117
124
|
case "image":
|
|
118
125
|
// eslint-disable-next-line jsx-a11y/alt-text
|
|
119
126
|
return <Image {...part} />;
|
|
@@ -160,6 +167,7 @@ const MessageContentPart = memo(
|
|
|
160
167
|
(prev, next) =>
|
|
161
168
|
prev.partIndex === next.partIndex &&
|
|
162
169
|
prev.components?.Text === next.components?.Text &&
|
|
170
|
+
prev.components?.Reasoning === next.components?.Reasoning &&
|
|
163
171
|
prev.components?.Image === next.components?.Image &&
|
|
164
172
|
prev.components?.File === next.components?.File &&
|
|
165
173
|
prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&
|
|
@@ -6,8 +6,7 @@ import {
|
|
|
6
6
|
createActionButton,
|
|
7
7
|
} from "../../utils/createActionButton";
|
|
8
8
|
import { useCallback } from "react";
|
|
9
|
-
import { useThreadViewport } from "../../context";
|
|
10
|
-
import { useThreadViewportStore } from "../../context/react/ThreadContext";
|
|
9
|
+
import { useThreadViewport, useThreadViewportStore } from "../../context/react/ThreadViewportContext";
|
|
11
10
|
|
|
12
11
|
const useThreadScrollToBottom = () => {
|
|
13
12
|
const isAtBottom = useThreadViewport((s) => s.isAtBottom);
|
|
@@ -4,6 +4,7 @@ import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
|
4
4
|
import { Primitive } from "@radix-ui/react-primitive";
|
|
5
5
|
import { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from "react";
|
|
6
6
|
import { useThreadViewportAutoScroll } from "./useThreadViewportAutoScroll";
|
|
7
|
+
import { ThreadViewportProvider } from "../../context/providers/ThreadViewportProvider";
|
|
7
8
|
|
|
8
9
|
export namespace ThreadPrimitiveViewport {
|
|
9
10
|
export type Element = ComponentRef<typeof Primitive.div>;
|
|
@@ -12,7 +13,7 @@ export namespace ThreadPrimitiveViewport {
|
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
const ThreadPrimitiveViewportScrollable = forwardRef<
|
|
16
17
|
ThreadPrimitiveViewport.Element,
|
|
17
18
|
ThreadPrimitiveViewport.Props
|
|
18
19
|
>(({ autoScroll, children, ...rest }, forwardedRef) => {
|
|
@@ -29,4 +30,15 @@ export const ThreadPrimitiveViewport = forwardRef<
|
|
|
29
30
|
);
|
|
30
31
|
});
|
|
31
32
|
|
|
33
|
+
export const ThreadPrimitiveViewport = forwardRef<
|
|
34
|
+
ThreadPrimitiveViewport.Element,
|
|
35
|
+
ThreadPrimitiveViewport.Props
|
|
36
|
+
>((props, ref) => {
|
|
37
|
+
return (
|
|
38
|
+
<ThreadViewportProvider>
|
|
39
|
+
<ThreadPrimitiveViewportScrollable {...props} ref={ref} />
|
|
40
|
+
</ThreadViewportProvider>
|
|
41
|
+
);
|
|
42
|
+
});
|
|
43
|
+
|
|
32
44
|
ThreadPrimitiveViewport.displayName = "ThreadPrimitive.Viewport";
|
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import { useComposedRefs } from "@radix-ui/react-compose-refs";
|
|
4
4
|
import { RefCallback, useEffect, useRef } from "react";
|
|
5
|
-
import {
|
|
6
|
-
useThreadRuntime,
|
|
7
|
-
useThreadViewportStore,
|
|
8
|
-
} from "../../context/react/ThreadContext";
|
|
5
|
+
import { useThreadRuntime } from "../../context/react/ThreadContext";
|
|
9
6
|
import { useOnResizeContent } from "../../utils/hooks/useOnResizeContent";
|
|
10
7
|
import { useOnScrollToBottom } from "../../utils/hooks/useOnScrollToBottom";
|
|
11
8
|
import { useManagedRef } from "../../utils/hooks/useManagedRef";
|
|
12
9
|
import { writableStore } from "../../context/ReadonlyStore";
|
|
10
|
+
import { useThreadViewportStore } from "../../context/react/ThreadViewportContext";
|
|
13
11
|
|
|
14
12
|
export namespace useThreadViewportAutoScroll {
|
|
15
13
|
export type Options = {
|
|
@@ -18,7 +18,7 @@ export class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
|
|
|
18
18
|
private _parentId;
|
|
19
19
|
private _sourceId;
|
|
20
20
|
constructor(
|
|
21
|
-
private runtime:
|
|
21
|
+
private runtime: ThreadRuntimeCore & {
|
|
22
22
|
adapters?: { attachments?: AttachmentAdapter | undefined } | undefined;
|
|
23
23
|
},
|
|
24
24
|
private endEditCallback: () => void,
|
|
@@ -36,6 +36,9 @@ export class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
|
|
|
36
36
|
this._nonTextParts = message.content.filter(
|
|
37
37
|
(part) => part.type !== "text" && part.type !== "ui",
|
|
38
38
|
);
|
|
39
|
+
|
|
40
|
+
// Use the runConfig from the regular (non-edit) composer as the initial runConfig for the edit composer
|
|
41
|
+
this.setRunConfig({ ...runtime.composer.runConfig });
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
public async handleSend(
|
|
@@ -22,13 +22,14 @@ export const toCoreMessage = <T extends boolean = false>(
|
|
|
22
22
|
return {
|
|
23
23
|
role,
|
|
24
24
|
content: message.content.map((part) => {
|
|
25
|
+
if (part.type === "reasoning") return null; // reasoning parts are omitted
|
|
25
26
|
if (part.type === "ui") throw new Error("UI parts are not supported");
|
|
26
27
|
if (part.type === "tool-call") {
|
|
27
28
|
const { argsText, ...rest } = part;
|
|
28
29
|
return rest;
|
|
29
30
|
}
|
|
30
31
|
return part;
|
|
31
|
-
}),
|
|
32
|
+
}).filter(c => !!c),
|
|
32
33
|
...(includeId ? { unstable_id: message.id } : {}),
|
|
33
34
|
};
|
|
34
35
|
|
|
@@ -147,6 +147,10 @@ export function toLanguageModelMessages(
|
|
|
147
147
|
for (const part of message.content) {
|
|
148
148
|
const type = part.type;
|
|
149
149
|
switch (type) {
|
|
150
|
+
case "reasoning": {
|
|
151
|
+
break; // reasoning parts are omitted
|
|
152
|
+
}
|
|
153
|
+
|
|
150
154
|
case "text": {
|
|
151
155
|
splitter.addTextContentPart(part);
|
|
152
156
|
break;
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
LanguageModelV1Prompt,
|
|
6
6
|
LanguageModelV1CallOptions,
|
|
7
7
|
} from "@ai-sdk/provider";
|
|
8
|
-
import { CoreMessage, ThreadStep } from "../../types/AssistantTypes";
|
|
8
|
+
import { CoreMessage, ThreadMessage, ThreadStep } from "../../types/AssistantTypes";
|
|
9
9
|
import { assistantEncoderStream } from "./streams/assistantEncoderStream";
|
|
10
10
|
import { EdgeRuntimeRequestOptionsSchema } from "./EdgeRuntimeRequestOptions";
|
|
11
11
|
import { toLanguageModelMessages } from "./converters/toLanguageModelMessages";
|
|
@@ -26,7 +26,7 @@ import { streamPartEncoderStream } from "./streams/utils/streamPartEncoderStream
|
|
|
26
26
|
import { z } from "zod";
|
|
27
27
|
|
|
28
28
|
type FinishResult = {
|
|
29
|
-
messages: readonly CoreMessage[];
|
|
29
|
+
messages: readonly (CoreMessage | ThreadMessage)[];
|
|
30
30
|
metadata: {
|
|
31
31
|
steps: readonly ThreadStep[];
|
|
32
32
|
};
|
|
@@ -143,9 +143,18 @@ export const getEdgeRuntimeStream = async ({
|
|
|
143
143
|
const resultingMessages = [
|
|
144
144
|
...messages,
|
|
145
145
|
{
|
|
146
|
+
id: "DEFAULT",
|
|
147
|
+
createdAt: new Date(),
|
|
146
148
|
role: "assistant",
|
|
147
149
|
content: lastChunk.content,
|
|
148
|
-
|
|
150
|
+
status: lastChunk.status,
|
|
151
|
+
metadata: {
|
|
152
|
+
unstable_data: lastChunk.metadata?.unstable_data ?? [],
|
|
153
|
+
unstable_annotations: lastChunk.metadata?.unstable_annotations ?? [],
|
|
154
|
+
steps: lastChunk.metadata?.steps ?? [],
|
|
155
|
+
custom: lastChunk.metadata?.custom ?? {},
|
|
156
|
+
}
|
|
157
|
+
} satisfies ThreadMessage,
|
|
149
158
|
];
|
|
150
159
|
onFinish({
|
|
151
160
|
messages: resultingMessages,
|
|
@@ -14,6 +14,14 @@ export function assistantEncoderStream() {
|
|
|
14
14
|
transform(chunk, controller) {
|
|
15
15
|
const chunkType = chunk.type;
|
|
16
16
|
switch (chunkType) {
|
|
17
|
+
case "reasoning": {
|
|
18
|
+
controller.enqueue({
|
|
19
|
+
type: AssistantStreamChunkType.ReasoningDelta,
|
|
20
|
+
value: chunk.textDelta,
|
|
21
|
+
});
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
|
|
17
25
|
case "text-delta": {
|
|
18
26
|
if (!chunk.textDelta) break; // ignore empty text deltas
|
|
19
27
|
controller.enqueue({
|