Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · SecurityService

    Surel pemilik baru ketika suatu lead tunggal dipindahkan

    Mirror jalur besar untuk lead- view Kartu Penugasan. Ketika PUT / lead / {id} moves a lead to a different member, that member now gets the same LEDS _ ASSIGNED email (menghitung 1) arus besar mengirimkan. Usaha terbaik - pengiriman berjalan setelah Pemutakhiran dilakukan dan tidak pernah gagal itu. Kebakaran hanya pada penugasan nyata: melewati no- op menyimpan di mana assignee adalah tidak berubah (jadi informasi kontak penyuntingan tidak mengirim apa-apa), dan melewati tugas-sendiri - seorang petugas mengklaim memimpin dengan menugaskan untuk diri mereka sendiri tidak memiliki alasan untuk email sendiri. Respon membawa assignneeNotified sehingga UI dapat mengkonfirmasi yang baru pemilik email. Sebelumnya memimpin update sekarang diambil sekali dan digunakan kembali untuk kedua writz dan previous- assignee menangkap, bukan hanya di dalam non-dewa escorz cabang.

  2. · SecurityService

    Relay conditional- LPA penulis

    Relay POST * * * * * * * * * * * * * melalui org- stamping menulis helper, jadi penulis pelayan penyesuaian kondisional hanya untuk penyewa mereka sendiri.

  3. · kamo-internal

    Bulk- menugaskan kembali anggota tim yang dipilih

    Grid sudah memiliki multi- pilih checkbox tetapi tidak ada hubungannya dengan seleksi. Memeriksa baris sekarang mengungkapkan aksi Reassign di samping aksi lead lain, gated di REASIGN _ LEads _ MANULLY (Server memeriksa ulang; ini hanya kenyamanan). Menggunakan checkRight daripada checkRole sehingga mode dewa cocok dengan hasGod backend bypass - checkRole tidak bypass dan akan diverge untuk pengguna dewa. Dialog memilih satu anggota tujuan dengan pencarian, mengambil catatan opsional, dan mengatakan di depan bahwa anggota akan diemail, karena itulah titik Fitur. Indigo / biru daripada Hot Reassign oranye / pink: ini adalah tindakan admin besar disengaja, bukan panggilan mendesak. Kotak cek header memilih setiap baris dalam kisi sisi-klik - ribuan untuk besar org - sehingga 250 cap dilaksanakan di sini juga. Jika tidak judul "pilih semua dan atur ulang" aliran akan gagal server- sisi hanya setelah pengguna memiliki diisi seluruh dialog, dengan galat yang belum diterjemahkan. Pilihan dibersihkan melalui selectIdsRef sebelum memuat ulang: loadLeads memilih kembali apapun yang wasit pegang, jadi meninggalkannya berpopulasi akan kembali memeriksa baris baru saja pindah. Pesan hasil terdiri daripada rantai lain, karena batch dapat baik parsial dan tidak diberitahu dan hanya rantai yang dilaporkan yang pertama.

  4. · SecurityService

    Bulk- readsign titik akhir, gated on REASIGN _ LEads _ MANULLY

    POST * * * * * * * * * * * * * * * * bergerak batch dari leads ke satu tim anggota dan email yang anggota sekali untuk seluruh batch. Otorisasi menggunakan REASIGN _ LEADS _ MANUALLY (149) - yang tepat dinamai untuk tepat Ini. Yaitu stricter dari tapak tunggal pada PUT / lead / {id}, yang pemeriksaan ASSIGN _ LEADS; menugaskan kembali seratus lead adalah radius ledakan berbeda dan dua hak itu ada sehingga mereka dapat diberikan terpisah. Tingkat visibilitas unassigned- juga berlaku di sini. Penugasan IS visibilitas Hibah: sekali memimpin ditugaskan untuk pemanggil itu membaca sebagai "ditugaskan kepada saya", yang mengangkat unassigned- membaca 403 dan melewatkan topeng kontakt- info. Tanpa ini periksa penelepon holding 149 tetapi tidak VIEW _ UNASSIGNED _ LEADS bisa sendiri-menetapkan lead Kedua, orang-orang yang dalam hartanya terdapat bagian tertentu untuk orang yang meminta, dan orang yang menjaga kehormatan dirinya dari meminta-minta meskipun sebenarnya membutuhkan. Dilewati tajuk laporan TIDAK _ DITEMUKAN - pencocokan apa yang ditunjukkan oleh kisi-kisi mereka sendiri - sehingga respon tidak dapat menghitung tersembunyi atau petunjuk asing. Batch ini sengaja tidak semua-atau-tidak ada: masing-masing memimpin berjalan di sendiri transaksi dan id buruk menjadi melompat, karena membuang sembilan baik Penugasan atas kesepuluh lebih buruk daripada laporan yang tidak diambil. Ditahan pada 250 per panggilan untuk mengikat kedua kunci baris dan real time fan-out. Pemberitahuan menyelesaikan data dalam transaksi singkat melalui kacang terpisah Dan mengirim setelah itu, sehingga panggilan outbound dengan 30-an membaca timeout tidak pernah pin a Koneksi CRDB. Melewati batas kacang juga membuat @ Transaksional menerapkan sama sekali - diri-doa akan diam-diam berjalan dengan tidak ada transaksi dan Asosiasi pengguna LAZY akan melempar.

  5. · EmailService

    Variabel contoh untuk template LEADS _ ASSIGNED

    Tanpa sebuah kasus di sini, penyunting templat admin Pratilik membuat template baru dengan setiap placeholder kosong, yang berbunyi sebagai template rusak daripada sebuah tidak diisi satu. blok notesBlock pra- dirender HTML karena perender tidak memiliki kondisional - pengirim runtuh itu untuk "" "ketika tidak ada catatan.

  6. · kamo-shared-library

    Leads _ ASSIGNED template email; harden Pimpin untuk penggunaan massal

    lead telah nol penelepon dan tidak pernah berjalan dalam produksi. Sebelum kabel jalur penugasan massal untuk itu, memberikan jaminan bahwa jalur perlu: - mengambil orgId dan memverifikasi KEDUA memimpin dan pembantu baru milik itu, jadi penugasan tidak dapat mencapai seluruh penyewa (dilaporkan sebagai "tidak ditemukan" daripada "dilarang" sehingga kesalahan tidak dapat digunakan untuk menyelidiki id timah asing) - kunci baris dengan findByUidForUpdate: sebuah penugasan manual dan sebuah concurt pool- menerima target lead yang sama dan akan dinyatakan interleave menjadi hilang perbarui - Membersihkan bendera kolam renang, mencerminkan Crediting LeadAssignments Service. Sebuah memimpin ditandai untuk Tugas-otomatis jika tidak tetap di kolam renang setelah diklaim dengan tangan dan akan diambil dari bawah pemilik barunya - mempublikasikan routing obrolan, sebagai updateLead sudah tidak, sehingga peminjam 's hidup terbuka chatting mengikuti memimpin daripada tinggal dengan petugas sebelumnya Juga tambahkan leads-ASSIGNED canonical template. Kunci harus masuk CANONICAL _ KEYS atau tidak pernah dapat dijahit dan tidak pernah dapat menyembuhkan diri, dan setiap kirim mengembalikan 404 permanen.

  7. · kamo-shared-library

    Tambah Kelola _ ORG _ BRANDING (174)

    Org branding titik akhir (logo, warna, latar belakang, penyediaan tema) owneror- Tuhan saja, tidak meninggalkan cara untuk mendelegasikan branding tanpa menyerahkan kepemilikan org. Tambahkan yang dapat dihapus dengan benar; cek pemilik tetap sebagai implisit hibah sehingga ada pemilik tetap bekerja tanpa ditugaskan itu.

  8. · kamo-internal

    Penulis eligibilitas matriks dari panel katalog

    Tanpa matriks meliputi skenario pendudukan dan tujuan, harga kembali NO _ COVERSIGE - jadi sebelum ini, hanya pembelian sebuah rumah utama bisa harganya. Penulis formulir matriks dan sel-selnya untuk jenis batas yang dipilih, pendudukan dan tujuan, dengan penambahan / penghapusan sel baris, di samping bentuk kebijakan kunci dalam panel yang sama. Meninggalkan produk unset penulis satu matriks per produk ACTIVE investor, karena lingkup produk matriks TIDAK KOSONG dan tidak dapat mengekspresikan "semua produk" sebagai baris tunggal.

  9. · SecurityService

    Relay eligibility- matriks penulis; membangun kembali mengambil kembali SUSPENDED

    Relay POST * * * * * * * * * * * * * melalui org- stamping yang ada menulis Penolong, jadi seorang penulis pelayan hanya matriks untuk penyewa mereka sendiri. Dorongan ini juga dibangun kembali terhadap perubahan shared- lib yang memungkinkan sebuah resume pinjaman SUPENDED. kamo- shared- perpustakaan tidak memiliki CI sendiri - setiap klon layanan dan membangunnya dari sumber - sehingga perbaikan mencapai layanan ini hanya ketika layanan ini dibangun kembali.

  10. · kamo-internal

    Membangun ulang studio agen sebagai ruang kerja full- lebar

    Menghapus tutup lebar bukanlah memperbaiki; tata letak itu sendiri perlu dirancang untuk ruang daripada ditoleransi di dalamnya. Studio sekarang tiga zona berdampingan: - * * Garis luar rel * * - bagian, dengan yang saat ini disorot sebagai Anda gulungan (IntersectionObserver, top- ditimbang sehingga bagian menjadi saat ini ketika header mencapai mana perhatian sebenarnya). Bagian yang ditulis dengan tangan ditandai, jadi Bagian tulisan tangan bisa ditemukan nanti tanpa membuka semuanya. - * * Editor * * - daerah sendiri, miring ke sebanyak kolom sebagai viewport memegang bukan satu pita sempit. - * * Percakapan Live * * - kolom nyata pada tampilan lebar, bukan strip yang runtuhkan isi ketika dibuka. Ini adalah putaran edit- dan - menonton studio ada untuk: ubah sebuah instruksi, lihat perubahan jawaban, tanpa navigasi. Satu contoh TestDrivePanel, diposisikan kembali daripada diduplikasi - mengait dua kali akan memulai dua sesi buangan. Di bawah xl itu tetes di bawah editor sebagai baris penuh-lebar daripada menekan kolom ketiga ke tampilan tanpa ruang untuk satu, dan rel menyembunyikan sepenuhnya pada layar kecil.

  11. · kamo-internal

    Penulis mengunci kebijakan - tanpa satu, tidak ada tingkat dapat dikunci sama sekali

    RateCommitment Service menolak mengunci ketika hasil yang berharga tidak ada lockPolicyVersionId ("lock-policy version dibutuhkan"), dan hasil hanya membawa satu jika investor memiliki versi kebijakan kunci yang diterbitkan. Tidak ada UI bisa mempublikasikan satu, sehingga kecepatan penguncian tidak dapat dicapai untuk setiap penyewa - sementara titik akhir itu sendiri sudah dibangun, orgasme (Dan demi malaikat-malaikat yang menyampaikan wahyu) yakni malaikat-malaikat yang turun untuk menyampaikan wahyu kepada para nabi dan para rasul supaya wahyu tersebut disampaikan kepada umat-umat manusia. Hanya metode klien dan bentuk ini yang hilang. Formulir mengambil periode kunci yang ditawarkan sebagai daftar yang diperintahkan karena yang pertama menjadi default, sehingga sengaja tidak mengurutkan mereka; masukan yang bukan keseluruhan positif jumlah hari dibatalkan daripada dikirim sebagai istilah kunci yang buruk.

  12. · kamo-internal

    Tunjukkan bagaimana setiap agen melakukan

    Tambahkan bagian kinerja ke atas studio agen: percakapan, bagaimana sering seseorang mengambil alih dan apa yang memicunya, outreach hasil, dan biaya. Written so no figure can menyesatkan: - Nol render sebagai kata 'None', tidak pernah 0. - Sebuah saham hanya merender ketika ada sebuah denominator; sebaliknya 'Tidak ada percakapan Namun untuk membandingkan dengan '. Tidak ada persentase zero- denominator. - Ketika tidak ada dalam periode membawa harga, tidak ada angka biaya ditampilkan sama sekali - Hanya penjelasan bahwa harga telah ditetapkan setelah lalu lintas terjadi. Sebagian cakupan menunjukkan jumlah ditambah berapa banyak jawaban yang hilang dari itu. - "Ini disimpan tujuan - mereka catatan Anda mengapa seseorang tidak dihubungi. " - Kode enum tidak dikenal degrade ke teks dapat dibaca daripada jalur kunci mentah. Pesan per- versi dan kolom handoff dihapus: API tidak bersamaan mereka per versi, sehingga sel-sel akan membuat sebuah dibuat 0 seolah-olah telah diukur. Percakapan saja menjawab apa tabel untuk - yang disimpan salinan ditangani lalu lintas yang. Lipatan ke dalam dokumen scrolling studio yang sudah ada daripada tab baru, dan menjaga dari daftar agen, di mana telanjang 0 terhadap setiap agen akan menjadi tepat salah membaca dihindari.

  13. · AIService

    Per- agen scorecard

    Apa yang masing-masing agen lakukan: percakapan, seberapa sering seseorang harus mengambil alih dan mengapa, outreach hasil termasuk yang menahan, dan apa biaya. Setiap nomor adalah salah satu data benar-benar dapat mendukung. Tiga hal yang sengaja TIDAK DI SINI: - * * Token token totals. * * * Mereka nyata di jalan sinkronisasi dan dibuat di streaming satu (content.length () / 4), jadi total apapun adalah bagian diciptakan. Biaya jawaban pertanyaan yang sama jujur, karena itu adalah null daripada menebak di mana Harga tidak diketahui. - * * Tidak ada resolusi atau tingkat defleksi. * * Tidak ada yang mengamati apakah percakapan berakhir dengan baik, dan 'tidak ada handoff terjadi' bukan bukti sukses. - * * Tidak ada pesan versi per- atau handoff counts. * * Mereka tidak berkumpul setiap versi, dan memancarkan 0 bagi mereka akan menjadi palsu yang ditulis sebagai pengukuran - kegagalan yang tepat layar ini ada untuk menghindari. Biaya membawa sebuah eksplisit dilacak bendera dan jumlah null daripada 0 ketika tidak ada apapun di jendela yang harganya mahal, jadi org yang lalu lintas sebelumnya melihat harga 'tidak direkam' bukannya percaya diri $0.00. PricedCalls adalah otoritas agak daripada jumlah, sehingga nol asli dari harga panggilan freetier masih dibaca sebagai dilacak. Prosa transkrip digated pada VIEW _ SALE _ AGEN _ TRANSCRIPTS terpisah dari dihitung - model ringkasan dari pengunjung tertentu adalah isi percakapan, bukan metrik. Agen tanpa lalu lintas kembali struktur lengkap scorecard kosong: sebuah agen hilang dari daftar membaca sebagai bug, agen hadir dengan nol baca sebagai kebenaran. bagian dari Argumen Handoffsekarang dibagi dengan jalur obrolan daripada diimplementasikan ulang, sehingga pemaksaan alasan ditemukan ke LAIN tidak dapat melayang antara keduanya. Suite adalah 150 tes, hijau.

  14. · kamo-shared-library

    Digabung kumpulan query untuk scorecard agen

    12 @ Query mengumpulkan seluruh sesi, pesan, catatan penggunaan dan outbound sentuhan, sehingga scorecard adalah segelintir pengelompokan query daripada loading baris ke dalam memori. Dua properti dipaksa dalam prediksi daripada ditinggalkan ke penelepon: - * * adalah Sesi tes dikecualikan dalam query itu sendiri. * * Pada agen muda test drive penulis sendiri akan dinyatakan sebagian besar data, dan pemanggil yang lupa untuk filter menghasilkan nomor yang terlihat nyata dan tidak. - * * count (costEstimate) hanya menghitung biaya NON- NULL. * Itulah yang memungkinkan scorecard membedakan 'nothing was priced' dari 'it cost nol' - runtuh mereka akan menempatkan percaya diri $0.00 di depan org yang lalu lintas hanya sebelum harga. Sentuhan keluar dikelompokkan oleh keputusan daripada disaring untuk dikirim. The Penolakan adalah setengah yang lebih menarik: seorang agen yang menyentuh hampir semua SUPPRESSED _ QUIET _ HOURS salah dikonfigurasi, dan itu tidak terlihat jika decoder Dibuang.

  15. · kamo-internal

    Sunting berapa biaya setiap model

    Tambahkan penyuntingan harga permodel ke layar setup penyedia. Harga yang berasal dari Setiap penjual yang diterbitkan harga daftar di mana kita tahu itu, dan kosong di mana kita tidak - biaya berarti kosong tidak dilacak untuk model itu, yang lebih baik daripada nomor yang sangat salah. Salinan memberitahu orang-orang untuk memeriksa angka-angka bibit terhadap tagihan mereka sendiri daripada Mewakili mereka sebagai otoritas. Perbaikan sebuah bug tampilan tertangkap dalam tinjauan: trim nol akan menghasilkan sebuah Harga 10 sebagai 1. Sekarang strip nol hanya setelah titik desimal.

  16. · AIService

    Katalog harga model, path tulis dan isi ulang

    Biaya akuntansi tidak pernah bisa bekerja: AiModel memiliki kolom harga, AiModelController membaca dan Chatorchestration Service membacanya untuk menghitung costestimate - tapi Tidak ada yang menulisnya. Model hanya dibuat oleh penemuan penyedia, dan tak ada penyedia API yang mengembalikan harga. 140 model, 0 harga, tidak ada jalan yang bisa berubah. Kolom itu secara struktural tidak terjangkau. Tiga bagian: - ModelPricingCatalog benih vendor LIST harga pada penemuan, cocok pada identifier normalisasi dengan aturan prefiks hyphen-batas sehingga gpt-4 tidak pernah dapat pernah claim gpt-4o. Model non-chat (TTS, penggelapan, real time) ditolak oleh menggunakan kembali cek modalitas yang ada - mereka tagihan off lembar yang berbeda. - PATCH titik akhir + UI sehingga org dapat memperbaiki atau menghapus harga. Organik-scoped persis Seperti DELETE yang ada. - Isi ulang hanya kolom NULL, per kolom independen, dan tidak pernah overwrite apa yang telah ditetapkan org - jika tidak membuat harga dapat disunting akan menjadi Bohong. Idempoten, dan dibungkus sehingga biaya akuntansi tidak pernah bisa memblokir boot. Sebuah model yang tidak kita percaya diri tentang tidak mendapat harga daripada menebak. GPT-5, o3, sebagian besar Mistral, DeepSeek, xAI, Cohere dan Meta sengaja kosong; OpenRouter dan HuggingFace tidak pernah cocok dengan desain, karena mereka membayar harga sendiri dan mewarisi harga hulu akan menebak. Harga yang salah menghasilkan faktur - bentuk angka yang sangat yakin salah - alasan yang sama biaya masih sama tidak dihitung pada jalur streaming, dimana jumlah token dibuat. Konversi ke kolom per-1k menggunakan RoundingMode. UNNECESSARY sengaja: harga membutuhkan lebih dari 6 lemparan desimal di kelas-init daripada menyimpan diam-diam alasan dan dibiarkan kosong. Suite adalah 145 tes, hijau.

  17. · kamo-internal

    Tampilkan konteks handoff AI ke agen mengambil alih

    Menyewa acara sistem AI _ HANDOFF sebagai kartu dengan alasan, ringkasan AI, dan transkrip mudah dipahami dari percakapan sejauh ini - sehingga peminjam tidak tidak perlu re- menjelaskan diri kepada orang yang mengambil. Ketiga keadaan terdegradasi lebih eksplisit dan terlihat daripada diam: transkrip Tidak tersedia, transkrip dipotong, dan muatan dilucuti dalam transit. Seorang agen harus tidak pernah dibiarkan percaya mereka memiliki konteks penuh ketika mereka tidak. Pengunjung dan agen berbagi satu topik StoMP, sehingga frame langsung tiba disunting ( Ringkasan AI adalah penilaian pribadi pengunjung dan tidak bisa pergi ke mereka browser). Daripada memberitahu agen untuk reload, kartu re- baca baris penuh sekali dari titik akhir sendiri dikonfirmasi. Pembacaan ulang divalidasi sebelum itu diadopsi - respon yang kembali masih - dilucuti ditolak daripada digunakan, jadi peringatan hanya bisa jelas ketika konteks benar-benar diperoleh. Kegagalan apapun kembali ke pesan reload.

  18. · APIService

    Proxy the public AI- > handoff route human

    Tambahkan POST * * * * * * * * * * * * * * * * * * * * proxied ke MediaService di samping createSupportment nya saudara. Tanpa ini fitur handoff sudah mati pada kedatangan: Hard- membutuhkan X-Internall-Auth, X- Public-Chat-Organi- Id dan X- Public-Chat- Key- Hash, yang hanya gateway ini menyuntik, sehingga POST widget 404d di sini dan tidak pernah sampai. Membawa kondisional * * * * keamanan yang sama sebagai CreateSportment. Handoff berjalan the full session- creation path, so proxying it bare would have left a Menggelitik - membuat rute yang melewati proof- of- bekerja saudara-saudaranya kekuatan.

  19. · MediaService

    Membawa percakapan AI ke dalam benang manusia pada handoff

    Membuat atau mengulang sesi dukungan, menyalin transkrip AI dalam satu sistem acara, rute itu, dan memberitahu pengunjung jujur apa yang terjadi selanjutnya. Rahasia dibagi oleh penonton, yang lulus pertama mendapat mundur. The Ringkasan AI dan ReasDetail adalah penilaian pribadi dari pengunjung, dan muatan penuh adalah mencapai browser pengunjung sendiri melalui dua REST pintu dan bingkai StoMP sementara agen melihat apa-apa. Redaction kini berlaku di setiap visitor- menghadap jalur; baris yang bertahan menyimpan muatan penuh untuk agen. chat.session. [guid} adalah topik tunggal kedua penonton berlangganan, sehingga hidup frame dipotong untuk apa pengunjung dapat melihat dan agen UI kembali - membaca baris penuh dari titik akhir sendiri yang dikonfirmasi. Idempotency is keyed on aissionGuid, org- scoped, and checked before creating apa saja. Mencarinya pada sesi dan memeriksa setelah penciptaan - yang jelas bentuk - tidak berguna tepatnya ketika hal itu penting: sebuah percobaan yang kehilangan sesi token selalu melewati cek dan menghasilkan tiket duplikat dan agen kedua halaman. transkripsi Lampiran sekarang melaporkan apa yang sebenarnya terjadi. Ini sebelumnya datang kembali benar bahkan ketika menulis telah gagal diam-diam, yang kemungkinan terburuk kombinasi: pengunjung diberitahu konteks mereka datang, benang agen adalah kosong, dan tidak ada pihak tahu. Salinan-satu-handoff, bukan migrasi: Al ternyata tinggal di mana analitik membaca mereka.

  20. · AIService

    Agen-dimulai handoff ke manusia, dengan konteks

    AI tidak dapat sebelumnya meminta seseorang: aturan eskalasi mencapai model melalui prompt terkompile, tetapi tidak ada sinyal mesin-mudah dibaca kembali, sehingga Model hanya bisa mengatakan itu akan menjemput seseorang dan tidak ada yang terjadi. - Synthetic kamo _ request _ human alat, dijelaskan dari agen sendiri diaktifkan aturan eskalasi judul sehingga model melihat kondisi pemicu identik dalam tanya dan alat. Dipotong sebelum pengiriman MCP - itu adalah sinyal, bukan panggilan alat yang sebenarnya - dan baris TOOL yang berkesinambungan adalah apa yang membuat alasan tahan lama dan analisis siap dengan kolom baru nol. - Terkait Hanya ketika saluran benar-benar memiliki dukungan hidup diaktifkan. Menyerahkan al- hanya org alat yang menjanjikan manusia yang tidak pernah bisa tiba lebih buruk dari tidak memiliki alat: widget tidak memiliki tab Dukungan, sehingga sinyal diturunkan dan pengunjung yang tersisa menunggu seseorang yang tidak pernah datang. - Titik akhir internal baru mengembalikan alasan handoff, ringkasan AI untuk siapa pun mengambil alih, dan transkrip USER / ASSISTANT. Baris TOOL dan SISTEM adalah dikeluarkan - manusia kebutuhan percakapan, bukan mesin. - Alasan Detail dan ringkasan sengaja ditahan dari browser pengunjung: mereka adalah model penilaian pribadi pengunjung. Hanya {diminta, alasan} melintasi ke klien; MediaService fetches sisanya server-side. - Al ternyata tidak pernah dipindahkan atau dihapus. AiChatSastMessage tetap sistem analisis catatan: sisi manusia mendapatkan salinan. Juga memperbaiki bug laten yang ditemukan di jalan: blok alat mengabaikan model-per@@ supports ToolUse flag, so a model explisit flagly as not supporting tools was masih mengirim mereka. 31 dari 140 model ditandai palsu; ai _ mcp _ server _ configs adalah Kosong cluster.wide, sehingga radius ledakan hari ini adalah nol. Suite adalah 124 tes, hijau.

  21. · MediaService

    Terima ucapan - ditulis outreach ke dalam thread peminjam terbuka

    The rekan AIService apos; s operator jangkauan panggilan. Without it the whole jalan keluar berakhir dalam rekaman 404 - gerbang yang berwenang sentuhan, pesan dibuat, dan tidak ada tempat untuk meletakkannya. Kepemilikan tetap terpisah sengaja: AIService memutuskan WHETHER sentuhan mungkin keluar dan menulis teks, layanan ini tempat itu. Menulis baris ini dari AIService akan fork kepemilikan transkrip ke layanan yang memiliki baik chat tabel atau soket. Dua hal yang tidak akan dilakukan. Tidak pernah menciptakan percakapan - jangkauan dapat dilanjutkan thread pengunjung sudah dibuka, tidak pernah membayangkan jendela chatting pada seseorang yang Tidak. Dan tidak pernah melintasi orgs: uid memimpin memecahkan ke tiket org lain akan menempatkan satu agen org dalam percakapan org lain, jadi org adalah Diperiksa terhadap tiket daripada dipercaya dari penelepon. Pesan ini dikaitkan dengan anggota sesi, persis sebagai pesan pengunjung Bukan untuk petugas yang ditugaskan. Mengubah pesan AI- compose sebagai meskipun seorang bernama, orang berlisensi menulis itu adalah apa aturan AI- pengungkapan ada untuk Mencegah. ensusurSubscription mendahului NAS mempublikasikan karena konsumen menggunakan DeliverPolicy. Baru: penerbitan pertama akan mempertahankan pesan tetapi menjatuhkannya dari setiap klien yang terhubung. Mengembalikan id dan pesan sehingga log audit jangkauan referensi pesan daripada benang. 404 ketika tidak ada thread terbuka ada, Jadi si penelpon mencatat kegagalan yang bersih daripada mencatat pengiriman.

  22. · AIService

    Pemicu, penjadwalan, dan pengiriman percakapan web

    Membuat tulang belakang outreach benar-benar api. Gerbang, negara kontak, persetujuan dan audit sudah ada; tidak ada yang menyebabkan sentuhan untuk dievaluasi. - NATS diaktifkan untuk AIService melalui k8s / configmap.yaml sendiri (setiap layanan Java membawa dir k8s sendiri; KlusterServices hanya memegang cluster infra). JetStream ditinggalkan secara sengaja: NatsConfig menegaskan faktor replikasinya sendiri terhadap tengah-pengaturan aliran pada startup, dan AIService hanya subscripsing ke core NATS dan mempublikasikan apa-apa, sehingga memungkinkan akan mendapatkan apa-apa dan risiko kedua service asserting replika counts. - Agen OutboundConsumer subsators secuity.leads.rt. > dan mengkonsumsi HANYA LeAD _ CREATED / LEAD _ UPDATED. Penerbit juga memancarkan kunci dan statistik peristiwa - menghubungi seseorang karena seorang kolega mengambil kunci penyuntingan pada catatan mereka tidak dapat dipertahankan. Ids tiba sebagai string dari penerbit, sehingga mereka parsed sebagai teks daripada asLong (). - Agen OutboundScheduler mengevaluasi pemicu jadwal di bawah empat batas: org set turunan dari agen yang sebenarnya memiliki jangkauan di (capped), sebuah geser tipis time slice so cost track new- lead rate than total lead, a per- tick row Cap, dan peredam evaluasi ulang jadi penyeberangan memimpin selama jam-jam tenang dicoba sekali daripada setiap kutu untuk sehari. - Composisi benih teks Lengkap dengan prompt dikompilasi versi PUBLISHED, tidak pernah draft, ditambah tujuan pemicu. Komposisi catatan kegagalan GAGAL; tidak ada pesan mundur kaleng. - WEB _ CHAT pengiriman terus benang yang ada saja. Outreach mungkin melanjutkan percakapan pengunjung dibuka; mungkin tidak menyihir jendela obrolan pada seseorang yang tidak pernah membuka satu. - SMS / EMAIL / SOCIAL _ DM rute ke dicatat GAGAL penamaan hilang pipa, sehingga org menunjuk pemicu pada SMS melihat mengapa dalam log outreach Segera bukannya tidak terjadi apa-apa. 23 tes baru; suite 68 dan hijau.

  23. · kamo-internal

    Memerlukan penyunting teks; dedupe pengaturan umum AI; perbaiki model toggle

    Tambahkan suatu penyunting untuk org-wide diperlukan membuka / menutup teks - kompiler dan kolom ada tapi tidak ada yang bisa mengatur mereka, sehingga kemampuan sudah mati. Salin menyatakan jelas bahwa agen tidak dapat menghapusnya dan bahwa menyimpan berlaku untuk setiap Agen segera, dan roti panggang melaporkan berapa banyak agen yang diterbitkan kembali agak daripada telanjang 'Tersimpan', karena agen hidup hanya mengubah apa yang mereka katakan. Dua kutu sebelumnya ditemukan di sepanjang jalan: - Switch 'Autoselect terbaik yang tersedia' tidak pernah berhasil. Antarmuka baca data.autoSelectModel dan mengirim autoSelectModel, tetapi backend kembali dan mengharapkan autoModelDiaktifkan - sehingga toggle selalu diberikan true dan nilainya adalah dibuang di setiap menyimpan. Sisi depan tetap; tak ada perubahan server yang diperlukan. - AiGeneralSettings.tsx kode mati, tidak pernah diimpor, sementara sebuah verbatim inline duplikasi hidup di bagian bawah SecurityModelsTab.tsx. Daripada mengimplementasi teks yang diperlukan dua kali, duplikat dihapus dan SecurityModelsTab mengimpor komponen bersama. Juga mengganti tip dari agen salesman, yang masih memberitahu pengguna bahwa fitur tersebut segera datang.

  24. · AIService

    Persist org-wide diperlukan teks dan menerapkannya segera

    Pengaturan Aimority memperoleh predPreamble / forcedFooter dan SalesAgentCompiler sudah Lipat mereka ke dalam setiap agen, tapi pengaturan tidak mengendalikan membaca maupun menulis Mereka - sehingga kemampuan sudah mati: menyimpan muncul berhasil dan kembali kosong saat reload. GET sekarang mengembalikan kedua ruas (termasuk dalam baku pengaturan no-) dan PUT mempertahankan mereka, normalisasi kosong untuk membatalkan sehingga membersihkan bidang benar-benar membersihkan daripada meninggalkan string kosong untuk dilipat sebagai pemisah nyasar. Teks yang diperlukan kini berlaku secara tak langsung, dengan merekonstruksi dan penerbitan kembali Semua agen yang diterbitkan di org. Membiarkannya berlaku pada penerbitan agen berikutnya lebih murah dan adalah perangkap: admin yang menambahkan 'selalu mengatakan Anda adalah otomatis asisten 'akan percaya itu adalah hidup, dan agen tidak ada yang terjadi untuk mempublikasikan akan terus berbicara tanpa itu selamanya. Sebuah garis yang diperlukan yang diam-diam tidak tidak mendaftar lebih buruk daripada tidak menawarkan satu. Setiap agen yang terpengaruh mendapat satu agen baru yang diselamatkan salinan berlabel dengan mengapa, dan laporan respon berapa banyak yang diterbitkan kembali jadi UI dapat mengatakan apa yang sebenarnya terjadi bukan hanya 'Saved'.

  25. · kamo-internal

    Full- page AI Sales Agen studio, mengganti modals

    Editor agen adalah ~ 800px MUI Dialog yang seluruh permukaannya adalah 10 baris Textarea, pada satu tab AI yang menggunakan dialog sama sekali. Hal ini sekarang didedikasikan rute, dan model editing di belakangnya terstruktur daripada satu gumpalan. - / settings / ai / salesman-agen / baru - kolom 720px, bukan studio. Kartu plat (Kartu IS industri, jadi tidak ada drop down industri), kemudian dua bidang: nama dan satu kalimat tentang bisnis. Seorang agen pekerja di bawah satu menit. - / settings / ai / salesman-agen / [id] - lebar penuh, dokumen scrolling satu dengan lengket bagian header, isi capped di 880px sehingga tunggal-baris masukan tidak membentang di layar 4K. Tidak ada 240px nav rail: sembilan bagian adalah pekerjaan scroll- spy, bukan pekerjaan navigasi. - Try- it -out adalah sebuah header toggle daripada kolom simpanan permanen. An panel obrolan kosong di samping brand-agen baru yang terbuang ruang yang berbunyi sebagai kegagalan pengguna untuk mengisinya. - Kesadaran adalah perintah, daftar yang tidak dapat diimplementasikan dari apa yang akan membantu - tidak pernah pecahan. Sebuah fraksi memberitahu seseorang mereka gagal; daftar memberitahu mereka apa yang harus dilakukan selanjutnya. - Aturan terkunci render terkunci dan tidak dapat dilepas, dan mengambil bagian atas dengan tangan peringatan ketika berisi satu (kompiler sekarang menambahkan ulang mereka terlepas). - Kepala menyatakan dengan jelas bahwa edits hanya mempengaruhi percakapan baru, karena prompt adalah snapshotted di pembuatan sesi dan pengguna akan dinyatakan menyimpulkan perubahan mereka tidak bekerja. - outboundEnabled hanya dikirim ketika benar-benar berubah: server 403s seluruh PUT jika field itu ada tanpa manvage _ SALE _ AGEN _ Outreach, jadi termasuk di setiap toko otomatis akan memecahkan studio bagi siapa saja yang kurang hak itu. Juga hapus kotak duplikat mentah "Prompt sistem AI" dari saluran obrolan Editor. Itu adalah tempat kedua, lebih lemah untuk menulis hal yang sama, dengan tidak versi, tidak ada aturan terkunci dan tidak ada riwayat - editor mana pun yang Anda kebetulan membuka memutuskan apa yang pelanggan dengar. Prompt yang ada masih meresolf; kanal menggunakan satu sekarang mendapatkan pemberitahuan menunjuk pada agen. Salinan tidak membawa AI jargon dengan desain, dan array industri Inggris hardkode adalah diganti dengan label terjemahan.

  26. · AIService

    Sales-agen kompiler, versioning, gerbang outreach; perbaiki alat replay

    Terstruktur agen config compiles ke sistem prompt, membeku setiap diterbitkan versi, dan memperoleh gerbang agen harus lulus sebelum memulai kontak. Kompailer - Agency Config + SalesAgents Compiler: murni, deterministik kompile dari struktur config into a sectioned prompt. Daerah kosong diabaikan sehingga aturan tiga - agen tidak mengkompilasi ke dokumen yang sebagian besar heading. - Section- level override ("tulis bagian ini sendiri") daripada tingkat dokumentasi sebuah penulis mendapat kekuatan ekspresif penuh pada satu bagian sementara setiap bagian lain terus compiling, terus aturan terkunci dan terus versioning. - Bahwa mekanisme yang sama membuat migrasi byte- identik - pre-config prosa agen disimpan sebagai override semua dokumen dan kompilasi kembali tidak berubah, jadi migrasi hari adalah no- op untuk agen sudah berbicara dengan pelanggan. Dibuktikan dengan tes. - PhraseBank adalah sengaja dua dimensi, dengan prosa yang baik pada TEMPLATE. Sebuah bank global pada setiap kombinasi enum kebutuhan ~ 90 tangan ditulis paragraf, degenerate menjadi clauses ditumpuk, dan akan membuat setiap org terbuka dengan sama kalimat - yang menghancurkan satu hal org membeli. - Enam contoh (depan-meja dan dipanah-memimpin pertama: mereka horisontal dan penutup org apapun yang vertikal tidak terdaftar). Setiap kapal terkunci kepatuhan aturan Model tidak pernah bisa menghapus, diverifikasi dengan tes. Otorisasi Lifecycle + - Publizes membeku {config, compiledPrompt, hash, model, penyedia}; rollback repoints and restore the draft so the studio can never show one thing while agen melayani yang lain. - Kontrol adalah hak-gated untuk pertama kalinya. Sebelumnya APAPUN dikonfirmasi anggota dari org manapun dapat menulis ulang apa yang org katakan kepada pelanggannya. Jatuh kembali to manvage _ AI _ SETTINGS so no existing admin is locked out on outset. - Percakapan publik lebih suka versi yang diterbitkan prompt beku daripada hidup trainingContext, and staples agentId / versionId on the session - the agent sudah diselesaikan di sana dan sedang dibuang. - Dibantu menyusun: satu kalimat masuk, dapat dilihat ulang konfigurasi keluar. Aturan terkunci adalah dilakukan dalam kode, tidak pernah ditampilkan ke model, sehingga garis kepatuhan tidak pernah dapat dihapus oleh instruksi-berikut. Outreach gate (semua 14 aturan diuji) - Opt- keluar mengalahkan setiap cek lain DAN dilaporkan sebagai alasan, karena alasan dicatat terhadap penolakan adalah bukti itu sendiri. - SMS tanpa persetujuan catatan ditolak: di bawah TCPA beban bukti adalah pada pengirim, jadi tidak ada catatan adalah tidak ada persetujuan. - Jam tenang dinilai di mana CONTACT adalah, bukan di mana bisnis tersebut. - Gagal mengirim tidak menghabiskan anggaran sentuh; ditekan kirim tidak baik, atau satu blok akan cascade ke memblokir segala sesuatu setelah itu. - Gerbang gagal CLOSED - sebuah gerbang outreach yang error terbuka mengirimkan pesan tidak ada berwenang, satu kegagalan di sini yang tidak dapat dibatalkan. Perbaikan ditemukan di sepanjang jalan - Alat - replay riwayat panggilan telah rusak: baris TOOL tidak mempertahankan isi dan assistant tool _ use turn tidak pernah disusupkan, jadi turn 2 send a null-content blok. Mengaktifkan alat akan gagal setiap percakapan multi- turn. - Teks Lengkap tidak memiliki timeout (blocking .get (), pinning a thread on a slow provider) dan direkam tidak ada penggunaan, membuat setiap panggilan pembantu tidak terlihat untuk penagihan. - Partisi sistem dalam konteks pencocokan telah dibuka, sehingga agen verbose plus RAG blok bisa kerumunan semua sejarah. - kostestimate sekarang hanya tinggal di jalur sinkronisasi, dari token penyedia nyata. Streaming tetap kosong: itu mengfaktur token sebagai concet.length () / 4 dan mengalikan bahwa dengan harga nyata menghasilkan faktur nomor berbentuk yang salah.

  27. · kamo-shared-library

    Terstruktur salesman-agen config, tulang belakang versi dan keadaan outreach

    Mengganti tunggal training-context blob dengan agen yang terstruktur dan dapat diubah Model, dan menambahkan tulang belakang perkontak agen kebutuhan sebelum dapat memulai kontak daripada hanya menjawab. - SaleAgent memperoleh konfigurasi Json (jsonb-as- String, pencocokan WebChatIntegration .designated Config), hasConfig, publishedVersionId, audience dan outboundEnabled. pelatihan Konteks ditahan sebagai OUTPUT KOMPILED sehingga setiap konsumen yang ada terus bekerja tidak tersentuh. HasConfig lebih eksplisit daripada disukai dari trainingContext kosong, karena setelah dikompilasi keluaran tidak pernah Kosong dan setiap tes kekosongan akan dapat dicapai. {configJson, compiledPrompt, compiledHash, model, providerId} per mempublikasikan. Model disematkan bersama prompt: titik beku instruksi sementara model auto- rute akan membuat artefak setengah-kebenaran. - AiChatment / AiUgageRecord mendapatkan salesman gentId + salesman VersionId. Sebelumnya "yang agen menangani hal ini?" Hanya bisa dijawab dengan berjalan mutable, nubled, bukan-FK WebChatChatgration.sales AgentId hop, sehingga meresign saluran diam-diam menghubungkan semua sejarah. - Pengaturan AiOrgan memperoleh prefordPreamble / PrecedFooter sebagai kolom nulable NEW agak daripada menggunakan kembali default SystemPrompt, sehingga konkatenasi adalah sebuah no- op sampai sebuah admin Isi satu. Menggunakan kembali bidang yang ada akan mengubah perilaku untuk setiap org yang sudah memiliki satu penduduk, pada hari penyebaran. - AgentContactState + AgentOutboundTouch: penekanan persimpangan per- saluran kontak, eksplisit per-channel opt-out kolom dan persetujuan distempel waktu. Opt-out disimpan sebagai kolom nyata daripada JSON karena "membuktikan nomor ini ditekan tanggal "tidak boleh tergantung pada ekstraksi jalan JSON. Catatan log sentuh REFUSALS serta mengirimkan - log mengirimkan membuktikan apa yang Anda lakukan, log keputusan membuktikan apa yang tidak akan Anda lakukan. - Hak 168- 173 split * * * * * * * * * * * * * * * * off Mengelola _ AI _ SETTINGS (53), yang sebelumnya gated semua ini.

  28. · kamo-internal

    Penugasan agen saluran saluran AI Agen tab +

    Bangun / pengaturan / ai? tab = sales-agen (adalah stub): orgs membuat agen untuk mereka industri penjualan, baik dari built-in template atau dengan menulis konteks pelatihan sendiri, lalu sunting / aktifkan / hapus mereka. Kanal percakapan (/ settings / features / chat) kini dapat setiap pick yang agen drive yang mana Saluran AI, independen - agen menimpa prompt sistem baku.

  29. · SecurityService

    Perkaya peminjam percakapan routing + penangkapan subjects-properti negara

    chat- routing sekarang kembali ditugaskan perwira NMLS, judul, foto, telepon, email dan apakah mereka memegang lisensi yang valid untuk keadaan subject- properti, ditambah negara itu sendiri dan apakah kita masih perlu untuk meminta untuk itu. Mengembalikan kartu SAFE-Act Data terpecahkan sehingga obrolan tidak pernah dapat menunjukkan identitas palsu. Tambahkan POST / Portal / subject-state: ketika memimpin tidak memiliki keadaan properti belum, peminjam dapat menset nya dari percakapan; mengalir melalui patchestimate (dan tugasnya pool re-entry) seperti fakta lain klaim, yang membuka garis lisensi.

  30. · MediaService

    Atur agen penjualan per saluran + laporkan ketersediaan LO

    - WebChatChatintegration CRUD threads agregenId (kosong membersihkan tugas) - Lo-kehadiran sekarang kembali reavabillityStatus anggota bersama online, sehingga widget dapat menampilkan status nyata bukan titik kosong. Proses Cross-org masih hanya kembali {online: false}.

Alam semestamu menunggu.

Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.

Gratis selamanya — tidak diperlukan kartu kredit