@wrcb/cb-common 1.0.891 → 1.0.893

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.
@@ -76,16 +76,19 @@ export declare enum CrmHandoffReason {
76
76
  LeadRequested = "LeadRequested",
77
77
  OutOfScope = "OutOfScope",
78
78
  Sensitive = "Sensitive",
79
- DocumentBlocked = "DocumentBlocked",
80
79
  ManualTakeover = "ManualTakeover",
81
- SlaBreach = "SlaBreach"
80
+ SlaBreach = "SlaBreach",
81
+ MinorSuspected = "MinorSuspected"
82
+ }
83
+ export declare enum CrmAgentStyle {
84
+ Service = "Service",
85
+ Companion = "Companion"
82
86
  }
83
87
  export declare enum CrmAgentTool {
84
88
  SearchKnowledge = "SearchKnowledge",
85
89
  MoveStage = "MoveStage",
86
90
  ScheduleFollowUp = "ScheduleFollowUp",
87
91
  RecordField = "RecordField",
88
- RequestDocument = "RequestDocument",
89
92
  RequestHuman = "RequestHuman"
90
93
  }
91
94
  export interface CrmAgentToolCall {
@@ -96,25 +99,6 @@ export interface CrmAgentToolCall {
96
99
  }
97
100
  export interface CrmGuardrails {
98
101
  forbiddenTopics: string[];
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;
118
102
  mandatoryDisclaimer: string | null;
119
103
  maxAiTurnsBeforeHandoff: number | null;
120
104
  }
@@ -133,11 +117,6 @@ export interface CrmGuardrails {
133
117
  * entrega em partes espaçadas, o que dá aparência de tempo decorrido. A
134
118
  * frase é mentira em qualquer ramo, e deixa o lead esperando algo que
135
119
  * 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
120
  */
142
121
  export declare enum CrmKnowledgeStatus {
143
122
  Uploaded = "Uploaded",
@@ -152,31 +131,6 @@ export declare enum CrmKnowledgeFormat {
152
131
  Markdown = "Markdown",
153
132
  Inline = "Inline"
154
133
  }
155
- export interface CrmDocumentRequirement {
156
- key: string;
157
- label: string;
158
- aiInstruction: string;
159
- validationHints: string[];
160
- required: boolean;
161
- acceptedMimeTypes: string[];
162
- maxFiles: number;
163
- maxRejections: number;
164
- }
165
- export declare enum CrmLeadDocumentStatus {
166
- Received = "Received",
167
- Validating = "Validating",
168
- Approved = "Approved",
169
- Rejected = "Rejected",
170
- PendingReview = "PendingReview",
171
- Purged = "Purged"
172
- }
173
- export declare enum CrmDocumentRejectionReason {
174
- Unreadable = "Unreadable",
175
- WrongDocument = "WrongDocument",
176
- Incomplete = "Incomplete",
177
- Expired = "Expired",
178
- SuspectedTampering = "SuspectedTampering"
179
- }
180
134
  export interface CrmCadenceStep {
181
135
  /**
182
136
  * Minutos após a última interação para disparar este passo.
@@ -243,8 +197,6 @@ export declare enum CrmEventType {
243
197
  MessageSent = "MessageSent",
244
198
  MessageReceived = "MessageReceived",
245
199
  ControlChanged = "ControlChanged",
246
- DocumentReceived = "DocumentReceived",
247
- DocumentReviewed = "DocumentReviewed",
248
200
  CadenceStepFired = "CadenceStepFired",
249
201
  CadenceStopped = "CadenceStopped",
250
202
  OptedOut = "OptedOut",
@@ -260,6 +212,8 @@ export declare enum CrmEventType {
260
212
  export interface CrmLeadIntentPayload {
261
213
  agentId: string | null;
262
214
  customFields: CrmCustomFields;
215
+ country?: string | null;
216
+ language?: string | null;
263
217
  trackingPrefix?: string;
264
218
  utmSource?: string | null;
265
219
  utmMedium?: string | null;
@@ -6,11 +6,11 @@
6
6
  // enquanto o gn-social-media não for portado para este núcleo.
7
7
  //
8
8
  // Regra de ouro deste módulo: o que varia por tenant é DADO, não código.
9
- // Por isso estágio de funil, passo de cadência, requisito de documento e
10
- // ferramenta do agente são interfaces/configuração — nunca enum fechado.
9
+ // Por isso estágio de funil, passo de cadência e ferramenta do agente são
10
+ // interfaces/configuração — nunca enum fechado.
11
11
  // Enum aqui é só para o que é genuinamente fixo (canal, direção, ator).
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.CrmEventType = exports.CrmCadenceStopReason = exports.CrmDocumentRejectionReason = exports.CrmLeadDocumentStatus = exports.CrmKnowledgeFormat = exports.CrmKnowledgeStatus = exports.CrmAgentTool = exports.CrmHandoffReason = exports.CrmOptOutReason = exports.CrmControl = exports.CrmLeadSource = exports.CrmStageChangedBy = exports.CrmWindowState = exports.CrmConnectionState = exports.CrmMessageStatus = exports.CrmMessageType = exports.CrmDirection = exports.CrmActor = exports.CrmChannel = void 0;
13
+ exports.CrmEventType = exports.CrmCadenceStopReason = exports.CrmKnowledgeFormat = exports.CrmKnowledgeStatus = exports.CrmAgentTool = exports.CrmAgentStyle = exports.CrmHandoffReason = exports.CrmOptOutReason = exports.CrmControl = exports.CrmLeadSource = exports.CrmStageChangedBy = exports.CrmWindowState = exports.CrmConnectionState = exports.CrmMessageStatus = exports.CrmMessageType = exports.CrmDirection = exports.CrmActor = exports.CrmChannel = void 0;
14
14
  // ============================================
15
15
  // CANAL E MENSAGEM
16
16
  // ============================================
@@ -80,7 +80,7 @@ var CrmStageChangedBy;
80
80
  (function (CrmStageChangedBy) {
81
81
  CrmStageChangedBy["Ai"] = "Ai";
82
82
  CrmStageChangedBy["Human"] = "Human";
83
- // Regra do sistema (ex.: checklist de documentos completou).
83
+ // Regra do sistema, sem passar pelo modelo nem por um operador.
84
84
  CrmStageChangedBy["Automation"] = "Automation";
85
85
  })(CrmStageChangedBy || (exports.CrmStageChangedBy = CrmStageChangedBy = {}));
86
86
  // ============================================
@@ -131,18 +131,30 @@ var CrmHandoffReason;
131
131
  CrmHandoffReason["OutOfScope"] = "OutOfScope";
132
132
  // Assunto sensível (reclamação, ameaça de processo, dado bancário).
133
133
  CrmHandoffReason["Sensitive"] = "Sensitive";
134
- // Documento reprovado mais vezes que o limite configurado.
135
- CrmHandoffReason["DocumentBlocked"] = "DocumentBlocked";
136
134
  // Um operador assumiu pelo painel, sem a IA ter pedido.
137
135
  CrmHandoffReason["ManualTakeover"] = "ManualTakeover";
138
136
  // Estourou o SLA do estágio.
139
137
  CrmHandoffReason["SlaBreach"] = "SlaBreach";
138
+ // O contato disse ou deu sinal de ter menos de 18 anos, numa conversa de
139
+ // persona adulta. A IA sai e não volta sozinha.
140
+ CrmHandoffReason["MinorSuspected"] = "MinorSuspected";
140
141
  })(CrmHandoffReason || (exports.CrmHandoffReason = CrmHandoffReason = {}));
142
+ // Como o agente conversa. Muda o que o núcleo injeta no prompt, a leitura do
143
+ // opt-out e as travas — não o que a persona é, que continua no `systemPrompt`.
144
+ var CrmAgentStyle;
145
+ (function (CrmAgentStyle) {
146
+ // Atendimento comercial: qualifica, tira dúvida, move o card, chama humano.
147
+ CrmAgentStyle["Service"] = "Service";
148
+ // Persona de companhia adulta: conversa pela conversa, fica no personagem.
149
+ // Liga a trava de menor de idade e um opt-out que só entende frase
150
+ // inequívoca — "chega mais" e "não para" são flerte, não pedido de parada.
151
+ CrmAgentStyle["Companion"] = "Companion";
152
+ })(CrmAgentStyle || (exports.CrmAgentStyle = CrmAgentStyle = {}));
141
153
  // ============================================
142
154
  // AGENTE
143
155
  // ============================================
144
- // Ferramentas que o agente pode receber. Habilitadas por tenant: um CRM de
145
- // empréstimo usa coleta de documento, um de agendamento não.
156
+ // Ferramentas que o agente pode receber. Habilitadas por agente: cada
157
+ // operação liga só as que fazem sentido para ela.
146
158
  var CrmAgentTool;
147
159
  (function (CrmAgentTool) {
148
160
  // Busca vetorial na base de conhecimento do tenant (apostila, tabela de
@@ -154,8 +166,6 @@ var CrmAgentTool;
154
166
  CrmAgentTool["ScheduleFollowUp"] = "ScheduleFollowUp";
155
167
  // Grava um dado coletado na conversa em customFields.
156
168
  CrmAgentTool["RecordField"] = "RecordField";
157
- // Pede um documento da checklist ao lead.
158
- CrmAgentTool["RequestDocument"] = "RequestDocument";
159
169
  // Devolve a conversa para um humano.
160
170
  CrmAgentTool["RequestHuman"] = "RequestHuman";
161
171
  })(CrmAgentTool || (exports.CrmAgentTool = CrmAgentTool = {}));
@@ -174,11 +184,6 @@ var CrmAgentTool;
174
184
  * entrega em partes espaçadas, o que dá aparência de tempo decorrido. A
175
185
  * frase é mentira em qualquer ramo, e deixa o lead esperando algo que
176
186
  * 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
187
  */
183
188
  // ============================================
184
189
  // BASE DE CONHECIMENTO (RAG)
@@ -203,30 +208,6 @@ var CrmKnowledgeFormat;
203
208
  // Texto colado direto no painel, sem arquivo.
204
209
  CrmKnowledgeFormat["Inline"] = "Inline";
205
210
  })(CrmKnowledgeFormat || (exports.CrmKnowledgeFormat = CrmKnowledgeFormat = {}));
206
- var CrmLeadDocumentStatus;
207
- (function (CrmLeadDocumentStatus) {
208
- // Recebido e armazenado, ainda não analisado.
209
- CrmLeadDocumentStatus["Received"] = "Received";
210
- // Em análise pelo modelo de visão.
211
- CrmLeadDocumentStatus["Validating"] = "Validating";
212
- // Aprovado automaticamente ou por um operador.
213
- CrmLeadDocumentStatus["Approved"] = "Approved";
214
- // Ilegível, documento errado ou fora de validade.
215
- CrmLeadDocumentStatus["Rejected"] = "Rejected";
216
- // Aguardando conferência humana (o modelo não teve confiança suficiente).
217
- CrmLeadDocumentStatus["PendingReview"] = "PendingReview";
218
- // Removido por retenção/pedido do titular (LGPD). O registro permanece
219
- // para auditoria; o arquivo no Wasabi já não existe.
220
- CrmLeadDocumentStatus["Purged"] = "Purged";
221
- })(CrmLeadDocumentStatus || (exports.CrmLeadDocumentStatus = CrmLeadDocumentStatus = {}));
222
- var CrmDocumentRejectionReason;
223
- (function (CrmDocumentRejectionReason) {
224
- CrmDocumentRejectionReason["Unreadable"] = "Unreadable";
225
- CrmDocumentRejectionReason["WrongDocument"] = "WrongDocument";
226
- CrmDocumentRejectionReason["Incomplete"] = "Incomplete";
227
- CrmDocumentRejectionReason["Expired"] = "Expired";
228
- CrmDocumentRejectionReason["SuspectedTampering"] = "SuspectedTampering";
229
- })(CrmDocumentRejectionReason || (exports.CrmDocumentRejectionReason = CrmDocumentRejectionReason = {}));
230
211
  var CrmCadenceStopReason;
231
212
  (function (CrmCadenceStopReason) {
232
213
  CrmCadenceStopReason["LeadReplied"] = "LeadReplied";
@@ -239,8 +220,7 @@ var CrmCadenceStopReason;
239
220
  // EVENTOS DE AUDITORIA
240
221
  // ============================================
241
222
  // Tudo que muda um lead vira um CrmEvent. É o que permite responder "por que
242
- // este lead foi para 'perdido' às 3h da manhã" — e é exigência prática de
243
- // LGPD quando há decisão automatizada sobre crédito.
223
+ // este lead foi para 'perdido' às 3h da manhã".
244
224
  var CrmEventType;
245
225
  (function (CrmEventType) {
246
226
  CrmEventType["LeadCreated"] = "LeadCreated";
@@ -248,8 +228,6 @@ var CrmEventType;
248
228
  CrmEventType["MessageSent"] = "MessageSent";
249
229
  CrmEventType["MessageReceived"] = "MessageReceived";
250
230
  CrmEventType["ControlChanged"] = "ControlChanged";
251
- CrmEventType["DocumentReceived"] = "DocumentReceived";
252
- CrmEventType["DocumentReviewed"] = "DocumentReviewed";
253
231
  CrmEventType["CadenceStepFired"] = "CadenceStepFired";
254
232
  CrmEventType["CadenceStopped"] = "CadenceStopped";
255
233
  CrmEventType["OptedOut"] = "OptedOut";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrcb/cb-common",
3
- "version": "1.0.891",
3
+ "version": "1.0.893",
4
4
  "description": "Common resources between services",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",