Skip to content

Commit 0d4d2b9

Browse files
authored
chore: get ai package ready for release (#6149)
1 parent 90ea18b commit 0d4d2b9

File tree

18 files changed

+191
-197
lines changed

18 files changed

+191
-197
lines changed

.changeset/smart-otters-beam.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@aws-amplify/ui-react-ai": major
3+
"@aws-amplify/ui-react": patch
4+
"@aws-amplify/ui": patch
5+
---
6+
7+
chore: get ai package ready for release
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { AIConversation, ConversationMessage } from '@aws-amplify/ui-react-ai';
2+
import '@aws-amplify/ui-react/styles.css';
3+
4+
const messages: ConversationMessage[] = [
5+
{
6+
role: 'user',
7+
content: [
8+
{
9+
text: 'hello',
10+
},
11+
{
12+
image: {
13+
format: 'png',
14+
source: {
15+
bytes: new Uint8Array([
16+
137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0,
17+
0, 0, 28, 0, 0, 0, 28, 8, 3, 0, 0, 0, 69, 211, 47, 166, 0, 0, 0,
18+
168, 80, 76, 84, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,
19+
0, 51, 51, 26, 26, 26, 23, 23, 46, 20, 20, 39, 18, 18, 36, 12, 24,
20+
36, 9, 26, 35, 15, 23, 38, 15, 29, 36, 12, 23, 41, 11, 28, 40, 13,
21+
26, 38, 12, 27, 39, 15, 26, 36, 14, 25, 39, 14, 24, 38, 13, 26,
22+
36, 13, 27, 38, 12, 27, 39, 12, 27, 37, 12, 27, 37, 12, 27, 39,
23+
12, 26, 38, 14, 26, 38, 13, 26, 38, 12, 26, 39, 13, 27, 38, 13,
24+
27, 38, 12, 26, 39, 14, 26, 38, 13, 26, 38, 13, 26, 38, 13, 26,
25+
38, 13, 26, 38, 13, 26, 38, 13, 26, 38, 13, 26, 38, 13, 27, 38,
26+
12, 26, 39, 14, 26, 38, 13, 26, 38, 13, 26, 38, 13, 26, 38, 12,
27+
26, 39, 13, 26, 38, 13, 26, 38, 13, 26, 38, 13, 26, 38, 13, 26,
28+
38, 13, 26, 38, 255, 255, 255, 26, 7, 228, 96, 0, 0, 0, 54, 116,
29+
82, 78, 83, 0, 1, 2, 3, 4, 5, 10, 11, 13, 14, 21, 29, 34, 35, 44,
30+
45, 60, 65, 70, 72, 73, 77, 95, 105, 123, 124, 125, 126, 128, 135,
31+
145, 153, 162, 165, 170, 174, 175, 176, 179, 209, 215, 220, 221,
32+
225, 226, 228, 229, 243, 245, 247, 249, 250, 252, 253, 138, 189,
33+
133, 44, 0, 0, 0, 1, 98, 75, 71, 68, 55, 48, 184, 184, 71, 0, 0,
34+
0, 214, 73, 68, 65, 84, 40, 207, 125, 147, 233, 22, 130, 32, 16,
35+
133, 49, 181, 210, 74, 203, 74, 219, 168, 44, 91, 21, 211, 22,
36+
222, 255, 209, 82, 212, 57, 160, 232, 253, 197, 229, 67, 206, 48,
37+
115, 69, 136, 147, 110, 219, 26, 146, 75, 245, 98, 74, 137, 167,
38+
202, 216, 236, 70, 153, 238, 139, 6, 26, 29, 41, 232, 58, 17, 208,
39+
96, 151, 82, 78, 159, 189, 1, 72, 113, 227, 114, 55, 140, 202, 69,
40+
236, 42, 101, 141, 151, 234, 139, 196, 52, 147, 106, 29, 232, 12,
41+
110, 225, 58, 31, 33, 31, 204, 154, 193, 39, 120, 7, 33, 7, 204,
42+
131, 193, 95, 101, 73, 246, 68, 149, 84, 238, 203, 32, 156, 197,
43+
185, 195, 96, 121, 72, 240, 48, 119, 6, 38, 117, 152, 158, 150,
44+
208, 213, 222, 244, 240, 226, 97, 104, 138, 253, 50, 35, 14, 70,
45+
93, 176, 243, 218, 162, 32, 163, 165, 160, 214, 167, 116, 54, 161,
46+
179, 125, 27, 121, 227, 87, 197, 200, 2, 217, 200, 206, 122, 125,
47+
216, 81, 99, 216, 153, 250, 98, 76, 222, 92, 76, 26, 1, 27, 183,
48+
71, 115, 46, 15, 53, 105, 13, 117, 38, 205, 178, 132, 223, 225,
49+
15, 14, 216, 81, 244, 178, 122, 71, 86, 0, 0, 0, 0, 73, 69, 78,
50+
68, 174, 66, 96, 130,
51+
]),
52+
},
53+
},
54+
},
55+
],
56+
conversationId: '1',
57+
id: '2',
58+
createdAt: new Date(2023, 4, 21, 15, 24).toDateString(),
59+
},
60+
{
61+
role: 'assistant',
62+
content: [
63+
{
64+
toolUse: {
65+
name: 'AMPLIFY_UI_foobar',
66+
input: { foo: 'bar' },
67+
toolUseId: '1234',
68+
},
69+
},
70+
],
71+
conversationId: '1',
72+
id: '2',
73+
createdAt: new Date(2023, 4, 21, 15, 24).toDateString(),
74+
},
75+
];
76+
77+
export default function Example() {
78+
return <AIConversation messages={messages} handleSendMessage={() => {}} />;
79+
}

packages/react-ai/src/components/AIConversation/AIConversation.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import { Flex, ScrollView, Text } from '@aws-amplify/ui-react';
2+
import { Flex, ScrollView } from '@aws-amplify/ui-react';
33
import {
44
IconAssistant,
55
IconUser,
@@ -55,9 +55,6 @@ function AIConversationBase({
5555
...defaultAvatars,
5656
...avatars,
5757
},
58-
elements: {
59-
Text,
60-
},
6158
controls: {
6259
MessageList,
6360
PromptList,
@@ -82,9 +79,6 @@ function AIConversationBase({
8279
);
8380
}
8481

85-
/**
86-
* @experimental
87-
*/
8882
export const AIConversation: AIConversationType<AIConversationBaseProps> =
8983
Object.assign(AIConversationBase, {
9084
Provider: AIConversationProvider,
Lines changed: 52 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
import React from 'react';
22

3-
import { ElementsProvider } from '@aws-amplify/ui-react-core/elements';
4-
53
import { AIConversationInput, AIConversationProps } from './types';
64
import { defaultAIConversationDisplayTextEn } from './displayText';
75
import {
8-
ConversationDisplayTextProvider,
9-
SuggestedPromptProvider,
10-
ConversationInputContextProvider,
11-
AvatarsProvider,
126
ActionsProvider,
13-
MessageVariantProvider,
14-
MessagesProvider,
7+
AIContextProvider,
8+
AttachmentProvider,
9+
AvatarsProvider,
1510
ControlsProvider,
11+
ConversationDisplayTextProvider,
12+
ConversationInputContextProvider,
13+
FallbackComponentProvider,
1614
LoadingContextProvider,
15+
MessageRendererProvider,
16+
MessagesProvider,
17+
MessageVariantProvider,
1718
ResponseComponentsProvider,
1819
SendMessageContextProvider,
20+
SuggestedPromptProvider,
1921
WelcomeMessageProvider,
20-
FallbackComponentProvider,
21-
MessageRendererProvider,
22-
AIContextProvider,
2322
} from './context';
24-
import { AttachmentProvider } from './context/AttachmentContext';
2523

2624
export interface AIConversationProviderProps
2725
extends AIConversationInput,
@@ -37,7 +35,6 @@ export const AIConversationProvider = ({
3735
children,
3836
controls,
3937
displayText,
40-
elements,
4138
handleSendMessage,
4239
isLoading,
4340
messages,
@@ -53,51 +50,47 @@ export const AIConversationProvider = ({
5350
...displayText,
5451
};
5552
return (
56-
<ElementsProvider elements={elements}>
57-
<ControlsProvider controls={controls}>
58-
<SuggestedPromptProvider suggestedPrompts={suggestedPrompts}>
59-
<WelcomeMessageProvider welcomeMessage={welcomeMessage}>
60-
<FallbackComponentProvider
61-
FallbackComponent={FallbackResponseComponent}
62-
>
63-
<MessageRendererProvider {...messageRenderer}>
64-
<ResponseComponentsProvider
65-
responseComponents={responseComponents}
66-
>
67-
<AttachmentProvider allowAttachments={allowAttachments}>
68-
<ConversationDisplayTextProvider {..._displayText}>
69-
<ConversationInputContextProvider>
70-
<SendMessageContextProvider
71-
handleSendMessage={handleSendMessage}
72-
>
73-
<AvatarsProvider avatars={avatars}>
74-
<ActionsProvider actions={actions}>
75-
<MessageVariantProvider variant={variant}>
76-
<MessagesProvider messages={messages}>
77-
{/* aiContext should be as close as possible to the bottom */}
78-
{/* because the intent is users should update the context */}
79-
{/* without it affecting the already rendered messages */}
80-
<AIContextProvider aiContext={aiContext}>
81-
<LoadingContextProvider
82-
isLoading={isLoading}
83-
>
84-
{children}
85-
</LoadingContextProvider>
86-
</AIContextProvider>
87-
</MessagesProvider>
88-
</MessageVariantProvider>
89-
</ActionsProvider>
90-
</AvatarsProvider>
91-
</SendMessageContextProvider>
92-
</ConversationInputContextProvider>
93-
</ConversationDisplayTextProvider>
94-
</AttachmentProvider>
95-
</ResponseComponentsProvider>
96-
</MessageRendererProvider>
97-
</FallbackComponentProvider>
98-
</WelcomeMessageProvider>
99-
</SuggestedPromptProvider>
100-
</ControlsProvider>
101-
</ElementsProvider>
53+
<ControlsProvider controls={controls}>
54+
<SuggestedPromptProvider suggestedPrompts={suggestedPrompts}>
55+
<WelcomeMessageProvider welcomeMessage={welcomeMessage}>
56+
<FallbackComponentProvider
57+
FallbackComponent={FallbackResponseComponent}
58+
>
59+
<MessageRendererProvider {...messageRenderer}>
60+
<ResponseComponentsProvider
61+
responseComponents={responseComponents}
62+
>
63+
<AttachmentProvider allowAttachments={allowAttachments}>
64+
<ConversationDisplayTextProvider {..._displayText}>
65+
<ConversationInputContextProvider>
66+
<SendMessageContextProvider
67+
handleSendMessage={handleSendMessage}
68+
>
69+
<AvatarsProvider avatars={avatars}>
70+
<ActionsProvider actions={actions}>
71+
<MessageVariantProvider variant={variant}>
72+
<MessagesProvider messages={messages}>
73+
{/* aiContext should be as close as possible to the bottom */}
74+
{/* because the intent is users should update the context */}
75+
{/* without it affecting the already rendered messages */}
76+
<AIContextProvider aiContext={aiContext}>
77+
<LoadingContextProvider isLoading={isLoading}>
78+
{children}
79+
</LoadingContextProvider>
80+
</AIContextProvider>
81+
</MessagesProvider>
82+
</MessageVariantProvider>
83+
</ActionsProvider>
84+
</AvatarsProvider>
85+
</SendMessageContextProvider>
86+
</ConversationInputContextProvider>
87+
</ConversationDisplayTextProvider>
88+
</AttachmentProvider>
89+
</ResponseComponentsProvider>
90+
</MessageRendererProvider>
91+
</FallbackComponentProvider>
92+
</WelcomeMessageProvider>
93+
</SuggestedPromptProvider>
94+
</ControlsProvider>
10295
);
10396
};

packages/react-ai/src/components/AIConversation/context/ControlsContext.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export interface ControlsContextProps {
88
{
99
handleSubmit: (e: React.FormEvent<HTMLFormElement>) => void;
1010
allowAttachments?: boolean;
11+
isLoading?: boolean;
1112
} & Required<ConversationInputContext>
1213
>;
1314
MessageList?: React.ComponentType<{ messages: ConversationMessage[] }>;

packages/react-ai/src/components/AIConversation/createAIConversation.tsx

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,10 @@ import { ViewElement as View } from './context/elements/definitions';
99
import { AIConversationProvider } from './AIConversationProvider';
1010
import { DefaultMessageControl } from './views/Controls/DefaultMessageControl';
1111

12-
/**
13-
* @experimental
14-
*/
1512
export function createAIConversation(input: AIConversationInput = {}): {
1613
AIConversation: AIConversation;
1714
} {
1815
const {
19-
elements,
2016
suggestedPrompts,
2117
actions,
2218
responseComponents,
@@ -31,7 +27,6 @@ export function createAIConversation(input: AIConversationInput = {}): {
3127
function AIConversation(props: AIConversationProps): JSX.Element {
3228
const { messages, avatars, handleSendMessage, isLoading } = props;
3329
const providerProps = {
34-
elements,
3530
actions,
3631
suggestedPrompts,
3732
responseComponents,

packages/react-ai/src/components/AIConversation/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from 'react';
22

3-
import { AIConversationElements } from './context/elements';
43
import {
54
ActionsBarControl,
65
AvatarControl,
@@ -29,7 +28,6 @@ export interface Controls {
2928
}
3029

3130
export interface AIConversationInput {
32-
elements?: Partial<AIConversationElements>;
3331
displayText?: DisplayTextTemplate<AIConversationDisplayText>;
3432
welcomeMessage?: React.ReactNode;
3533
suggestedPrompts?: SuggestedPrompt[];

packages/react-ai/src/components/AIConversation/views/Controls/FormControl.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ export const FormControl: FormControl = () => {
152152
const handleSendMessage = React.useContext(SendMessageContext);
153153
const allowAttachments = React.useContext(AttachmentContext);
154154
const responseComponents = React.useContext(ResponseComponentsContext);
155+
const isLoading = React.useContext(LoadingContext);
155156
const aiContext = React.useContext(AIContextContext);
156157
const ref = React.useRef<HTMLFormElement | null>(null);
157158
const controls = React.useContext(ControlsContext);
@@ -219,6 +220,7 @@ export const FormControl: FormControl = () => {
219220
input={input!}
220221
setInput={setInput!}
221222
allowAttachments={allowAttachments}
223+
isLoading={isLoading}
222224
/>
223225
);
224226
}

0 commit comments

Comments
 (0)