Changelog
Cosa c'è di nuovo.
Ogni miglioramento alla piattaforma, come si spedisce.
· SecurityService
Un rinominato raggiunge le caselle di posta del membro (SP95 T36)
Dopo un cambiamento commesso di "Prima Ultimo", SecurityService messaggi {precedenti, attuali} a EmailService's Una volta per iscritto. dell'utente, con il segreto interno KamoAI (la fase di noleggio MAILBOX client e URL). EmailService rinomina solo le caselle di posta che membro detiene come primario e che porta ancora il vecchio nome automatico. - MemberNameChangeNotifier: after commit only (AfterCommit), off the richiesta thread su kamoaiExecutor, miglior sforzo (WARN, mai fallisce salvare); un nome cancellato a vuoto non è annunciato. - Chiamato dal profilo utente PUT e dal conto della piattaforma Utenti modificare, solo quando "First Last" è cambiato. AccountController's parseName nomina un account cliente, non una persona, quindi non annuncia nulla.
· AIService
Un org che classifica OpenAI trascrizione primi stream STT attraverso di esso, e ogni biglietto nomina il suo dialetto di sessione (SP95)
modello di trascrizione è stato abbandonato come ADAPTER UNSUPPORTED e ogni STT in streaming il biglietto è andato a Kamo Speech sulla CPU. Ogni riga di catalogo ora nomina la sessione (il modello cavalca nell'aggiornamento della sessione), e il biglietto risponde sessioneDialect.
· APIService
Moduli di contatto del sito web del percorso, sul bilancio di creazione della sessione
POST /api/public-chat/contact proxies al nuovo contatto di MediaService endpoint attraverso lo stesso sito-chiave, origine e controlli di portata di ogni altre chiamate pubbliche, quindi il modulo di contatto di un prestatore fa un biglietto La coda di supporto del finanziatore. Crea una sessione e un biglietto, quindi protegge il *** come il suo siblings e attinge al rigoroso budget di creazione (3/min per IP). È quello che crea il percorso senza "sessioni" in esso, quindi è abbinato da nome; lasciato al budget del messaggio uno script potrebbe file 30 biglietti al minuto da un indirizzo.
· MediaService
Il modulo di contatto del sito web di un prestatore archivia un biglietto nella propria coda
POST /api/media/chat/contatto pubblico, raggiunto attraverso il sito-chiave del gateway cancello come ogni altra chiamata pubblico-chat, così i nomi chiave l'org e la sua le origini consentite nominano il sito web. Il modulo di contatto della piattaforma potrebbe non fare questo: file nella piattaforma org, qualsiasi sito lo ha pubblicato. Un modulo di contatto è una chat aperta e digitata in una volta, quindi è costruito da esattamente quei due passi: creareSupportSession (argomento dell'integrazione, attribuzione, geo, la strategia di assegnazione del tema dopo commit) e invia SupportMessage (il primo messaggio del visitatore). Solo il titolo e descrizione differiscono, ed entrambi conducono con una carta di nome, e-mail e telefono, perché il visitatore ha lasciato la pagina e l'e-mail è il modo di tornare a loro. La coda viene detta una volta che il messaggio è nel thread, come con l'IA Spegnimento. Un posto di miele riempito risponde il successo e i file nulla.
· MCPGatewayService
Rag search prende il pubblico PUBLIC, la ricerca che il pubblico può leggere (SP95 T12)
Una AI su una telefonata risponde a un chiamante anonimo, quindi cerca solo il pubblicato articoli il pubblico può leggere, mai note (spec D12). L'opzionale enum è ["PUBLIC"] ed è trasmesso a RAGService (Task 11); qualsiasi altro valore è INVALID ARGUMENTS per schema e non raggiunge mai RAG.
· KlusterServices
Rspamd mantiene i propri dati nel proprio Redis
local.d/redis.conf è ora la chiave redis-own.conf: rspamd-redis in mail, database 0, lo stesso login mail rspamd. Il subPath cambia la capsula. La vecchia chiave rimane nella ConfigMap fino alla conferma dell'interruttore, quindi `kubectl -n mail rollout undo di distribuzione/rspamd` è l'intero rollback (SP98-M-1, fase 2 di 3). Spedirlo solo dopo che i dati di rspamd sono stati copiati in rspamd-redis.
· KlusterServices
Un redis di rspamd
rspamd parses posta non attendibile e log in alla piattaforma Redis, accanto ad ogni sessione del membro, e nessun ACL può tenerlo lì: un utente non può essere indirizzato a un database; gli script di rspamd passano etichette di classe, bandiere e msgpack blobs come KEYS, quindi una chiave-pattern ACL rifiuta ogni Bayes imparare; e le sue baie scadenza SCANs, che elenca ogni nome chiave (*** e i nomi OTK sono portatori credenziali) qualunque sia il modello. Questo aggiunge rspamd-redis in posta: la piattaforma Redis's build, pinned to k1m1 accanto a rspamd con i suoi file sul disco di quel nodo, un database, PING solo senza login, mail rspamd con password esistente di rspamd, kamo ops per operatori, e una NetworkPolicy che ammette i baccelli di rspamd da solo. CI applica e lo attende prima di rspamd. rspamd stesso è immutato fino al prossimo commit (SP98-M-1, fase 1 di 3).
· SecurityService
Un salvataggio charter raggiunge subito il runtime AI, e il profilo charter nomina la società (SP95 T6)
Ora porta una causa. Il percorso dei diritti invia DIRITTI; una carta impegnata salva invia CAPITOLO per ogni AI interessato membro, con i diritti attuali del membroStamp (leggi dopo l'impegno, in una query) e svuotato aggiunto/rimossa, così ogni pod kamoai gocce che AI's carta e elenchi di strumenti in una volta invece di servire una lista di strumenti stanti. - Un salvataggio a livello di membro (S6) annuncia il membro quando è un AI. - Risparmio di ruolo, dipartimenti o di lavoro, solo charter (S7-S9) o completo aggiornamento trasporto charterItems, annuncia ogni squadra AI non-retired membro dell'org, da una domanda a chiave org. - CharterProfile acquisisce orgName, il nome della società parlata (OrgSpoken Nome: nome breve, altro nome di visualizzazione, altro nome legale), per il brief linea di identità.
· MCPGatewayService
Approvals request invia una classe uno strumento esegue a tale strumento; il timbro charter mantiene strumenti freschi (SP95 T10)
approvazioni request rifiuta una classe di azione uno strumento di catalogo esegue con INVALID ARGUMENTO UTILIZZATO (tool, strumenti, actionClass} o NO TOOL FOR YOU quando il chiamante non può vedere nessuno di questi strumenti; solo le classi DECISION ONLY ancora ottenere approvazione di sola decisione. ToolSpec.alsoClasses dichiara le classi che un pianificatore può re-class a (mail, chat, calendario, attività, phone call), il registro deriva dal classe -> tavolo strumenti da loro, e la visibilità nasconde uno strumento solo quando ogni la classe che può prendere è FORBIDDEN. Il gasdotto ora rifiuta un progetto FORBIDDEN classe su una riesecuzione approvata anche, e CharterPolicy specchi D1 (un non nominata PLACE INTERNAL CALL eredita un FORBIDDEN PLACE CALL). X-Kamo-Charter-Stamp raggiunge CharterClient.policy(memberId,attesoStamp), che rilegge una carta cache sotto un altro timbro in una volta; strumenti / lista è giudicato da un charter letto e risponde..
· kamo-apps
Aprire l'applicazione con le risposte che un sito del prestatore ha già preso
Il sito di marketing di un prestatore può ora portare la sua forma breve "get iniziato" e inviare il mutuatario qui con scopo, nome, e-mail e telefono riempito, così nessuno li digita due volte. Le risposte viaggiano nel frammento URL, mai la stringa di query: un frammento non viene inviato al server, quindi un mutuatario email mai atterra in un registro di accesso o un referer, e il modulo lo cancella dalla barra degli indirizzi non appena l'ha letto. Lo scopo viaggia come il nome enum (acquisto, raffinazione) ed è abbinato contro le proprie opzioni del prodotto, quindi il sito non ha mai bisogno di un id ordinale. Vedere non salva nulla: su un primo prodotto il piombo è ancora creato dal primo "continua" del mutuatario, come se avessero digitato le risposte.
· SecurityService
SP94 DDL per le due colonne fonetiche dell'org, fissate da un test di contratto
orgs.title phonetic e orgs.title short phonetic, entrambi nullable VARCHAR(255) senza default e no CHECK, la stessa forma degli utenti.name phonetic. Applicato a mano alla produzione (SP94 Task 2); Il test del contratto indica la sola dichiarazione di spec 5.1.
· AIService
E5 parla con la voce ricordata di un membro dell'AI, il suo modello preferito prima, e nomina la voce che ha inviato
Per un soggetto AI (la sessione dell'AI, o il gemello interno con ?memberId=) ogni Il candidato TTS viene inviato alla voce che il risolutore SP96 decide, e il modello di risposta la decisione è ricordata dopo la sintesi (inserto, confronto e set, tatto oraria). Con il modello kamo:auto il modello preferito del membro è camminato prima. La seduta di una persona, incluso uno inviato come attore AI, mantiene vocePer invariato. La memoria è il massimo sforzo: una lettura o scrittura fallita è un ATTENZIONE e il membro parla ancora. Ogni parola risponde porta X-Kamo-Voice-Id.
· RAGService
Audience PUBLIC restringe una ricerca di sessione agli articoli pubblici pubblicati
Una ricerca di sessione può inviare il pubblico: "PUBLIC" per cercare come pubblico widget fa (nessun membro, nessun tipo di membro): articoli pubblicati contrassegnati per il pubblico, mai un biglietto. Un membro dell'IA su una telefonata cerca con la sua propria sessione TEAM MEMBER mentre un chiamante anonimo guida le domande. Il campo si restringe solo: qualsiasi altro valore è 400 {error, campo:"audience"}. Il sentiero interno lo ignora. KamoAI SP95 Task 11, spec §5.5, D12.
· VOIPService
La linea di squadra del server telefonico per il trasferimento non denominato di un membro dell'IA
SP95 D10: le impostazioni della voce dell'IA prendono defaultTransferExtension (digits, come il fallback; lo sgombera vuoto) e lo eco. Il nuovo percorso interno E' il momento giusto. risponde all'obiettivo SIP della linea di squadra o 404 NO TEAM LINE quando non è impostato.
· SecurityService
La carta di chiamata di un collega per le chiamate AI, e il consenso all'IA chiama il proprio profilo (SP95 T5)
- E' una cosa da fare. (X-Internal-Auth): una squadra nome del membro, tipo, se sono ancora qui, la loro zona efficace (sito di lavoro, membro, org, UTC), i numeri E.164 sul loro profilo (CELL, PHONE, WORK) e il loro consenso permanente. A membro che non è in squadra (un portale login) non ha carta. - E' una cosa da fare. una persona scambia membri del team AI richiede uno dei loro numeri, o off; un record di registro sotto il membro: MEMBER PROFILE. Auto o MANAGE MEMBER SECURITY legge (ogni numero mascherato); solo la persona loro stessi scrive. - MemberZoneResolver: Risoluzione di TimezoneController, estratta invariata, quindi il membro zona e un'intelligenza artificiale sta chiamando ore per loro sono d'accordo.
· AIService
L'uso del computer è guadagnato attraverso gli strumenti di Kamo computer * da qualsiasi fornitore (SP98 T25A)
strumento informatico nativo con un beta intestazione e passato su qualsiasi 2xx. I membri dell'IA guidano la loro postazione di lavoro attraverso gli strumenti computer * di Tool Plane, mai un venditore API nativo, quindi il controllo ora prova esattamente questo, lo stesso per ogni fornitore tipo il cui adattatore di chat invia immagini: tre schermi di prova 1280x800, un nome pulsante su ogni, cliccato tramite computer click(x, y) all'interno di quel pulsante. Un passo scrive toolVersion kamo computer 1, il contratto che il modello ha passato. - Il router serve COMPUTER USE dove l'adattatore invia immagini e riproduzioni risultati strumento (un loop strumento sopra gli screenshot), chiunque il venditore. (UI-TARS, GUI-*, un modello di computer-uso) sono accennati per il controllo di sistemare. - Un'intelligenza artificiale può ancora usare COMPUTER USE solo una volta che è VERIFIED.
· MCPGatewayService
Phone call chiama un collega di membroId, come PLACE INTERNAL CALL (SP95 T9)
Un collega è nominato dal membroId, mai per numero: il pianificatore legge il loro Sicurezza Servizio carta di chiamata e comporre la cella, altrimenti il telefono, altrimenti il lavoro numero sul loro profilo (un nome deve essere uno dei loro). Solo un attivo persona dell'org del chiamante può essere chiamato così; i rifiuti sono INVALID ARGMENTI NON A COLLEAGUE, CANNOT CALL SELF, NO NUMBER ON PROFILE o No. La chiamata è PLACE INTERNAL CALL, i suoi nomi riassuntivi collega e non ha numero, e K6 ottiene calleeMemberId. Il calle la richiesta verificata, consegnata sul piano predefinito come una richiesta verificata, è la consenso della chiamata (consentBasis CALLEE REQUEST con la sua richiestaRef). Una chiamata numero rimane PLACE CALL, invariato. Le classi d'azione guadagnano PLACE INTERNAL CALL.
· kamo-internal
SP96 sesso sul profilo del membro, gated come dati personali
Una scheda personale nella camera di identità detiene il sesso del membro: Non specificato, Femmina o Maschio. È sulla riga del membro, quindi le porte mirror regola D3 di SecurityService: il membro e i loro amministratori vedere, e su un AI così fare i suoi dirigenti di forza lavoro e il suo supervisore. Una persona cambia il proprio, un AI non lo fa mai. Non specificato salva come null. La chiave cavalca un salvataggio solo quando era cambiato, perché SecurityService lo rifiuta da chiunque non possa scrivilo (SP96-T5-1). Un rifiuto che nomina un campo ora mostra sotto questo campo invece di sotto ogni campo nella stessa richiesta.
· kamo-internal
SP96 sesso sul profilo del membro, gated come dati personali
Una scheda personale nella camera di identità detiene il sesso del membro: Non specificato, Femmina o Maschio. È sulla riga del membro, quindi le porte mirror regola D3 di SecurityService: il membro e i loro amministratori vedilo, e su un AI così fanno i suoi dirigenti di forza lavoro e il suo supervisore. Una persona cambia la propria, una AI non lo fa mai. Non specificato salva come null. La chiave cavalca un salvataggio solo quando era cambiato, perché SecurityService lo rifiuta da chiunque non possa scrivilo (SP96-T5-1). Un rifiuto che nomina un campo ora mostra sotto questo campo invece di sotto ogni campo nella stessa richiesta.
· kamo-shared-library
Il controllo computer-uso scrive il contratto un modello superato (SP98 T25A)
COMPUTER USE è guadagnato attraverso gli strumenti di Kamo computer * da qualsiasi fornitore, quindi strumentoVersione è riempita di sonda: i registri di controllo che contratto il modello passato, e un amministratore che aggiunge la capacità non ha alcuna versione strumento fornitore per digitare.
· kamo-shared-library
SP96 ritirare il perno VOICE TTS del charter
Un oggetto VOICE è solo stile: la validazione rifiuta la voceModelId/voiceId (FIELD NOT ALLOWED), il risolutore non ha chiave TTS ed Efficace no Tts, e CharterView non emette alcun voice.ts. AIService ricorda ogni AI voce del membro per modello invece. Le colonne e le mappe dell'entità rimangono; una fila che tiene ancora un perno è emessa come il suo stile, e salvarlo schiari il perno.
· kamo-shared-library
PLACE INTERNAL CALL, consenso del membro, nome della società parlata, linea di squadra, approvazione ON REQUEST
SP95 Task 4 (spec §5.2, D1, D4, D10, D15, D24): - AiActionClass ottiene PLACE INTERNAL CALL (AUTONOMOUS), allegato ultimo. CharterRisolvere risolve un non nome PLACE INTERNAL CALL FORBIDDEN, con la sorgente di PLACE CALL, quando PLACE CALL ha risolto FORBIDDEN. Il berretto di sezione APPROVALE segue il conteggio di classe (19). - AiVoiceConsentVia guadagna MEMBER PROFILE, ****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** - OrgSpokenName: il nome breve, altrimenti il nome del display, altrimenti il nome legale. - No, no. (DEFAULT TRANSFER EXTENSION, nullable). - AiCallEventType guadagna CONSENT BASIS. - AiApprovalMode ottiene ON REQUEST; AiApproval.requestRef (request ref VARCHAR(200)). Le due nuove colonne devono esistere (SP95 Task 3 DDL) prima che questo raggiunga il principale.
· AIService
Un membro dell'AI ricorda la voce per il modello di discorso, e il risolutore che lo tiene o lo rimprovera
Il negozio ai member voices (JDBC, TransientDbRetry, compara-e-set re-picks, un tocco orario, il CHOSEN upsert e la bandiera preferita a uno stato), i fatti membri di cui ha bisogno (AI, sesso, lingua), e il puro risolutore di SP96 spec sezione 5.4: PASS, USE, KEEP o PICK per candidato, per lingua poi parità di genere, ancorato sulla voce preferita
· VOIPService
Il file DDL per la linea di squadra del server telefonico
SP95 Task 2. nullable VARCHAR(20) che detiene l'estensione un trasferimento non denominato dell'IA anelli (la linea di squadra, 8200 sul k1m1 FreePBX). Applicato a mano dal task 3 prima della costruzione che la mappa; Sp95DdlContract Perni di prova il file al Spec e' un'affermazione ripetibile, additiva, nullable.
· SecurityService
SP96 opzioni di noleggio per lasciare l'estensione del telefono e la stazione di lavoro
Un corpo di creazione di un AI assume iPhoneExtension e aiWorkstation (JSON booleans, vero quando assente). Un passo a sinistra viene creato SKIPPED con NOT REQUESTED AT HIRE, così il noleggio raggiunge ancora COMPLETE, e il percorso di riprovazione lo riapre come Impostare ora. La visualizzazione della lista di controllo segna una tale riga saltataAtHire e riprovabile. Un ribelle in pensione con la ragione del pensionato, in modo che non possa mai essere impostato su un AI in pensione.
· AIService
Il genere di una voce, dal suo record, un tavolo curato o il suo stile, e i generi dei fornitori tenuti dalla sonda
SP96 Task 7. VoiceGender {FEMALE, MALE, NEUTRAL, UNKNOWN} con una parsa leniente, e VoiceGenders.of(tipo, modello, record) applicando spec 5.3 in ordine: il convenzione, Piper norman, Deepgram thalia), uno stile esattamente femminile/maschio, Altrimenti. VoiceInfo guadagna genere: ElevenLabs mappe etichette. genere, Nessuno. ProbeRunner memorizza il genere con gli altri campi vocali. Niente legge il genere ancora (Task 8).
· SecurityService
SP96 sesso sul profilo membro e alla creazione, gated come dati personali
GET /api/security/members/{id} nomi sesso (FEMALE, MALE o null) solo ad un chiamante che può leggerlo (MemberSexAccess, spec D3); la chiave è assente per Qualcun altro. PUT rifiuta un cattivo valore (400 sesso sul campo) e un chiamante che può non scriverlo (403 NOT ALLOWED sesso sul campo) prima di tutto è scritto, set e controlla un cambiamento da parte di qualcuno diverso dal membro: un'intelligenza artificiale è con i valori, una persona è senza di loro. La creazione dei membri legge il sesso dal per ogni record attraverso lo stesso MemberSexWire.
· kamo-shared-library
SP96 MemberSex, Member.sex e un genere nel registro vocale
membri. sesso è una colonna nullable STRING (FEMALE | MALE, null = no specificato), quindi un membro AI può parlare con una voce corrispondente. Il TTS e Il record di voci REALTIME AUDIO accetta un campo di genere opzionale.
· AIService
La tabella ai member voices e la migrazione vocale-pin charter, come SQL applicato a mano
SP96 Task 2. La tabella ricorda la voce di un membro AI per modello TTS (spec 5.1); la migrazione sposta ogni charter perno VOICE a un CHOSEN, MIGRATED, riga preferita e cancella solo un perno la cui voce esatta è ora ricordata (spec 5.9). È corsa una volta per Task 11, dopo il Task 10 è stato distribuito. Sp96VoiceDdlContractTest mantiene entrambi file recuperabili, additivi e esattamente il contratto.
· SecurityService
SP96 DDL per i membri. sesso, incrinato da un test di contratto
Il sesso di un membro è un nullable VARCHAR(16) (FEMALE | MALE, NULL = non specificato), applicato a mano in SP96 Task 3. Il test del contratto mantiene il file reperibili, senza NULL senza DEFAULT e senza CHECK, JSON o DROP.

Il tuo universo ti sta aspettando.
Aggiungi i prodotti quando sei pronto: nessuna migrazione, nessun nuovo login, nessuna richiesta di pagamento.
Gratis per sempre — nessuna carta di credito richiesta