File size: 3,491 Bytes
3d50167
 
 
 
 
b0c5e01
3d50167
 
 
 
 
70b31b7
5168622
3d50167
70b31b7
 
3d50167
8c89f37
 
 
 
3d50167
 
 
 
 
 
 
 
 
add7bfd
3d50167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b0c5e01
3d50167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// ===== KIMI CONFIGURATION CENTER =====
window.KIMI_CONFIG = {
    // Default values for all components
    DEFAULTS: {
        LANGUAGE: "en",
        THEME: "dark",
        INTERFACE_OPACITY: 0.8,
        ANIMATIONS_ENABLED: true,
        VOICE_RATE: 1.1,
        VOICE_PITCH: 1.1,
        VOICE_VOLUME: 0.8,
        LLM_TEMPERATURE: 0.9,
        LLM_MAX_TOKENS: 400,
        LLM_TOP_P: 0.9,
        LLM_FREQUENCY_PENALTY: 0.9,
        LLM_PRESENCE_PENALTY: 0.8,
        SELECTED_CHARACTER: "kimi",
        SHOW_TRANSCRIPT: true,
        ENABLE_STREAMING: true,
        VOICE_ENABLED: true,
        MEMORY_SYSTEM_ENABLED: true
    },

    // Validation ranges
    RANGES: {
        VOICE_RATE: { min: 0.5, max: 2.0 },
        VOICE_PITCH: { min: 0.5, max: 2.0 },
        VOICE_VOLUME: { min: 0.0, max: 1.0 },
        INTERFACE_OPACITY: { min: 0.1, max: 1.0 },
        LLM_TEMPERATURE: { min: 0.0, max: 1.0 },
        LLM_MAX_TOKENS: { min: 10, max: 8192 },
        LLM_TOP_P: { min: 0.0, max: 1.0 },
        LLM_FREQUENCY_PENALTY: { min: 0.0, max: 2.0 },
        LLM_PRESENCE_PENALTY: { min: 0.0, max: 2.0 }
    },

    // Performance settings
    PERFORMANCE: {
        DEBOUNCE_DELAY: 300,
        THROTTLE_DELAY: 100,
        BATCH_SIZE: 10,
        MAX_MEMORY_ENTRIES: 1000,
        CLEANUP_INTERVAL: 300000 // 5 minutes
    },

    // UI settings
    UI: {
        LOADING_TIMEOUT: 1500,
        ANIMATION_DURATION: 500,
        FEEDBACK_DURATION: 1500,
        TAB_SCROLL_THRESHOLD: 50
    },

    // API settings
    API: {
        MAX_RETRIES: 3,
        TIMEOUT: 30000,
        RATE_LIMIT_DELAY: 1000
    },

    // Error messages
    ERRORS: {
        INIT_FAILED: "Initialization failed",
        DB_ERROR: "Database error",
        API_ERROR: "API error",
        VALIDATION_ERROR: "Validation error",
        NETWORK_ERROR: "Network error"
    },

    // Available themes
    THEMES: {
        dark: "Dark Night",
        pink: "Passionate Pink",
        blue: "Ocean Blue",
        purple: "Mystic Purple",
        green: "Emerald Forest"
    },

    // Supported languages
    LANGUAGES: {
        fr: "French",
        en: "English",
        es: "Spanish",
        de: "German",
        it: "Italian",
        ja: "Japanese",
        zh: "Chinese"
    }
};

// Configuration utility functions
window.KIMI_CONFIG.get = function (path, fallback = null) {
    try {
        const keys = path.split(".");
        let value = this;

        for (const key of keys) {
            if (value && typeof value === "object" && key in value) {
                value = value[key];
            } else {
                return fallback;
            }
        }

        return value;
    } catch (error) {
        console.error("Config get error:", error);
        return fallback;
    }
};

window.KIMI_CONFIG.validate = function (value, type) {
    try {
        const range = this.RANGES[type];
        if (!range) return { valid: true, value };

        const numValue = parseFloat(value);
        if (isNaN(numValue)) return { valid: false, value: this.DEFAULTS[type] };

        const clampedValue = Math.max(range.min, Math.min(range.max, numValue));
        return { valid: true, value: clampedValue };
    } catch (error) {
        console.error("Config validation error:", error);
        return { valid: false, value: this.DEFAULTS[type] };
    }
};