Move chat state values out of settings

This commit is contained in:
Webifi 2023-05-28 15:54:45 -05:00
parent bf00f23596
commit c436fc6299
4 changed files with 21 additions and 25 deletions

View File

@ -124,12 +124,13 @@
} else { } else {
console.log('Speech recognition not supported') console.log('Speech recognition not supported')
} }
if (chatSettings.startSession) { if (chat.startSession) {
const profile = getProfile('') // get default profile const profile = getProfile('') // get default profile
applyProfile(chatId, profile.profile as any) applyProfile(chatId, profile.profile as any)
if (chatSettings.startSession) { if (chat.startSession) {
setChatSettingValueByKey(chatId, 'startSession', false) chat.startSession = false
// Auto start the session out of band saveChatStore()
// Auto start the session
setTimeout(() => { submitForm(false, true) }, 0) setTimeout(() => { submitForm(false, true) }, 0)
} }
} }
@ -349,7 +350,8 @@
if (updating) return if (updating) return
if (!skipInput) { if (!skipInput) {
setChatSettingValueByKey(chatId, 'sessionStarted', true) chat.sessionStarted = true
saveChatStore()
if (input.value !== '') { if (input.value !== '') {
// Compose the input message // Compose the input message
const inputMessage: Message = { role: 'user', content: input.value, uuid: uuidv4() } const inputMessage: Message = { role: 'user', content: input.value, uuid: uuidv4() }
@ -505,9 +507,10 @@
const closeSettings = () => { const closeSettings = () => {
showSettingsModal = 0 showSettingsModal = 0
showProfileMenu = false showProfileMenu = false
if (chat.settings.startSession) { if (chat.startSession) {
setChatSettingValueByKey(chatId, 'startSession', false) chat.startSession = false
submitForm(false, true) saveChatStore()
submitForm(false, true)
} }
} }
@ -556,7 +559,7 @@
window.alert('Unable to change:\n' + e.message) window.alert('Unable to change:\n' + e.message)
} }
} }
if (setting.key === 'profile' && chatSettings.sessionStarted && if (setting.key === 'profile' && chat.sessionStarted &&
(getProfile(el.value).characterName !== chatSettings.characterName)) { (getProfile(el.value).characterName !== chatSettings.characterName)) {
const val = chatSettings[setting.key] const val = chatSettings[setting.key]
if (window.confirm('Personality change will not correctly apply to existing chat session.\n Continue?')) { if (window.confirm('Personality change will not correctly apply to existing chat session.\n Continue?')) {

View File

@ -1,6 +1,6 @@
<script context="module" lang="ts"> <script context="module" lang="ts">
import { applyProfile } from './Profiles.svelte' import { applyProfile } from './Profiles.svelte'
import { getChatSettings } from './Storage.svelte' import { getChat, getChatSettings } from './Storage.svelte'
import { encode } from 'gpt-tokenizer' import { encode } from 'gpt-tokenizer'
// Setting definitions // Setting definitions
@ -79,10 +79,6 @@ const defaults:ChatSettings = {
systemPrompt: '', systemPrompt: '',
autoStartSession: false, autoStartSession: false,
trainingPrompts: [], trainingPrompts: [],
// There are chat session state variables, and really don't belong here
// But it was easier to just put them here.
startSession: false, // Should the session start automatically
sessionStarted: false // Has the session started (user made a first request)
} }
const excludeFromProfile = { const excludeFromProfile = {
@ -101,7 +97,7 @@ const profileSetting: ChatSetting & SettingSelect = {
options: [], // Set by Profiles options: [], // Set by Profiles
type: 'select', type: 'select',
afterChange: (chatId, setting) => { afterChange: (chatId, setting) => {
applyProfile(chatId, '', !getChatSettings(chatId).sessionStarted) applyProfile(chatId, '', !getChat(chatId).sessionStarted)
return true // Signal we should refresh the setting modal return true // Signal we should refresh the setting modal
} }
} }
@ -160,13 +156,6 @@ const nonRequestSettings: ChatSetting[] = [
type: 'boolean', type: 'boolean',
hide: (chatId) => !getChatSettings(chatId).useSystemPrompt hide: (chatId) => !getChatSettings(chatId).useSystemPrompt
}, },
{
key: 'startSession',
name: 'Auto-Start Trigger',
title: '',
type: 'boolean',
hide: (chatId) => true
},
{ {
key: 'useSummarization', key: 'useSummarization',
name: 'Enable Auto Summarize', name: 'Enable Auto Summarize',

View File

@ -30,7 +30,9 @@
name: `Chat ${chatId}`, name: `Chat ${chatId}`,
settings: {} as ChatSettings, settings: {} as ChatSettings,
messages: [], messages: [],
usage: {} as Record<Model, Usage> usage: {} as Record<Model, Usage>,
startSession: false,
sessionStarted: false,
}) })
chatsStorage.set(chats) chatsStorage.set(chats)
// Apply defaults and prepare it to start // Apply defaults and prepare it to start
@ -90,6 +92,8 @@
const usageMap:Record<Model, Usage> = {} const usageMap:Record<Model, Usage> = {}
chat.usage = usageMap chat.usage = usageMap
} }
if (chat.startSession === undefined) chat.startSession = false
if (chat.sessionStarted === undefined) chat.sessionStarted = !!chat.messages.find(m => m.role === 'user')
chatsStorage.set(chats) chatsStorage.set(chats)
} }

View File

@ -58,8 +58,6 @@
useSystemPrompt: boolean; useSystemPrompt: boolean;
systemPrompt: string; systemPrompt: string;
autoStartSession: boolean; autoStartSession: boolean;
startSession: false;
sessionStarted: false;
trainingPrompts?: Message[]; trainingPrompts?: Message[];
} & Request; } & Request;
@ -69,6 +67,8 @@
messages: Message[]; messages: Message[];
usage: Record<Model, Usage>; usage: Record<Model, Usage>;
settings: ChatSettings; settings: ChatSettings;
startSession: boolean;
sessionStarted: boolean;
}; };
type ResponseOK = { type ResponseOK = {