File size: 4,464 Bytes
3d50167
 
 
 
 
b0c5e01
3d50167
 
 
 
 
70b31b7
5168622
3d50167
70b31b7
 
3d50167
8c89f37
 
 
 
3d50167
 
 
 
 
 
 
 
 
add7bfd
3d50167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bcbb712
 
 
 
 
 
 
 
 
 
3d50167
 
 
b0c5e01
3d50167
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bcbb712
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3d50167
 
 
 
6b7272b
3d50167
 
6b7272b
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
// ===== 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"
    },

    // Debug configuration (centralized)
    DEBUG: {
        ENABLED: false, // Master debug switch
        VOICE: false, // Voice system debug
        VIDEO: false, // Video system debug
        MEMORY: false, // Memory system debug
        API: false, // API calls debug
        SYNC: false // Synchronization debug
    },

    // 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;
    }
};

// Centralized debug logging utility
window.KIMI_CONFIG.debugLog = function (category, message, ...args) {
    if (!this.DEBUG.ENABLED) return;

    const categoryEnabled = category === "GENERAL" ? true : this.DEBUG[category];
    if (!categoryEnabled) return;

    const prefix =
        category === "GENERAL"
            ? "πŸ”§"
            : {
                  VOICE: "🎀",
                  VIDEO: "🎬",
                  MEMORY: "πŸ’Ύ",
                  API: "πŸ“‘",
                  SYNC: "πŸ”„"
              }[category] || "πŸ”§";

    console.log(`${prefix} [${category}]`, message, ...args);
};

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] };
    }
};