Changelog
Qué hay de nuevo.
Cada mejora de la plataforma, a medida que se envía.
· kamo-internal
Ajustes → Teléfono → No contacto, y el softphone advierte antes de llamar a un número listado
Propietario 2026-10-15: una lista de no contacto en toda la empresa por organización, abarcada por canal. - Ajustes → Teléfono → No contacto (MANAGE VOIP SETTINGS, settingsMenu sub entry, no enlace de administración-bar): el modo de llamada (enciende y marque en confirmación, el predeterminado, o bloque), filtro de canal, búsqueda, añadir, importación (paste o .csv/.txt, hasta 1000), eliminar con un requiere razón, y la historia (todos añaden y eliminan, por quien, por qué). - El softphone: SoftphoneContext manos cada consumidor un dial vigilado, así que cada uno llamada de la persona (la llamada de la ventana de Softphone, y cada llamada en otro lugar, que la abre prefilled; el marcador externo JustCall también) pide GET /api/voip/do-not-contact/check primero. Un número de lista muestra "{number} pidió no ser llamado en {date}" con Cancelar / Call de todos modos, o, cuando la organización bloquea, OK solamente. Sólo la llamada la entrada cuenta. Un cheque que falla los diales (la llamada de un SI falla cerrada en kamoai-service). - Llaves: kamo-translation-dictionary 7b74200b (pushed first). Pruebas: NoContactoTab.test.tsx, NoContactoDialGuard.test.tsx, noContactoDial.test.ts (RED on origin/main, GREEN here), configuración de la cobertura del menú; los 20 protectores fuente y check-i18n-keys --require-messages contra el diccionario empujado.
· kamo-internal
SI routing muestra lo que los SI utilizan ahora — el modelo efectivo por tipo de trabajo y si el orden de la org o el predeterminado automático lo escogió; para el discurso a texto, el modelo en llamadas telefónicas y en reuniones, streamed o por frase, con la pista de precisión automática
Propietario 2026-10-15: "Si se añade un modelo y se habilita a los Proveedores SI que apoyan el discurso al texto, debe usar el mejor". Lea las llamadas efectivas / efectivas de AIService / efectivaMeetings en cada entrada de enrutamiento; un servicio AI sin ellos no muestra nada nuevo.
· EmailService
Los suscriptores de correo electrónico llegan a la lista de no contacto, y campañas, acciones y el correo de un SI comprobarlo
Propietario 2026-10-15: una lista de no contacto en toda la empresa por organización, con alcance por canal; un correo electrónico bloquea el correo electrónico solamente. - Escritor: MirroringEmailOptOutLedger (el canal de correo electrónicoOptOutLedger) manos cada uno cambio aplicado a EmailDoNotContactMirror. Todo un suscripto (preferencia) página, un clic, List-Unsubscribe mailto, relé) lista la dirección para EMAIL (fuente EMAIL UNSUBSCRIBE, grabado por "Recipiente (Fuente indicada)" o "Sistema principal (Fuente inferior)"); la persona que permite el correo de nuevo lo quita (EMAIL RESUBSCRIBE), un miembro que lo levanta con el consentimiento de la persona lo quita con su nota (MANUAL). Bounces, quejas, temas y pausas permanecen en la lista de correo electrónico. Escrito después de que el opt-out se compromete, REQUIRES NEW, nunca lanzado: un suscripto Nunca falla por el espejo. - Readers: SuppressionService (campañas, acciones de artículo) y SuppressionLookup (eligibilidad) también cuentan las entradas de EMAIL, por lo que una dirección agregada o importada en Ajustes - título Teléfono - título No contacto se retiene del correo de marketing. POST /api/email/send rechaza un SI (mail send, mail reply, mail forward) 409 {reason: DO NOT CONTACT, error, direcciones} en los destinatarios finales, 503 cuando el la lista no se puede leer; la correspondencia de una persona mantiene las reglas existentes. Tests: EmailDoNotContactoMirrorTest, NoContactosRepresiónTest, SiMailDoNotContactGuardTest, EmailControllerSendContractTest (RED on origin/main, GREEN aquí), las otras pruebas de EmailController, DeliverabilityWiringTest, SuppressionLookupTest, BulkEmailWiring Prueba, los trucos de arco.
· VOIPService
La lista de contactos de la organización — VOIPService lo posee, textos comprueban, STOP y START escriben
Propietario 2026-10-15: una lista de contactos en toda la empresa por organización, alcance por canal ("Sólo ese canal"). - DDL... (DO NOT CONTACT, DO NOT CONTACT EVENT append-only for kamo app, DO NOT CONTACT SETTINGS), applied 2026-10-15 04:35Z. - NoContactoLos frijoles declaran el DoNotContact de Share-lib Lista (repositorios ya dentro del análisis com.kamo.z.shared.comms; VoipRepositoryScanTest los pinza). - /api/voip/do-not-contact (MANAGE VOIP SETTINGS): list/search, add, import (hasta 1000 líneas), POST /{id}/remove con una razón requerida, historia, actividad, configuración (modo de llamada WARN Silencio BLOCK, predeterminado WARN). Obtener / comprobar necesidades sólo la sesión: lo que el softphone y la aplicación móvil piden antes de marcar ({listed, recordedAt, source, mode, message: "{number} asked not to be called en {date}."). - Busca otros servicios. (KAMOAI INTERNAL SECRET); un servicio con el llamadas de escaneo compartido *************, canal, dirección). - Textos: SmsGateway rechaza un número listado para SMS con OPTED OUT (nunca retried) para cada remitente, una persona o un sms send de SI; la respuesta HELP es exento (Attempt.keywordReply). Bulk /send y /test-send lo rechazan con 409. Plantilla transaccional y envíos internos mantienen sus reglas existentes. - STOP enumera el número de textos (fuente SMS STOP); START/UNSTOP lo quita sólo para textos (SMS START, razón "Texted START"). La proyección STOP AGENT CONTACT STATE ahora establece sólo textos: correo electrónico, chat y social mantener sus propios opt-outs (propietario: un texto STOP bloquea los textos solamente). Tests: DoNotContactControllerTest, SmsGatewayTest, SmsKeywordServiceTest, ¿Qué? VoipRepositoryScanTest (RED on origin/main, GREEN aquí), VoipMessageServiceKeywordTest, InternalAuthFilterKamoaiTest.
· AIService
Los SI escuchan con el mejor modelo de habla el org habilitado — sin orden establecido, el mejor modelo VERIFIED STT se clasifica primero por exactitud publicada (SttQualityRanking, proveedor-neutral; TTS mantiene in-cluster primero); los boletos de llamada toman sólo un dialecto de sesión que el cliente habla; E4 reenvia un impulso de transcripción como la indirecta de vocabulario de cada proveedor (prompt, keyterm/keywords); word Ajustes → SI routing muestra el modelo que un SI utiliza ahora, y para STT en llamadas y en reuniones
· kamo-shared-library
La lista de contactos de la organización, por canal
Una lista de toda la empresa por organización (propietario 2026-10-15), abarcada por canal: a CALL bloques de entrada sólo llamadas, mensajes SMS solamente, EMAIL email solamente. Paquete com.kamo.z.shared.comms.dnc: DO NOT CONTACT (unique ORG ID, CHANNEL, ADDRESS), la pista de auditoría DO NOT CONTACT EVENT y DO NOT CONTACT SETTINGS (Modo de llamada por página web WARN Silencio BLOCK, predeterminado WARN). NoContacto Lista (clase de quejas; cada servicio declara el frijol) es el único lector and writer: isBlocked(orgId, channel, address) / find / filterBlocked for every camino de contacto, añadir (idempotent, primera fecha guardada), eliminar y eliminarById (una razón de 3+ caracteres es necesario, y el evento REMOVED lo mantiene), búsqueda, historia, actividad y el modo de llamada. Las direcciones son E.164 para CALL y SMS (PhoneE164, entonces La lectura de la NANP de E164) y la casta inferior para EMAIL; una dirección no legible es rechazada. DDL: voipservice ******************* (applied 2026-10-15 04:35Z). Pruebas: NoContactoListTest, *******************
· kamo-shared-library
AiCallEventType.TEAM REQUEST registra quién pidió la llamada de un SI y el mensaje para entregar
Propietario 2026-10-15: cuando un miembro del equipo pide a un SI que llame a alguien, el SI los llama sin aprobación y no la puerta de consentimiento, dice quién está pidiendo, entrega su mensaje, e informa de nuevo. K6 registra la solicitud (requerimiento, solicitudRef, el nombre dado, el mensaje) en este evento; el contexto de llamada y el seguimiento lo leen. Persistente, aprehendido después de CONSENT BASIS.
· kamo-internal
SI routing muestra "Phone calls and meetings" — el pedido del modelo VOICE CONVERSATION, con un indicio que nombra su orden de devolución
Propietario 2026-10-15: SI llamadas telefónicas en su propio pedido modelo, chat sin cambios. routingApi espejos compartido-lib AiRoutingSlot (ROUTING SLOTS) y la entrada de la tragaperras son amables y descomponentesCapability. No hay enlace de administración-bar.
· kamo-internal
Un miembro puede dejar que los colegas de SI les saluden con la forma corta de llamadas internas
SI declaración de llamadas, decisión del propietario 11 (2026-10-15): la tarjeta de los colegas de la SI en perfil propio del miembro (Sala de trabajo) consigue "Saludos cortos en llamadas con el equipo SI miembros", un interruptor que se apaga a menos que el miembro lo encienda. En un SI ellos La llamada de su escritorio los saluda por nombre ("Su sabio, es Luna, el asistente automatizado.") y todavía dice que la llamada se registra; llamadas desde fuera el sistema de teléfono de la oficina siempre consigue la introducción completa. Se salva con el conjunto de la tarjeta (siCallShortGreeting, SecurityService 259063b9); una respuesta de antes de que el opt-in lea como fuera. Un administrador lo ve solo lectura. No hay casa Enlace de administración-bar. Una sexta fila de paletas en el registro de campo.
· AIService
SI llamadas telefónicas y reuniones ruta en su propio orden de modelo — kamo:voice[:light sometidamedium sometidaheavy] en las rutas E2 como chat en la ranura VOICE CONVERSATION, y Ajustes → SI lista de enrutamiento, ofertas y salva la ranura
Propietario 2026-10-15: "Use gpt-6-sol para llamadas"; chat y todo lo demás permanecer en su orden. - ModeloSelector: kamo:voice y kamo:voice: Indicador de calidad (sólo cadena) son kamo:auto / kamo: indica calidad de usuario en la ranura. - AiRouter: en una ranura, las filas de la ranura primero, luego las propias filas de la capacidad (ofrecimiento debajo de ellos); una ranura sin modelos enumerados es el orden de hoy sin cambios, por lo que ningún comportamiento de org cambia. La ranura requiere TOOL CALLING, por lo que un SI Lo necesita muy bien. El retroceso de la herramienta GPT-6 (reasoning effort ninguno) se aplica como antes: ningún esfuerzo se establece aquí. - Sólo giros E2 que envían kamo:voice leer la ranura; un resumen de llamada mantiene su alias simple (prueba). - E13-E15: VOICE CONVERSATION se enumera justo después de TEXT GENERATION (kind SLOT, fallbackCapability), sus candidatos son los modelos TEXT GENERATION con TEXT GENERATION y TOOL CALLING VERIFIED, y sólo aquellos pueden ser salvados. - E1 lee routingSlot, por lo que un servicio puede preguntar qué modelo una llamada conseguiría sin colocar uno.
· kamo-shared-library
Una tragaperras para llamadas telefónicas y reuniones de la SI - ********************** rutas como TEXT GENERATION con TOOL CALLING requerido, y CapabilityRequest lleva la ranura (null para cada llamada existente)
Propietario 2026-10-15: SI llamadas telefónicas reciben su propio orden modelo; chat y todo lo demás permanecen como son. Una ranura es no una capacidad modelo: su orden se almacena en ai routing preferencias bajo su NOMBRE (VARCHAR(64), no CHECK, por lo que no DDL), y un nombre de ranura nunca iguala un código de AiCapability (test). Una solicitud nombrando la ranura consigue la ranura requerida capacidades en capacidades adicionales, por lo que un llamador SI los necesita VERIFIED.
· SecurityService
Una persona puede dejar que los colegas de SI les saluden con la forma corta de llamadas internas
SI call disclosure, owner decision 11 (2026-10-15): the colleagues short form ("Hi Sage, es Luna, el asistente automatizado.") se utiliza sólo para el personal activo que optó por su propio perfil, en una llamada que permanece en el teléfono interno sistema. El opt-in es **************** (CP12's fila sobre ser alcanzado por los colegas de SI: nullable, NULL y FALSE están apagados, . aplicado 2026-10-15T02:55:39Z). - CollabPreferenciasWire: siCallShortGreeting, a boolean (null or absent = off), salvado con el resto del conjunto por el propio miembro (403 NOT SELF como antes). - CollabPreferenciasVer: la respuesta GET/PUT la lleva. - ColleagueCallCardServicio: la tarjeta de llamada lleva shortGreeting, que kamoai-service lee con inteligenciaType y activo.
· kamo-internal
Una reunión en un mensaje, agréguelo una vez y vea qué cambió su organizador
La tira que decía "No en tu calendario" y nada más se convierte en la tarjeta de reunión: una ficha de fecha, la hora en la zona del miembro con la el propio reloj del organizador a su lado cuando difieren, lugar, unir enlace, repetir e invitados. - Una nueva invitación ofrece Añadir al calendario y no ahora; añadir dice que los cambios posteriores se aplicarán por su cuenta. - Un seguimiento de una reunión ya sobre el calendario se aplica como El mensaje abre (EmailService generalmente lo ha hecho a la llegada) y la tarjeta muestra "Actualizado en su calendario" con cada cambio, el valor antiguo alcanzado al lado del nuevo. - Cancelaciones, respuestas ("Dana aceptada"), las propias reuniones del miembro, un invitación mayor que su calendario, y los fracasos cada uno dicen claramente qué lo son. El aviso de la campana CALENDAR EVENT CHANGED está escrito una línea por cambio, así que el brindis, el centro de notificación y el diálogo de detalle mantienen ahora rupturas de la línea del cuerpo; una reunión cancelada recibe el icono de EventBusy.
· EmailService
Una reunión que llega por correo electrónico pregunta una vez, luego se mantiene actual
Una nueva invitación en el lector de correos ahora ofrece "Añadir al calendario". Una vez miembro lo ha añadido, los seguimientos del organizador se aplican por su cuenta: un movido tiempo, un nuevo lugar, una cancelación alcanza la copia del miembro sin preguntar, y el miembro recibe una notificación CALENDAR EVENT CHANGED que dice qué la reunión cambió y de qué a qué ("De: Wed, 14 de octubre · 2:00 – 3:00 PM EDT / To: Thu, 15 oct · 3:30 – 4:30 PM EDT"), en su propia zona. Sus propios las reuniones nunca se mueven por correo. - InboundInvitation Servicio: estado miembro-scopiod, añadir y aplicar a través de IcsImportService.upsert (zonas, todo el día, serie, editado y casos cancelados) con una instantánea antes/después para el aviso. Sólo un nuevo SEQUENCE se aplica; retridió en un conflicto de serialización; el aviso se crió después del compromiso y dedujo por evento, cambio y SEQUENCE. - A la llegada: MessageIndexer hands every parsed KamoMail message to Invitación Llegadas, por lo que el calendario es actual antes de que el mensaje sea abierto. Otros buzones de correo se aplican cuando se abre el mensaje. - ¿Qué? añadir y aplicar re-leer reunión del buzón del miembro, nunca del navegador. - InvitationReader reemplaza el parser de entrada, que lee cada vez TZID como UTC (2:00 PM Este se convirtió en 2:00 PM UTC) y no pudo leer un día completo Fecha. Un mensaje que lleva su reunión sólo como un apego de invitación.ics es ahora reconocida; los mensajes de reunión Microsoft 365 son leídos por su MIME; una parte de calendario no legible ya no falla todo el mensaje.
· kamo-internal
Explique Confidential, registre una decisión e historial de divulgación a un miembro de primera vez, y dé a los tres un diálogo de primera calidad
Cada herramienta ahora se abre con una palabra simple, guía de tres pasos la primera vez miembro lo usa (recordado por miembro en el servidor a través de la UI-preference mapa, característica claveIntrosSeen; se muestra cuando la preferencia no se puede leer), plegado después bajo un botón "¿Qué es esto?" en un cuadro de diálogo animado compartido: héroe de marca con un glifo en movimiento, secciones escalonadas, acciones pintadas, éxito momento, menor movimiento consciente. - Confidencial: el bloqueo abre ahora un diálogo con el guía, el estado actual (que lo marcó, cuando), lo que la marca hace y no hace, y el acción; un miembro que rechaza la regla del marcador lee por qué en lugar de reunirse con un botón muerto. Tostadas refusales, prensadas aria y un cambio en el vuelo mantenido; la variante de menú-row abre el mismo diálogo. - Grabar una decisión: tarjetas de tipo con una línea cada uno, ejemplos, un contador de títulos, opciones rápidas para cuando se aplica (no final / hoy / esta semana / este mes / fechas de selección, en el calendario del miembro), una vista previa en vivo de la tarjeta, un - Rechazar ese desplazamiento a la vista, un momento de éxito que se une a las decisiones; Supersede muestra lo que reemplaza. Aviso de revelación y enviar de todos modos guardado. - Historial de la revelación: fichas por decisión y canal con punto raya con el tiempo, una vista de línea de tiempo (el predeterminado en pantallas estrechas) al lado la mesa, un esqueleto mientras carga, un estado vacío que dice lo que aparece y por qué, y una carta prohibida. Carga de Keyset más, zona de toggle, 403 y se mantuvo la reinicia. - Herramientas ricas (nombre, estado, una frase simple) en la barra de herramientas botones, en cada superficie que los reutiliza. - zIndex fontanería: los diálogos, la apertura de decisiones y el aviso de divulgación tomar una capa; ChatBox los levanta sólo cuando pinta maximizada por su cuenta (MAXIMIZED Z) — ventanas de herramientas incrustadas permanecen en la banda de muelles bajo MUI.
· kamo-internal
Habla tu mensaje, conversación sin manos y lee respuestas en voz alta en cada ventana de chat
La voz de la web pública — dictación, respuestas leídas en voz alta y un bucle sin manos— ahora se ejecuta en cada ventana de herramientas de estilo de chat: chat miembro (incluyendo chats con miembros de SI), tickets de soporte, conversaciones sociales, Exec2Exec, el asistente de SI y SMS. - @kamo/voice-core 0.1.0 es la máquina del estado, compartido con el widget; useChatVoice une controlador por ventana (SSR-safe, creado lazily) y lo entrega por contexto. - El Compositor compartido (y los compositores SI y SMS) dibujan el micrófono junto a emoji/attach, un cortés línea de estado, y las respuestas de la ventana sin manos / Leer respuestas en voz alta toggles (preprimida por la puerta). - Las respuestas alcanzan la voz del controlador existente en tiempo real de cada ventana: nunca un segundo socket suscripción, nunca el chat de toda la app:mensage-received nudge. SMS replays a un recién abierto ventana se marcan y no se releen; el turno de la charla SI resuelve con la respuesta misma. - Una ventana minimizada es silenciosa; una voz en todo el mundo (una nueva escucha / discurso para el último; una respuesta no se lee sobre otra ventana de media conversación; el pronunciador del nombre comparte la regla). - Las preferencias de la UI son libres de manos, se transmiten a ventanas abiertas; las manos libres vienen se detuvo. El lenguaje del habla sigue la aplicación local.
· VOIPService
Ai-lines nombre el número que una llamada perdida puede ser devuelto a
Cada línea de /ai-lines?org Id= lleva callbackNumber: la línea de la SI, otra número asignado a él, de lo contrario el número principal de su servidor telefónico, de lo contrario el org sólo número activo; nulo cuando ninguno (nunca una conjetura entre varios). El minuto SIP sincroniza (sin orgId) salta la búsqueda.
· kamo-internal
El editor ofrece JOIN MEETING, por lo que una organización puede establecer su propia regla para un SI que une reuniones
Propietario 2026-10-14: unirse a una de las reuniones de la organización es su propia clase de acción (shared-lib 2d2f2efd), no PLACE CALL. ACTION CLASSES la lista después de las dos clases de llamadas, y APPROVAL tiene un artículo más (22), como lo hace CharterSection de colib común. La etiqueta viene del vocabulario de la carta en cuanto a cada clase. Pruebas: secciones.test.ts (la lista, la cuenta y la tapa de APPROVAL)
· APIService
Carry Web site de los archivos de soporte en vivo a través de la puerta de entrada
- PUESTOS ********** Los "files" multipartes son reenviados a MediaService como un cuerpo multiparto fresco, accionado desde el contenedor copias compartidas (el proxy genérico no puede reenviar multiparte: Spring ya ha analizado it). Más de 5 archivos, o uno de más de 25 MB, se rechaza aquí sin un hop upstream. - GET .../attachments/{objImgId} y .../preview: streamed byte-for-byte (un archivo de agente puede ser gigabytes; los amortiguadores proxy genéricos en el montón), Rango reenviado, y sólo el archivo propios encabezados cruzan (tipo, longitud, rango, disposición, nariz, CSP, entrega). - CORS ahora expone Content-Disposition, Content-Length, Content-Range, Accept-Ranges, X-Aprendimiento-Rendición y Retry-Después al widget (Traefik conjuntos de cors middleware no exponer la lista propia). - Una negativa de arriba mantiene su tipo de contenido, por lo que un error JSON llega al widget como JSON. - Limitador de tarifas: rutas de acceso son tráfico de conversaciones, no creación de sesión (ellos fueron acelerados en 3/min/IP); subidas 10/min/IP por conversación, descargas 120/min/IP por apego.
· MediaService
Los visitantes del sitio web pueden adjuntar archivos en Live Support — tipos seguros solamente
Un visitante en el sitio web de un prestamista ahora puede enviar documentos, imágenes, cremalleras y ordinarios audio/vídeo al agente en la pestaña Live Support, y lee ambos sus propios archivos y el agente. Scripts, autoruns y ejecutables son rechazados. La puerta es PublicVisitorAttachmentPolicy, juzgada contra los bytes en lugar de la nombre o tipo declarado: una lista de extensión por defecto (por última extensión, con extensiones internas peligrosas, sobresueldos bidi y puntos de seguimiento Windows rechazados), bytes mágicos que deben coincidir con la familia reclamada, PE/ELF/Mach-O rechazó cualquier cosa nombre, texto que realmente debe ser texto, y archivos ZIP-familia leer a través de su central directorio solamente (sin descompresión) — no ejecutables, archivos anidados, simpatizantes o ruta traversal in a .zip; no macros, paquetes ActiveX o OLE incrustados en Office/OpenDocument; no proyecto VBA o objeto empaquetado en OLE2 legado; ningún objeto incrustado en RTF. Nuevos puntos de final (detrás de la puerta clave/origin/rate de APIService, sesión-token autorizada): - ¿Qué? (multipart "files", 1-5, 25 MB cada uno) - GET habitHEAD .../attachments/{objImgId} y .../preview (same cabeceras de seguridad como la ruta miembro, ahora compartido a través de AttachmentResponses) - POST .../mesajes acepta "apegos": [{imgId, sortId}] — sólo las propias subidas del visitante en esta conversación; filas de historia llevan apegos en la forma de miembro. Los archivos visitantes se almacenan como cualquier accesorio de chat (CHAT ATTACHMENT, el guid de sesión, creado por el miembro del sistema de la org) por lo que la ventana del agente los hace sin cambios. sendSupportMessage anuncia ahora todo (NATS marco con accesorios, actividad con hasAttachments, pending count) after commit, and is @RetryOnDbConflict.
· KlusterServices
Postfix toma el nombre mail.kamouniverse.com una vez que se resuelve aquí
kamouniverse.com es el dominio de envío de la plataforma, pero el servidor todavía se presentó como mail.kamocrm.com en su EHLO, encabezados y Bounces. Postfix ahora elige su nombre al principio: mail.kamouniverse.com cuando ese nombre se resuelve a la misma dirección que el correo. kamocrm.com, de lo contrario mail.kamocrm.com como antes, ya que un nombre HELO sin registro es en sí mismo una señal de spam. smtp helo name sigue mi nombre de anfitrión. auto-cert ahora emite correo.kamouniverse.com y lo refleja en el correo namespace, reiniciando postfix. Sólo puede emitir una vez que el registro A resuelve, así que añadir el registro es todo lo que se necesita para el interruptor: el reiniciar elige el nuevo nombre y su certificado.
· kamo-shared-library
Join MEETING, uniendo una de las reuniones de la organización, es su propia clase de acción y no PLACE CALL
Propietario 2026-10-14: Luna (crm) pidió al propietario que aprobara unirse a la reunión que acababa de decirle que se una. meetings join was classed PLACE CALL, so the charter's "Placing phone calls: ask for approval first" applied to it (approvals 3f6fe9fc, 4ad68782). Unirse a una reunión no es hacer una llamada telefónica: AiActionClass appends JOIN MEETING (AUTONOMOUS por default, not monetary); el Plano de Herramientas lo exime del techo de autonomía mientras que ninguna capa de alquiler lo denomina (mcpgatewayservice), y nombrarlo en una capa es cómo una organización lo endurece. CharterSection.APPROVAL contiene un tema más (22). Cada carta resuelta gana la clase, por lo que cada sello de alquiler se mueve una vez (el legado de CharlieStampTest se mueve con él, como lo hizo SEND INTERNAL MESSAGE y RELEASE INFORMATION). Pruebas: CharterEnumsTest fija el orden, el predeterminado y la tapa. El pasador de AiAutonomyModeTest falla también en el origen/mano (RELEASE PROPOSAL), intacto aquí
· kamo-internal
Cliente de control remoto y las reglas de progreso, límite y rechazo puro
· kamo-internal
Mirror los tres derechos de control remoto y cerrar el tipo RPM ALERT
· APIService
Servir el camino clave asociado de Tesla y eximirlo de las reglas de acceso (IoT SP08-D2)
Obtenga una sesión sin sesión (cabezas de identidad y encabezados) Autorización bajada) a IoTService El camino exacto (contenedor) normalizado) está exento de las reglas IP/geo de la plataforma.
· KlusterServices
Abierto TCP 8285 para el servicio de mensajes de Tuya (IoT SP08 D4)
· MediaService
Una unión de SI (M1) lleva el marcador de la reunión, porque cuando no se puede poner directamente en la habitación
2026-10-14: Los SI pidieron unirse a una reunión dijeron a la gente "no hay señalización" y pidieron otra manera de entrar. kamoai-service ahora escoge el camino en sí mismo: directamente en la habitación (LiveKit - edad meet- didroom prenda) primero, y el propio marcado de la reunión sólo cuando eso no puede ser colocado. Para eso necesita el marcador, así que M1 se une lo nombres - {extensión, pin} - cuando el llamante es la SI uniéndose, el puente está encendido, y el PIN resuelve esta reunión ahora (DialInPins.resolve: un Kamo Meet compatible dentro de su ventana PIN), por lo que un PIN entregado es uno que toma el puente. Una persona que invita a un SI no recibe el PIN a través del M1. Tests: MeetAiControllerTest (la propia unión de SI lo lleva; la invitación de una persona, un PIN fuera de su ventana y una reunión sin uno no llevan ninguno).
· kamo-shared-library
SP12 enums de salud, entidades, repositorios y derivación estatal de monitoreo
· kamo-shared-library
Reglas de código SP12 RPM, matemáticas de período y matemáticas umbral
· kamo-shared-library
SP12 cartografía de vitales puros — LOINC/UCUM, conversión de unidad, plausibilidad, uide valídico opaco

Tu universo está esperando.
Comience gratis en minutos y agregue productos cuando esté listo, sin migración ni nuevos inicios de sesión.
Gratis para siempre: no se requiere tarjeta de crédito