@rodrigobeber/patoai-dtos 4.8.22 → 4.8.23

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.
@@ -46,11 +46,19 @@ export interface LabAction {
46
46
  */
47
47
  impactHint?: string;
48
48
  }
49
- /** Uma linha "Antes -> Depois" já formatada em pt-BR (render 'field' e 'item'). */
49
+ /**
50
+ * Uma linha "Antes -> Depois" (render 'field' e 'item').
51
+ *
52
+ * `before`/`after` vêm FORMATADOS em pt-BR pelo support; o frontend só exibe. Quem compara para detectar
53
+ * "mudou desde a proposta" é o `beforeRaw` contra o valor cru lido da API — se os dois lados formatassem
54
+ * por conta própria, "18 segundos" × "18s" viraria um falso aviso de alteração.
55
+ */
50
56
  export interface LabProposalChangeDto {
57
+ param: string;
51
58
  label: string;
52
59
  before: string;
53
60
  after: string;
61
+ beforeRaw?: unknown;
54
62
  }
55
63
  export declare const LAB_ACTIONS: LabAction[];
56
64
  export declare function findLabAction(id: string): LabAction | undefined;
@@ -75,3 +75,85 @@ exports.LAB_ACTIONS = [
75
75
  function findLabAction(id) {
76
76
  return exports.LAB_ACTIONS.find(a => a.id === id);
77
77
  }
78
+ // ── Onda 2: os campos de Comportamento e Avançado ──────────────────────────────────────────────
79
+ // São os únicos que a Oráculo já enxerga SEM gastar uma ida de ferramenta (as duas seções estão em
80
+ // CHAT_CONFIG_SECTIONS, o núcleo que vai no prompt cacheado). Todos reeditáveis na tela.
81
+ //
82
+ // ⚠️ Os `min`/`max` aqui são a ÚNICA barreira: `PUT /agent-settings` e `PUT /advanced-settings` só checam
83
+ // permissão, não faixa. Sem eles, "espera 500 segundos" seria aceito pelo backend e o agente passaria 8
84
+ // minutos calado. Os valores espelham os inputs da tela (ResponseTimesManagement / AgentAdvancedSettings).
85
+ const COMPORTAMENTO = 'Configurações → Agente → Comportamento';
86
+ const AVANCADO = 'Configurações → Agente → Avançado';
87
+ const REEDITAVEL = (tela) => `${tela}: dá para mudar o valor de novo quando quiser.`;
88
+ /** Rótulos da tela (ResponseTimesManagement). Espelhados em `crew-config-labels.ts`, com teste travando. */
89
+ const TYPING_SPEED = [
90
+ { value: 9, label: 'Muito rápido' },
91
+ { value: 8, label: 'Robô' },
92
+ { value: 7, label: 'Humano Rápido' },
93
+ { value: 6, label: 'Humano Normal' },
94
+ { value: 5, label: 'Humano Lento' },
95
+ { value: 4, label: 'Lento' },
96
+ ];
97
+ /** Só as 3 opções que a tela OFERECE (`VISION_OPTIONS`). `both`/`text-ocr` são valores legados que ainda
98
+ * existem no banco: aparecem no "antes" de uma crew antiga, mas não podem ser propostos. */
99
+ const VISION = [
100
+ { value: 'no', label: 'Não' },
101
+ { value: 'text', label: 'Extrai significado' },
102
+ { value: 'file', label: 'Análise direta' },
103
+ ];
104
+ function toggle(id, name, title, path, summary, description) {
105
+ return {
106
+ id, op: 'update', render: 'field', title, path, summary,
107
+ reversible: 'tela', undoHint: REEDITAVEL(path),
108
+ params: [{ name, kind: 'boolean', required: true, label: title, description }],
109
+ };
110
+ }
111
+ exports.LAB_ACTIONS.push({
112
+ id: 'behavior.typingSpeed',
113
+ op: 'update', render: 'field',
114
+ title: 'Velocidade de digitação',
115
+ path: COMPORTAMENTO,
116
+ summary: 'Mudar a velocidade com que o agente "digita" a resposta.',
117
+ reversible: 'tela', undoHint: REEDITAVEL(COMPORTAMENTO),
118
+ params: [{
119
+ name: 'typingSpeed', kind: 'enum', required: true, options: TYPING_SPEED,
120
+ label: 'Velocidade de digitação',
121
+ description: 'Quanto MAIOR o número, mais rápido o agente responde (9 = quase instantâneo, 4 = bem devagar).',
122
+ }],
123
+ }, {
124
+ id: 'behavior.debounce',
125
+ op: 'update', render: 'field',
126
+ title: 'Tempo de espera antes de responder',
127
+ path: COMPORTAMENTO,
128
+ summary: 'Ajustar quantos segundos o agente espera, depois da mensagem do lead, antes de responder.',
129
+ reversible: 'tela', undoHint: REEDITAVEL(COMPORTAMENTO),
130
+ params: [{
131
+ name: 'debounce', kind: 'number', required: true, min: 8, max: 120, unit: 'segundos',
132
+ label: 'Tempo de espera antes de responder',
133
+ description: 'Segundos de espera. Serve para o lead terminar de escrever antes de o agente responder.',
134
+ }],
135
+ }, toggle('behavior.pretend', 'pretend', 'Negar que é IA', COMPORTAMENTO, 'Ligar/desligar o agente negar que é uma inteligência artificial quando perguntam.', 'Ligado = o agente nega ser IA quando o lead pergunta.'), {
136
+ id: 'advanced.window',
137
+ op: 'update', render: 'field',
138
+ title: 'Janela de mensagens para a IA',
139
+ path: AVANCADO,
140
+ summary: 'Ajustar quantas mensagens anteriores o agente enxerga ao responder.',
141
+ reversible: 'tela', undoHint: REEDITAVEL(AVANCADO),
142
+ params: [{
143
+ name: 'window', kind: 'number', required: true, min: 5, max: 80, unit: 'mensagens',
144
+ label: 'Janela de mensagens para a IA',
145
+ description: 'Quantas mensagens do histórico o agente lê. Mais mensagens = mais contexto e mais custo por resposta.',
146
+ }],
147
+ }, toggle('advanced.userInfo', 'userInfo', 'Confirmar nome do lead/cliente', AVANCADO, 'Ligar/desligar o agente confirmar o nome do lead no início da conversa.', 'Ligado = o agente confirma o nome antes de seguir.'), toggle('advanced.document', 'document', 'Capacidade de ler documentos', AVANCADO, 'Ligar/desligar a leitura de documentos (PDF etc.) enviados pelo lead.', 'Ligado = o agente lê documentos que o lead enviar.'), {
148
+ id: 'advanced.vision',
149
+ op: 'update', render: 'field',
150
+ title: 'Suporte a imagens',
151
+ path: AVANCADO,
152
+ summary: 'Mudar como o agente trata imagens enviadas pelo lead.',
153
+ reversible: 'tela', undoHint: REEDITAVEL(AVANCADO),
154
+ params: [{
155
+ name: 'vision', kind: 'enum', required: true, options: VISION,
156
+ label: 'Suporte a imagens',
157
+ description: 'Não = ignora imagens; Extrai significado = outra IA descreve a imagem; Análise direta = o próprio agente olha a imagem.',
158
+ }],
159
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rodrigobeber/patoai-dtos",
3
- "version": "4.8.22",
3
+ "version": "4.8.23",
4
4
  "description": "Data Transfer Objects for PatoAI",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",