@ai-sdk/svelte
Version:
[Svelte](https://svelte.dev/) UI components for the [AI SDK](https://ai-sdk.dev/docs):
31 lines (30 loc) • 748 B
JavaScript
import { AbstractChat, } from 'ai';
export class Chat extends AbstractChat {
constructor(init) {
super({
...init,
state: new SvelteChatState(init.messages),
});
}
}
class SvelteChatState {
messages;
status = $state('ready');
error = $state(undefined);
constructor(messages = []) {
this.messages = $state(messages);
}
setMessages = (messages) => {
this.messages = messages;
};
pushMessage = (message) => {
this.messages.push(message);
};
popMessage = () => {
this.messages.pop();
};
replaceMessage = (index, message) => {
this.messages[index] = message;
};
snapshot = (thing) => $state.snapshot(thing);
}