char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Aleksander Grygierui: Stores split refactor (#27240)521a64cd0

char/aliceai-t5-moe
3.6 KiB114 linesraw
1import { CONFIG_LOCALSTORAGE_KEY, SETTING_CONFIG_DEFAULT } from '$lib/constants';
2import { ParameterSyncService } from '$lib/services/parameter-sync.service';
3import { serverStore } from '$lib/stores/server.svelte';
4import { settingsStore } from '$lib/stores/settings/index.svelte';
5import type { SettingsConfigType } from '$lib/types';
6import { beforeEach, describe, expect, it } from 'vitest';
7
8type Primitive = string | number | boolean;
9
10const KEYS = Object.keys(SETTING_CONFIG_DEFAULT).filter(
11	(k) => ['string', 'number', 'boolean'].includes(typeof SETTING_CONFIG_DEFAULT[k]) && k !== 'theme'
12);
13
14function divergent(key: string, base: Primitive): Primitive {
15	if (typeof base === 'boolean') return !base;
16
17	if (typeof base === 'number') return base + 7;
18
19	return `user-${key}`;
20}
21
22function baselineFor(key: string, base: Primitive): Primitive {
23	if (typeof base === 'boolean') return !base;
24
25	if (typeof base === 'number') return base + 42;
26
27	return `admin-${key}`;
28}
29
30function mockProps(uiSettings: Record<string, Primitive>) {
31	Object.defineProperty(serverStore, 'props', {
32		configurable: true,
33		get: () =>
34			({
35				default_generation_settings: { params: { temperature: 0.8 } },
36				ui_settings: uiSettings
37			}) as unknown as typeof serverStore.props
38	});
39}
40
41const setUser = (key: string, value: Primitive) =>
42	settingsStore.updateConfig(key as keyof SettingsConfigType, value as never);
43const current = (key: string) => (settingsStore.config as Record<string, unknown>)[key];
44
45describe('registry-wide invariants', () => {
46	beforeEach(() => {
47		localStorage.removeItem(CONFIG_LOCALSTORAGE_KEY);
48	});
49
50	it('I1: no load ever modifies a stored user value, for any key of any type', () => {
51		settingsStore.initialize();
52		const userValues: Record<string, Primitive> = {};
53
54		for (const key of KEYS) {
55			userValues[key] = divergent(key, SETTING_CONFIG_DEFAULT[key] as Primitive);
56			setUser(key, userValues[key]);
57		}
58
59		// simulated F5 + adverse admin baseline on every key, synced twice
60		settingsStore.initialize();
61		const adverse: Record<string, Primitive> = {};
62
63		for (const key of KEYS)
64			adverse[key] = baselineFor(key, SETTING_CONFIG_DEFAULT[key] as Primitive);
65		mockProps(adverse);
66		settingsStore.syncWithServerDefaults();
67		settingsStore.syncWithServerDefaults();
68
69		for (const key of KEYS) {
70			expect(current(key), key).toBe(userValues[key]);
71		}
72	});
73
74	it('first visit: the baseline applies for every key, false and 0 included', () => {
75		settingsStore.initialize();
76		const baseline: Record<string, Primitive> = {};
77
78		for (const key of KEYS)
79			baseline[key] = baselineFor(key, SETTING_CONFIG_DEFAULT[key] as Primitive);
80		mockProps(baseline);
81
82		settingsStore.syncWithServerDefaults();
83
84		for (const key of KEYS) {
85			if (ParameterSyncService.canSyncParameter(key)) continue;
86
87			expect(current(key), key).toBe(baseline[key]);
88		}
89	});
90
91	it('I3: Reset returns every key to baseline when defined, factory default otherwise', () => {
92		settingsStore.initialize();
93		for (const key of KEYS) setUser(key, divergent(key, SETTING_CONFIG_DEFAULT[key] as Primitive));
94
95		const baseline: Record<string, Primitive> = {};
96
97		KEYS.filter((_, i) => i % 2 === 0).forEach((key) => {
98			baseline[key] = baselineFor(key, SETTING_CONFIG_DEFAULT[key] as Primitive);
99		});
100		mockProps(baseline);
101
102		settingsStore.forceSyncWithServerDefaults();
103
104		for (const key of KEYS) {
105			if (key in baseline) {
106				expect(current(key), key).toBe(baseline[key]);
107			} else if (ParameterSyncService.canSyncParameter(key)) {
108				expect(current(key), key).toBe('');
109			} else {
110				expect(current(key), key).toBe(SETTING_CONFIG_DEFAULT[key]);
111			}
112		}
113	});
114});