Changelog
O que há de novo.
Cada melhoria para a plataforma, como ele envia.
· kamo-internal
Configurações → Telefone → Não entre em contato, e o softphone avisa antes de ligar para um número listado
Proprietário 2026-10-15: uma lista de não-contato de toda a empresa por organização, escopo por Canal. - Configurações → Telefone → Não entre em contato (MANAGEM VOIP SETTINGS, configuraçõesMenu sub entrada, nenhum link de barra de administração): o modo de chamada (alertar e discar em confirmar, o padrão, ou bloco), filtro de canal, pesquisa, adicionar, importar (colar ou .csv/.txt, até 1000), remover com razão necessária, e a história (cada adição e remoção, por quem, por quê). - O softphone: SoftphoneContext dá a cada consumidor um mostrador guardado, então cada chamada da pessoa (a chamada da janela do Softphone, e cada chamada em outro lugar, que a abre preched; o discador externo do JustCall também) pergunta GET /api/voip/ do- not- contact/ check Primeiro. Um número listado mostra "{ number} pedido para não ser chamado em {date}" com Cancelar / Ligue de qualquer maneira, ou, quando a organização bloqueia, OK apenas. Apenas a CHAMADA A entrada conta. Uma verificação que falha discando (a chamada de um SI falha fechada no serviço kamoai). - Chaves: kamo-tradução-dicionário 7b74200b (empurrado primeiro). Testes: NãoContatoTab.test.tsx, NãoContatoDialGuard.test.tsx, NãoContatoDial.test.ts (RED na origem/main, GREEN aqui), cobertura do menu de configurações; os 20 protetores de origem e check-i18n-keys -- require-mensagens contra o dicionário empurrado.
· kamo-internal
O roteamento do SI mostra o que os SIs usam agora — o modelo eficaz por tipo de trabalho e se a ordem do org ou o padrão automático o escolheram; para o discurso-texto, o modelo em chamadas telefônicas e em reuniões, transmitidas ou por frase, com a dica automática de classificação de precisão
Proprietário 2026-10-15: "Se um modelo é adicionado e habilitado para os provedores de SI que suporta discurso para texto, ele deve usar a melhor." Lê AIService's effective / effectiveCalls / effectiveMeetings em cada entrada de roteamento; um AIService sem eles não há nada de novo.
· EmailService
Os cancelamentos de e-mail chegam à lista de não-contato, e as campanhas, compartilhamentos e o e-mail de um SI verificam
Proprietário 2026-10-15: uma lista de empresas sem contato por organização, escopo por canal; um e- mail que cancela a subscrição bloqueia apenas o e- mail. - Escritor: EspelhoEmailOptOutLedger (o emailOptOutLedger bean) mãos cada Aplicou a alteração ao EmailDoNotContactMirror. Um cancelamento completo (preferência) página, um clique, Lista-Dessubscrever mailto, relé) lista o endereço para EMAIL (fonte EMAIL UNSUBSCRIBE, gravada por "Recipiente (<source>)" ou "Sistema de correio" (<source>)"); a pessoa que permite que o correio o retire novamente (EMAIL RESUBSCRIBE), um membro que o levanta com o consentimento da pessoa tira-o com a sua nota (MANUAL). Saltos, reclamações, tópicos e pausas permanecem na lista de e-mails. Escrito após os commits opt-out, REQUIRES NEW, nunca lançado: um cancelamento de subscrição Nunca falha por causa do espelho. - Leitores: Serviço de Supressão (campanhas, compartilhamentos de artigos) e Supressão (eligibilidade) também contar as entradas EMAIL, por isso um endereço adicionado ou importado em Configurações -> Telefone -> Não contactar é retido do correio de marketing. POST /api/email/enviar recusa um SI (mail send, mail reply, mail forward) 409 {razão: DO NOT CONTACT, erro, endereços} nos destinatários finais, 503 quando o lista não pode ser lida; a correspondência de uma pessoa mantém as regras existentes. Testes: EmailDoNotContactMirrorTest, DoNotContactSupressionTest, SiMailDoNotContactGuardTest, EmailControllerSendContractTest (RED on origin/main, GREEN aqui), os outros testes EmailController, DeliverabilityWiringTest, Teste de procura de supressão, E- mail em massa Teste, o arco bate.
· VOIPService
A lista de não-contato da organização — VOIPService é sua, os textos verificam, STOP e START escrevem
Proprietário 2026-10-15: uma lista de empresas sem contato por organização, escopo por canal ("Somente esse canal"). - DDL ************************* (NOT CONTACT, NÃO CONTACT EVENT somente para kamo app, DO NOT CONTACT SETTINGS), aplicado 2026-10-15 04:35Z. - DoNotContactBeans declara DoNotContact Lista (repositórios já dentro do com.kamo.z.shared.comms scan; VoipRepositoryScanTest pins them). - /api/voip/do-not-contact (MANAGE VOIP SETTINGS): list/search, add, import (até 1000 linhas), POST /{id}/remover com uma razão necessária, histórico, atividade, configurações (modo de chamada warn, BLOCK, warn padrão). GET/verificar apenas as necessidades a sessão: o que o softphone e o aplicativo móvel perguntam antes de marcar ({ listado, gravadoA, fonte, modo, mensagem: "{ número} pediu para não ser chamado em {data}."}). - Procura outros serviços: ?orgId=&canal=&address= (KAMOAI INTERNAL SECRET); um serviço com Chamadas de varredura compartilhadas. - Textos: SmsGateway recusa um número listado para SMS com OPTED OUT (nunca para cada remetente, para o sms send de uma pessoa ou de um SI; a resposta AJUDA é isenta (Testemp.keywordReply). Em massa /enviar e /enviar-enviar recusar com 409. Modelo transacional e envios internos mantêm suas regras existentes. - STOP lista o número de textos (fonte SMS STOP); START/UNSTOP tira- o apenas para textos (SMS START, razão "START Texto"). A projecção STOP em AGENT CONTACT STATE agora define apenas textos: email, chat e social manter o seu próprio opt-outs (proprietário: um texto STOP bloqueia apenas textos). Testes: NãoContatoControllerTest, SmsGatewayTest, SmsKeywordServiceTest, **************************** VoipRepositoryScanTest (RED on orgen/main, GREEN aqui), VoipMessageServiceKeywordTest, InternalAuthFilterKamoaiTest.
· AIService
SIs ouvir com o melhor modelo de fala o org habilitado — sem nenhum conjunto de ordem, o melhor modelo VERIFIED STT classifica-se em primeiro lugar pela precisão publicada (SttQualityRanking, provedor-neutral; TTS mantém em-cluster primeiro); tickets de chamada levam apenas um dialeto de sessão que o cliente fala; E4 encaminha um prompt de transcrição como dica de vocabulário de cada fornecedor (prompt, keyterm/keywords, word boost); Configurações → Roteamento SI mostra o modelo que um SI usa agora, e para STT em chamadas e em reuniões
· kamo-shared-library
A lista de não- contato da organização, por canal
Uma lista de empresas por organização (proprietário 2026-10-15), abrangida por canal: a CHAMADA bloco de entrada apenas chamadas, SMS apenas SMS, EMAIL apenas e-mail. Pacote Com.kamo.z.shared.comms.dnc: DO NOT CONTACT (único ORG ID, CANEL, ENDEREÇO), A trilha de auditoria DO NOT CONTACT EVENT e DO NOT CONTACT SETTINGS (por-org modo de chamada warn , BLOCK, warn padrão). Não Contato Lista (classe simples; cada serviço declara o feijão) é o único leitor e escritor: isBlocked( orgId, canal, endereço) / find / filterBlocked for every caminho de contato, adicionar (idempotente, primeira data mantida), remover e removerById (uma razão de mais de 3 caracteres é necessário, e o evento REMOVED mantém-no), pesquisa, história, actividade e modo de chamada. Os endereços são E.164 para CALL e SMS (PhoneE164, então Leitura do NANP do E164) e minúscula para EMAIL; um endereço ilegível é recusado. DDL: voipservice ************* (aplicado 2026-10-15 04:35Z). Testes: DoNotContactListTest, *************
· kamo-shared-library
AiCallEventType.TEAM REQUEST registra quem pediu a chamada de um SI e a mensagem para entregar
Proprietário 2026-10-15: quando um membro da equipe pede a um SI para chamar alguém, o SI liga para ele sem aprovação e não Portão de consentimento, diz quem está chamando, entrega sua mensagem, e reporta de volta. K6 regista o pedido (requerente, requestRef, o nome dado, a mensagem) neste evento; o contexto de chamada e o acompanhamento leram-no. STRING-persistiu, anexado após CONSENT BASIS.
· kamo-internal
O roteamento de SI mostra "Chamadas por telefone e reuniões" — a ordem do próprio modelo do slot VOICE CONVERSATION, com uma dica de que nomeia sua ordem de retorno
Proprietário 2026-10-15: SI chamadas telefônicas em seu próprio pedido modelo, chat inalterado. routingApi mirrors shared-lib AiRoutingSlot (ROUTING SLOTS) e a entrada de fendas é tipo e fallbackCapability. Nenhum link de barra de administração.
· kamo-internal
Um membro pode deixar os colegas do SI cumprimentá-los com o formulário curto em chamadas internas
SI chamada de divulgação, decisão de proprietário 11 (2026-10-15): o cartão de colegas SI no perfil próprio do membro (sala de trabalho) recebe "Pequeno cumprimento em chamadas com equipe SI membros", um interruptor que está desligado a menos que o membro o ligue. Em, um SI eles chamada de seu telefone de mesa cumprimenta-los pelo primeiro nome ("Hi Sage, é Luna, o assistente automatizado.") e ainda diz que a chamada é gravada; chamadas de fora O sistema de telefone do escritório tem sempre a introdução completa. Ele salva com o conjunto inteiro do cartão (siCallShortGreeting, SecurityService 259063b9); uma resposta de antes do opt-in ser desligado. Um administrador vê-o apenas para leitura. Sem casa. link da barra de administração. Uma sexta linha de paleta no registro de campo.
· AIService
SI chamadas telefônicas e reuniões roteiam em seu próprio modelo de ordem — kamo:voice[:light;medium;heavy] nas rotas E2 como bate-papo no slot VOice CONVERSATION, e Configurações → SI lista de roteamento, oferece e salva o slot
Proprietário 2026-10-15: "Use o gpt-6-sol para chamadas"; bate-papo e tudo mais permaneça em seu pedido. - ModelSelector: kamo:voice e kamo:voice:<quality> (apenas bate-papo) são kamo:auto / kamo:<quality> no slot. - AiRouter: em um slot, as fileiras do slot primeiro, em seguida, as fileiras próprias da capacidade (offset abaixo deles); um slot sem modelos listados é a ordem atual inalterada, portanto, nenhum org muda o comportamento. O slot requer TOOL CALLING, então um SI Precisa de verificá-lo. O backback da ferramenta GPT-6 (razão esforço nenhum) aplica-se como antes: nenhum esforço é definido aqui. - Somente E2 gira que envia kamo:voice lê o slot; o resumo de uma chamada mantém seu alias simples (teste). - E13-E15: VOZ CONVERSATION está listado logo após TEXT GENERATION (tipo SLOT, fallbackCapability), seus candidatos são os modelos TEXT GENERATION com TEXT GENERATION e TOOL CALLING VERIFIED, e somente aqueles podem ser salvos. - E1 lê roteamentoSlot, para que um serviço possa perguntar qual modelo uma chamada obteria sem colocar um.
· kamo-shared-library
Uma vaga de roteamento para telefonemas e reuniões SI - **************** rotas como TEXT GERATION com TOOL CALLING necessário, e CapabilityRequest carrega o slot (null para cada chamada existente)
Proprietário 2026-10-15: chamadas de telefone SI obter seu próprio pedido modelo; chat e tudo mais ficar como eles são. Um espaço é não uma capacidade de modelo: sua ordem é armazenada em ai routing preferences sob seu NAME (VARCHAR(64), no CHECK, so no DDL), e um nome de slot nunca é igual a um código AiCapability (teste). Um pedido que nomeie o slot recebe a necessidade do slot Capacidades adicionais, então um chamador de SI precisa deles VERIFIED.
· SecurityService
Uma pessoa pode deixar os colegas do SI cumprimentá-los com o formulário curto em chamadas internas
SI chamada de divulgação, decisão do proprietário 11 (2026-10-15): o colega formulário curto ("Hi Sage, é Luna, o assistente automatizado"). que optaram por seu próprio perfil, em uma chamada que permanece no telefone interno sistema. O opt-in é... (CP12's linha sobre ser alcançado por colegas SI: nullable, NULL e FALSE estão desligados, Aplicado à mão antes desta construção aplicado 2026-10-15T02:55:39Z). - CollabPreferencesWire: siCallShortGreeting, um booleano (null ou ausente = off), salvo com o resto do conjunto pelo próprio membro (403 NOT SELF como antes). - CollabPreferencesView: a resposta GET/PUT o carrega. - ColegaCallCardService: o cartão de chamada carrega curtaSaudação, que kamoai-service lê com inteligênciaType e ativo.
· kamo-internal
Uma reunião numa mensagem — acrescente-a uma vez e veja o que mudou o seu organizador
A tira que dizia "Não no seu calendário" e nada mais se torna o cartão de reunião: uma telha de data, a hora na zona do membro com o relógio próprio do organizador ao lado dele quando diferem, colocar, juntar link, repetir e convidados. - Um novo convite oferece Adicionar ao calendário e não agora; adicionar diz que as alterações posteriores serão aplicadas por conta própria. - Aplica-se o seguimento de uma reunião já prevista no calendário como A mensagem abre (o EmailService normalmente o fez na chegada) e o cartão mostra "Atualizado no seu calendário" com cada alteração, valor antigo atingido ao lado do novo. - Cancelamentos, respostas ("Dana aceita"), reuniões próprias do membro, e convite mais antigo do que seu calendário, e falhas cada um diz claramente o que E são. O aviso CALENDAR EVENT CHANGED do sino é escrito uma linha por mudança, então o brinde, o centro de notificação e o diálogo de detalhes agora manter o a linha do corpo quebra; uma reunião cancelada recebe o ícone EventBusy.
· EmailService
Uma reunião que chega por e-mail pede uma vez, em seguida, mantém-se atual
Um novo convite no leitor de correio agora oferece "Adicionar ao calendário". Uma vez a membro acrescentou-o, os acompanhamentos do organizador aplicam-se por conta própria: tempo, um novo lugar, um cancelamento chegar à cópia do membro sem perguntar, e o membro recebe uma notificação CALENDAR EVENT CHANGED dizendo que reunião mudou e do que para o quê ("De: Qua, 14 de outubro · 2:00 – 3:00 EDT / To: Thu, 15 de outubro · 3:30 – 4:30 EDT), em sua própria zona. Os seus próprios As reuniões nunca são movidas pelo correio. - Convite de entrada Serviço: status do membro, adicionar e aplicarFollowUp, através do IcsImportService.upert (zonas, todos os dias, séries, editados e Casos cancelados) com um instantâneo antes/depois para o aviso. Apenas um SEQUÊNCIA mais recente aplica-se; tentada novamente em um conflito de serialização; o aviso é levantada após o commit e deduped por evento, mudança e SEQUÊNCIA. - À chegada: MessageIndexer passa cada mensagem KamoMail para ConviteChega, então o calendário está atual antes da mensagem aberto. Outras caixas de correio aplicam-se quando a mensagem é aberta. - Está bem. adicionar e aplicar re-ler o reunião da caixa de correio do membro, nunca do navegador. - ConviteReader substitui o analisador de entrada, que lê cada TZID tempo como UTC (2:00 Leste se tornou 2:00 PM UTC) e não podia ler um dia inteiro Encontro. Uma mensagem que leva seu encontro apenas como um convite.ics anexo é as mensagens de reunião do Microsoft 365 são lidas do seu MIME; uma parte do calendário ilegível já não falha a mensagem inteira.
· kamo-internal
Explique Confidencial, Grave uma decisão e Histórico de Divulgação para um membro da primeira vez, e dê a todos os três um diálogo premium
Cada ferramenta agora abre com um simples-palavras, guia de três passos da primeira vez membro usa-o (lembrado por membro no servidor através da interface-preferência map, key featureIntrosSeen; mostrado quando a preferência não pode ser lida), dobrado depois, sob um botão "O que é isto?" numa janela animada partilhada: herói da marca com um glifo em movimento, seções cambaleadas, ações presas, sucesso Momento reduzido, consciente. - Confidencial: o bloqueio abre agora uma janela com o guia, o estado actual (Quem marcou, quando), o que a marca faz e não faz, e aquele que ação; um membro a regra marcador recusa lê por que em vez de atender um Botão morto. Brindes de recusa, aria-pressão e uma mudança no voo mantido; a variante menu- linha abre a mesma janela. - Gravar uma decisão: cartas tipo com uma linha cada, exemplos, um contador de título, escolhas rápidas para quando se aplica (sem fim / hoje / esta semana / este mês / escolher datas, no calendário do membro), uma pré-visualização ao vivo do cartão, a A recusa que surge, um momento de sucesso que liga as decisões; A substituição mostra o que substitui. Aviso de divulgação e enviar de qualquer maneira mantido. - Histórico de divulgação: telhas de visão geral por decisão e canal com um ponto strip ao longo do tempo, uma visão de linha do tempo (o padrão em telas estreitas) ao lado a mesa, um esqueleto durante o carregamento, um estado vazio que diz o que Aparecer e porquê, e um cartão proibido. Teclado Carregar mais, alternar zona, 403 e tentar novamente. - Dicas ricas (nome, estado, uma frase simples) na barra de ferramentas três botões, em cada superfície que os reutiliza. - encanamento zIndex: os diálogos, o abridor de decisão e o aviso de divulgação tomar uma camada; ChatBox levanta-os apenas quando pinta maximizado por conta própria (MAXIMIZED Z) — janelas de ferramentas incorporadas permanecem na banda de dock sob MUI.
· kamo-internal
Fale a sua mensagem, conversa sem mãos e leia as respostas em voz alta em cada janela de chat
A voz do chat público na web — ditado, respostas lidas em voz alta e um loop sem mãos — agora é executado em cada janela de ferramentas de chat: chat de membros (incluindo chats com membros do SI), tickets de suporte, conversas sociais, Exec2Exec, o assistente de SI e SMS. - @ kamo/voice-core 0.1.0 é a máquina de estado, partilhada com o widget; useChatVoice vincula um controlador por janela (SSR-safe, criado lazily) e passa-lo para baixo por contexto. - O compositor compartilhado (e os compositores de SI e SMS) desenhar o microfone ao lado emoji/attach, um educado linha de estado e as respostas em voz alta das Mãos- Livres da janela (aria- pressionada). - Respostas chegam à voz do manipulador em tempo real de cada janela: nunca uma segunda tomada assinatura, nunca o chat-wide app:message-received nudge. Repetições de SMS para um recém- aberto a janela está marcada e não é re- lida; a vez do chat do SI resolve-se com a resposta em si. - Uma janela minimizada é silenciosa; uma voz em toda a aplicação (uma escuta/fala mais recente pára a última; uma resposta não é lido sobre outra janela no meio da conversa; o pronunciador de nome compartilha a regra). - Hands-free / read-loud são as preferências de UI dos membros, transmitido para abrir janelas; mãos-free vem atrás pausado. A linguagem de fala segue o aplicativo locale.
· VOIPService
Ai-lines nomes o número uma chamada perdida pode ser retornado para
Cada linha de /ai-lines?org Id= carrega callbackNúmero: a própria linha do SI, caso contrário um número atribuído a ele, caso contrário o número principal do seu servidor de telefone, caso contrário o org's número ativo; nulo quando nenhum (nunca um palpite entre vários). O minuto SIP sincronizar Salta a procura.
· kamo-internal
O editor oferece COMUNIDADE MEETING, para que uma organização possa definir sua própria regra para uma reunião de adesão do SI
Proprietário 2026-10-14: juntar-se a uma das reuniões da organização é sua própria classe de ação (shared-lib 2d2f2efd), não LOCAL CALL. ACTION CLASSES lista-o após as duas classes de chamadas, e HOPROVAL detém mais um item (22), como a seção CharterSection do shared-lib. A etiqueta vem do vocabulário charter como para cada classe. Ensaios: sections.test.ts (a lista, a contagem e a tampa da HOPROVAL)
· APIService
Transportar os arquivos de suporte ao vivo dos visitantes do site através do gateway
- Post **************** as partes multi-parte "files" são re-enviados ao MediaService como um corpo multiparte fresco, transmitido do recipiente cópias sincronizadas (o 'proxy' genérico não pode enviar várias partes: a Primavera já analisou ele). Mais de 5 arquivos, ou um mais de 25 MB, é recusado aqui sem um salto upstream. - GET .../attachments/{objImgId} e .../preview: transmissão byte-for-byte (o ficheiro de um agente pode ser gigabytes; os buffers genéricos do proxy no heap), o Range encaminhado, e somente o arquivo cross de cabeçalhos próprios (tipo, comprimento, alcance, disposição, nosniff, CSP, rendição). - O CORS agora expõe Disposição de Conteúdo, Comprimento de Conteúdo, Intervalo de Conteúdo, Intervalo de Aceitação, X-Attachment-Rendition e Retry-After para o widget (conjuntos de middlewares cors do Traefik nenhuma lista de exposição própria). - Uma recusa a montante mantém seu Tipo de Conteúdo, então um erro JSON atinge o widget como JSON. - Limitador de taxa: rotas de anexos são tráfego de conversação, não criação de sessão (eles foram estrangulados a 3/min/IP); uploads 10/min/IP por conversação, downloads 120/min/IP por anexo.
· MediaService
Visitantes do site podem anexar arquivos em suporte ao vivo - tipos seguros apenas
Um visitante no site de um credor agora pode enviar documentos, imagens, zips e comuns áudio/vídeo para o agente na aba Suporte ao Vivo, e leia de volta ambos os seus próprios arquivos e do agente. Scripts, autoruns e executáveis são recusados. O portão é PublicVisitorAttachmentPolítica, julgado contra os bytes em vez de o nome ou tipo declarado: uma lista de permissões de extensão por omissão- deny (pela última extensão, com extensões internas perigosas, sobreposições bidi e pontos de seguimento Windows recusados), bytes mágicos que devem corresponder à família reivindicada, PE/ELF/Mach-O recusou nome, texto que realmente deve ser texto, e arquivos da família ZIP ler através de seu central diretório somente (sem descompressão) — nenhum executável, arquivos aninhados, links simbólicos ou caminho transversal num .zip; sem macros, ActiveX ou pacotes OLE incorporados no Office/OpenDocument; nenhum projeto VBA ou objeto embalado no legado OLE2; nenhum objeto incorporado no RTF. Novos endpoints (atrás da chave/origem/gate gate do APIService, token de sessão autorizado): - Post ************************* (múltiplos ficheiros, 1-5, 25 MB cada) - GETSHEAD .../attachments/{objImgId} e .../preview (mesmos cabeçalhos de segurança como a rota membro, agora compartilhado através do AnexoResponses) - POST .../mensagens aceita "attachments": [{imgId, sortId}] — apenas uploads do próprio visitante nesta conversa; as linhas do histórico carregam anexos na forma de membro. Os arquivos dos visitantes são armazenados como qualquer anexo de chat (CHAT ATTACHMENT, the session guid, criado pelo membro do sistema do org) para que a janela do agente os torne inalterados. SendSupportMessage agora anuncia tudo (frame NATS com anexos, atividade com temAtaques, contagem pendente) após commit, e é @RetryOnDbConflito.
· KlusterServices
Postfix toma o nome mail.kamouniverse.com uma vez que ele resolve aqui
kamouniverse.com é o domínio de envio da plataforma, mas o servidor ainda introduzido como mail.kamocrm.com em seu EHLO, cabeçalhos recebidos e saltos. O Postfix agora escolhe o seu nome no início: mail.kamouniverse.com quando esse nome resolve para o mesmo endereço que o correio. kamocrm.com, caso contrário mail.kamocrm.com como antes, uma vez que um nome HELO sem registro A é em si mesmo Um sinal de spam. smtp helo name segue myhostname. auto-cert agora emite mail.kamouniverse.com e espelha-o no mail espaço de nomes, reiniciando postfix. Só pode emitir uma vez que o registro A resolve, então adicionar o registro é tudo que é preciso para o interruptor: o reiniciar escolhe o novo nome e seu certificado.
· kamo-shared-library
ENCONTRAR-SE, juntar-se a uma das reuniões da organização, é a sua própria classe de ação e não LOCAL CALL
Proprietário 2026-10-14: Luna (crm) pediu ao proprietário para aprovar a adesão à reunião que ele tinha acabado de dizer a ela para participar. reunions join foi classificado como LOCAL CALL, então a carta de "Colocar chamadas telefônicas: pedir aprovação primeiro" aplicada a ele (aprovações 3f6fe9fc, 4ad68782). Juntar-se a uma reunião não é colocar uma chamada telefônica: AiActionClass adiciona a COMENHA MEETING (AUTONOMOUS por padrão, não monetary); a ferramenta Plane isenta-o do teto da autonomia enquanto nenhuma camada charter o nomeia (mcpgatewayservice), e nomeá-lo em uma camada é como uma organização o aperta. CharterSection.APPROVAL contém mais um item (22). Cada charter resolvido ganha a classe, então cada selo de charter se move uma vez (o legado de CharterStampTest se move com ele, como SEND INTERNAL MESSAGE e LIBERT INFORMATION fizeram). Testes: CharterEnumsTest fixa a ordem, o padrão e a tampa. AiAutonomyO pino tipo de projeto do ModeTest também falha na origem/main (RELEASE PROPOSAL), intocado aqui
· kamo-internal
Cliente de monitoramento remoto digitado e regras de progresso, limite e recusa puras
· kamo-internal
Espelho dos três direitos de monitoramento remoto e portão do tipo RPM ALERT
· APIService
Serve o caminho chave do parceiro de Tesla e isenta-o das regras de acesso (IoT SP08-D2)
GET ************* ***s para a frente sem sessão (cabeçalhos de identidade e Autorização retirada) para o IoTService O caminho exacto. normalizado) está isento das regras de IP/geo da plataforma org.
· KlusterServices
Abra o TCP 8285 para o serviço de mensagens de Tuya (IoT SP08 D4)
· MediaService
Uma associação própria do SI (M1) carrega o disc-in da reunião, para quando não pode ser colocado diretamente na sala
2026-10-14: SIs pediu para participar de uma reunião disse às pessoas "não há discagem" e pediu por outra entrada. kamoai-service agora escolhe o caminho em si mesmo: direto para o quarto (LiveKit -> meet-<room>) primeiro, e O próprio dial-in da reunião apenas quando isso não pode ser colocado. Para isso, precisa da marcação, então M1 se junta nomeia - {extensão, pin} - quando o chamador é o SI unindo-se, a ponte está ligada, e o PIN resolve para esta reunião agora (DialInPins.resolve: um Kamo Meet juntavel dentro de sua janela PIN), então um PIN Entregue é uma que a ponte toma. Uma pessoa que convida um SI não recebe o PIN através do M1. Testes: MeetAiControllerTest (a própria associação do SI o carrega; o convite de uma pessoa, um PIN fora do seu janela e uma reunião sem um levar nenhum).
· kamo-shared-library
SP12 Enums de saúde, entidades, repositórios e derivação do estado de monitorização
· kamo-shared-library
Regras de código SP12 RPM, matemática de período e matemática de limiar
· kamo-shared-library
SP12 mapeamento de sinais vitais puros — LOINC/UCUM, conversão de unidades, plausibilidade, uid válido opaco

Seu universo está esperando.
Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.
Gratuito para sempre — não é necessário cartão de crédito