Журнал змін
Что нового.
Все усовершенствования платформы, как только она будет запущена.
· SecurityService
По електронній пошті новий власник, коли єдиний свинець відзначається
Дзеркально насипний шлях на карту автоперевізника. Коли PUT /leads/{id} перейменує лідирующий учасник, який зараз отримує той же LEADS ASSIGNED електронна пошта (count 1) відправляється з сипучих потоків. Best-effort — відправка працює після того, як не вдається. Вогонь тільки на реальному відставці: не заощаджує скидання без змін (для редагування контактної інформації надсилає нічого), а також пропускає самопідпис — не має підстави для електронної пошти себе. Відповідність несе ознайомлений таким чином, що UI може підтвердити новий власник був по електронній пошті. Попереднє оновлення свинцю тепер занурюється один раз і знову використовується як для authz, так і для попередньопризначте захоплення, замість того, що всередині відділення не зайшов.
· SecurityService
Реле умовно-LLPA авторизація
Реле POST ****** через org-stamping писати помічник, так що steward автори умовних регулювань тільки для власних орендарів.
· kamo-internal
Настроювання виписаного приводу до команди
Сітка вже мала багаторазові прапорці, але нічого не робити з підбором. Перевірити рядки тепер розкриває Відправлення дії, що знаходиться поруч з іншими діями свинцю, забитими на REASSIGN LEADS MANUALLY (перезавантажити сервер; це зручність тільки). Використовуйте checkRight, а не перевіртеRole, так що режим god відповідає за спадок inpass — checkRole не обходитися, і для користувачів god. У діалоговому вікні вибирає один учасник призначення за допомогою пошуку, бере додаткову замітку, і Повідомляйте перед тим, що учасник буде по електронній пошті, так як це точка функція. Індиго/синій, а не помаранчевий/рожевий знак Hot Reassign: це не термінова передача виклику. Заголовок прапорець вибирає кожен рядок в стороні клієнта - тисячі для великий орг — так, що 250 ковпачок використовується тут. В іншому випадку заголовок "Виберіть всі і переадресувати" потік не буде серверним доступом тільки після того, як користувач мав заповнений у всьому діалоговому вікні, з неперекладною помилкою. Вибір очищається за допомогою вибраногоIdsRef перед перевантаженням: loadLeads перевиберіть, що ref тримається, тому залишивши його заселений буде повторно ряди просто переміщуються. В результаті повідомлення складається не більше іншого ланцюжка, тому, що партія може бути як частковою, так і ненасиченою, і мережа повідомила тільки перший.
· SecurityService
Штукатурка-реставрація кінцевої точки, заглушка на REASSIGN LEADS MANUALLY
POST************************************************************************************************************************************************************************************************************************************************************** учасник і електронні листи, які мають один раз для всієї партії. Авторизація використовує REASSIGN LEADS MANUALLY (149) — право на ім’я це. Що є строгим, ніж єдиний шлях на PUT /leads /{id}, який перевіряє ASSIGN LEADS; перевизначення сто ведеться різним радіусом вибуху від перевизначення одного, і два права існують так, що вони можуть бути надані окремо. Непристойний ярус закріплюється тут. Призначення є видимістю грант: один раз присвоюється дзвінку, він читає як "призначений мені", який Підйомки невизнані 403 і пропускає маску контактно-info. Без цього перевірте холдерство 149, але не ПЕРЕГЛЯД UNASSIGNED LEADS може самопризначати провідні сітки приховує від них і відмивають їх у повністю прочитані. Пробити веде звіт НЕ FOUND — відповідає якому свої власні сітки — так відповідь не можна обдурити приховані або іноземні дроти. Пакет навмисно не всі-або-необхідні: кожен відзнак транзакція і погана id стає пропущеною, тому що викинути дев'ять хороших перевиправки за десять років гірше, ніж звітність, що не займе. Збитий на 250 за виклик, щоб зв'язати обидва рядки і в режимі реального часу. Непідсилювач вирішує дані в короткій транзакційі через окремий боб і відправляється після того, щоб вихідний дзвінок з 30-ми читанням часу, ніколи не шпигує Підключення CRDB. Переміщення парі також те, що робить @Transactional Застосувати на всіх — самовідданість без операції без операції У зв'язку з відповідальністю ЛАЗИ буде кинути.
· EmailService
Приклад змінних для шаблону LEADS ASSIGNED
Без справи тут перегляд редактора адміністратора дає новий шаблон з кожною заготовкою, яка читає як розбитий шаблон, а не ненаповнений. приміткиБлок попередньо відхилений HTML, оскільки рендеринг не має умов — відправник згортає його до «» при відсутності замітки.
· kamo-shared-library
LEADS ASSIGNED шаблон електронної пошти; harden assignLead для масового використання
призначте, що у виробництво не було нікого. Перед проводкою насипний шлях відставки до нього, дайте йому гарантії, які необхідні шляхи: - візьміть orgId і перевірте BOTH свинцю і новий припис, що належить до нього, так що Відправка не може доходити через орендарів (відправлено як "не знайдено" «заборонений» так не можна використовувати для того, щоб зондувати чужорідні кришки - заблокувати ряд з FindByUidForUpdate: ручний відступ і струмінь бас-акцепт цільовий той же свинець і інакше переплетений в втрачений оновлення - очистіть прапори басейну, дзеркаливши кредитну допомогуПослуга. Лідер, призначений для автозабезпечення іншим чином залишається в басейні після того, як вони заявлені вручну і вийняти з-під її нового власника - опублікувати чат маршрутизації, оскільки оновлення вже робить, тому відкрити позичальника жити чат слідувати свинцю замість перебування з попереднім офіцером Також додайте канонічний шаблон LEADS ASSIGNED. Ключ повинен бути в CANONICAL KEYS або це ніколи не може бути засіяне і ніколи не може бути самозбиране, і кожен відправник повертає постійний 404.
· kamo-shared-library
Додавання MANAGE ORG BRANDING (174)
Org брендування кінцевих точок (логіка, кольори, фони, тематичне забезпечення) тільки власник, не залишаючи можливості делегувати брендинг без передачі власність орг. Додає делегований право; власник перевіряє перебування в якості не підлягає призначенню.
· kamo-internal
Автор елігійності матриць з каталогової панелі
Без матриці, що охоплює заставу сценаріїв та призначення, вартість повертається NO COVERAGE — Отже, перед цим можна придбати лише первинну резиденцію. Автори форми матриця і її клітини для обраного ліміту, окупності та призначення, з додаванням/відновити клітинку ряди, поряд з замком-полісою формою в одній панелі. Поставляючи продукт не заданий авторів однієї матриці на ACTIVE продукт інвестора, тому що Сфера продукту матриці НЕ NULL і не може виражати "всі продукти" як єдиний ряд.
· SecurityService
Реконструкція авторизації елітно-матричної документації; відновлення підбірки
Реле POST ****** через існуючий org-stamping писати Допоможисер, щоб автори стеварду мали тільки для свого тенанта. Цей поштовх також відреставрує проти спільної зміни, що дає можливість остаточно відновити кредит. kamo-shared-library не має CI власної — кожен сервіс clones і будує його з джерела — так що зафіксувати цей сервіс тільки тоді, коли цей сервіс перебудує.
· kamo-internal
Перебудувати студії агента як повноцінний робочий простір
Зняття ширині ковпачок не було фіксації; сам макет необхідно для виконання за простір, а не переносить в нього. Студія тепер три зони бокові: - **Outline rail** — розділи, з поточним виділяється як прокрутка (IntersectionObserver, top-weighted так розділ стає поточним, коли його заголовок до тих пір, де важлива увага. Секції, написані вручну, тому рукописна частина знаходжена пізніше без відкриття кожного. - **Редагор*** — самі зрізи, нахилу в стільки стовпчиків, як перегляд портів замість однієї вузької стрічки. - **Левка бесіда** — справжній стовпчик на широкому дисплеї, не смуга, яка згортає вміст при відкритті. Це редагування-і-watch петлі студії існує для: змінити інструкцію, подивитися зміни відповіді, без навігації. Один екземпляр TestDrivePanel, відреставрований замість дублікатів — його монтаж двічі починати два скидання. Нижче xl він скидає код редактора як повний пропускний ряд, а не витискаючи третій стовпчик на дисплей без приміщення для одного, і залізниця повністю приховує на маленькі екрани.
· kamo-internal
Авторські політики блокування — без одного, без курсу можна заблокувати за допомогою всіх
ТарифиПослуги відмовляється від блокування, коли ціна не несе lockPolicyVersionId ("обов'язкова версія файлу"), і результат тільки несе один, якщо інвестор має опубліковану версію блокування. Немає UI може публікувати один, тому блокування швидкості був ненадійним для кожного тенанту, а сам кінцевий пункт вже був побудований, org-gated і начиняє правильно. Відсутній метод клієнта і ця форма. Форма займає запропоновані періоди замка в якості замовленого списку, оскільки ПЕРШ стає За замовчуванням, так що це свідомо не сортувати їх; записи, які не є позитивним кількість днів скидається, а не відправлено як поганий термін блокування.
· kamo-internal
Покажіть, як працює кожен агент
Додає секцію виступу до вершини студії агента: розмови, як часто людина забрав і що її спровокувала, відступає результат і вартість. Сценарій так не може ввести в оману: - Зеро рендерує слово «Нон», ніколи не 0. - Частка надає лише тоді, коли є деномінатор; інакше «Не розмови Порівняти проти Відсоток нульового деноміатора немає. - Коли нічого в періоді перевозиться ціна, ніяка вартість фігури показана на всіх - лише пояснення, що ціноутворення було встановлено після завершення руху. Часті покриття показує кількість плюс скільки відповідей відсутні. - Припресований зовнішній вигляд представлений як функція, яку він є: мета - вони ваш запис, чому хтось не контактував. - Невідомі коди Enum деградують читати текст, а не сирий шлях ключа. Зняття переадресації повідомлень та ручних колон: API не агрегує вони за редакцією, так що ці клітинки будуть подаватися до виготовлення 0, як тільки це було вимірено. Відповіді наодинці відповімо те, що на столі - що збережено скопіювати ручний трафік. Складіть в існуючий документ студії прокручування, а не нову вкладку, і зберігали список агентів, де б точніше не вдається.
· AIService
Пер-аджентний рахунокcard
Який кожен агент насправді зробив: розмови, як часто людина повинна взяти і чому, з'являються результати, включаючи ті, що пройшли назад, і які його вартість. Кожен номер є одним з даних, які можуть підтримуватися. Три речі свідомо Нема в: - **No token totals.*** Вони реальні на шляху до синхронізації і виготовлені на потокове один (контент. Довжина() / 4), тому будь-яка частина винайдена. Відповіді про вартість те ж саме питання чесно, тому що це null, а не здогадується, де ціна невідомо. -********* Не дивлячись на те, що розмова не було доказів успіху. - **Не переверсія повідомлення або кількість посилань.** Ті не агрегатовані за версія, і випромінювання 0 для них буде виготовлення, що дає як вимірювання - точний збій цього екрана існує, щоб уникнути. Вартість несе явний відстежений прапор і розмір null, а не 0, коли нічого в вікно було ціновано, тому org, вартість якого поширюється на продаж 'не записано' замість впевненого $0.00. цінаdCalls є авторитет досить ніж сума, тому справжній нульовий від цінних безкоштовних дзвінків все ще читається як відстежити. Прозування транскрипцій здійснюється на VIEW SALES AGENT TRANSCRIPTS окремо від підрахунки - підсумок моделі конкретного відвідувача є змістом розмови, а не метрика. Агенти без повернення трафіку структурно заповнені порожній рахунок-картки: агент, який не прочитав у списку, як помилка, агент, який присутній з нулями як правда. parseHandoffArguments тепер ділиться з чатом шлях, а не перероблений, Отже, співвідношення придуманих причин ІНШІ не може дратуватися між двома. Люкс 150 тестів, зелений.
· kamo-shared-library
Групові сукупні запити для показників агента
Twelve @Query агрегати через сеанси, повідомлення, записи використання та вихідні торкніться, тому рахунок-картка є придатною для групних запитів, а не завантажувальних рядків в пам'ять. Два властивості застосовуються в довідках, а не зліва на дзвінки: 2.6 км Тестові сесії виключаються в самій запиту.* На молодий агент Авторські тести, як правило, можуть бути найбільшими з даних, і дзвоника, яка забуває фільтрувати, що виробляє цифри, які виглядають реально і не є. - **count(costEstimate) рахує тільки витрати NON-NULL.** Що дає Scorecard відрізнявся від "некоштовності нульового" - колапсування ті, хто поставив впевнений $0.00 перед тим, хто трафік просто Інформаційне забезпечення. Підключні дотики групуються рішенням, а не фільтруються для відправок. Про нас відмова – це більш цікава половина: агент, дотик якого майже всі SUPPRESSED QUIET HOURS - це невидимість, якщо декодери невидимі викинути.
· kamo-internal
Редагування витрат на кожну модель
Додавання для редагування ціни на модуль для налаштування провайдера. Ціни на насіння Кожна ціна списку постачальників, де ми знаємо, і заготовка, де ми не робимо - заготовки кошти просто не відстежується за цією моделлю, яка краще ніж номер, який впевнено невірно. Скопіювати людей, щоб перевірити насінні фігури на власний рахунок, а не представлення їх як авторитетний. Виправлено помилку відображення, що спійманий в рецензуванні: обробка причепів-нуклейка буде рульовано ціна 10 як 1. Тепер смуги нуль тільки після десяткової точки.
· AIService
Каталог цін, написання шляху та заправка
Підрахунок вартості не може працювати: AiModel має цінові колонки, AiModelController Читає їх і чатOrchestrationService читати їх для обчислення вартості НЕ ВІНГ написав їх в будь-яку точку. Моделі створюються лише за допомогою відкриття провайдера, і без ціни на API провайдера. 140 моделей, 0 за ціною, без шляху, за яким може змінитися. Колони були структурно ненадійними. Три частини: - МодельPricingКаталог насіння постачальника LIST ціни на відкриття, підібрані на нормалізований ідентифікатор з правильним префіксом фена, тому gpt-4 ніколи не може претензія gpt-4o. Нечаткі моделі (ТТС, тиснення, в режимі реального часу) відхиляються перенаправлення існуючої перевірки модальності - вони вексельують інший аркуш. - PATCH Endpoint + UI так org може виправити або очистити ціну. Org-scoped точно як існуючий DELETE. - Заповнення заповнює тільки стовпчики NULL, за стовпчик самостійно, і ніколи не перезаписи, які встановлюються org - будь-який інший спосіб внесення змін до цін буде лаціна. Idempotent, і загорнути так званий облік вартості ніколи не блокувати завантаження. **A модель, яку ми не впевнені про те, що не отримує ніякої ціни, а не вгаданий.* GPT-5, o3, більшість Mistral, DeepSeek, xAI, Cohere і Meta навмисно порожні; OpenRouter і HuggingFace ніколи не відповідають дизайном, оскільки вони враховують власні ціни і спадкоємне ціноутворення буде здогадувати. Неправильна ціна виробляє неправильну ціну рахунка-подібна фігура, яка впевнено неправильна - така ж вартість все ще не ускладнюється на шляху потокового передавання, де наклеюються підрахунки токени. Перетворення в пер-1k стовпець використовує круглиймод. ПРОМИСЛОВІСТЬ: ціна потрібно більше 6 десятків кидає в класі, а не мовчки зберігають причина і залишається порожнім. Люкс – 145 тестів, зелені.
· kamo-internal
Показати контекст штучного відключення до агента, який приймає
Відзначається подія системи AI HANDOFF як картку з причини, резюме AI, і колосальний переклад розмови так далеко - тому позичальник не обов’язково переоцінювати себе особою, яка підбирає. Три деградовані стани явні і видимі, а не мовні: transcript безоплатно, транскриптовий обрізається, і розвантажується смугами, що розвантажуються в транзиті. Засіб необхідно Якщо вони не залишають байдужими. Відвідувач і агент поділяють одну тему STOMP, тому жива рама прибуває почервоний (у Оцінка AI - це особиста оцінка відвідувача та не може йти до свого веб-сайт Скоріше, ніж розказав агенту перезавантаження, картка перечитує повний ряд від власної автентичної кінцевої точки. Реконструкція репродукції до неї прийнятий - відповідь, яка повернулася до списання, а не використовується, Отже, попередження може бути лише коли-небудь зрозумілим. Будь-яка відмова повертається до перевантаження повідомлення.
· APIService
Проксі публічний маршрут AI->human
************************************************************************************************************************************************************************************************************************************************************************** Проксіпед Медіасервіс поряд із створеннямПідтримка муфти. Без цієї функції відправки був загиблим на прибуття: Кінцева точка MediaService Hard-requires X-Internal-Auth, X-Публічний-Chat-Org-Id і X-Публічний-Chat-Key-Hash, що тільки це в'язання шлюзу, так що віджет POST 404'd тут і ніколи не досягнуто. Виготовляйте той же умовний *** охоронець, як створитиПідтримка. Ручна робота повне тренування, так що проксіювання його леза залишило б Квиток-підготовка маршруту, який обходить доказ-попередню роботу його силосного виконання.
· MediaService
Здійснити бесіду AI в гумку людини на звороті
Створює або повторно використовує сеанс підтримки, скопіює розшифровку AI в одній системі Подія, маршрути, і розповідають відвідувача чесно, що відбувається поруч. Конфіденційність розщеплюється аудиторією, що перший прохід отримав назад. Про нас АІ підсумок і причинДеталь є його особистою оцінкою відвідувача, і повне завантаження було досягнуто власного веб-переглядача відвідувача за допомогою двох вхідних дверей Рамка STOMP при цьому агент нічого не бачив. Редакція тепер діє на всіх перехідник-факційний; персистований ряд зберігає повне навантаження для агента. чат.session.{guid} є єдиною темою як аудиторія, так і в прямому ефірі каркас ріжуться до того, що відвідувач може бачити і агент UI перечитує повний ряд від власної автентичної кінцевої точки. Ідемпотенції наведено на aiSessionGuid, org-scoped та перевірили BEFORE все. Підключаючи його на сеанс і перевірте після створення - очевидний форма - це непотрібно точно, коли він має значення: птиця, яка втратила її сеанс Token завжди проходить перевірку і виробляє дублікатів і другий агент Сторінка JavaScript licenses API Веб-сайт Go1.13.8 Повернулися правда, коли запис мовчазся не вдалося, що найгірше можливо комбінація: відвідувач покаже їх контекст, нитка агента порожня, і не знає партії. Copy-on-handoff, не міграції: AI переходить, де аналітика їх читає.
· AIService
Агент-ініційований ручок для людини, з контекстом
АІ не міг раніше запитати людину: правила ескалації досягла моделі через складений запит, але не було машинно-прочитаного сигналу назад, тому Модель може бути тільки SAY, він буде кинути когось і нічого не сталося. - Синтетичний камо request human tool, описаний з власної ввімкості агента ескалація заголовків, тому модель бачить ідентичні умови запуску в підказка і інструмент. Прийнято до MCP відправлення - це сигнал, не реальний інструмент виклику - і TOOL ряд він зберігається, що робить причину міцною і аналітика-читати з нульовими новими стовпчиками. - Прикріплений ONLY, коли канал фактично має ввімкнену підтримку. Рука AI-only org інструмент, який обіцяє людину, яка ніколи не приїжджає, гірше не має інструменту: віджет не має вкладки підтримки, тому сигнал падає і Відвідувача залишається очікуванням того, хто ніколи не приїжджає. - Нова внутрішня кінцева точка повертає причину зльоту, резюме AI для тих, хто перейдемо, а USER/ASSISTANT трафарет. TOOL і системні ряди Виключений - людина потребує розмови, не техніка. - причинаДеталь і резюме навмисно змонтовані з браузера відвідувача: вони є особистою оцінкою відвідувача моделі. Тільки {requested, причина} перехресний на клієнт; MediaService виводить решту сервера. - АІ ніколи не переїхала або видалено. AiChatMessage залишається аналітичною системою записів; людина отримує копію. Також фіксує пізні помилки, знайдені на шляху: блок інструментів ігнорував пер-модель підтримкаToolUse прапорець, так що модель явно позначена як не підтримує інструменти Послати їх. 31 140 моделей позначено помилково; ai mcp server configs порожній кластер-широкий, тому сьогодні вибуховий радіус нульовий. Люкс - 124 тести, зелений.
· MediaService
Прийняття агента-санкціонованого зношування на відкриті нитки позичальника
Відправка відправника AIService Не всі вихідний шлях припиняється в записаному 404 - ворота, уповноважені на дотик, повідомлення було складено, і там не було його поставити. Власникство залишається розщепленим навмисно: AIService вирішить, що дотик може вийти і напишіть текст, цей сервіс розміщує його. Написання цих рядків з AIService б викти право власності на транскрипцію на послугу, яка володіє ні чат столи, ні розетки. Два речі це не буде. Він ніколи не створює розмову - може відновитися вже відкрився нитку відвідувача, ніколи не завадить вікно чату у когось, хто не було. І він ніколи не перехрещує оргів: вирішуючи керівництво іншим квиткам поставить одного агента org в іншій розмові org, тому org перевірте квиток, а не довірено від абонента. Повідомлення приписується до учасника сеансу, саме як повідомлення відвідувача - НЕ призначати офіцера людини. Рендеринг AI-компонентного повідомлення як Хоча названа, ліцензована людина писав це те, що правила штучного інтелекту існує запобігти. Сприяє оприлюдненню НТС, оскільки споживач використовує ДеліверПолітика. Новинка: видавництво вперше запобіжить повідомлення, але знизить його кожен підключений клієнт Повернутися як id, так і повідомлення посилання на повідомлення замість нитки. 404 при відсутності відкритої нитки існує, так, що дзвоник записує чисту відмову замість припустимої доставки.
· AIService
Виїзні тригери, планувальник і відправлення веб-чат
Зробіть зовнішній хребта насправді вогонь. Ворота, контактний стан, згода та Аудит вже існував; нічого не викликало дотик, щоб оцінити. - Увімкнено NATS для AIService за допомогою власних k8s/configmap.yaml (кожний Java сервіс Компанія KlusterServices має лише кластерну інфраструктуру. Плеймейт Відповідав: Наталія Конфіг стверджує свій власний рефлікт-фактор проти Центрально-провізовані потоки на старті, а AIService тільки підписуються на ядро НАТС і опублікування нічого, що дозволяє отримати нічого і ризикувати другий служба, що підтверджує кількість репліка. - AgentOutboundConsumer підписує безпеку.leads.rt> і споживає ONLY LEAD CREATED/LEAD UPDATED. Також видавець випромінює замки та події статистика - довести до особи, оскільки колега приймала редагований замок на записі не знежирюється. Ids прибувають як рядки з видавця, так що вони запалюють як текст замість asLong(). - AgentOutboundScheduler оцінює графіки тригерів під чотири межі: org набір отримано від агентів, які фактично випадають на (розміщені), тонкі ковзання час скибочка так вартість треків новий рівень, а не загальний, задня рядка заглушка, і знову-евалюація дампера так веде переправу під час тихих годин перерозподіляється один раз, ніж кожен кліщ на добу. - Композиція насіннєвого текстуКомплет з скомпільованою підказкою, ніколи не протягуйте, плюс пусковий інтенсив. Звіти про відмову від складів FAILED; немає консервованого повідомлення про випадання. - Відправка WEB CHAT продовжує існуючу нитку тільки. Аутрейч може відновити розмова відвідувача відкрита; він не може заважати вікно чату у когось хто ніколи не відкрився. - SMS / EMAIL / SOCIAL DM маршрут до записаного FAILED нагадування про відсутність комплаєнсу сантехніка, тому org вказує на тригери в SMS бачить, чому в журналі Outreach замість нічого не відбувається. 23 нові тести; люкс 68 і зелений.
· kamo-internal
Необхідно-текстовий редактор; dedupe AI загальними налаштуваннями; фіксація моделі toggle
Додавання редактора для org-wide необхідного відкриття / закриття тексту - компілятора і стовпці існували, але нічого не може встановити їх, тому можливість було мертвим. Зареєструватися Справді, що агенти не можуть видалити його, і що економія діє до кожного агент негайно, і тост звітує, як багато агентів були переобрані , , , , , Два передвиборних помилок, знайдені по дорозі: - Перемикач "Авто-виберіть найбільш доступні моделі" ніколи не працював. Передній читати дані.autoSelectModel і відправлено autoSelectModel, але повернення повертається і expects autoModelEnabled - так, щоб окуляри завжди були дійсними і його значення було відхиляється на кожному збереженні. Виправлена передня; не потрібно зміни сервера. - AiGeneralSettings.tsx був мертвим кодом, ніколи не імпортований, в той час як дієсловацький інлайн дублікати жили внизу SecurityModelsTab.tsx. Скоріше виконання потрібен текст двічі, дублікат видаляється і SecurityModelsTab імпортує загальний компонент. Також заміняє наконечник з продажу-агентів, який ще розповів користувачам функції незабаром.
· AIService
Потрібний текст і застосувати його відразу
AiOrgSettings придбало примусовийPreamble/forcedFooter and SalesAgentCompiler вже складіть їх до кожного агента, але контролер налаштування не читав, ні писав, ні вони - так що можливість був мертвим: врятувати з'явився, щоб досягти успіху і повернутися назад заготовка на перевантаження. GET тепер повертає обидва поля (в тому числі в неналаштуваннях за замовчуванням) і PUT наполегливо їх, нормалізуючи порожній для null, щоб очистити поле фактично очищає його замість того, щоб залишити порожній рядок, щоб бути складений у вигляді променевого сепаратора. Потрібні тексти тепер приймають ефект IMMEDIATELY, шляхом відновлення та перепланування кожен агент, який публікується в org. Подати заявку на наступне повідомлення кожного агента дешевше і є пасткою: адміністратор, який додає 'направощі сказати, що ви автоматизовані Помічник буде вірити, що він живий, і агент, ніхто не буває перепланувати продовжить говорити без неї. Необхідна лінія, яка мовчить не застосувати гірше, ніж не жертвувати. Кожен пошкоджений агент отримує один новий збережений Скопіювати позначені чому, і відповідь повідомляє, скільки було переобрано так UI може сказати, що насправді сталося замість того, щоб просто "Зберегти".
· kamo-internal
Повна сторінка AI Sales Agent studio, заміна модалей
Редактор агента був ~800px MUI Діалог, в якій вся поверхня була 10-рядна textarea, на одній вкладці AI, яка використовувала діалог на всіх. Це зараз особливий маршрут, і модель редагування за ним структурована, а не один благ. - /settings/ai/sales-agents/new — 720px стовпчик, а не студія. Шаблонні картки (карта IS промисловість, так що ні галузевий спад), потім два поля: назва та один вирок про бізнес. Робочий агент в хвилину. - /settings/ai/sales-agents/[id] — повна ширина, ONE прокручує документ з sticky секційні заголовки, вміст, що захоплюється на 880px, так однолінійні вводи не розтягуються через дисплей 4K. No 240px навігація: дев'ять секцій є прокруткою-шпилькою роботою, а не на роботу. - Триває вгору, а не постійно зарезервований стовпчик. Анжела порожній чат пане біля бренд-новий агент був відведений простір, який читається як відмова користувача заповнити його. - Готовність - замовлений, нездійснений список того, що б допомогти - ніколи не дроб. Список розповідає про те, що робити далі. - Заблоковані правила надають замкнені і незнімні, а також вив'язувати секцію вручну попереджає, коли він містить один (компілятор, який зараз відновлює їх незалежно). - Заголовок стверджується, що відредагує лише нові розмови, оскільки підказка є знімним у створенні сеансу та користувачами, інакше зробити висновок їх зміни не працювали. - вихідВключений тільки відправлений при фактичному зміні: сервер 403s весь Якщо це поле присутній без MANAGE SALES AGENT OUTREACH, то в тому числі це в кожному автозбереженні буде перервати студію для всіх, хто не має права. Також видаляє дублікатину сиру "AI системний підказка" з чат-каналу редактор. Він був другим, слабким місцем для автора того ж, без версія, без замкнених правил і історії — якийсь редактор, який ви прийшли до Відкрито рішення про те, що клієнти чули. Існуючі підказки все ще вирішуються; канали за допомогою одного зараз отримайте помітку в агентах. Скопіювати не містить штучного бангону, і жорсткийкодований англійський масив галузі замінено на перекладені етикетки.
· AIService
Продаж-агентний компілятор, версія, вихідний воріт; фіксувати повторне відтворення інструменту
Конфігурація структурованих агентів на підказку системи, замерзання на сайті версія, а також набирає агента, яка повинна проходити до початку контакту. Компілятор - AgentConfig + SalesAgentCompiler: чистий, детермінаційний компіляція структурованих Налаштування в розділений запит. Зручні розділи випромінюються таким чином агент не погоджується з документом, який в основному очолює. - Секційно-рівнева перенаречена ("Написати цю частину себе"), а не на рівні документа Перемикач сировини: автор отримує повну експресивну потужність на одному розділі, коли кожен інший розділ зберігає компіляцію, зберігає замкнені правила та зберігає редакцією. - Цей же механізм робить міграцію байт-ідентифікатором - прозування попереднього налаштування агента зберігають в цілому перевизначення і компілює назад, тому міграція день - це неоп для агентів, які вже говорять про клієнтів. Перевірено тестом. - PhraseBank навмисно два розміри, з хорошим прозуванням на TEMPLATE. Глобальний банк, що входить до складу кожного компонента, потребує ~90 рукописних абзаців, дегенерує у складені пункти, і зробить кожен орг відкритим з тим же вирок - який знищує одну річ, яка є купівлею. - Шість шаблонів (front-desk і inbound-lead first: вони горизонтальні і кришки будь-який орг, який не входить до списку. Кожні кораблі зафіксовані правила відповідності Модель не може видалити, перевірено тестом. Графік роботи + авторизація - Publish фрези {config, скомпільованийПромпт, хеш, модель, провайдер}; rollback Реквізити і відновити проект так, що студія ніколи не може показувати одне агент обслуговує інший. - Контролер має право на перший раз. Попередньо ANY автентично У будь-якому оргу можна переписати те, що org каже своїм клієнтам. Падіння назад до MANAGE AI SETTINGS так немає існуючого адміністратора заблоковано. - Громадський чат віддає перевагу замороженню опублікованої версії ТренінгКонтекст та штампи продажівАгентІд/версіяІд на сесії - агент був вже вирішений, і був відхилений. - Проектування штучного інтелекту: один вирок, рецензований налаштування. Правила блокування не показаний до моделі, тому лінія комплаєнсу ніколи не може бути видалені за допомогою інструкції-закриття. Вихідні ворота (все 14 правил протестовано) - Опт-аут збиває кожну іншу перевірку і повідомляється як причина, тому що причина, що записується на відмову, є самим доказом. - СМС без запису згоди відмовлено: під ТППА тягар доказа на відправник, тому відсутність запису не має згоди. - Затишні години судять, де КОНТАКТИ, а не де бізнес. - Послані відправки не витрачають на дотик бюджету; пригнічуються відправки не або, або один блок буде каскадом, щоб блокувати все після нього. - Бахрейн не вдається CLOSED - вихідні ворота, які помилки відкривають повідомлення нікому Уповноважений, одна відмова тут, яка не може бути неоновою. Виправлення, знайдені по дорозі - Респлей історії інструменту був розбитий: рядок TOOL не зберігається і не вдалося Помічник інструменту використання ніколи не персидійно, тому поворот 2 відправлено на нуль-content блоки. Увімкніть інструменти, які не змогли пропуститися в будь-який час. - текстовіКомплети не встигли (блокування .get(), приколіть нитку на повільному провайдер) і записано без використання, що робить кожен помічник невидимимим до векселів. - Системний розділ в контекстній фітингу був незрівняний, тому дієслово агент плюс RAG блок може переповнювати всю історію. - вартістьСестимат тепер заселений тільки на шляху синхронізації, від справжніх постачальників токенів. Потоком залишається null: він тканинує токени як вміст. Довжина ()/4 і множення що за реальною ціною видає рахунок-фактуру номер, який невірний.
· kamo-shared-library
Конструктивна конфігурація продажів, версія хребта і вихідний стан
Replaces the single training-context blob with a structured, versionable agent model, and adds the per-contact spine an agent needs before it may initiate contact rather than only reply. - SalesAgent gains configJson (jsonb-as-String, matching WebChatIntegration .designConfig), hasConfig, publishedVersionId, audience and outboundEnabled. trainingContext is retained as the COMPILED OUTPUT so every existing consumer keeps working untouched. hasConfig is explicit rather than inferred from trainingContext being blank, because once it is compiled output it is never blank and any blankness test would be unreachable. - SalesAgentVersion freezes {configJson, compiledPrompt, compiledHash, modelId, providerId} per publish. The model is pinned alongside the prompt: freezing instructions while the model auto-routes would make the artifact a half-truth. - AiChatSession/AiUsageRecord gain salesAgentId + salesAgentVersionId. Previously "which agent handled this?" could only be answered by walking the mutable, nullable, non-FK WebChatIntegration.salesAgentId hop, so reassigning a channel silently re-attributed all history. - AiOrgSettings gains forcedPreamble/forcedFooter as NEW nullable columns rather than reusing defaultSystemPrompt, so concatenation is a no-op until an admin fills one in. Reusing the existing field would have changed behaviour for every org that already had one populated, on deploy day. - AgentContactState + AgentOutboundTouch: per-contact cross-channel suppression, explicit per-channel opt-out columns and timestamped consent. Opt-out is stored as real columns rather than JSON because "prove this number was suppressed on that date" must not depend on JSON path extraction. The touch log records REFUSALS as well as sends - a log of sends proves what you did, a log of decisions proves what you would not do. - Rights 168-173 split **************** off MANAGE_AI_SETTINGS(53), which previously gated none of this.
· kamo-internal
Вкладка Агентів збуту AI + інструкція із застосування
Побудувати / settings /ai?tab=sales-agents (was a stub): orgs створюються агенти для своїх Промисловість продажів, або з вбудованого шаблону або шляхом написання контексту навчання себе, потім редагувати / видаляти їх. Канали чату (/settings/features/chat) тепер кожен вибір, який агент приводить, що AI каналу, незалежно — агент, який перенадає запит на сиру систему.
· SecurityService
Збагачення позичальника чат маршрутизації + захоплення суб'єкта
чат-роутинг тепер повертає призначених офіцерів NMLS, назва, фото, телефон, електронна пошта і чи є вони мають дійсну ліцензію на суб'єктно-професійний стан, плюс і ми все одно повинні запитати про це. Зловживання SAFE-Act картки Вирішені дані, так що чат ніколи не може показати завантажений стиль. Додає POST /portal/subject-state: коли свинець не має стану власності, але позичальник може встановити його з чату; він протікає через патчСтимейт (і його призначення) Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації.
· MediaService
Призначте агента з продажу на канал + звіт про наявність LO
- WebChatIntegration CRUD нитки продажівAgentId (не чищає призначення) - в даний час ми повертаємо статус учасника поряд з онлайн, тому Віджет може показати реальний статус замість сідла. Пробес-орг все ще тільки {online:false}.

Твій всесвіт чекає.
Почати безкоштовно за декілька хвилин. Додати продукти, коли ви будете готові — без перенесення, без нових реєстрацій.
Безкоштовно назавжди — не потрібна кредитна карта