@wrcb/cb-common 1.0.886 → 1.0.888

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -69,6 +69,34 @@ export interface TenantData {
69
69
  BACKEND_API_VERSION: string;
70
70
  SITE_NAME: string;
71
71
  SITE_URL: string;
72
+ /**
73
+ * Remetente dos e-mails transacionais (só o endereço; o nome exibido vem do
74
+ * SITE_NAME, que já sai correto no cabeçalho).
75
+ *
76
+ * HOJE TODOS OS TENANTS USAM O MESMO `app@wrsolucoesdigitais.com.br`, que é
77
+ * o endereço histórico. O campo existe por tenant não porque haja endereço
78
+ * diferente agora, mas para que passar a ter seja UMA LINHA aqui, sem tocar
79
+ * no cb-notifications.
80
+ *
81
+ * QUANDO VALE SEPARAR: cliente de e-mail agrupa por ENDEREÇO e mostra o
82
+ * nome que tem salvo no catálogo. Quem já recebia e-mail de um produto vê o
83
+ * cadastro de OUTRO chegar com o nome do primeiro — foi o que aconteceu com
84
+ * o Mercado Profissional aparecendo como "Spotly.social" para quem já tinha
85
+ * esse contato salvo. Quem nunca recebeu do outro produto vê o nome certo,
86
+ * então isso só incomoda quem usa mais de um. O outro motivo para separar é
87
+ * reputação de entrega, que hoje é compartilhada por todos os produtos.
88
+ *
89
+ * NÃO PRECISA CRIAR CAIXA POSTAL PARA ENVIAR. O Resend assina com o DKIM do
90
+ * DOMÍNIO, então qualquer parte local de `wrsolucoesdigitais.com.br` sai sem
91
+ * existir em lugar nenhum. O que depende de configuração é RESPOSTA: o MX
92
+ * aponta para o Cloudflare Email Routing, onde um catch-all encaminha
93
+ * qualquer endereço para a caixa de sempre.
94
+ *
95
+ * O DOMÍNIO É UM SÓ: `wrsolucoesdigitais.com.br` é o único verificado no
96
+ * Resend, e ele recusa enviar de domínio não verificado. Quando um produto
97
+ * tiver o domínio próprio verificado, é trocar o valor desta linha.
98
+ */
99
+ FROM_EMAIL: string;
72
100
  SITE_WHATSAPP_SUPPORT: string;
73
101
  SITE_WHATSAPP_BOT: string;
74
102
  IOS_APP_DOWNLOAD_LINK: string;
@@ -274,6 +274,7 @@ TenantDataService.tenantDataMap = {
274
274
  BACKEND_API_VERSION: '1',
275
275
  SITE_NAME: 'PoliticaBet',
276
276
  SITE_URL: 'https://politicabet.com',
277
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
277
278
  SITE_WHATSAPP_SUPPORT: '37988083717',
278
279
  SITE_WHATSAPP_BOT: '5511921974030',
279
280
  WHATSAPP_BOT_NUMBER_ID: '970274559506875',
@@ -361,6 +362,7 @@ TenantDataService.tenantDataMap = {
361
362
  BACKEND_API_VERSION: '1',
362
363
  SITE_NAME: 'Tourism Site',
363
364
  SITE_URL: 'https://tourism.dev',
365
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
364
366
  SITE_WHATSAPP_SUPPORT: '37988083717',
365
367
  SITE_WHATSAPP_BOT: '5511921974030',
366
368
  WHATSAPP_BOT_NUMBER_ID: '970274559506875',
@@ -448,6 +450,7 @@ TenantDataService.tenantDataMap = {
448
450
  BACKEND_API_VERSION: '1',
449
451
  SITE_NAME: 'Private Show',
450
452
  SITE_URL: 'https://privateshow.com.br',
453
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
451
454
  SITE_WHATSAPP_SUPPORT: '37988083717',
452
455
  SITE_WHATSAPP_BOT: '5511921974030',
453
456
  WHATSAPP_BOT_NUMBER_ID: '970274559506875',
@@ -521,6 +524,7 @@ TenantDataService.tenantDataMap = {
521
524
  BACKEND_API_VERSION: '1',
522
525
  SITE_NAME: 'Promo app',
523
526
  SITE_URL: 'https://promoapp.com.br',
527
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
524
528
  SITE_WHATSAPP_SUPPORT: '37988083717',
525
529
  SITE_WHATSAPP_BOT: '5511921974030',
526
530
  WHATSAPP_BOT_NUMBER_ID: '970274559506875',
@@ -576,6 +580,7 @@ TenantDataService.tenantDataMap = {
576
580
  BACKEND_API_VERSION: '2',
577
581
  SITE_NAME: 'Compranomia Delivery',
578
582
  SITE_URL: 'https://compranomia.com.br',
583
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
579
584
  SITE_WHATSAPP_SUPPORT: '37988083717',
580
585
  SITE_WHATSAPP_BOT: '5511921974030',
581
586
  WHATSAPP_BOT_NUMBER_ID: '970274559506875',
@@ -685,6 +690,7 @@ TenantDataService.tenantDataMap = {
685
690
  BACKEND_API_VERSION: '2',
686
691
  SITE_NAME: 'Babelia',
687
692
  SITE_URL: 'https://wrsolucoesdigitais.com.br/babelia',
693
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
688
694
  SITE_WHATSAPP_SUPPORT: '',
689
695
  SITE_WHATSAPP_BOT: '',
690
696
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -735,6 +741,7 @@ TenantDataService.tenantDataMap = {
735
741
  BACKEND_API_VERSION: '1',
736
742
  SITE_NAME: 'BrainrotColoring',
737
743
  SITE_URL: 'https://wrsolucoesdigitais.com.br',
744
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
738
745
  SITE_WHATSAPP_SUPPORT: '37988083717',
739
746
  SITE_WHATSAPP_BOT: '',
740
747
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -794,6 +801,7 @@ TenantDataService.tenantDataMap = {
794
801
  BACKEND_API_VERSION: '1',
795
802
  SITE_NAME: 'LeadAutomator',
796
803
  SITE_URL: 'https://leadautomator.com.br',
804
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
797
805
  SITE_WHATSAPP_SUPPORT: '37988083717',
798
806
  SITE_WHATSAPP_BOT: '',
799
807
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -838,6 +846,7 @@ TenantDataService.tenantDataMap = {
838
846
  BACKEND_API_VERSION: '1',
839
847
  SITE_NAME: 'RealStateVideos',
840
848
  SITE_URL: 'https://realstatevideos.com.br',
849
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
841
850
  SITE_WHATSAPP_SUPPORT: '37988083717',
842
851
  SITE_WHATSAPP_BOT: '',
843
852
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -882,6 +891,7 @@ TenantDataService.tenantDataMap = {
882
891
  BACKEND_API_VERSION: '1',
883
892
  SITE_NAME: 'CaloriesNutri',
884
893
  SITE_URL: 'https://wrsolucoesdigitais.com.br',
894
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
885
895
  SITE_WHATSAPP_SUPPORT: '37988083717',
886
896
  SITE_WHATSAPP_BOT: '',
887
897
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -926,6 +936,7 @@ TenantDataService.tenantDataMap = {
926
936
  BACKEND_API_VERSION: '1',
927
937
  SITE_NAME: 'YoutubeDark',
928
938
  SITE_URL: 'https://wrsolucoesdigitais.com.br',
939
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
929
940
  SITE_WHATSAPP_SUPPORT: '37988083717',
930
941
  SITE_WHATSAPP_BOT: '',
931
942
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -970,6 +981,7 @@ TenantDataService.tenantDataMap = {
970
981
  BACKEND_API_VERSION: '1',
971
982
  SITE_NAME: 'SocialMediaAutomator',
972
983
  SITE_URL: 'https://wrsolucoesdigitais.com.br',
984
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
973
985
  SITE_WHATSAPP_SUPPORT: '37988083717',
974
986
  SITE_WHATSAPP_BOT: '',
975
987
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -1014,6 +1026,7 @@ TenantDataService.tenantDataMap = {
1014
1026
  BACKEND_API_VERSION: '1',
1015
1027
  SITE_NAME: 'Pão da Vida',
1016
1028
  SITE_URL: 'https://wrsolucoesdigitais.com.br',
1029
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
1017
1030
  SITE_WHATSAPP_SUPPORT: '37988083717',
1018
1031
  SITE_WHATSAPP_BOT: '',
1019
1032
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -1058,6 +1071,7 @@ TenantDataService.tenantDataMap = {
1058
1071
  BACKEND_API_VERSION: '1',
1059
1072
  SITE_NAME: 'Spotly.social',
1060
1073
  SITE_URL: 'https://spotly.social',
1074
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
1061
1075
  SITE_WHATSAPP_SUPPORT: '37988083717',
1062
1076
  SITE_WHATSAPP_BOT: '',
1063
1077
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -1104,6 +1118,7 @@ TenantDataService.tenantDataMap = {
1104
1118
  BACKEND_API_VERSION: '1',
1105
1119
  SITE_NAME: 'NotasBr',
1106
1120
  SITE_URL: 'https://notasbr.com.br',
1121
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
1107
1122
  SITE_WHATSAPP_SUPPORT: '37988083717',
1108
1123
  SITE_WHATSAPP_BOT: '',
1109
1124
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -1148,6 +1163,7 @@ TenantDataService.tenantDataMap = {
1148
1163
  BACKEND_API_VERSION: '1',
1149
1164
  SITE_NAME: 'Trabalho Home Office',
1150
1165
  SITE_URL: 'https://www.trabalhohomeoffice.com.br',
1166
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
1151
1167
  SITE_WHATSAPP_SUPPORT: '',
1152
1168
  SITE_WHATSAPP_BOT: '',
1153
1169
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -1194,6 +1210,7 @@ TenantDataService.tenantDataMap = {
1194
1210
  // Domínio registrado em 2026-09-20. Falta apontar o DNS para o
1195
1211
  // ingress do cluster e emitir o certificado.
1196
1212
  SITE_URL: 'https://www.mercadoprofissional.com.br',
1213
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
1197
1214
  SITE_WHATSAPP_SUPPORT: '',
1198
1215
  SITE_WHATSAPP_BOT: '',
1199
1216
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -1250,6 +1267,7 @@ TenantDataService.tenantDataMap = {
1250
1267
  BACKEND_API_VERSION: '1',
1251
1268
  SITE_NAME: 'BotTrader',
1252
1269
  SITE_URL: 'https://trader.wrsolucoesdigitais.com.br',
1270
+ FROM_EMAIL: 'app@wrsolucoesdigitais.com.br',
1253
1271
  SITE_WHATSAPP_SUPPORT: '',
1254
1272
  SITE_WHATSAPP_BOT: '',
1255
1273
  WHATSAPP_BOT_NUMBER_ID: '',
@@ -96,11 +96,49 @@ export interface CrmAgentToolCall {
96
96
  }
97
97
  export interface CrmGuardrails {
98
98
  forbiddenTopics: string[];
99
- blockUnsourcedRates: boolean;
100
- handoffOnSensitiveData: boolean;
99
+ /**
100
+ * Assuntos que o agente só pode citar se tiver consultado o material de
101
+ * apoio. Um por linha, em linguagem natural: "taxa", "juros", "prazo de
102
+ * entrega", "tempo de recuperação".
103
+ *
104
+ * SUBSTITUIU o antigo `blockUnsourcedRates`, que era um sim/não com os
105
+ * padrões de taxa e juros fixos no código. Servia a um ramo só: um salão
106
+ * não tem taxa, mas tem prazo; uma clínica não tem juros, mas tem tempo de
107
+ * recuperação. Lista vazia = trava desligada.
108
+ */
109
+ sourcedTopics: string[];
110
+ /**
111
+ * Proibir o agente de afirmar que algo foi aprovado, garantido ou liberado.
112
+ *
113
+ * Nasceu de crédito, onde prometer aprovação é problema jurídico. É regra
114
+ * de NEGÓCIO, não do produto — uma imobiliária quer isto ligado, uma
115
+ * oficina que aprova orçamento na hora, não.
116
+ */
117
+ blockApprovalPromise: boolean;
101
118
  mandatoryDisclaimer: string | null;
102
119
  maxAiTurnsBeforeHandoff: number | null;
103
120
  }
121
+ /**
122
+ * NÃO SÃO CONFIGURÁVEIS, de propósito — e vale registrar por quê, porque a
123
+ * pergunta volta:
124
+ *
125
+ * - PEDIR SENHA, CVV, NÚMERO DE CARTÃO OU TOKEN DE BANCO. Não é regra de
126
+ * ramo, é antifraude. Agente que pede isso está alucinando ou foi
127
+ * comprometido, e não existe negócio em que seja aceitável. Um interruptor
128
+ * aqui só serviria para alguém se machucar.
129
+ *
130
+ * - ENCENAR ESPERA ("um momento", "já te respondo"). Não é regra de ramo, é
131
+ * fato do runtime: a resposta é gerada inteira de uma vez e o agente não
132
+ * tem um segundo turno para voltar sozinho. O divisor de mensagens ainda
133
+ * entrega em partes espaçadas, o que dá aparência de tempo decorrido. A
134
+ * frase é mentira em qualquer ramo, e deixa o lead esperando algo que
135
+ * nunca foi agendado.
136
+ *
137
+ * - AFIRMAR QUE RECEBEU OU CONFERIU DOCUMENTO. Esta é condicional por
138
+ * construção, não por configuração: só vale quando a conta tem checklist.
139
+ * Sem documentos configurados o agente nem recebe a ferramenta, e não há
140
+ * afirmação a policiar.
141
+ */
104
142
  export declare enum CrmKnowledgeStatus {
105
143
  Uploaded = "Uploaded",
106
144
  Processing = "Processing",
@@ -140,7 +178,15 @@ export declare enum CrmDocumentRejectionReason {
140
178
  SuspectedTampering = "SuspectedTampering"
141
179
  }
142
180
  export interface CrmCadenceStep {
143
- afterHours: number;
181
+ /**
182
+ * Minutos após a última interação para disparar este passo.
183
+ *
184
+ * ERA `afterHours`, e hora era a menor unidade possível. Follow-up de
185
+ * poucos minutos é justamente o mais útil logo depois de um primeiro
186
+ * contato — quem pediu orçamento e não respondeu em 10 minutos ainda está
187
+ * com o assunto na cabeça; em 1 hora, já não está.
188
+ */
189
+ afterMinutes: number;
144
190
  stageKeys: string[];
145
191
  template: string | null;
146
192
  aiInstruction: string | null;
@@ -211,3 +257,22 @@ export declare enum CrmEventType {
211
257
  ConnectionRestored = "ConnectionRestored",
212
258
  MessageRecovered = "MessageRecovered"
213
259
  }
260
+ export interface CrmLeadIntentPayload {
261
+ agentId: string | null;
262
+ customFields: CrmCustomFields;
263
+ trackingPrefix?: string;
264
+ utmSource?: string | null;
265
+ utmMedium?: string | null;
266
+ utmCampaign?: string | null;
267
+ utmTerm?: string | null;
268
+ utmContent?: string | null;
269
+ }
270
+ export interface CrmLeadIntentResult {
271
+ trackingCode: string;
272
+ whatsappUrl: string;
273
+ }
274
+ export interface CrmPublicPersona {
275
+ agentId: string;
276
+ name: string;
277
+ publicTag: string | null;
278
+ }
@@ -159,6 +159,27 @@ var CrmAgentTool;
159
159
  // Devolve a conversa para um humano.
160
160
  CrmAgentTool["RequestHuman"] = "RequestHuman";
161
161
  })(CrmAgentTool || (exports.CrmAgentTool = CrmAgentTool = {}));
162
+ /**
163
+ * NÃO SÃO CONFIGURÁVEIS, de propósito — e vale registrar por quê, porque a
164
+ * pergunta volta:
165
+ *
166
+ * - PEDIR SENHA, CVV, NÚMERO DE CARTÃO OU TOKEN DE BANCO. Não é regra de
167
+ * ramo, é antifraude. Agente que pede isso está alucinando ou foi
168
+ * comprometido, e não existe negócio em que seja aceitável. Um interruptor
169
+ * aqui só serviria para alguém se machucar.
170
+ *
171
+ * - ENCENAR ESPERA ("um momento", "já te respondo"). Não é regra de ramo, é
172
+ * fato do runtime: a resposta é gerada inteira de uma vez e o agente não
173
+ * tem um segundo turno para voltar sozinho. O divisor de mensagens ainda
174
+ * entrega em partes espaçadas, o que dá aparência de tempo decorrido. A
175
+ * frase é mentira em qualquer ramo, e deixa o lead esperando algo que
176
+ * nunca foi agendado.
177
+ *
178
+ * - AFIRMAR QUE RECEBEU OU CONFERIU DOCUMENTO. Esta é condicional por
179
+ * construção, não por configuração: só vale quando a conta tem checklist.
180
+ * Sem documentos configurados o agente nem recebe a ferramenta, e não há
181
+ * afirmação a policiar.
182
+ */
162
183
  // ============================================
163
184
  // BASE DE CONHECIMENTO (RAG)
164
185
  // ============================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrcb/cb-common",
3
- "version": "1.0.886",
3
+ "version": "1.0.888",
4
4
  "description": "Common resources between services",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",