@ezychat/web 0.1.40 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -542,7 +542,7 @@ var e = "Pentadbir", t = "Pentadbir · {{section}}", n = {
542
542
  unchanged: "Alamat dan nama terowong ini sudah disimpan.",
543
543
  cancel: "Batalkan perubahan"
544
544
  }
545
- }, m = /*#__PURE__*/ JSON.parse("{\"settingsTitle\":\"AI\",\"settingsDescription\":\"Sambungkan ChatGPT atau kunci API OpenAI. Semua ahli AI dalam peti masuk ini berkongsi satu penyedia dan model.\",\"roleBadge\":\"AI · Ejen Jualan\",\"addMember\":\"Tambah ahli AI\",\"membersDescription\":\"Pasukan dan pembantu AI anda untuk perbualan pelanggan.\",\"assistant\":\"Pembantu AI\",\"behavior\":\"Membalas selepas 10 saat dalam perbualan pelanggan yang belum ditugaskan dan mengambil alih perbualan. Tugaskan perbualan kepada diri anda untuk mengambil alih. AI hanya menyelesaikan perbualan selepas pengesahan pelanggan. Apabila memerlukan bantuan, AI menugaskannya kepada ejen manusia dalam talian tanpa perbualan terbuka, atau mengembalikannya sebagai belum ditugaskan.\",\"memberName\":\"Nama ahli AI\",\"roleDescription\":\"Peranan: Ejen Jualan — menjawab soalan asas menggunakan pengetahuan perniagaan anda.\",\"keySaved\":\"Kunci API OpenAI telah disimpan.\",\"keyMissing\":\"Kunci API OpenAI belum dikonfigurasikan.\",\"connectionMode\":\"Mod sambungan\",\"apiKey\":\"Kunci API OpenAI\",\"keepKeyHint\":\"Masukkan kunci baharu. Biarkan kosong untuk mengekalkan kunci tersimpan.\",\"apiKeyHint\":\"Disimpan dengan selamat pada pelayan peti masuk. Penggunaan API dicaj berasingan daripada ChatGPT.\",\"enterKey\":\"Masukkan kunci API\",\"cancelLogin\":\"Batalkan log masuk\",\"openLogin\":\"Buka log masuk\",\"invalidLink\":\"Pautan log masuk tidak sah. Batalkan log masuk dan cuba lagi.\",\"model\":\"Model (pilihan)\",\"apiModelHint\":\"Biarkan kosong untuk menggunakan gpt-4.1-mini.\",\"instructions\":\"Arahan AI\",\"instructionsHint\":\"Diisi dengan arahan yang disyorkan; ubah suai mengikut gaya anda, atau kekalkan seperti sedia ada.\",\"saveConnection\":\"Simpan sambungan AI\",\"connectionSaved\":\"Sambungan AI peti masuk disimpan.\",\"memberSaved\":\"Tetapan ahli AI disimpan.\",\"checkSettings\":\"Semak tetapan AI.\",\"fileTypeError\":\"Pilih dokumen TXT, Markdown, PDF atau DOCX.\",\"fileSizeError\":\"Dokumen mestilah 10 MB atau lebih kecil.\",\"chatgptState\":\"ChatGPT: {{state}}\",\"modelInvalid\":\"Mod ChatGPT menyokong {{models}}. Biarkan kosong untuk menggunakan model lalai.\",\"modelSeparator\":\" atau \",\"refreshError\":\"Tidak dapat mengemas kini status sambungan AI. {{error}}\",\"state\":{\"unavailable\":\"tidak tersedia\",\"signed_out\":\"telah log keluar\",\"signing_in\":\"sedang log masuk\",\"connected\":\"disambungkan\",\"error\":\"ralat\",\"expired\":\"tamat tempoh\"},\"signedInAs\":\"Log masuk sebagai {{email}}\",\"signedIn\":\"Log masuk ke ChatGPT\",\"signInSavesMode\":\"Log masuk juga menyimpan ChatGPT sebagai mod sambungan.\",\"signOut\":\"Log keluar\",\"signInWithChatgpt\":\"Log masuk dengan ChatGPT\",\"testConnection\":\"Uji sambungan\",\"testOk\":\"{{model}} membalas: {{reply}}\",\"testFailed\":\"Ujian gagal: {{error}}\",\"chatgptModel\":\"Model\",\"modelAuto\":\"Auto (disyorkan)\",\"modelsLive\":\"Model yang tersedia untuk akaun ChatGPT anda.\",\"modelsFallback\":\"Senarai model lalai. Log masuk untuk memuatkan model akaun anda.\",\"modeApi\":\"Kunci API\",\"modeChatgpt\":\"ChatGPT\",\"pasteLabel\":\"Log masuk pada komputer lain?\",\"pasteHint\":\"Selepas anda meluluskan, pelayar membuka halaman yang mungkin tidak dimuatkan. Salin alamat penuh dari bar alamat dan tampal di sini.\",\"pastePlaceholder\":\"http://localhost:1455/auth/callback?code=…\",\"pasteSubmit\":\"Selesaikan log masuk\",\"saveBeforeTest\":\"Simpan sambungan sebelum mengujinya.\",\"bannerExpiredTitle\":\"Log masuk ChatGPT telah tamat tempoh\",\"bannerErrorTitle\":\"Sambungan ChatGPT berhenti berfungsi\",\"bannerFallback\":\"Sambungan AI tidak berfungsi.\",\"bannerChatsReleased\":\"Ahli AI tidak menjawab. Perbualan kekal belum ditugaskan untuk pasukan anda sehingga sambungan berfungsi semula.\",\"bannerExpiredText\":\"Log masuk ChatGPT telah tamat tempoh. Log masuk semula.\",\"popupBlocked\":\"Halaman log masuk disekat daripada dibuka. Gunakan Buka log masuk.\",\"page\":{\"defaultTitle\":\"Ejen Jualan AI\",\"breadcrumb\":\"Laluan navigasi\",\"pill\":{\"off\":\"Mati\",\"on\":\"Hidup\",\"needsConnection\":\"Perlu sambungan\",\"needsKnowledge\":\"Perlu konteks perniagaan\"},\"turnOn\":\"Hidupkan\",\"turnOff\":\"Matikan\",\"reasonConnection\":\"Sambungkan AI di bawah dahulu.\",\"reasonKnowledge\":\"Tambah konteks perniagaan dahulu.\",\"turnedOn\":\"Ahli AI dihidupkan.\",\"turnedOff\":\"Ahli AI dimatikan.\",\"draftSaved\":\"Ahli AI disimpan sebagai draf supaya konteks perniagaan boleh ditambah.\",\"stepName\":\"Nama & peranan\",\"stepInstructions\":\"Arahan AI\",\"stepContext\":\"Konteks perniagaan\",\"stepHandoff\":\"Peraturan serahan\",\"stepTry\":\"Cuba\",\"instructionsPlaceholder\":\"Contoh: Balas dengan ringkas dan sopan. Jawab soalan tentang harga, penghantaran dan waktu operasi. Serahkan kepada manusia untuk aduan atau bayaran balik.\",\"useDefaultInstructions\":\"Guna arahan lalai\",\"handoffLabel\":\"Peraturan serahan\",\"handoffHint\":\"Bila AI patut menyerahkan sembang kepada pasukan anda? Satu peraturan setiap baris. Biarkan kosong jika tiada peraturan tambahan.\",\"handoffPlaceholder\":\"Contoh:\\n- Pelanggan meminta bayaran balik\\n- Pelanggan mahukan sebut harga\",\"handoffSystem\":\"Sentiasa diserahkan, walau apa pun yang anda tulis di sini: pelanggan meminta untuk bercakap dengan orang, permintaan yang AI tidak dapat laksanakan (pesanan, tempahan, bayaran), jawapan yang tiada dalam konteks perniagaan anda, serta hal undang-undang, perubatan atau data peribadi.\",\"useDefaultHandoff\":\"Guna peraturan lalai\",\"howItWorks\":\"Cara ia berfungsi\",\"connectionLine\":\"Sambungan: {{state}}\",\"openSettings\":\"Tetapan → AI\",\"save\":\"Simpan\",\"description\":\"Sediakan, uji dan hidupkan pembantu AI yang menjawab sembang pelanggan.\",\"usingRecommended\":\"Menggunakan arahan yang disyorkan. Suntingnya mengikut gaya anda.\",\"advanced\":\"Lanjutan: arahan dan peraturan serahan\",\"advancedRecommended\":\"Menggunakan tetapan yang disyorkan\",\"advancedCustomised\":\"Diubah suai\"},\"try\":{\"label\":\"Soalan pelanggan\",\"placeholder\":\"Contoh: Berapakah kos penghantaran?\",\"enterHint\":\"Tekan Enter untuk bertanya, Shift+Enter untuk baris baharu.\",\"ask\":\"Tanya\",\"hint\":\"Menjawab dengan konteks perniagaan yang disimpan serta nama dan arahan di halaman ini, termasuk perubahan yang belum disimpan. Tiada apa-apa dihantar kepada pelanggan.\",\"decision\":{\"answer\":\"Jawapan\",\"ask_resolution\":\"Bertanya sama ada selesai\",\"resolve\":\"Akan diselesaikan\",\"handoff\":\"Akan diserahkan kepada manusia\"},\"handoffReason\":\"Sebab: {{reason}}\",\"lookups\":\"Perkara yang disemak oleh AI\",\"lookedUp\":\"AI menyemak {{title}} · {{source}}\",\"lookupFailed\":\"Tidak dapat menyemak {{title}} · {{source}}\",\"noKnowledge\":\"Tiada pengetahuan perniagaan yang sepadan ditemui, jadi AI akan menyerahkan perbualan ini kepada manusia tanpa memanggil model.\",\"model\":\"Model: {{model}}\",\"failed\":\"Tidak dapat menjawab: {{error}}\"},\"voice\":{\"title\":\"Mesej suara\",\"description\":\"Nota suara pelanggan ditukar kepada teks supaya AI dan pasukan anda boleh membacanya.\",\"engine\":\"Transkripsi\",\"off\":\"Mati\",\"offHint\":\"Nota suara kekal sebagai audio. AI meminta pelanggan menaip soalan mereka.\",\"local\":\"Di PC ini\",\"localHint\":\"Audio kekal di komputer ini.\",\"localNeedsModel\":\"Muat turun model suara di bawah dahulu.\",\"cloud\":\"Awan (OpenAI)\",\"cloudHint\":\"Audio dihantar ke OpenAI untuk ditranskripsi.\",\"cloudNeedsKey\":\"Perlukan kunci API OpenAI yang disimpan dalam sambungan AI di atas.\",\"modelTitle\":\"Model suara untuk PC ini\",\"notInstalled\":\"Belum dipasang. Muat turun sekali sahaja; transkripsi kemudian berjalan di komputer ini.\",\"download\":\"Muat turun model suara ({{size}} MB)\",\"downloading\":\"Memuat turun… {{percent}}%\",\"downloadProgress\":\"{{done}} daripada {{total}} MB\",\"cancel\":\"Batal muat turun\",\"installed\":\"Dipasang\",\"remove\":\"Buang\",\"removeTitle\":\"Buang model suara?\",\"removeText\":\"Nota suara tidak lagi ditranskripsi di PC ini. Anda boleh memuat turun model ini semula kemudian.\",\"removeConfirm\":\"Buang model\",\"saved\":\"Tetapan mesej suara disimpan\",\"privacy\":\"Di PC ini, nota suara tidak pernah meninggalkan komputer ini. Dengan Awan, audio dihantar ke OpenAI. Transkrip disimpan bersama sembang.\",\"errors\":{\"disk_space\":\"Ruang cakera tidak mencukupi. Kosongkan sekurang-kurangnya 800 MB dan cuba lagi.\",\"network\":\"Muat turun gagal. Semak sambungan internet dan cuba lagi.\",\"verification\":\"Fail yang dimuat turun tidak sepadan dengan checksum yang dijangka dan telah dipadam. Cuba lagi.\",\"redirect\":\"Muat turun dihantar ke alamat yang tidak dijangka dan telah dihentikan.\",\"write\":\"Model suara tidak dapat disimpan di komputer ini.\",\"unknown\":\"Muat turun gagal. Cuba lagi.\"}},\"contextPanel\":{\"hint\":\"Fail dan teks yang digunakan oleh AI untuk menjawab: profil syarikat, produk, harga, polisi dan soalan lazim.\",\"limits\":\"Sehingga 20 item, 10 MB setiap fail\",\"search\":\"Cari konteks perniagaan\",\"searchPlaceholder\":\"Cari mengikut nama\",\"select\":\"Pilih\",\"cancel\":\"Batal\",\"deleteSelected_other\":\"Padam {{count}}\",\"add\":\"Tambah\",\"upload\":\"Muat naik dari peranti\",\"addText\":\"Tambah kandungan teks\",\"name\":\"Nama\",\"size\":\"Saiz\",\"details\":\"Butiran\",\"type\":\"Jenis\",\"kindFile\":\"Fail\",\"kindText\":\"Kandungan teks\",\"added\":\"Ditambah {{when}}\",\"meta\":\"{{size}} · {{added}}\",\"selectItem\":\"Pilih {{name}}\",\"empty\":\"Belum ada konteks: tambah profil syarikat, senarai produk, harga dan soalan lazim anda.\",\"noMatches\":\"Tiada item sepadan dengan “{{query}}”.\",\"limitReached\":\"Padam satu item untuk menambah yang lain (sehingga 20).\",\"textLabel\":\"Kandungan teks\",\"characterCount\":\"{{count}} / {{max}} aksara\",\"namePlaceholder\":\"Contoh: Senarai harga\",\"textPlaceholder\":\"Contoh:\\nKedai Ezy menjual kek dan roti di Johor Bahru.\\nDibuka setiap hari 9 pagi–6 petang, tutup pada cuti umum.\\nPenghantaran dalam 10 km berharga RM10.\\n\\nS: Adakah anda menerima tempahan khas?\\nJ: Ya, dengan notis 3 hari.\",\"addTextTitle\":\"Tambah kandungan teks\",\"save\":\"Simpan\",\"delete\":\"Padam\",\"close\":\"Tutup\",\"loading\":\"Memuatkan…\",\"loadError\":\"Tidak dapat membuka item ini. {{error}}\",\"preview\":\"Teks yang diekstrak (baca sahaja)\",\"previewTruncated\":\"Menunjukkan bahagian awal teks yang diekstrak.\",\"fileReadOnly\":\"Fail tidak boleh disunting. Padam fail ini dan muat naik versi baharu.\",\"textAdded\":\"Kandungan teks ditambah.\",\"fileAdded\":\"Fail ditambah.\",\"changesSaved\":\"Perubahan disimpan.\",\"deleted_other\":\"{{count}} item dipadam.\",\"confirmOne\":\"Padam {{name}}?\",\"confirmMany_other\":\"Padam {{count}} item?\",\"confirmText\":\"AI berhenti menggunakannya serta-merta. Tindakan ini tidak boleh dibuat asal.\",\"deleteFailed\":\"Tidak dapat memadam: {{names}}\",\"namesMore\":\"{{names}} +{{count}} lagi\"},\"defaults\":{\"instructions\":\"PERANAN\\nAnda pembantu WhatsApp perniagaan ini. Anda menjawab pertanyaan pelanggan dan soalan tentang produk, serta mewakili perniagaan secara profesional.\\n\\nSKOP\\nAnda membantu tentang:\\n- Produk: ciri, spesifikasi, varian, ketersediaan dan cara penggunaan\\n- Pertanyaan umum: waktu operasi, lokasi, cara membuat pesanan, kawasan penghantaran, kaedah bayaran dan polisi pemulangan\\n- Langkah seterusnya: cara membuat pesanan, cara meminta sebut harga, atau menghubungi pasukan kami\\nAnda tidak membantu tentang topik yang tiada kaitan dengan perniagaan atau produknya (sembang umum, berita, pengekodan, kerja rumah, pendapat, politik, agama). Balas dengan sopan dalam satu baris dan bawa semula perbualan, contohnya: \\\"Maaf, saya hanya boleh membantu dengan soalan tentang produk dan perkhidmatan kami. Bagaimana saya boleh membantu?\\\"\\n\\nPENGETAHUAN\\n- Kekalkan nama produk, nombor model dan harga tepat seperti dalam konteks perniagaan.\\n- Jangan meneka harga, stok, spesifikasi, tarikh penghantaran, promosi atau polisi. Jika maklumat tiada, nyatakannya dan biar pasukan kami mengesahkan.\\n- Jangan menjanjikan diskaun, hadiah percuma atau pengecualian.\\n\\nBAHASA\\n- Balas dalam bahasa pelanggan. Jika mereka mencampurkan bahasa, balas dalam bahasa utama mesej mereka.\\n- Jika anda tidak dapat membalas dalam bahasa mereka, gunakan bahasa lalai yang dinyatakan dalam konteks perniagaan, jika tiada gunakan bahasa Inggeris.\\n\\nGAYA\\n- Profesional, sopan dan mesra; tiada slanga. Paling banyak satu emoji, dan hanya jika sesuai.\\n- Satu hingga tiga ayat pendek. Gunakan senarai pendek hanya untuk pilihan atau spesifikasi.\\n- Jawab dahulu: tiada ucapan panjang dan jangan mengulang soalan.\\n- Tanya paling banyak satu soalan penjelasan apabila perlu (contohnya model, saiz atau kawasan mana).\\n- Format WhatsApp sahaja: *tebal* untuk butiran penting dan baris baharu biasa. Tiada tajuk, jadual atau pautan yang tidak diberikan kepada anda.\",\"handoffRules\":\"- Pelanggan kecewa atau membuat aduan\\n- Pelanggan meminta bayaran balik, pemulangan, pertukaran atau tuntutan waranti\\n- Pelanggan bertanya tentang pesanan, penghantaran atau bayaran sedia ada\\n- Pelanggan mahukan pesanan pukal atau tempahan khas, atau sebut harga\\n- Pelanggan mahu tawar-menawar harga atau meminta diskaun\"},\"replaceKey\":\"Ganti kunci\",\"keepKey\":\"Kekalkan kunci tersimpan\",\"modelAdvanced\":\"Lanjutan: pilih model\",\"edit\":{\"open\":\"Sunting dengan AI\",\"unavailable\":\"Sambungkan AI di atas untuk menggunakan Sunting dengan AI.\",\"title\":{\"instructions\":\"Sunting arahan AI dengan AI\",\"handoffRules\":\"Sunting peraturan serahan dengan AI\"},\"description\":\"Terangkan perubahan. Anda menyemaknya sebelum apa-apa digunakan.\",\"requestLabel\":\"Apa yang perlu diubah?\",\"placeholder\":{\"instructions\":\"cth. Balas dengan nada yang lebih mesra dan santai\",\"handoffRules\":\"cth. Serahkan permintaan bayaran balik kepada staf\"},\"suggest\":\"Cadangkan\",\"suggestAgain\":\"Cadangkan lagi\",\"writing\":\"Sedang menulis cadangan…\",\"result\":{\"instructions\":\"Cadangan arahan AI\",\"handoffRules\":\"Cadangan peraturan serahan\"},\"removed\":\"Dibuang:\",\"added\":\"Ditambah:\",\"noChange\":\"Tiada perubahan dicadangkan — cuba terangkan dengan cara lain.\",\"failed\":\"AI tidak dapat mencadangkan perubahan. Cuba lagi.\",\"discard\":\"Buang\",\"apply\":{\"instructions\":\"Guna pada arahan AI\",\"handoffRules\":\"Guna pada peraturan serahan\"},\"applyNote\":\"Menggunakan cadangan hanya mengisi kotak; tekan Simpan pada halaman untuk menyimpannya.\",\"applied\":\"Digunakan. Tekan Simpan untuk menyimpannya.\",\"unchanged_other\":\"{{count}} baris tidak berubah\"},\"keyOk\":\"Kunci berfungsi.\",\"connectionReady\":\"Sambungan AI sudah sedia.\",\"setupAgent\":\"Sediakan Ejen Jualan\",\"moreFeatures\":\"Lagi ciri AI\",\"moreFeaturesHint\":\"Mesej suara dan Pengayaan pelanggan\",\"remoteSignInHint\":\"Log masuk daripada pelayar pada komputer yang menjalankan peti masuk; dari komputer lain, tampal alamat terakhir apabila diminta.\",\"connect\":{\"title\":\"Sambungkan AI\",\"chatgpt\":\"Log masuk dengan ChatGPT\",\"recommended\":\"Disyorkan\",\"note\":\"Menggunakan akaun ChatGPT anda. Sambungan ini tidak rasmi dan mungkin berhenti berfungsi; anda boleh bertukar kepada kunci API pada bila-bila masa.\",\"signingIn\":\"Sedang log masuk… selesaikan dalam tetingkap ChatGPT.\",\"cancel\":\"Batal\",\"connectedChatgpt\":\"Disambungkan ke ChatGPT\",\"connectedAs\":\"Log masuk sebagai {{email}}\",\"connectedKey\":\"Kunci API OpenAI telah disemak dan disimpan\",\"useKey\":\"Guna kunci API OpenAI\",\"useChatgpt\":\"Guna Log masuk dengan ChatGPT\",\"keyLabel\":\"Kunci API OpenAI\",\"keyHint\":\"Bermula dengan sk-. Cipta satu di platform.openai.com → API keys.\",\"testKey\":\"Uji kunci\",\"keyFailedFallback\":\"Kunci ini tidak berfungsi. Pastikan anda menyalin semuanya.\",\"keyInvalid\":\"OpenAI tidak menerima kunci ini. Pastikan anda menyalin semuanya.\",\"keyUnreachable\":\"Tidak dapat menghubungi OpenAI untuk menyemak kunci. Semak sambungan internet dan cuba lagi.\",\"keyRateLimited\":\"OpenAI sibuk atau kunci ini telah mencapai hadnya. Tunggu seminit dan cuba lagi.\",\"keyForbidden\":\"OpenAI tidak membenarkan kunci ini menyenaraikan model. Kunci terhad atau had wilayah boleh menyebabkan ini; kunci mungkin masih berfungsi untuk balasan.\",\"saveAnyway\":\"Simpan juga\"}}"), h = {
545
+ }, m = /*#__PURE__*/ JSON.parse("{\"settingsTitle\":\"AI\",\"settingsDescription\":\"Sambungkan ChatGPT atau kunci API OpenAI. Semua ahli AI dalam peti masuk ini berkongsi satu penyedia dan model.\",\"roleBadge\":\"AI · Ejen Jualan\",\"addMember\":\"Tambah ahli AI\",\"membersDescription\":\"Pasukan dan pembantu AI anda untuk perbualan pelanggan.\",\"assistant\":\"Pembantu AI\",\"behavior\":\"Membalas selepas 10 saat dalam perbualan pelanggan yang belum ditugaskan dan mengambil alih perbualan. Tugaskan perbualan kepada diri anda untuk mengambil alih. AI hanya menyelesaikan perbualan selepas pengesahan pelanggan. Apabila memerlukan bantuan, AI menugaskannya kepada ejen manusia dalam talian tanpa perbualan terbuka, atau mengembalikannya sebagai belum ditugaskan.\",\"memberName\":\"Nama ahli AI\",\"roleDescription\":\"Peranan: Ejen Jualan — menjawab soalan asas menggunakan pengetahuan perniagaan anda.\",\"keySaved\":\"Kunci API OpenAI telah disimpan.\",\"keyMissing\":\"Kunci API OpenAI belum dikonfigurasikan.\",\"connectionMode\":\"Mod sambungan\",\"apiKey\":\"Kunci API OpenAI\",\"keepKeyHint\":\"Masukkan kunci baharu. Biarkan kosong untuk mengekalkan kunci tersimpan.\",\"apiKeyHint\":\"Disimpan dengan selamat pada pelayan peti masuk. Penggunaan API dicaj berasingan daripada ChatGPT.\",\"enterKey\":\"Masukkan kunci API\",\"cancelLogin\":\"Batalkan log masuk\",\"openLogin\":\"Buka log masuk\",\"invalidLink\":\"Pautan log masuk tidak sah. Batalkan log masuk dan cuba lagi.\",\"model\":\"Model (pilihan)\",\"apiModelHint\":\"Biarkan kosong untuk menggunakan gpt-4.1-mini.\",\"instructions\":\"Arahan AI\",\"instructionsHint\":\"Diisi dengan arahan yang disyorkan; ubah suai mengikut gaya anda, atau kekalkan seperti sedia ada.\",\"saveConnection\":\"Simpan sambungan AI\",\"connectionSaved\":\"Sambungan AI peti masuk disimpan.\",\"memberSaved\":\"Tetapan ahli AI disimpan.\",\"checkSettings\":\"Semak tetapan AI.\",\"fileTypeError\":\"Pilih dokumen TXT, Markdown, PDF atau DOCX.\",\"fileSizeError\":\"Dokumen mestilah 10 MB atau lebih kecil.\",\"chatgptState\":\"ChatGPT: {{state}}\",\"modelInvalid\":\"Mod ChatGPT menyokong {{models}}. Biarkan kosong untuk menggunakan model lalai.\",\"modelSeparator\":\" atau \",\"refreshError\":\"Tidak dapat mengemas kini status sambungan AI. {{error}}\",\"state\":{\"unavailable\":\"tidak tersedia\",\"signed_out\":\"telah log keluar\",\"signing_in\":\"sedang log masuk\",\"connected\":\"disambungkan\",\"error\":\"ralat\",\"expired\":\"tamat tempoh\"},\"signedInAs\":\"Log masuk sebagai {{email}}\",\"signedIn\":\"Log masuk ke ChatGPT\",\"signInSavesMode\":\"Log masuk juga menyimpan ChatGPT sebagai mod sambungan.\",\"signOut\":\"Log keluar\",\"signInWithChatgpt\":\"Log masuk dengan ChatGPT\",\"testConnection\":\"Uji sambungan\",\"testOk\":\"{{model}} membalas: {{reply}}\",\"testFailed\":\"Ujian gagal: {{error}}\",\"chatgptModel\":\"Model\",\"modelAuto\":\"Auto (disyorkan)\",\"modelsLive\":\"Model yang tersedia untuk akaun ChatGPT anda.\",\"modelsFallback\":\"Senarai model lalai. Log masuk untuk memuatkan model akaun anda.\",\"modeApi\":\"Kunci API\",\"modeChatgpt\":\"ChatGPT\",\"pasteLabel\":\"Log masuk pada komputer lain?\",\"pasteHint\":\"Selepas anda meluluskan, pelayar membuka halaman yang mungkin tidak dimuatkan. Salin alamat penuh dari bar alamat dan tampal di sini.\",\"pastePlaceholder\":\"http://localhost:1455/auth/callback?code=…\",\"pasteSubmit\":\"Selesaikan log masuk\",\"saveBeforeTest\":\"Simpan sambungan sebelum mengujinya.\",\"bannerExpiredTitle\":\"Log masuk ChatGPT telah tamat tempoh\",\"bannerErrorTitle\":\"Sambungan ChatGPT berhenti berfungsi\",\"bannerFallback\":\"Sambungan AI tidak berfungsi.\",\"bannerChatsReleased\":\"Ahli AI tidak menjawab. Perbualan kekal belum ditugaskan untuk pasukan anda sehingga sambungan berfungsi semula.\",\"bannerExpiredText\":\"Log masuk ChatGPT telah tamat tempoh. Log masuk semula.\",\"popupBlocked\":\"Halaman log masuk disekat daripada dibuka. Gunakan Buka log masuk.\",\"page\":{\"defaultTitle\":\"Ejen Jualan AI\",\"breadcrumb\":\"Laluan navigasi\",\"pill\":{\"off\":\"Mati\",\"on\":\"Hidup\",\"needsConnection\":\"Perlu sambungan\",\"needsKnowledge\":\"Perlu konteks perniagaan\"},\"turnOn\":\"Hidupkan\",\"turnOff\":\"Matikan\",\"reasonConnection\":\"Sambungkan AI di bawah dahulu.\",\"reasonKnowledge\":\"Tambah konteks perniagaan dahulu.\",\"turnedOn\":\"Ahli AI dihidupkan.\",\"turnedOff\":\"Ahli AI dimatikan.\",\"draftSaved\":\"Ahli AI disimpan sebagai draf supaya konteks perniagaan boleh ditambah.\",\"stepName\":\"Nama & peranan\",\"stepInstructions\":\"Arahan AI\",\"stepContext\":\"Konteks perniagaan\",\"stepHandoff\":\"Peraturan serahan\",\"stepTry\":\"Cuba\",\"instructionsPlaceholder\":\"Contoh: Balas dengan ringkas dan sopan. Jawab soalan tentang harga, penghantaran dan waktu operasi. Serahkan kepada manusia untuk aduan atau bayaran balik.\",\"useDefaultInstructions\":\"Guna arahan lalai\",\"handoffLabel\":\"Peraturan serahan\",\"handoffHint\":\"Bila AI patut menyerahkan sembang kepada pasukan anda? Satu peraturan setiap baris. Biarkan kosong jika tiada peraturan tambahan.\",\"handoffPlaceholder\":\"Contoh:\\n- Pelanggan meminta bayaran balik\\n- Pelanggan mahukan sebut harga\",\"handoffSystem\":\"Sentiasa diserahkan, walau apa pun yang anda tulis di sini: pelanggan meminta untuk bercakap dengan orang, permintaan yang AI tidak dapat laksanakan (pesanan, tempahan, bayaran), jawapan yang tiada dalam konteks perniagaan anda, serta hal undang-undang, perubatan atau data peribadi.\",\"useDefaultHandoff\":\"Guna peraturan lalai\",\"howItWorks\":\"Cara ia berfungsi\",\"connectionLine\":\"Sambungan: {{state}}\",\"openSettings\":\"Tetapan → AI\",\"save\":\"Simpan\",\"description\":\"Sediakan, uji dan hidupkan pembantu AI yang menjawab sembang pelanggan.\",\"usingRecommended\":\"Menggunakan arahan yang disyorkan. Suntingnya mengikut gaya anda.\",\"advanced\":\"Lanjutan: arahan dan peraturan serahan\",\"advancedRecommended\":\"Menggunakan tetapan yang disyorkan\",\"advancedCustomised\":\"Diubah suai\"},\"try\":{\"label\":\"Soalan pelanggan\",\"placeholder\":\"Contoh: Berapakah kos penghantaran?\",\"enterHint\":\"Tekan Enter untuk bertanya, Shift+Enter untuk baris baharu.\",\"ask\":\"Tanya\",\"hint\":\"Menjawab dengan konteks perniagaan yang disimpan serta nama dan arahan di halaman ini, termasuk perubahan yang belum disimpan. Tiada apa-apa dihantar kepada pelanggan.\",\"decision\":{\"answer\":\"Jawapan\",\"ask_resolution\":\"Bertanya sama ada selesai\",\"resolve\":\"Akan diselesaikan\",\"handoff\":\"Akan diserahkan kepada manusia\",\"no_reply\":\"Tidak akan membalas\"},\"handoffReason\":\"Sebab: {{reason}}\",\"lookups\":\"Perkara yang disemak oleh AI\",\"lookedUp\":\"AI menyemak {{title}} · {{source}}\",\"lookupFailed\":\"Tidak dapat menyemak {{title}} · {{source}}\",\"noReply\":\"AI tidak akan menghantar apa-apa dan kekal mengendalikan perbualan ini.\",\"noKnowledge\":\"Tiada pengetahuan perniagaan yang sepadan ditemui, jadi AI akan menyerahkan perbualan ini kepada manusia tanpa memanggil model.\",\"model\":\"Model: {{model}}\",\"failed\":\"Tidak dapat menjawab: {{error}}\"},\"voice\":{\"title\":\"Mesej suara\",\"description\":\"Nota suara pelanggan ditukar kepada teks supaya AI dan pasukan anda boleh membacanya.\",\"engine\":\"Transkripsi\",\"off\":\"Mati\",\"offHint\":\"Nota suara kekal sebagai audio. AI meminta pelanggan menaip soalan mereka.\",\"local\":\"Di PC ini\",\"localHint\":\"Audio kekal di komputer ini.\",\"localNeedsModel\":\"Muat turun model suara di bawah dahulu.\",\"cloud\":\"Awan (OpenAI)\",\"cloudHint\":\"Audio dihantar ke OpenAI untuk ditranskripsi.\",\"cloudNeedsKey\":\"Perlukan kunci API OpenAI yang disimpan dalam sambungan AI di atas.\",\"modelTitle\":\"Model suara untuk PC ini\",\"notInstalled\":\"Belum dipasang. Muat turun sekali sahaja; transkripsi kemudian berjalan di komputer ini.\",\"download\":\"Muat turun model suara ({{size}} MB)\",\"downloading\":\"Memuat turun… {{percent}}%\",\"downloadProgress\":\"{{done}} daripada {{total}} MB\",\"cancel\":\"Batal muat turun\",\"installed\":\"Dipasang\",\"remove\":\"Buang\",\"removeTitle\":\"Buang model suara?\",\"removeText\":\"Nota suara tidak lagi ditranskripsi di PC ini. Anda boleh memuat turun model ini semula kemudian.\",\"removeConfirm\":\"Buang model\",\"saved\":\"Tetapan mesej suara disimpan\",\"privacy\":\"Di PC ini, nota suara tidak pernah meninggalkan komputer ini. Dengan Awan, audio dihantar ke OpenAI. Transkrip disimpan bersama sembang.\",\"errors\":{\"disk_space\":\"Ruang cakera tidak mencukupi. Kosongkan sekurang-kurangnya 800 MB dan cuba lagi.\",\"network\":\"Muat turun gagal. Semak sambungan internet dan cuba lagi.\",\"verification\":\"Fail yang dimuat turun tidak sepadan dengan checksum yang dijangka dan telah dipadam. Cuba lagi.\",\"redirect\":\"Muat turun dihantar ke alamat yang tidak dijangka dan telah dihentikan.\",\"write\":\"Model suara tidak dapat disimpan di komputer ini.\",\"unknown\":\"Muat turun gagal. Cuba lagi.\"}},\"contextPanel\":{\"hint\":\"Fail dan teks yang digunakan oleh AI untuk menjawab: profil syarikat, produk, harga, polisi dan soalan lazim.\",\"limits\":\"Sehingga 20 item, 10 MB setiap fail\",\"search\":\"Cari konteks perniagaan\",\"searchPlaceholder\":\"Cari mengikut nama\",\"select\":\"Pilih\",\"cancel\":\"Batal\",\"deleteSelected_other\":\"Padam {{count}}\",\"add\":\"Tambah\",\"upload\":\"Muat naik dari peranti\",\"addText\":\"Tambah kandungan teks\",\"name\":\"Nama\",\"size\":\"Saiz\",\"details\":\"Butiran\",\"type\":\"Jenis\",\"kindFile\":\"Fail\",\"kindText\":\"Kandungan teks\",\"added\":\"Ditambah {{when}}\",\"meta\":\"{{size}} · {{added}}\",\"selectItem\":\"Pilih {{name}}\",\"empty\":\"Belum ada konteks: tambah profil syarikat, senarai produk, harga dan soalan lazim anda.\",\"noMatches\":\"Tiada item sepadan dengan “{{query}}”.\",\"limitReached\":\"Padam satu item untuk menambah yang lain (sehingga 20).\",\"textLabel\":\"Kandungan teks\",\"characterCount\":\"{{count}} / {{max}} aksara\",\"namePlaceholder\":\"Contoh: Senarai harga\",\"textPlaceholder\":\"Contoh:\\nKedai Ezy menjual kek dan roti di Johor Bahru.\\nDibuka setiap hari 9 pagi–6 petang, tutup pada cuti umum.\\nPenghantaran dalam 10 km berharga RM10.\\n\\nS: Adakah anda menerima tempahan khas?\\nJ: Ya, dengan notis 3 hari.\",\"addTextTitle\":\"Tambah kandungan teks\",\"save\":\"Simpan\",\"delete\":\"Padam\",\"close\":\"Tutup\",\"loading\":\"Memuatkan…\",\"loadError\":\"Tidak dapat membuka item ini. {{error}}\",\"preview\":\"Teks yang diekstrak (baca sahaja)\",\"previewTruncated\":\"Menunjukkan bahagian awal teks yang diekstrak.\",\"fileReadOnly\":\"Fail tidak boleh disunting. Padam fail ini dan muat naik versi baharu.\",\"textAdded\":\"Kandungan teks ditambah.\",\"fileAdded\":\"Fail ditambah.\",\"changesSaved\":\"Perubahan disimpan.\",\"deleted_other\":\"{{count}} item dipadam.\",\"confirmOne\":\"Padam {{name}}?\",\"confirmMany_other\":\"Padam {{count}} item?\",\"confirmText\":\"AI berhenti menggunakannya serta-merta. Tindakan ini tidak boleh dibuat asal.\",\"deleteFailed\":\"Tidak dapat memadam: {{names}}\",\"namesMore\":\"{{names}} +{{count}} lagi\"},\"defaults\":{\"instructions\":\"PERANAN\\nAnda pembantu WhatsApp perniagaan ini. Anda menjawab pertanyaan pelanggan dan soalan tentang produk, serta mewakili perniagaan secara profesional.\\n\\nSKOP\\nAnda membantu tentang:\\n- Produk: ciri, spesifikasi, varian, ketersediaan dan cara penggunaan\\n- Pertanyaan umum: waktu operasi, lokasi, cara membuat pesanan, kawasan penghantaran, kaedah bayaran dan polisi pemulangan\\n- Langkah seterusnya: cara membuat pesanan, cara meminta sebut harga, atau menghubungi pasukan kami\\nAnda tidak membantu tentang topik yang tiada kaitan dengan perniagaan atau produknya (sembang umum, berita, pengekodan, kerja rumah, pendapat, politik, agama). Balas dengan sopan dalam satu baris dan bawa semula perbualan, contohnya: \\\"Maaf, saya hanya boleh membantu dengan soalan tentang produk dan perkhidmatan kami. Bagaimana saya boleh membantu?\\\"\\n\\nPENGETAHUAN\\n- Kekalkan nama produk, nombor model dan harga tepat seperti dalam konteks perniagaan.\\n- Jangan meneka harga, stok, spesifikasi, tarikh penghantaran, promosi atau polisi. Jika maklumat tiada, nyatakannya dan biar pasukan kami mengesahkan.\\n- Jangan menjanjikan diskaun, hadiah percuma atau pengecualian.\\n\\nBAHASA\\n- Balas dalam bahasa pelanggan. Jika mereka mencampurkan bahasa, balas dalam bahasa utama mesej mereka.\\n- Jika anda tidak dapat membalas dalam bahasa mereka, gunakan bahasa lalai yang dinyatakan dalam konteks perniagaan, jika tiada gunakan bahasa Inggeris.\\n\\nGAYA\\n- Profesional, sopan dan mesra; tiada slanga. Paling banyak satu emoji, dan hanya jika sesuai.\\n- Satu hingga tiga ayat pendek. Gunakan senarai pendek hanya untuk pilihan atau spesifikasi.\\n- Jawab dahulu: tiada ucapan panjang dan jangan mengulang soalan.\\n- Tanya paling banyak satu soalan penjelasan apabila perlu (contohnya model, saiz atau kawasan mana).\\n- Format WhatsApp sahaja: *tebal* untuk butiran penting dan baris baharu biasa. Tiada tajuk, jadual atau pautan yang tidak diberikan kepada anda.\",\"handoffRules\":\"- Pelanggan kecewa atau membuat aduan\\n- Pelanggan meminta bayaran balik, pemulangan, pertukaran atau tuntutan waranti\\n- Pelanggan bertanya tentang pesanan, penghantaran atau bayaran sedia ada\\n- Pelanggan mahukan pesanan pukal atau tempahan khas, atau sebut harga\\n- Pelanggan mahu tawar-menawar harga atau meminta diskaun\"},\"replaceKey\":\"Ganti kunci\",\"keepKey\":\"Kekalkan kunci tersimpan\",\"modelAdvanced\":\"Lanjutan: pilih model\",\"edit\":{\"open\":\"Sunting dengan AI\",\"unavailable\":\"Sambungkan AI di atas untuk menggunakan Sunting dengan AI.\",\"title\":{\"instructions\":\"Sunting arahan AI dengan AI\",\"handoffRules\":\"Sunting peraturan serahan dengan AI\"},\"description\":\"Terangkan perubahan. Anda menyemaknya sebelum apa-apa digunakan.\",\"requestLabel\":\"Apa yang perlu diubah?\",\"placeholder\":{\"instructions\":\"cth. Balas dengan nada yang lebih mesra dan santai\",\"handoffRules\":\"cth. Serahkan permintaan bayaran balik kepada staf\"},\"suggest\":\"Cadangkan\",\"suggestAgain\":\"Cadangkan lagi\",\"writing\":\"Sedang menulis cadangan…\",\"result\":{\"instructions\":\"Cadangan arahan AI\",\"handoffRules\":\"Cadangan peraturan serahan\"},\"removed\":\"Dibuang:\",\"added\":\"Ditambah:\",\"noChange\":\"Tiada perubahan dicadangkan — cuba terangkan dengan cara lain.\",\"failed\":\"AI tidak dapat mencadangkan perubahan. Cuba lagi.\",\"discard\":\"Buang\",\"apply\":{\"instructions\":\"Guna pada arahan AI\",\"handoffRules\":\"Guna pada peraturan serahan\"},\"applyNote\":\"Menggunakan cadangan hanya mengisi kotak; tekan Simpan pada halaman untuk menyimpannya.\",\"applied\":\"Digunakan. Tekan Simpan untuk menyimpannya.\",\"unchanged_other\":\"{{count}} baris tidak berubah\"},\"keyOk\":\"Kunci berfungsi.\",\"connectionReady\":\"Sambungan AI sudah sedia.\",\"setupAgent\":\"Sediakan Ejen Jualan\",\"moreFeatures\":\"Lagi ciri AI\",\"moreFeaturesHint\":\"Mesej suara dan Pengayaan pelanggan\",\"remoteSignInHint\":\"Log masuk daripada pelayar pada komputer yang menjalankan peti masuk; dari komputer lain, tampal alamat terakhir apabila diminta.\",\"connect\":{\"title\":\"Sambungkan AI\",\"chatgpt\":\"Log masuk dengan ChatGPT\",\"recommended\":\"Disyorkan\",\"note\":\"Menggunakan akaun ChatGPT anda. Sambungan ini tidak rasmi dan mungkin berhenti berfungsi; anda boleh bertukar kepada kunci API pada bila-bila masa.\",\"signingIn\":\"Sedang log masuk… selesaikan dalam tetingkap ChatGPT.\",\"cancel\":\"Batal\",\"connectedChatgpt\":\"Disambungkan ke ChatGPT\",\"connectedAs\":\"Log masuk sebagai {{email}}\",\"connectedKey\":\"Kunci API OpenAI telah disemak dan disimpan\",\"useKey\":\"Guna kunci API OpenAI\",\"useChatgpt\":\"Guna Log masuk dengan ChatGPT\",\"keyLabel\":\"Kunci API OpenAI\",\"keyHint\":\"Bermula dengan sk-. Cipta satu di platform.openai.com → API keys.\",\"testKey\":\"Uji kunci\",\"keyFailedFallback\":\"Kunci ini tidak berfungsi. Pastikan anda menyalin semuanya.\",\"keyInvalid\":\"OpenAI tidak menerima kunci ini. Pastikan anda menyalin semuanya.\",\"keyUnreachable\":\"Tidak dapat menghubungi OpenAI untuk menyemak kunci. Semak sambungan internet dan cuba lagi.\",\"keyRateLimited\":\"OpenAI sibuk atau kunci ini telah mencapai hadnya. Tunggu seminit dan cuba lagi.\",\"keyForbidden\":\"OpenAI tidak membenarkan kunci ini menyenaraikan model. Kunci terhad atau had wilayah boleh menyebabkan ini; kunci mungkin masih berfungsi untuk balasan.\",\"saveAnyway\":\"Simpan juga\"}}"), h = {
546
546
  title: "Pelengkapan maklumat pelanggan",
547
547
  description: "Simpan maklumat pelanggan yang jelas secara automatik daripada mesej baharu dalam sembang langsung.",
548
548
  enable: "Kemas kini maklumat pelanggan secara automatik",
@@ -541,7 +541,7 @@ var e = "管理", t = "管理 · {{section}}", n = {
541
541
  unchanged: "此地址和隧道名称已保存。",
542
542
  cancel: "取消更改"
543
543
  }
544
- }, m = /*#__PURE__*/ JSON.parse("{\"settingsTitle\":\"AI\",\"settingsDescription\":\"连接 ChatGPT 或 OpenAI API 密钥。此收件箱的所有 AI 成员共用一个提供商和模型。\",\"roleBadge\":\"AI · 销售客服\",\"addMember\":\"添加 AI 成员\",\"membersDescription\":\"为客户聊天提供服务的团队和 AI 助手。\",\"assistant\":\"AI 助手\",\"behavior\":\"在未分配的客户聊天中等待 10 秒后回复并接管。将聊天分配给自己即可接手。AI 仅在客户确认后解决聊天。需要帮助时,AI 会将聊天分配给没有进行中聊天的在线人工客服,或将其退回未分配状态。\",\"memberName\":\"AI 成员名称\",\"roleDescription\":\"角色:销售客服 — 使用业务知识回答基本问题。\",\"keySaved\":\"OpenAI API 密钥已保存。\",\"keyMissing\":\"尚未配置 OpenAI API 密钥。\",\"connectionMode\":\"连接模式\",\"apiKey\":\"OpenAI API 密钥\",\"keepKeyHint\":\"输入新密钥。留空则保留已保存的密钥。\",\"apiKeyHint\":\"安全存储在收件箱服务器上。API 用量与 ChatGPT 分开计费。\",\"enterKey\":\"输入 API 密钥\",\"cancelLogin\":\"取消登录\",\"openLogin\":\"打开登录页面\",\"invalidLink\":\"登录链接无效。请取消登录后重试。\",\"model\":\"模型(可选)\",\"apiModelHint\":\"留空使用 gpt-4.1-mini。\",\"instructions\":\"AI 指令\",\"instructionsHint\":\"已预填推荐指令;可按您的语气修改,也可保持不变。\",\"saveConnection\":\"保存 AI 连接\",\"connectionSaved\":\"收件箱 AI 连接已保存。\",\"memberSaved\":\"AI 成员设置已保存。\",\"checkSettings\":\"请检查 AI 设置。\",\"fileTypeError\":\"请选择 TXT、Markdown、PDF 或 DOCX 文档。\",\"fileSizeError\":\"文档大小不得超过 10 MB。\",\"chatgptState\":\"ChatGPT:{{state}}\",\"modelInvalid\":\"ChatGPT 模式支持 {{models}}。留空使用默认模型。\",\"modelSeparator\":\" 或 \",\"refreshError\":\"无法刷新 AI 连接状态。{{error}}\",\"state\":{\"unavailable\":\"不可用\",\"signed_out\":\"已退出\",\"signing_in\":\"正在登录\",\"connected\":\"已连接\",\"error\":\"错误\",\"expired\":\"已过期\"},\"signedInAs\":\"已登录:{{email}}\",\"signedIn\":\"已登录 ChatGPT\",\"signInSavesMode\":\"登录时也会将 ChatGPT 保存为连接方式。\",\"signOut\":\"退出登录\",\"signInWithChatgpt\":\"使用 ChatGPT 登录\",\"testConnection\":\"测试连接\",\"testOk\":\"{{model}} 回复:{{reply}}\",\"testFailed\":\"测试失败:{{error}}\",\"chatgptModel\":\"模型\",\"modelAuto\":\"自动(推荐)\",\"modelsLive\":\"您的 ChatGPT 账户可用的模型。\",\"modelsFallback\":\"默认模型列表。登录后可加载您账户的模型。\",\"modeApi\":\"API 密钥\",\"modeChatgpt\":\"ChatGPT\",\"pasteLabel\":\"在另一台电脑上登录?\",\"pasteHint\":\"批准后,浏览器会打开一个可能无法加载的页面。请从地址栏复制完整地址并粘贴到这里。\",\"pastePlaceholder\":\"http://localhost:1455/auth/callback?code=…\",\"pasteSubmit\":\"完成登录\",\"saveBeforeTest\":\"请先保存连接再测试。\",\"bannerExpiredTitle\":\"ChatGPT 登录已过期\",\"bannerErrorTitle\":\"ChatGPT 连接已停止工作\",\"bannerFallback\":\"AI 连接无法使用。\",\"bannerChatsReleased\":\"AI 成员已停止回复。在连接恢复之前,聊天会保持未分配,交由您的团队处理。\",\"bannerExpiredText\":\"ChatGPT 登录已过期,请重新登录。\",\"popupBlocked\":\"登录页面被浏览器拦截。请使用“打开登录页面”。\",\"page\":{\"defaultTitle\":\"AI 销售助理\",\"breadcrumb\":\"导航路径\",\"pill\":{\"off\":\"已关闭\",\"on\":\"已开启\",\"needsConnection\":\"需要连接\",\"needsKnowledge\":\"需要业务背景\"},\"turnOn\":\"开启\",\"turnOff\":\"关闭\",\"reasonConnection\":\"请先在下方连接 AI。\",\"reasonKnowledge\":\"请先添加业务背景。\",\"turnedOn\":\"AI 成员已开启。\",\"turnedOff\":\"AI 成员已关闭。\",\"draftSaved\":\"已将 AI 成员保存为草稿,以便添加业务背景。\",\"stepName\":\"名称和角色\",\"stepInstructions\":\"AI 指令\",\"stepContext\":\"业务背景\",\"stepHandoff\":\"转交规则\",\"stepTry\":\"试一试\",\"instructionsPlaceholder\":\"例如:简短礼貌地回复。回答有关价格、配送和营业时间的问题。投诉或退款请转交人工。\",\"useDefaultInstructions\":\"使用默认指令\",\"handoffLabel\":\"转交规则\",\"handoffHint\":\"AI 何时应把聊天转交给您的团队?每行一条规则。留空表示没有额外规则。\",\"handoffPlaceholder\":\"例如:\\n- 客户要求退款\\n- 客户需要报价\",\"handoffSystem\":\"无论此处如何填写,以下情况始终转交:客户要求人工服务、AI 无法办理的请求(下单、预订、付款)、业务背景中没有的答案,以及法律、医疗或个人资料相关事项。\",\"useDefaultHandoff\":\"使用默认规则\",\"howItWorks\":\"工作原理\",\"connectionLine\":\"连接:{{state}}\",\"openSettings\":\"设置 → AI\",\"save\":\"保存\",\"description\":\"设置、测试并开启回复客户对话的 AI 助手。\",\"usingRecommended\":\"正在使用推荐的指令。可按您的语气进行编辑。\",\"advanced\":\"高级:指令和转接规则\",\"advancedRecommended\":\"使用推荐设置\",\"advancedCustomised\":\"已自定义\"},\"try\":{\"label\":\"客户问题\",\"placeholder\":\"例如:运费是多少?\",\"enterHint\":\"按 Enter 提问,Shift+Enter 换行。\",\"ask\":\"提问\",\"hint\":\"使用已保存的业务背景以及本页的名称和指令(包括未保存的更改)回答。不会向客户发送任何内容。\",\"decision\":{\"answer\":\"回答\",\"ask_resolution\":\"已询问是否解决\",\"resolve\":\"将标记为已解决\",\"handoff\":\"将转交人工\"},\"handoffReason\":\"原因:{{reason}}\",\"lookups\":\"AI 查询的内容\",\"lookedUp\":\"AI 查询了 {{title}} · {{source}}\",\"lookupFailed\":\"无法查询 {{title}} · {{source}}\",\"noKnowledge\":\"未找到匹配的业务知识,因此 AI 会在不调用模型的情况下将此聊天转交给人工。\",\"model\":\"模型:{{model}}\",\"failed\":\"无法回答:{{error}}\"},\"voice\":{\"title\":\"语音消息\",\"description\":\"客户的语音消息会转写成文字,方便 AI 和团队阅读。\",\"engine\":\"转写方式\",\"off\":\"关闭\",\"offHint\":\"语音消息只保留音频。AI 会请客户输入文字提问。\",\"local\":\"在这台电脑上\",\"localHint\":\"音频留在这台电脑上。\",\"localNeedsModel\":\"请先在下方下载语音模型。\",\"cloud\":\"云端(OpenAI)\",\"cloudHint\":\"音频会发送到 OpenAI 进行转写。\",\"cloudNeedsKey\":\"需要在上方 AI 连接中保存 OpenAI API 密钥。\",\"modelTitle\":\"这台电脑的语音模型\",\"notInstalled\":\"尚未安装。只需下载一次,之后在这台电脑上转写。\",\"download\":\"下载语音模型({{size}} MB)\",\"downloading\":\"正在下载… {{percent}}%\",\"downloadProgress\":\"{{done}} / {{total}} MB\",\"cancel\":\"取消下载\",\"installed\":\"已安装\",\"remove\":\"移除\",\"removeTitle\":\"移除语音模型?\",\"removeText\":\"这台电脑将不再转写语音消息。之后可以重新下载模型。\",\"removeConfirm\":\"移除模型\",\"saved\":\"语音消息设置已保存\",\"privacy\":\"选择“在这台电脑上”时,语音不会离开这台电脑;选择云端时,音频会发送到 OpenAI。转写文字会随聊天一起保存。\",\"errors\":{\"disk_space\":\"磁盘空间不足。请至少释放 800 MB 后重试。\",\"network\":\"下载失败。请检查网络连接后重试。\",\"verification\":\"下载的文件校验和不符,已删除。请重试。\",\"redirect\":\"下载被转到意外的地址,已停止。\",\"write\":\"无法在这台电脑上保存语音模型。\",\"unknown\":\"下载失败。请重试。\"}},\"contextPanel\":{\"hint\":\"AI 用来回答的文件和文本:公司简介、产品、价格、政策和常见问题。\",\"limits\":\"最多 20 项,每个文件不超过 10 MB\",\"search\":\"搜索业务背景\",\"searchPlaceholder\":\"按名称搜索\",\"select\":\"选择\",\"cancel\":\"取消\",\"deleteSelected_other\":\"删除 {{count}} 项\",\"add\":\"添加\",\"upload\":\"从设备上传\",\"addText\":\"添加文本内容\",\"name\":\"名称\",\"size\":\"大小\",\"details\":\"详情\",\"type\":\"类型\",\"kindFile\":\"文件\",\"kindText\":\"文本内容\",\"added\":\"添加于{{when}}\",\"meta\":\"{{size}} · {{added}}\",\"selectItem\":\"选择 {{name}}\",\"empty\":\"还没有业务背景:添加公司简介、产品清单、价格和常见问题。\",\"noMatches\":\"没有与“{{query}}”匹配的项目。\",\"limitReached\":\"删除一项后才能添加新的(最多 20 项)。\",\"textLabel\":\"文本内容\",\"characterCount\":\"{{count}} / {{max}} 个字符\",\"namePlaceholder\":\"例如:价目表\",\"textPlaceholder\":\"例如:\\nEzy 饼屋在新山销售蛋糕和面包。\\n每天上午 9 点至下午 6 点营业,公共假期休息。\\n10 公里内配送费 RM10。\\n\\n问:可以定制订单吗?\\n答:可以,需提前 3 天通知。\",\"addTextTitle\":\"添加文本内容\",\"save\":\"保存\",\"delete\":\"删除\",\"close\":\"关闭\",\"loading\":\"正在加载…\",\"loadError\":\"无法打开此项目。{{error}}\",\"preview\":\"提取的文本(只读)\",\"previewTruncated\":\"仅显示提取文本的开头部分。\",\"fileReadOnly\":\"文件无法编辑。请删除此文件并上传新版本。\",\"textAdded\":\"已添加文本内容。\",\"fileAdded\":\"已添加文件。\",\"changesSaved\":\"更改已保存。\",\"deleted_other\":\"已删除 {{count}} 项。\",\"confirmOne\":\"删除 {{name}}?\",\"confirmMany_other\":\"删除 {{count}} 项?\",\"confirmText\":\"AI 将立即停止使用它。此操作无法撤销。\",\"deleteFailed\":\"无法删除:{{names}}\",\"namesMore\":\"{{names}} 等另外 {{count}} 项\"},\"defaults\":{\"instructions\":\"角色\\n你是本商家的 WhatsApp 助手。你负责回答客户咨询和产品问题,并以专业的方式代表商家。\\n\\n范围\\n你可以协助:\\n- 产品:功能、规格、款式、库存情况和使用方法\\n- 一般咨询:营业时间、地点、下单方式、配送区域、付款方式和退货政策\\n- 下一步:如何下单、如何索取报价,或联系我们的团队\\n与本商家或其产品无关的话题(闲聊、新闻、编程、作业、观点、政治、宗教),你不提供帮助。请用一句话礼貌回复并引导回正题,例如:“抱歉,我只能回答有关我们产品和服务的问题。请问有什么可以帮您?”\\n\\n知识\\n- 产品名称、型号和价格必须与业务背景中的写法完全一致。\\n- 切勿猜测价格、库存、规格、配送日期、促销或政策。如果缺少信息,请说明并让我们的团队确认。\\n- 切勿承诺折扣、赠品或特殊处理。\\n\\n语言\\n- 使用客户的语言回复。如果客户混用多种语言,请使用其消息的主要语言回复。\\n- 如果无法使用客户的语言回复,请使用业务背景中指定的默认语言,否则使用英语。\\n\\n风格\\n- 专业、礼貌、友好;不用俚语。最多使用一个表情符号,且仅在合适时使用。\\n- 一到三句短句。仅在列出选项或规格时使用简短列表。\\n- 先回答问题:不要冗长的问候,也不要复述问题。\\n- 需要时最多问一个澄清问题(例如哪个型号、尺寸或区域)。\\n- 仅使用 WhatsApp 格式:用 *粗体* 标出关键信息,使用普通换行。不要使用标题、表格或未提供给你的链接。\",\"handoffRules\":\"- 客户不满或提出投诉\\n- 客户要求退款、退货、换货或保修索赔\\n- 客户询问现有订单、配送或付款\\n- 客户需要批量或定制订单,或索取报价\\n- 客户想议价或要求折扣\"},\"replaceKey\":\"替换密钥\",\"keepKey\":\"保留已保存的密钥\",\"modelAdvanced\":\"高级:选择模型\",\"edit\":{\"open\":\"用 AI 修改\",\"unavailable\":\"请先在上方连接 AI,才能使用“用 AI 修改”。\",\"title\":{\"instructions\":\"用 AI 修改 AI 指令\",\"handoffRules\":\"用 AI 修改转交规则\"},\"description\":\"描述要做的修改。应用前你会先审阅。\",\"requestLabel\":\"需要修改什么?\",\"placeholder\":{\"instructions\":\"例如:用更亲切、轻松的语气回复\",\"handoffRules\":\"例如:把退款请求转交给人工\"},\"suggest\":\"生成建议\",\"suggestAgain\":\"重新建议\",\"writing\":\"正在撰写建议…\",\"result\":{\"instructions\":\"建议的 AI 指令\",\"handoffRules\":\"建议的转交规则\"},\"removed\":\"删除:\",\"added\":\"新增:\",\"noChange\":\"没有建议任何修改——请换个方式描述。\",\"failed\":\"AI 无法给出修改建议,请重试。\",\"discard\":\"放弃\",\"apply\":{\"instructions\":\"应用到 AI 指令\",\"handoffRules\":\"应用到转交规则\"},\"applyNote\":\"应用只会填入文本框;请在页面上按“保存”才会保留。\",\"applied\":\"已应用。请按“保存”保留修改。\",\"unchanged_other\":\"{{count}} 行未更改\"},\"keyOk\":\"密钥有效。\",\"connectionReady\":\"AI 连接已就绪。\",\"setupAgent\":\"设置销售代理\",\"moreFeatures\":\"更多 AI 功能\",\"moreFeaturesHint\":\"语音消息和客户资料补全\",\"remoteSignInHint\":\"请在运行收件箱的电脑上的浏览器中登录;如在其他电脑上登录,请按提示粘贴最终地址。\",\"connect\":{\"title\":\"连接 AI\",\"chatgpt\":\"使用 ChatGPT 登录\",\"recommended\":\"推荐\",\"note\":\"使用您的 ChatGPT 账户。此连接为非官方连接,可能会停止工作;您可以随时改用 API 密钥。\",\"signingIn\":\"正在登录… 请在 ChatGPT 窗口中完成。\",\"cancel\":\"取消\",\"connectedChatgpt\":\"已连接 ChatGPT\",\"connectedAs\":\"已登录为 {{email}}\",\"connectedKey\":\"OpenAI API 密钥已检查并保存\",\"useKey\":\"改用 OpenAI API 密钥\",\"useChatgpt\":\"改用 ChatGPT 登录\",\"keyLabel\":\"OpenAI API 密钥\",\"keyHint\":\"以 sk- 开头。可在 platform.openai.com → API keys 创建。\",\"testKey\":\"测试密钥\",\"keyFailedFallback\":\"此密钥无效。请检查是否完整复制。\",\"keyInvalid\":\"OpenAI 不接受此密钥。请检查是否完整复制。\",\"keyUnreachable\":\"无法连接 OpenAI 检查密钥。请检查网络连接后重试。\",\"keyRateLimited\":\"OpenAI 繁忙或此密钥已达到用量限制。请稍等一分钟后重试。\",\"keyForbidden\":\"OpenAI 不允许此密钥列出模型。受限密钥或地区限制可能导致此情况;此密钥仍可能用于回复。\",\"saveAnyway\":\"仍然保存\"}}"), h = {
544
+ }, m = /*#__PURE__*/ JSON.parse("{\"settingsTitle\":\"AI\",\"settingsDescription\":\"连接 ChatGPT 或 OpenAI API 密钥。此收件箱的所有 AI 成员共用一个提供商和模型。\",\"roleBadge\":\"AI · 销售客服\",\"addMember\":\"添加 AI 成员\",\"membersDescription\":\"为客户聊天提供服务的团队和 AI 助手。\",\"assistant\":\"AI 助手\",\"behavior\":\"在未分配的客户聊天中等待 10 秒后回复并接管。将聊天分配给自己即可接手。AI 仅在客户确认后解决聊天。需要帮助时,AI 会将聊天分配给没有进行中聊天的在线人工客服,或将其退回未分配状态。\",\"memberName\":\"AI 成员名称\",\"roleDescription\":\"角色:销售客服 — 使用业务知识回答基本问题。\",\"keySaved\":\"OpenAI API 密钥已保存。\",\"keyMissing\":\"尚未配置 OpenAI API 密钥。\",\"connectionMode\":\"连接模式\",\"apiKey\":\"OpenAI API 密钥\",\"keepKeyHint\":\"输入新密钥。留空则保留已保存的密钥。\",\"apiKeyHint\":\"安全存储在收件箱服务器上。API 用量与 ChatGPT 分开计费。\",\"enterKey\":\"输入 API 密钥\",\"cancelLogin\":\"取消登录\",\"openLogin\":\"打开登录页面\",\"invalidLink\":\"登录链接无效。请取消登录后重试。\",\"model\":\"模型(可选)\",\"apiModelHint\":\"留空使用 gpt-4.1-mini。\",\"instructions\":\"AI 指令\",\"instructionsHint\":\"已预填推荐指令;可按您的语气修改,也可保持不变。\",\"saveConnection\":\"保存 AI 连接\",\"connectionSaved\":\"收件箱 AI 连接已保存。\",\"memberSaved\":\"AI 成员设置已保存。\",\"checkSettings\":\"请检查 AI 设置。\",\"fileTypeError\":\"请选择 TXT、Markdown、PDF 或 DOCX 文档。\",\"fileSizeError\":\"文档大小不得超过 10 MB。\",\"chatgptState\":\"ChatGPT:{{state}}\",\"modelInvalid\":\"ChatGPT 模式支持 {{models}}。留空使用默认模型。\",\"modelSeparator\":\" 或 \",\"refreshError\":\"无法刷新 AI 连接状态。{{error}}\",\"state\":{\"unavailable\":\"不可用\",\"signed_out\":\"已退出\",\"signing_in\":\"正在登录\",\"connected\":\"已连接\",\"error\":\"错误\",\"expired\":\"已过期\"},\"signedInAs\":\"已登录:{{email}}\",\"signedIn\":\"已登录 ChatGPT\",\"signInSavesMode\":\"登录时也会将 ChatGPT 保存为连接方式。\",\"signOut\":\"退出登录\",\"signInWithChatgpt\":\"使用 ChatGPT 登录\",\"testConnection\":\"测试连接\",\"testOk\":\"{{model}} 回复:{{reply}}\",\"testFailed\":\"测试失败:{{error}}\",\"chatgptModel\":\"模型\",\"modelAuto\":\"自动(推荐)\",\"modelsLive\":\"您的 ChatGPT 账户可用的模型。\",\"modelsFallback\":\"默认模型列表。登录后可加载您账户的模型。\",\"modeApi\":\"API 密钥\",\"modeChatgpt\":\"ChatGPT\",\"pasteLabel\":\"在另一台电脑上登录?\",\"pasteHint\":\"批准后,浏览器会打开一个可能无法加载的页面。请从地址栏复制完整地址并粘贴到这里。\",\"pastePlaceholder\":\"http://localhost:1455/auth/callback?code=…\",\"pasteSubmit\":\"完成登录\",\"saveBeforeTest\":\"请先保存连接再测试。\",\"bannerExpiredTitle\":\"ChatGPT 登录已过期\",\"bannerErrorTitle\":\"ChatGPT 连接已停止工作\",\"bannerFallback\":\"AI 连接无法使用。\",\"bannerChatsReleased\":\"AI 成员已停止回复。在连接恢复之前,聊天会保持未分配,交由您的团队处理。\",\"bannerExpiredText\":\"ChatGPT 登录已过期,请重新登录。\",\"popupBlocked\":\"登录页面被浏览器拦截。请使用“打开登录页面”。\",\"page\":{\"defaultTitle\":\"AI 销售助理\",\"breadcrumb\":\"导航路径\",\"pill\":{\"off\":\"已关闭\",\"on\":\"已开启\",\"needsConnection\":\"需要连接\",\"needsKnowledge\":\"需要业务背景\"},\"turnOn\":\"开启\",\"turnOff\":\"关闭\",\"reasonConnection\":\"请先在下方连接 AI。\",\"reasonKnowledge\":\"请先添加业务背景。\",\"turnedOn\":\"AI 成员已开启。\",\"turnedOff\":\"AI 成员已关闭。\",\"draftSaved\":\"已将 AI 成员保存为草稿,以便添加业务背景。\",\"stepName\":\"名称和角色\",\"stepInstructions\":\"AI 指令\",\"stepContext\":\"业务背景\",\"stepHandoff\":\"转交规则\",\"stepTry\":\"试一试\",\"instructionsPlaceholder\":\"例如:简短礼貌地回复。回答有关价格、配送和营业时间的问题。投诉或退款请转交人工。\",\"useDefaultInstructions\":\"使用默认指令\",\"handoffLabel\":\"转交规则\",\"handoffHint\":\"AI 何时应把聊天转交给您的团队?每行一条规则。留空表示没有额外规则。\",\"handoffPlaceholder\":\"例如:\\n- 客户要求退款\\n- 客户需要报价\",\"handoffSystem\":\"无论此处如何填写,以下情况始终转交:客户要求人工服务、AI 无法办理的请求(下单、预订、付款)、业务背景中没有的答案,以及法律、医疗或个人资料相关事项。\",\"useDefaultHandoff\":\"使用默认规则\",\"howItWorks\":\"工作原理\",\"connectionLine\":\"连接:{{state}}\",\"openSettings\":\"设置 → AI\",\"save\":\"保存\",\"description\":\"设置、测试并开启回复客户对话的 AI 助手。\",\"usingRecommended\":\"正在使用推荐的指令。可按您的语气进行编辑。\",\"advanced\":\"高级:指令和转接规则\",\"advancedRecommended\":\"使用推荐设置\",\"advancedCustomised\":\"已自定义\"},\"try\":{\"label\":\"客户问题\",\"placeholder\":\"例如:运费是多少?\",\"enterHint\":\"按 Enter 提问,Shift+Enter 换行。\",\"ask\":\"提问\",\"hint\":\"使用已保存的业务背景以及本页的名称和指令(包括未保存的更改)回答。不会向客户发送任何内容。\",\"decision\":{\"answer\":\"回答\",\"ask_resolution\":\"已询问是否解决\",\"resolve\":\"将标记为已解决\",\"handoff\":\"将转交人工\",\"no_reply\":\"不会回复\"},\"handoffReason\":\"原因:{{reason}}\",\"lookups\":\"AI 查询的内容\",\"lookedUp\":\"AI 查询了 {{title}} · {{source}}\",\"lookupFailed\":\"无法查询 {{title}} · {{source}}\",\"noReply\":\"AI 不会发送任何内容,并继续负责此聊天。\",\"noKnowledge\":\"未找到匹配的业务知识,因此 AI 会在不调用模型的情况下将此聊天转交给人工。\",\"model\":\"模型:{{model}}\",\"failed\":\"无法回答:{{error}}\"},\"voice\":{\"title\":\"语音消息\",\"description\":\"客户的语音消息会转写成文字,方便 AI 和团队阅读。\",\"engine\":\"转写方式\",\"off\":\"关闭\",\"offHint\":\"语音消息只保留音频。AI 会请客户输入文字提问。\",\"local\":\"在这台电脑上\",\"localHint\":\"音频留在这台电脑上。\",\"localNeedsModel\":\"请先在下方下载语音模型。\",\"cloud\":\"云端(OpenAI)\",\"cloudHint\":\"音频会发送到 OpenAI 进行转写。\",\"cloudNeedsKey\":\"需要在上方 AI 连接中保存 OpenAI API 密钥。\",\"modelTitle\":\"这台电脑的语音模型\",\"notInstalled\":\"尚未安装。只需下载一次,之后在这台电脑上转写。\",\"download\":\"下载语音模型({{size}} MB)\",\"downloading\":\"正在下载… {{percent}}%\",\"downloadProgress\":\"{{done}} / {{total}} MB\",\"cancel\":\"取消下载\",\"installed\":\"已安装\",\"remove\":\"移除\",\"removeTitle\":\"移除语音模型?\",\"removeText\":\"这台电脑将不再转写语音消息。之后可以重新下载模型。\",\"removeConfirm\":\"移除模型\",\"saved\":\"语音消息设置已保存\",\"privacy\":\"选择“在这台电脑上”时,语音不会离开这台电脑;选择云端时,音频会发送到 OpenAI。转写文字会随聊天一起保存。\",\"errors\":{\"disk_space\":\"磁盘空间不足。请至少释放 800 MB 后重试。\",\"network\":\"下载失败。请检查网络连接后重试。\",\"verification\":\"下载的文件校验和不符,已删除。请重试。\",\"redirect\":\"下载被转到意外的地址,已停止。\",\"write\":\"无法在这台电脑上保存语音模型。\",\"unknown\":\"下载失败。请重试。\"}},\"contextPanel\":{\"hint\":\"AI 用来回答的文件和文本:公司简介、产品、价格、政策和常见问题。\",\"limits\":\"最多 20 项,每个文件不超过 10 MB\",\"search\":\"搜索业务背景\",\"searchPlaceholder\":\"按名称搜索\",\"select\":\"选择\",\"cancel\":\"取消\",\"deleteSelected_other\":\"删除 {{count}} 项\",\"add\":\"添加\",\"upload\":\"从设备上传\",\"addText\":\"添加文本内容\",\"name\":\"名称\",\"size\":\"大小\",\"details\":\"详情\",\"type\":\"类型\",\"kindFile\":\"文件\",\"kindText\":\"文本内容\",\"added\":\"添加于{{when}}\",\"meta\":\"{{size}} · {{added}}\",\"selectItem\":\"选择 {{name}}\",\"empty\":\"还没有业务背景:添加公司简介、产品清单、价格和常见问题。\",\"noMatches\":\"没有与“{{query}}”匹配的项目。\",\"limitReached\":\"删除一项后才能添加新的(最多 20 项)。\",\"textLabel\":\"文本内容\",\"characterCount\":\"{{count}} / {{max}} 个字符\",\"namePlaceholder\":\"例如:价目表\",\"textPlaceholder\":\"例如:\\nEzy 饼屋在新山销售蛋糕和面包。\\n每天上午 9 点至下午 6 点营业,公共假期休息。\\n10 公里内配送费 RM10。\\n\\n问:可以定制订单吗?\\n答:可以,需提前 3 天通知。\",\"addTextTitle\":\"添加文本内容\",\"save\":\"保存\",\"delete\":\"删除\",\"close\":\"关闭\",\"loading\":\"正在加载…\",\"loadError\":\"无法打开此项目。{{error}}\",\"preview\":\"提取的文本(只读)\",\"previewTruncated\":\"仅显示提取文本的开头部分。\",\"fileReadOnly\":\"文件无法编辑。请删除此文件并上传新版本。\",\"textAdded\":\"已添加文本内容。\",\"fileAdded\":\"已添加文件。\",\"changesSaved\":\"更改已保存。\",\"deleted_other\":\"已删除 {{count}} 项。\",\"confirmOne\":\"删除 {{name}}?\",\"confirmMany_other\":\"删除 {{count}} 项?\",\"confirmText\":\"AI 将立即停止使用它。此操作无法撤销。\",\"deleteFailed\":\"无法删除:{{names}}\",\"namesMore\":\"{{names}} 等另外 {{count}} 项\"},\"defaults\":{\"instructions\":\"角色\\n你是本商家的 WhatsApp 助手。你负责回答客户咨询和产品问题,并以专业的方式代表商家。\\n\\n范围\\n你可以协助:\\n- 产品:功能、规格、款式、库存情况和使用方法\\n- 一般咨询:营业时间、地点、下单方式、配送区域、付款方式和退货政策\\n- 下一步:如何下单、如何索取报价,或联系我们的团队\\n与本商家或其产品无关的话题(闲聊、新闻、编程、作业、观点、政治、宗教),你不提供帮助。请用一句话礼貌回复并引导回正题,例如:“抱歉,我只能回答有关我们产品和服务的问题。请问有什么可以帮您?”\\n\\n知识\\n- 产品名称、型号和价格必须与业务背景中的写法完全一致。\\n- 切勿猜测价格、库存、规格、配送日期、促销或政策。如果缺少信息,请说明并让我们的团队确认。\\n- 切勿承诺折扣、赠品或特殊处理。\\n\\n语言\\n- 使用客户的语言回复。如果客户混用多种语言,请使用其消息的主要语言回复。\\n- 如果无法使用客户的语言回复,请使用业务背景中指定的默认语言,否则使用英语。\\n\\n风格\\n- 专业、礼貌、友好;不用俚语。最多使用一个表情符号,且仅在合适时使用。\\n- 一到三句短句。仅在列出选项或规格时使用简短列表。\\n- 先回答问题:不要冗长的问候,也不要复述问题。\\n- 需要时最多问一个澄清问题(例如哪个型号、尺寸或区域)。\\n- 仅使用 WhatsApp 格式:用 *粗体* 标出关键信息,使用普通换行。不要使用标题、表格或未提供给你的链接。\",\"handoffRules\":\"- 客户不满或提出投诉\\n- 客户要求退款、退货、换货或保修索赔\\n- 客户询问现有订单、配送或付款\\n- 客户需要批量或定制订单,或索取报价\\n- 客户想议价或要求折扣\"},\"replaceKey\":\"替换密钥\",\"keepKey\":\"保留已保存的密钥\",\"modelAdvanced\":\"高级:选择模型\",\"edit\":{\"open\":\"用 AI 修改\",\"unavailable\":\"请先在上方连接 AI,才能使用“用 AI 修改”。\",\"title\":{\"instructions\":\"用 AI 修改 AI 指令\",\"handoffRules\":\"用 AI 修改转交规则\"},\"description\":\"描述要做的修改。应用前你会先审阅。\",\"requestLabel\":\"需要修改什么?\",\"placeholder\":{\"instructions\":\"例如:用更亲切、轻松的语气回复\",\"handoffRules\":\"例如:把退款请求转交给人工\"},\"suggest\":\"生成建议\",\"suggestAgain\":\"重新建议\",\"writing\":\"正在撰写建议…\",\"result\":{\"instructions\":\"建议的 AI 指令\",\"handoffRules\":\"建议的转交规则\"},\"removed\":\"删除:\",\"added\":\"新增:\",\"noChange\":\"没有建议任何修改——请换个方式描述。\",\"failed\":\"AI 无法给出修改建议,请重试。\",\"discard\":\"放弃\",\"apply\":{\"instructions\":\"应用到 AI 指令\",\"handoffRules\":\"应用到转交规则\"},\"applyNote\":\"应用只会填入文本框;请在页面上按“保存”才会保留。\",\"applied\":\"已应用。请按“保存”保留修改。\",\"unchanged_other\":\"{{count}} 行未更改\"},\"keyOk\":\"密钥有效。\",\"connectionReady\":\"AI 连接已就绪。\",\"setupAgent\":\"设置销售代理\",\"moreFeatures\":\"更多 AI 功能\",\"moreFeaturesHint\":\"语音消息和客户资料补全\",\"remoteSignInHint\":\"请在运行收件箱的电脑上的浏览器中登录;如在其他电脑上登录,请按提示粘贴最终地址。\",\"connect\":{\"title\":\"连接 AI\",\"chatgpt\":\"使用 ChatGPT 登录\",\"recommended\":\"推荐\",\"note\":\"使用您的 ChatGPT 账户。此连接为非官方连接,可能会停止工作;您可以随时改用 API 密钥。\",\"signingIn\":\"正在登录… 请在 ChatGPT 窗口中完成。\",\"cancel\":\"取消\",\"connectedChatgpt\":\"已连接 ChatGPT\",\"connectedAs\":\"已登录为 {{email}}\",\"connectedKey\":\"OpenAI API 密钥已检查并保存\",\"useKey\":\"改用 OpenAI API 密钥\",\"useChatgpt\":\"改用 ChatGPT 登录\",\"keyLabel\":\"OpenAI API 密钥\",\"keyHint\":\"以 sk- 开头。可在 platform.openai.com → API keys 创建。\",\"testKey\":\"测试密钥\",\"keyFailedFallback\":\"此密钥无效。请检查是否完整复制。\",\"keyInvalid\":\"OpenAI 不接受此密钥。请检查是否完整复制。\",\"keyUnreachable\":\"无法连接 OpenAI 检查密钥。请检查网络连接后重试。\",\"keyRateLimited\":\"OpenAI 繁忙或此密钥已达到用量限制。请稍等一分钟后重试。\",\"keyForbidden\":\"OpenAI 不允许此密钥列出模型。受限密钥或地区限制可能导致此情况;此密钥仍可能用于回复。\",\"saveAnyway\":\"仍然保存\"}}"), h = {
545
545
  title: "客户资料补全",
546
546
  description: "从新的私聊消息中自动保存明确的客户资料。",
547
547
  enable: "自动更新客户资料",
package/dist-lib/index.js CHANGED
@@ -608,7 +608,7 @@ var kr = {
608
608
  cancel: "Cancel changes"
609
609
  }
610
610
  },
611
- ai: /* @__PURE__ */ JSON.parse("{\"settingsTitle\":\"AI\",\"settingsDescription\":\"Connect ChatGPT or an OpenAI API key. One provider and model is shared by every AI member in this inbox.\",\"roleBadge\":\"AI · Sales Agent\",\"addMember\":\"Add AI member\",\"membersDescription\":\"Your team and AI assistant for customer chats.\",\"assistant\":\"AI assistant\",\"behavior\":\"Replies after 10 seconds in unassigned customer chats and takes ownership. Assign the chat to yourself to take over. The AI resolves a chat only after customer confirmation. When it needs help, it assigns an online human with no open chats, or returns the chat to unassigned.\",\"memberName\":\"AI member name\",\"roleDescription\":\"Role: Sales Agent — answers basic questions using your business knowledge.\",\"keySaved\":\"OpenAI API key is saved.\",\"keyMissing\":\"OpenAI API key is not configured.\",\"connectionMode\":\"Connection mode\",\"apiKey\":\"OpenAI API key\",\"keepKeyHint\":\"Enter the new key. Leave blank to keep the saved one.\",\"apiKeyHint\":\"Stored securely on the inbox server. API usage is billed separately from ChatGPT.\",\"enterKey\":\"Enter API key\",\"cancelLogin\":\"Cancel sign-in\",\"openLogin\":\"Open sign-in\",\"invalidLink\":\"The sign-in link is invalid. Cancel sign-in and try again.\",\"model\":\"Model (optional)\",\"apiModelHint\":\"Leave blank to use gpt-4.1-mini.\",\"instructions\":\"AI instructions\",\"instructionsHint\":\"Pre-filled with recommended instructions; edit them to match your tone, or keep them as they are.\",\"saveConnection\":\"Save AI connection\",\"connectionSaved\":\"Inbox AI connection saved.\",\"memberSaved\":\"AI member settings saved.\",\"checkSettings\":\"Check the AI settings.\",\"fileTypeError\":\"Choose a TXT, Markdown, PDF or DOCX document.\",\"fileSizeError\":\"Documents must be 10 MB or smaller.\",\"chatgptState\":\"ChatGPT: {{state}}\",\"modelInvalid\":\"ChatGPT mode supports {{models}}. Leave blank to use the default.\",\"modelSeparator\":\" or \",\"refreshError\":\"Cannot refresh AI connection status. {{error}}\",\"state\":{\"unavailable\":\"unavailable\",\"signed_out\":\"signed out\",\"signing_in\":\"signing in\",\"connected\":\"connected\",\"error\":\"error\",\"expired\":\"expired\"},\"signedInAs\":\"Signed in as {{email}}\",\"signedIn\":\"Signed in to ChatGPT\",\"signInSavesMode\":\"Signing in also saves ChatGPT as the connection mode.\",\"signOut\":\"Sign out\",\"signInWithChatgpt\":\"Sign in with ChatGPT\",\"testConnection\":\"Test connection\",\"testOk\":\"{{model}} replied: {{reply}}\",\"testFailed\":\"Test failed: {{error}}\",\"chatgptModel\":\"Model\",\"modelAuto\":\"Auto (recommended)\",\"modelsLive\":\"Models available to your ChatGPT account.\",\"modelsFallback\":\"Default model list. Sign in to load your account's models.\",\"modeApi\":\"API key\",\"modeChatgpt\":\"ChatGPT\",\"pasteLabel\":\"Signing in on another computer?\",\"pasteHint\":\"After you approve, your browser opens a page that may not load. Copy the full address from the address bar and paste it here.\",\"pastePlaceholder\":\"http://localhost:1455/auth/callback?code=…\",\"pasteSubmit\":\"Finish sign-in\",\"saveBeforeTest\":\"Save the connection before testing it.\",\"bannerExpiredTitle\":\"ChatGPT sign-in expired\",\"bannerErrorTitle\":\"ChatGPT connection stopped working\",\"bannerFallback\":\"The AI connection is not working.\",\"bannerChatsReleased\":\"The AI member is not answering. Chats stay unassigned for your team until the connection works again.\",\"bannerExpiredText\":\"ChatGPT sign-in expired. Sign in again.\",\"popupBlocked\":\"The sign-in page was blocked from opening. Use Open sign-in.\",\"page\":{\"defaultTitle\":\"AI Sales Agent\",\"breadcrumb\":\"Breadcrumb\",\"pill\":{\"off\":\"Off\",\"on\":\"On\",\"needsConnection\":\"Needs connection\",\"needsKnowledge\":\"Needs business context\"},\"turnOn\":\"Turn on\",\"turnOff\":\"Turn off\",\"reasonConnection\":\"Connect the AI below first.\",\"reasonKnowledge\":\"Add business context first.\",\"turnedOn\":\"AI member turned on.\",\"turnedOff\":\"AI member turned off.\",\"draftSaved\":\"Saved the AI member as a draft so business context can be added.\",\"stepName\":\"Name & role\",\"stepInstructions\":\"AI instructions\",\"stepContext\":\"Business context\",\"stepHandoff\":\"Hand-off rules\",\"stepTry\":\"Try it\",\"instructionsPlaceholder\":\"Example: Reply briefly and politely. Answer questions about prices, delivery and opening hours. Hand over to a human for complaints or refunds.\",\"useDefaultInstructions\":\"Use default instructions\",\"handoffLabel\":\"Hand-off rules\",\"handoffHint\":\"When should the AI pass a chat to your team? One rule per line. Leave empty for no extra rules.\",\"handoffPlaceholder\":\"Example:\\n- The customer asks for a refund\\n- The customer wants a quotation\",\"handoffSystem\":\"Always handed over, whatever you write here: the customer asks for a person, a request the AI cannot carry out (orders, bookings, payments), an answer that is not in your business context, and legal, medical or personal-data matters.\",\"useDefaultHandoff\":\"Use default rules\",\"howItWorks\":\"How it works\",\"connectionLine\":\"Connection: {{state}}\",\"openSettings\":\"Settings → AI\",\"save\":\"Save\",\"description\":\"Set up, test and turn on the AI assistant that answers customer chats.\",\"usingRecommended\":\"Using the recommended instructions. Edit them to match your tone.\",\"advanced\":\"Advanced: instructions and hand-off rules\",\"advancedRecommended\":\"Using recommended settings\",\"advancedCustomised\":\"Customised\"},\"try\":{\"label\":\"Customer question\",\"placeholder\":\"Example: How much is delivery?\",\"enterHint\":\"Press Enter to ask, Shift+Enter for a new line.\",\"ask\":\"Ask\",\"hint\":\"Answers with your saved business context and the name and instructions on this page, including unsaved changes. Nothing is sent to customers.\",\"decision\":{\"answer\":\"Answer\",\"ask_resolution\":\"Asked if resolved\",\"resolve\":\"Would resolve\",\"handoff\":\"Would hand off\"},\"handoffReason\":\"Reason: {{reason}}\",\"lookups\":\"What the AI looked up\",\"lookedUp\":\"AI looked up {{title}} · {{source}}\",\"lookupFailed\":\"Could not look up {{title}} · {{source}}\",\"noKnowledge\":\"No matching business knowledge was found, so the AI would hand this chat to a human without calling the model.\",\"model\":\"Model: {{model}}\",\"failed\":\"Could not answer: {{error}}\"},\"voice\":{\"title\":\"Voice messages\",\"description\":\"Customer voice notes are turned into text so the AI and your team can read them.\",\"engine\":\"Transcription\",\"off\":\"Off\",\"offHint\":\"Voice notes stay audio only. The AI asks customers to type their question.\",\"local\":\"On this PC\",\"localHint\":\"Audio stays on this computer.\",\"localNeedsModel\":\"Download the voice model below first.\",\"cloud\":\"Cloud (OpenAI)\",\"cloudHint\":\"Audio is sent to OpenAI to be transcribed.\",\"cloudNeedsKey\":\"Needs a saved OpenAI API key in the AI connection above.\",\"modelTitle\":\"Voice model for this PC\",\"notInstalled\":\"Not installed. A one-time download; transcription then runs on this computer.\",\"download\":\"Download voice model ({{size}} MB)\",\"downloading\":\"Downloading… {{percent}}%\",\"downloadProgress\":\"{{done}} of {{total}} MB\",\"cancel\":\"Cancel download\",\"installed\":\"Installed\",\"remove\":\"Remove\",\"removeTitle\":\"Remove the voice model?\",\"removeText\":\"Voice notes will no longer be transcribed on this PC. You can download the model again later.\",\"removeConfirm\":\"Remove model\",\"saved\":\"Voice messages setting saved\",\"privacy\":\"On this PC, voice notes never leave this computer. With Cloud, the audio is sent to OpenAI. Transcripts are stored with the chat.\",\"errors\":{\"disk_space\":\"Not enough free disk space. Free up at least 800 MB and try again.\",\"network\":\"The download failed. Check the internet connection and try again.\",\"verification\":\"The downloaded file did not match its expected checksum and was deleted. Try again.\",\"redirect\":\"The download was sent to an unexpected address and was stopped.\",\"write\":\"The voice model could not be saved on this computer.\",\"unknown\":\"The download failed. Try again.\"}},\"contextPanel\":{\"hint\":\"Files and text the AI answers from: company brief, products, prices, policies and FAQs.\",\"limits\":\"Up to 20 items, 10 MB per file\",\"search\":\"Search business context\",\"searchPlaceholder\":\"Search by name\",\"select\":\"Select\",\"cancel\":\"Cancel\",\"deleteSelected_one\":\"Delete {{count}}\",\"deleteSelected_other\":\"Delete {{count}}\",\"add\":\"Add\",\"upload\":\"Upload from device\",\"addText\":\"Add text content\",\"name\":\"Name\",\"size\":\"Size\",\"details\":\"Details\",\"type\":\"Type\",\"kindFile\":\"File\",\"kindText\":\"Text content\",\"added\":\"Added {{when}}\",\"meta\":\"{{size}} · {{added}}\",\"selectItem\":\"Select {{name}}\",\"empty\":\"No context yet: add your company brief, product list, prices and FAQs.\",\"noMatches\":\"No items match “{{query}}”.\",\"limitReached\":\"Delete an item to add another (up to 20).\",\"textLabel\":\"Text content\",\"characterCount\":\"{{count}} / {{max}} characters\",\"namePlaceholder\":\"Example: Price list\",\"textPlaceholder\":\"Example:\\nKedai Ezy sells cakes and bread in Johor Bahru.\\nOpen daily 9am–6pm, closed on public holidays.\\nDelivery within 10 km costs RM10.\\n\\nQ: Do you take custom orders?\\nA: Yes, with 3 days’ notice.\",\"addTextTitle\":\"Add text content\",\"save\":\"Save\",\"delete\":\"Delete\",\"close\":\"Close\",\"loading\":\"Loading…\",\"loadError\":\"Cannot open this item. {{error}}\",\"preview\":\"Extracted text (read only)\",\"previewTruncated\":\"Showing the start of the extracted text.\",\"fileReadOnly\":\"Files cannot be edited. Delete this file and upload a new version instead.\",\"textAdded\":\"Text content added.\",\"fileAdded\":\"File added.\",\"changesSaved\":\"Changes saved.\",\"deleted_one\":\"Deleted {{count}} item.\",\"deleted_other\":\"Deleted {{count}} items.\",\"confirmOne\":\"Delete {{name}}?\",\"confirmMany_one\":\"Delete {{count}} item?\",\"confirmMany_other\":\"Delete {{count}} items?\",\"confirmText\":\"The AI stops using it right away. This cannot be undone.\",\"deleteFailed\":\"Could not delete: {{names}}\",\"namesMore\":\"{{names}} +{{count}} more\"},\"defaults\":{\"instructions\":\"ROLE\\nYou are this business's WhatsApp assistant. You answer customer enquiries and product questions and represent the business professionally.\\n\\nSCOPE\\nYou help with:\\n- Products: features, specifications, variants, availability and usage\\n- General enquiries: business hours, location, how to order, delivery areas, payment methods and return policy\\n- The right next step: how to order, how to request a quotation, or reaching our team\\nYou do not help with topics unrelated to the business or its products (general chat, news, coding, homework, opinions, politics, religion). Reply politely in one line and steer back, for example: \\\"Sorry, I can only help with questions about our products and services. How can I help you with those?\\\"\\n\\nKNOWLEDGE\\n- Keep product names, model numbers and prices exactly as written in the business context.\\n- Never guess prices, stock, specifications, delivery dates, promotions or policies. If a detail is missing, say so and let our team confirm.\\n- Never promise discounts, free gifts or exceptions.\\n\\nLANGUAGE\\n- Reply in the customer's language. If they mix languages, reply in the main language of their message.\\n- If you cannot reply in their language, use the default language named in the business context, otherwise English.\\n\\nSTYLE\\n- Professional, polite and friendly; no slang. At most one emoji, and only where it fits.\\n- One to three short sentences. Use a short list only for options or specifications.\\n- Answer first: no long greetings and no repeating the question back.\\n- Ask at most one clarifying question when needed (for example which model, size or area).\\n- WhatsApp formatting only: *bold* for key details and plain line breaks. No headings, tables or links you were not given.\",\"handoffRules\":\"- The customer is upset or makes a complaint\\n- The customer asks for a refund, return, exchange or warranty claim\\n- The customer asks about an existing order, delivery or payment\\n- The customer wants a bulk or custom order, or a quotation\\n- The customer wants to negotiate the price or asks for a discount\"},\"replaceKey\":\"Replace key\",\"keepKey\":\"Keep saved key\",\"modelAdvanced\":\"Advanced: choose a model\",\"edit\":{\"open\":\"Edit with AI\",\"unavailable\":\"Connect the AI above to use Edit with AI.\",\"title\":{\"instructions\":\"Edit AI instructions with AI\",\"handoffRules\":\"Edit hand-off rules with AI\"},\"description\":\"Describe the change. You review it before anything is applied.\",\"requestLabel\":\"What should change?\",\"placeholder\":{\"instructions\":\"e.g. Reply in a warmer, more casual tone\",\"handoffRules\":\"e.g. Hand refund requests to a person\"},\"suggest\":\"Suggest\",\"suggestAgain\":\"Suggest again\",\"writing\":\"Writing a suggestion…\",\"result\":{\"instructions\":\"Suggested AI instructions\",\"handoffRules\":\"Suggested hand-off rules\"},\"removed\":\"Removed:\",\"added\":\"Added:\",\"noChange\":\"No change suggested — try describing it differently.\",\"failed\":\"The AI could not suggest a change. Try again.\",\"discard\":\"Discard\",\"apply\":{\"instructions\":\"Apply to AI instructions\",\"handoffRules\":\"Apply to hand-off rules\"},\"applyNote\":\"Applying fills the box; press Save on the page to keep it.\",\"applied\":\"Applied. Press Save to keep it.\",\"unchanged_one\":\"{{count}} unchanged line\",\"unchanged_other\":\"{{count}} unchanged lines\"},\"keyOk\":\"Key works.\",\"connectionReady\":\"The AI connection is ready.\",\"setupAgent\":\"Set up the Sales Agent\",\"moreFeatures\":\"More AI features\",\"moreFeaturesHint\":\"Voice messages and Customer enrichment\",\"remoteSignInHint\":\"Sign in from a browser on the computer running the inbox; from another computer, paste the final address when asked.\",\"connect\":{\"title\":\"Connect the AI\",\"chatgpt\":\"Sign in with ChatGPT\",\"recommended\":\"Recommended\",\"note\":\"Uses your ChatGPT account. This connection is unofficial and could stop working; you can switch to an API key at any time.\",\"signingIn\":\"Signing in… finish in the ChatGPT window.\",\"cancel\":\"Cancel\",\"connectedChatgpt\":\"Connected to ChatGPT\",\"connectedAs\":\"Signed in as {{email}}\",\"connectedKey\":\"OpenAI API key checked and saved\",\"useKey\":\"Use an OpenAI API key instead\",\"useChatgpt\":\"Use Sign in with ChatGPT instead\",\"keyLabel\":\"OpenAI API key\",\"keyHint\":\"Starts with sk-. Create one at platform.openai.com → API keys.\",\"testKey\":\"Test key\",\"keyFailedFallback\":\"This key did not work. Check that you copied all of it.\",\"keyInvalid\":\"OpenAI did not accept this key. Check that you copied all of it.\",\"keyUnreachable\":\"Could not reach OpenAI to check the key. Check the internet connection and try again.\",\"keyRateLimited\":\"OpenAI is busy or this key has reached its limit. Wait a minute and try again.\",\"keyForbidden\":\"OpenAI did not let this key list models. A restricted key or a region limit can cause this; the key may still work for replies.\",\"saveAnyway\":\"Save anyway\"}}"),
611
+ ai: /* @__PURE__ */ JSON.parse("{\"settingsTitle\":\"AI\",\"settingsDescription\":\"Connect ChatGPT or an OpenAI API key. One provider and model is shared by every AI member in this inbox.\",\"roleBadge\":\"AI · Sales Agent\",\"addMember\":\"Add AI member\",\"membersDescription\":\"Your team and AI assistant for customer chats.\",\"assistant\":\"AI assistant\",\"behavior\":\"Replies after 10 seconds in unassigned customer chats and takes ownership. Assign the chat to yourself to take over. The AI resolves a chat only after customer confirmation. When it needs help, it assigns an online human with no open chats, or returns the chat to unassigned.\",\"memberName\":\"AI member name\",\"roleDescription\":\"Role: Sales Agent — answers basic questions using your business knowledge.\",\"keySaved\":\"OpenAI API key is saved.\",\"keyMissing\":\"OpenAI API key is not configured.\",\"connectionMode\":\"Connection mode\",\"apiKey\":\"OpenAI API key\",\"keepKeyHint\":\"Enter the new key. Leave blank to keep the saved one.\",\"apiKeyHint\":\"Stored securely on the inbox server. API usage is billed separately from ChatGPT.\",\"enterKey\":\"Enter API key\",\"cancelLogin\":\"Cancel sign-in\",\"openLogin\":\"Open sign-in\",\"invalidLink\":\"The sign-in link is invalid. Cancel sign-in and try again.\",\"model\":\"Model (optional)\",\"apiModelHint\":\"Leave blank to use gpt-4.1-mini.\",\"instructions\":\"AI instructions\",\"instructionsHint\":\"Pre-filled with recommended instructions; edit them to match your tone, or keep them as they are.\",\"saveConnection\":\"Save AI connection\",\"connectionSaved\":\"Inbox AI connection saved.\",\"memberSaved\":\"AI member settings saved.\",\"checkSettings\":\"Check the AI settings.\",\"fileTypeError\":\"Choose a TXT, Markdown, PDF or DOCX document.\",\"fileSizeError\":\"Documents must be 10 MB or smaller.\",\"chatgptState\":\"ChatGPT: {{state}}\",\"modelInvalid\":\"ChatGPT mode supports {{models}}. Leave blank to use the default.\",\"modelSeparator\":\" or \",\"refreshError\":\"Cannot refresh AI connection status. {{error}}\",\"state\":{\"unavailable\":\"unavailable\",\"signed_out\":\"signed out\",\"signing_in\":\"signing in\",\"connected\":\"connected\",\"error\":\"error\",\"expired\":\"expired\"},\"signedInAs\":\"Signed in as {{email}}\",\"signedIn\":\"Signed in to ChatGPT\",\"signInSavesMode\":\"Signing in also saves ChatGPT as the connection mode.\",\"signOut\":\"Sign out\",\"signInWithChatgpt\":\"Sign in with ChatGPT\",\"testConnection\":\"Test connection\",\"testOk\":\"{{model}} replied: {{reply}}\",\"testFailed\":\"Test failed: {{error}}\",\"chatgptModel\":\"Model\",\"modelAuto\":\"Auto (recommended)\",\"modelsLive\":\"Models available to your ChatGPT account.\",\"modelsFallback\":\"Default model list. Sign in to load your account's models.\",\"modeApi\":\"API key\",\"modeChatgpt\":\"ChatGPT\",\"pasteLabel\":\"Signing in on another computer?\",\"pasteHint\":\"After you approve, your browser opens a page that may not load. Copy the full address from the address bar and paste it here.\",\"pastePlaceholder\":\"http://localhost:1455/auth/callback?code=…\",\"pasteSubmit\":\"Finish sign-in\",\"saveBeforeTest\":\"Save the connection before testing it.\",\"bannerExpiredTitle\":\"ChatGPT sign-in expired\",\"bannerErrorTitle\":\"ChatGPT connection stopped working\",\"bannerFallback\":\"The AI connection is not working.\",\"bannerChatsReleased\":\"The AI member is not answering. Chats stay unassigned for your team until the connection works again.\",\"bannerExpiredText\":\"ChatGPT sign-in expired. Sign in again.\",\"popupBlocked\":\"The sign-in page was blocked from opening. Use Open sign-in.\",\"page\":{\"defaultTitle\":\"AI Sales Agent\",\"breadcrumb\":\"Breadcrumb\",\"pill\":{\"off\":\"Off\",\"on\":\"On\",\"needsConnection\":\"Needs connection\",\"needsKnowledge\":\"Needs business context\"},\"turnOn\":\"Turn on\",\"turnOff\":\"Turn off\",\"reasonConnection\":\"Connect the AI below first.\",\"reasonKnowledge\":\"Add business context first.\",\"turnedOn\":\"AI member turned on.\",\"turnedOff\":\"AI member turned off.\",\"draftSaved\":\"Saved the AI member as a draft so business context can be added.\",\"stepName\":\"Name & role\",\"stepInstructions\":\"AI instructions\",\"stepContext\":\"Business context\",\"stepHandoff\":\"Hand-off rules\",\"stepTry\":\"Try it\",\"instructionsPlaceholder\":\"Example: Reply briefly and politely. Answer questions about prices, delivery and opening hours. Hand over to a human for complaints or refunds.\",\"useDefaultInstructions\":\"Use default instructions\",\"handoffLabel\":\"Hand-off rules\",\"handoffHint\":\"When should the AI pass a chat to your team? One rule per line. Leave empty for no extra rules.\",\"handoffPlaceholder\":\"Example:\\n- The customer asks for a refund\\n- The customer wants a quotation\",\"handoffSystem\":\"Always handed over, whatever you write here: the customer asks for a person, a request the AI cannot carry out (orders, bookings, payments), an answer that is not in your business context, and legal, medical or personal-data matters.\",\"useDefaultHandoff\":\"Use default rules\",\"howItWorks\":\"How it works\",\"connectionLine\":\"Connection: {{state}}\",\"openSettings\":\"Settings → AI\",\"save\":\"Save\",\"description\":\"Set up, test and turn on the AI assistant that answers customer chats.\",\"usingRecommended\":\"Using the recommended instructions. Edit them to match your tone.\",\"advanced\":\"Advanced: instructions and hand-off rules\",\"advancedRecommended\":\"Using recommended settings\",\"advancedCustomised\":\"Customised\"},\"try\":{\"label\":\"Customer question\",\"placeholder\":\"Example: How much is delivery?\",\"enterHint\":\"Press Enter to ask, Shift+Enter for a new line.\",\"ask\":\"Ask\",\"hint\":\"Answers with your saved business context and the name and instructions on this page, including unsaved changes. Nothing is sent to customers.\",\"decision\":{\"answer\":\"Answer\",\"ask_resolution\":\"Asked if resolved\",\"resolve\":\"Would resolve\",\"handoff\":\"Would hand off\",\"no_reply\":\"Would not reply\"},\"handoffReason\":\"Reason: {{reason}}\",\"lookups\":\"What the AI looked up\",\"lookedUp\":\"AI looked up {{title}} · {{source}}\",\"lookupFailed\":\"Could not look up {{title}} · {{source}}\",\"noReply\":\"The AI would send nothing and keep the chat.\",\"noKnowledge\":\"No matching business knowledge was found, so the AI would hand this chat to a human without calling the model.\",\"model\":\"Model: {{model}}\",\"failed\":\"Could not answer: {{error}}\"},\"voice\":{\"title\":\"Voice messages\",\"description\":\"Customer voice notes are turned into text so the AI and your team can read them.\",\"engine\":\"Transcription\",\"off\":\"Off\",\"offHint\":\"Voice notes stay audio only. The AI asks customers to type their question.\",\"local\":\"On this PC\",\"localHint\":\"Audio stays on this computer.\",\"localNeedsModel\":\"Download the voice model below first.\",\"cloud\":\"Cloud (OpenAI)\",\"cloudHint\":\"Audio is sent to OpenAI to be transcribed.\",\"cloudNeedsKey\":\"Needs a saved OpenAI API key in the AI connection above.\",\"modelTitle\":\"Voice model for this PC\",\"notInstalled\":\"Not installed. A one-time download; transcription then runs on this computer.\",\"download\":\"Download voice model ({{size}} MB)\",\"downloading\":\"Downloading… {{percent}}%\",\"downloadProgress\":\"{{done}} of {{total}} MB\",\"cancel\":\"Cancel download\",\"installed\":\"Installed\",\"remove\":\"Remove\",\"removeTitle\":\"Remove the voice model?\",\"removeText\":\"Voice notes will no longer be transcribed on this PC. You can download the model again later.\",\"removeConfirm\":\"Remove model\",\"saved\":\"Voice messages setting saved\",\"privacy\":\"On this PC, voice notes never leave this computer. With Cloud, the audio is sent to OpenAI. Transcripts are stored with the chat.\",\"errors\":{\"disk_space\":\"Not enough free disk space. Free up at least 800 MB and try again.\",\"network\":\"The download failed. Check the internet connection and try again.\",\"verification\":\"The downloaded file did not match its expected checksum and was deleted. Try again.\",\"redirect\":\"The download was sent to an unexpected address and was stopped.\",\"write\":\"The voice model could not be saved on this computer.\",\"unknown\":\"The download failed. Try again.\"}},\"contextPanel\":{\"hint\":\"Files and text the AI answers from: company brief, products, prices, policies and FAQs.\",\"limits\":\"Up to 20 items, 10 MB per file\",\"search\":\"Search business context\",\"searchPlaceholder\":\"Search by name\",\"select\":\"Select\",\"cancel\":\"Cancel\",\"deleteSelected_one\":\"Delete {{count}}\",\"deleteSelected_other\":\"Delete {{count}}\",\"add\":\"Add\",\"upload\":\"Upload from device\",\"addText\":\"Add text content\",\"name\":\"Name\",\"size\":\"Size\",\"details\":\"Details\",\"type\":\"Type\",\"kindFile\":\"File\",\"kindText\":\"Text content\",\"added\":\"Added {{when}}\",\"meta\":\"{{size}} · {{added}}\",\"selectItem\":\"Select {{name}}\",\"empty\":\"No context yet: add your company brief, product list, prices and FAQs.\",\"noMatches\":\"No items match “{{query}}”.\",\"limitReached\":\"Delete an item to add another (up to 20).\",\"textLabel\":\"Text content\",\"characterCount\":\"{{count}} / {{max}} characters\",\"namePlaceholder\":\"Example: Price list\",\"textPlaceholder\":\"Example:\\nKedai Ezy sells cakes and bread in Johor Bahru.\\nOpen daily 9am–6pm, closed on public holidays.\\nDelivery within 10 km costs RM10.\\n\\nQ: Do you take custom orders?\\nA: Yes, with 3 days’ notice.\",\"addTextTitle\":\"Add text content\",\"save\":\"Save\",\"delete\":\"Delete\",\"close\":\"Close\",\"loading\":\"Loading…\",\"loadError\":\"Cannot open this item. {{error}}\",\"preview\":\"Extracted text (read only)\",\"previewTruncated\":\"Showing the start of the extracted text.\",\"fileReadOnly\":\"Files cannot be edited. Delete this file and upload a new version instead.\",\"textAdded\":\"Text content added.\",\"fileAdded\":\"File added.\",\"changesSaved\":\"Changes saved.\",\"deleted_one\":\"Deleted {{count}} item.\",\"deleted_other\":\"Deleted {{count}} items.\",\"confirmOne\":\"Delete {{name}}?\",\"confirmMany_one\":\"Delete {{count}} item?\",\"confirmMany_other\":\"Delete {{count}} items?\",\"confirmText\":\"The AI stops using it right away. This cannot be undone.\",\"deleteFailed\":\"Could not delete: {{names}}\",\"namesMore\":\"{{names}} +{{count}} more\"},\"defaults\":{\"instructions\":\"ROLE\\nYou are this business's WhatsApp assistant. You answer customer enquiries and product questions and represent the business professionally.\\n\\nSCOPE\\nYou help with:\\n- Products: features, specifications, variants, availability and usage\\n- General enquiries: business hours, location, how to order, delivery areas, payment methods and return policy\\n- The right next step: how to order, how to request a quotation, or reaching our team\\nYou do not help with topics unrelated to the business or its products (general chat, news, coding, homework, opinions, politics, religion). Reply politely in one line and steer back, for example: \\\"Sorry, I can only help with questions about our products and services. How can I help you with those?\\\"\\n\\nKNOWLEDGE\\n- Keep product names, model numbers and prices exactly as written in the business context.\\n- Never guess prices, stock, specifications, delivery dates, promotions or policies. If a detail is missing, say so and let our team confirm.\\n- Never promise discounts, free gifts or exceptions.\\n\\nLANGUAGE\\n- Reply in the customer's language. If they mix languages, reply in the main language of their message.\\n- If you cannot reply in their language, use the default language named in the business context, otherwise English.\\n\\nSTYLE\\n- Professional, polite and friendly; no slang. At most one emoji, and only where it fits.\\n- One to three short sentences. Use a short list only for options or specifications.\\n- Answer first: no long greetings and no repeating the question back.\\n- Ask at most one clarifying question when needed (for example which model, size or area).\\n- WhatsApp formatting only: *bold* for key details and plain line breaks. No headings, tables or links you were not given.\",\"handoffRules\":\"- The customer is upset or makes a complaint\\n- The customer asks for a refund, return, exchange or warranty claim\\n- The customer asks about an existing order, delivery or payment\\n- The customer wants a bulk or custom order, or a quotation\\n- The customer wants to negotiate the price or asks for a discount\"},\"replaceKey\":\"Replace key\",\"keepKey\":\"Keep saved key\",\"modelAdvanced\":\"Advanced: choose a model\",\"edit\":{\"open\":\"Edit with AI\",\"unavailable\":\"Connect the AI above to use Edit with AI.\",\"title\":{\"instructions\":\"Edit AI instructions with AI\",\"handoffRules\":\"Edit hand-off rules with AI\"},\"description\":\"Describe the change. You review it before anything is applied.\",\"requestLabel\":\"What should change?\",\"placeholder\":{\"instructions\":\"e.g. Reply in a warmer, more casual tone\",\"handoffRules\":\"e.g. Hand refund requests to a person\"},\"suggest\":\"Suggest\",\"suggestAgain\":\"Suggest again\",\"writing\":\"Writing a suggestion…\",\"result\":{\"instructions\":\"Suggested AI instructions\",\"handoffRules\":\"Suggested hand-off rules\"},\"removed\":\"Removed:\",\"added\":\"Added:\",\"noChange\":\"No change suggested — try describing it differently.\",\"failed\":\"The AI could not suggest a change. Try again.\",\"discard\":\"Discard\",\"apply\":{\"instructions\":\"Apply to AI instructions\",\"handoffRules\":\"Apply to hand-off rules\"},\"applyNote\":\"Applying fills the box; press Save on the page to keep it.\",\"applied\":\"Applied. Press Save to keep it.\",\"unchanged_one\":\"{{count}} unchanged line\",\"unchanged_other\":\"{{count}} unchanged lines\"},\"keyOk\":\"Key works.\",\"connectionReady\":\"The AI connection is ready.\",\"setupAgent\":\"Set up the Sales Agent\",\"moreFeatures\":\"More AI features\",\"moreFeaturesHint\":\"Voice messages and Customer enrichment\",\"remoteSignInHint\":\"Sign in from a browser on the computer running the inbox; from another computer, paste the final address when asked.\",\"connect\":{\"title\":\"Connect the AI\",\"chatgpt\":\"Sign in with ChatGPT\",\"recommended\":\"Recommended\",\"note\":\"Uses your ChatGPT account. This connection is unofficial and could stop working; you can switch to an API key at any time.\",\"signingIn\":\"Signing in… finish in the ChatGPT window.\",\"cancel\":\"Cancel\",\"connectedChatgpt\":\"Connected to ChatGPT\",\"connectedAs\":\"Signed in as {{email}}\",\"connectedKey\":\"OpenAI API key checked and saved\",\"useKey\":\"Use an OpenAI API key instead\",\"useChatgpt\":\"Use Sign in with ChatGPT instead\",\"keyLabel\":\"OpenAI API key\",\"keyHint\":\"Starts with sk-. Create one at platform.openai.com → API keys.\",\"testKey\":\"Test key\",\"keyFailedFallback\":\"This key did not work. Check that you copied all of it.\",\"keyInvalid\":\"OpenAI did not accept this key. Check that you copied all of it.\",\"keyUnreachable\":\"Could not reach OpenAI to check the key. Check the internet connection and try again.\",\"keyRateLimited\":\"OpenAI is busy or this key has reached its limit. Wait a minute and try again.\",\"keyForbidden\":\"OpenAI did not let this key list models. A restricted key or a region limit can cause this; the key may still work for replies.\",\"saveAnyway\":\"Save anyway\"}}"),
612
612
  enrichment: {
613
613
  title: "Customer enrichment",
614
614
  description: "Automatically save clear customer details from new direct-chat messages.",
@@ -1477,13 +1477,13 @@ var kr = {
1477
1477
  admin: kr,
1478
1478
  errors: Nr
1479
1479
  }, Lr = /* #__PURE__ */ Object.assign({
1480
- "./locales/ms/admin.json": () => import("./chunks/admin-B_hIZ1Sp.js"),
1480
+ "./locales/ms/admin.json": () => import("./chunks/admin-BTe2zd0P.js"),
1481
1481
  "./locales/ms/app.json": () => import("./chunks/app-C2A7ZZsu.js"),
1482
1482
  "./locales/ms/auth.json": () => import("./chunks/auth-Cif_yktU.js"),
1483
1483
  "./locales/ms/common.json": () => import("./chunks/common-BwLWsyiW.js"),
1484
1484
  "./locales/ms/errors.json": () => import("./chunks/errors-BIyy5VTn.js"),
1485
1485
  "./locales/ms/inbox.json": () => import("./chunks/inbox-VvClcCZP.js"),
1486
- "./locales/zh-CN/admin.json": () => import("./chunks/admin-BPgvUcQO.js"),
1486
+ "./locales/zh-CN/admin.json": () => import("./chunks/admin-Bl5gGkqf.js"),
1487
1487
  "./locales/zh-CN/app.json": () => import("./chunks/app-RX8Fy2Oz.js"),
1488
1488
  "./locales/zh-CN/auth.json": () => import("./chunks/auth-DJBQd10l.js"),
1489
1489
  "./locales/zh-CN/common.json": () => import("./chunks/common-CDytP7HK.js"),
@@ -5985,7 +5985,8 @@ function kl({ draft: e }) {
5985
5985
  answer: t("ai.try.decision.answer"),
5986
5986
  ask_resolution: t("ai.try.decision.ask_resolution"),
5987
5987
  resolve: t("ai.try.decision.resolve"),
5988
- handoff: t("ai.try.decision.handoff")
5988
+ handoff: t("ai.try.decision.handoff"),
5989
+ no_reply: t("ai.try.decision.no_reply")
5989
5990
  }, o = () => {
5990
5991
  let i = r.trim();
5991
5992
  i && n.mutate({
@@ -6058,7 +6059,10 @@ function kl({ draft: e }) {
6058
6059
  })
6059
6060
  }, n))
6060
6061
  }) : null,
6061
- /* @__PURE__ */ L("p", {
6062
+ n.data.action === "no_reply" ? /* @__PURE__ */ L("p", {
6063
+ className: "text-muted-foreground",
6064
+ children: t("ai.try.noReply")
6065
+ }) : /* @__PURE__ */ L("p", {
6062
6066
  className: "break-words whitespace-pre-wrap",
6063
6067
  children: n.data.reply
6064
6068
  }),
@@ -68,7 +68,7 @@ export declare function useAiTest(): import("@tanstack/react-query").UseMutation
68
68
  export declare function useAiTry(): import("@tanstack/react-query").UseMutationResult<{
69
69
  ok: boolean;
70
70
  reply: string | null;
71
- action: "answer" | "ask_resolution" | "resolve" | "handoff" | null;
71
+ action: "answer" | "ask_resolution" | "resolve" | "handoff" | "no_reply" | null;
72
72
  model: string | null;
73
73
  error: string | null;
74
74
  handoffReason?: "asked_for_human" | "missing_facts" | "sensitive" | "needs_action" | "business_rule" | "unsupported_message" | "ai_unavailable" | "lookup_failed" | null | undefined;
@@ -1469,11 +1469,13 @@ export declare const enResources: {
1469
1469
  ask_resolution: string;
1470
1470
  resolve: string;
1471
1471
  handoff: string;
1472
+ no_reply: string;
1472
1473
  };
1473
1474
  handoffReason: string;
1474
1475
  lookups: string;
1475
1476
  lookedUp: string;
1476
1477
  lookupFailed: string;
1478
+ noReply: string;
1477
1479
  noKnowledge: string;
1478
1480
  model: string;
1479
1481
  failed: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ezychat/web",
3
- "version": "0.1.40",
3
+ "version": "0.1.41",
4
4
  "type": "module",
5
5
  "description": "EzyChat core: the team inbox web app (React) as a library, with createInboxApp and its extension API.",
6
6
  "license": "MIT",
@@ -40,7 +40,7 @@
40
40
  "build:lib": "node ../../scripts/build-web-lib.mjs"
41
41
  },
42
42
  "dependencies": {
43
- "@ezychat/shared": "0.1.40",
43
+ "@ezychat/shared": "0.1.41",
44
44
  "@fontsource-variable/inter": "^5.3.0",
45
45
  "@tanstack/react-query": "^5.104.4",
46
46
  "@types/react": "^19.3.0",