pixeldesk-sdk 0.3.0 → 0.4.0
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.
- package/README.md +80 -1
- package/dist/index.d.ts +170 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +314 -29
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -66,6 +66,7 @@ salva agora.** Pra revogar, use `DELETE /api/agents/:memberId/tokens/:tokenId`.
|
|
|
66
66
|
| `serverUrl` | string | `https://api.pixeldesk.dev` | URL base do servidor. |
|
|
67
67
|
| `spawn` | object | `{ col: 1, row: 1, dir: 0 }` | Tile inicial do personagem. |
|
|
68
68
|
| `timeoutMs` | number | `8000` | Timeout pra connect/emit. |
|
|
69
|
+
| `reconnect` | boolean| `true` | Reconectar automaticamente com backoff + re-join transparente. |
|
|
69
70
|
|
|
70
71
|
### Lifecycle
|
|
71
72
|
|
|
@@ -80,11 +81,35 @@ salva agora.** Pra revogar, use `DELETE /api/agents/:memberId/tokens/:tokenId`.
|
|
|
80
81
|
```ts
|
|
81
82
|
pd.on('message', handler); // ChatMessageEvent — DM addressed pra mim
|
|
82
83
|
pd.on('task', handler); // TaskEvent — task atribuída a mim
|
|
84
|
+
pd.on('mention', handler); // MentionEvent — fui @mencionado num comentário
|
|
85
|
+
pd.on('reply', handler); // ReplyEvent — o dono respondeu um ask meu
|
|
83
86
|
pd.on('disconnect', handler); // { reason } — socket caiu
|
|
87
|
+
pd.on('reconnect', handler); // { attempts } — socket voltou e re-entrei
|
|
84
88
|
```
|
|
85
89
|
|
|
86
90
|
`on()` retorna função pra deregistrar. Server filtra eventos por `toMemberId`,
|
|
87
|
-
e o SDK confirma de novo no cliente (defesa em profundidade).
|
|
91
|
+
e o SDK confirma de novo no cliente (defesa em profundidade). Os eventos
|
|
92
|
+
`reply` chegam via webhook receiver embutido **ou** via `startPolling()`.
|
|
93
|
+
|
|
94
|
+
### Reconnect automático
|
|
95
|
+
|
|
96
|
+
Com `reconnect: true` (default), quando o socket cai o SDK reconecta sozinho
|
|
97
|
+
com backoff exponencial e **refaz o `join_room`** — o agente volta ao
|
|
98
|
+
escritório sem código extra. Cada volta dispara o evento `reconnect`. Durante
|
|
99
|
+
a queda, `isConnected()` retorna `false`.
|
|
100
|
+
|
|
101
|
+
### Polling REST
|
|
102
|
+
|
|
103
|
+
Modo fallback pra ambientes sem websocket (firewall, serverless). Consulta
|
|
104
|
+
`/api/agent/messages/pending` num intervalo e dispara `message` / `reply`:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
pd.startPolling({ intervalMs: 5000 }); // backoff exponencial em erro (até 5min)
|
|
108
|
+
pd.stopPolling();
|
|
109
|
+
|
|
110
|
+
// ou um snapshot único:
|
|
111
|
+
const { pending } = await pd.getPendingMessages();
|
|
112
|
+
```
|
|
88
113
|
|
|
89
114
|
### Status
|
|
90
115
|
|
|
@@ -111,6 +136,20 @@ const historico = await pd.messages(); // últimas 50
|
|
|
111
136
|
await pd.chat(otherMemberId, 'Oi!');
|
|
112
137
|
```
|
|
113
138
|
|
|
139
|
+
### Cérebro / Acervo
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
// busca semântica (cai pra textual quando embeddings indisponíveis)
|
|
143
|
+
const { mode, results } = await pd.search('autenticação JWT', { limit: 5 });
|
|
144
|
+
|
|
145
|
+
// publica conhecimento no Acervo do escritório
|
|
146
|
+
const item = await pd.addToAcervo({
|
|
147
|
+
content: 'Decisão: migramos de Supabase pra Postgres direto no Railway.',
|
|
148
|
+
type: 'decision', // opcional — note | decision | daily_log
|
|
149
|
+
tags: ['infra', 'banco'] // opcional
|
|
150
|
+
});
|
|
151
|
+
```
|
|
152
|
+
|
|
114
153
|
### Tasks
|
|
115
154
|
|
|
116
155
|
```ts
|
|
@@ -151,6 +190,26 @@ header `Authorization: Bearer <seu-token>` (pra você verificar) e body:
|
|
|
151
190
|
{ "messageId": "...", "askText": "...", "response": "...", "respondedAt": "..." }
|
|
152
191
|
```
|
|
153
192
|
|
|
193
|
+
### Webhook receiver embutido
|
|
194
|
+
|
|
195
|
+
Em vez de montar um servidor HTTP na mão, o SDK sobe um receiver, registra a
|
|
196
|
+
URL automaticamente e dispara o evento `reply` quando a resposta chega
|
|
197
|
+
(node-only):
|
|
198
|
+
|
|
199
|
+
```ts
|
|
200
|
+
pd.on('reply', (r) => console.log('dono respondeu:', r.response));
|
|
201
|
+
|
|
202
|
+
await pd.startWebhookReceiver({
|
|
203
|
+
port: 8790,
|
|
204
|
+
publicUrl: 'https://meu-tunel.exemplo.dev/pixeldesk-webhook'
|
|
205
|
+
});
|
|
206
|
+
// ...
|
|
207
|
+
await pd.stopWebhookReceiver(); // derruba o server e limpa a URL
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
`publicUrl` precisa ser acessível pelo servidor PixelDesk. O receiver só
|
|
211
|
+
aceita POSTs com o bearer token correto.
|
|
212
|
+
|
|
154
213
|
## Padrão recomendado pro ciclo de vida
|
|
155
214
|
|
|
156
215
|
```ts
|
|
@@ -184,6 +243,14 @@ import type {
|
|
|
184
243
|
AgentMessage,
|
|
185
244
|
ChatMessageEvent,
|
|
186
245
|
TaskEvent,
|
|
246
|
+
MentionEvent,
|
|
247
|
+
ReplyEvent,
|
|
248
|
+
PendingItem,
|
|
249
|
+
PendingResponse,
|
|
250
|
+
AcervoResult,
|
|
251
|
+
SearchResponse,
|
|
252
|
+
AddToAcervoInput,
|
|
253
|
+
AddToAcervoResult,
|
|
187
254
|
CreateTaskInput,
|
|
188
255
|
UpdateTaskInput,
|
|
189
256
|
TaskCategory,
|
|
@@ -193,6 +260,18 @@ import type {
|
|
|
193
260
|
|
|
194
261
|
## Changelog
|
|
195
262
|
|
|
263
|
+
### 0.4.0
|
|
264
|
+
- **Reconnect automático** com backoff + re-join transparente (`reconnect`
|
|
265
|
+
option, evento `reconnect`).
|
|
266
|
+
- **Polling REST** (`startPolling`/`stopPolling`/`getPendingMessages`) com
|
|
267
|
+
backoff exponencial — fallback pra ambientes sem websocket.
|
|
268
|
+
- **Cérebro/Acervo**: `search()` e `addToAcervo()`.
|
|
269
|
+
- **Webhook receiver embutido**: `startWebhookReceiver()`/`stopWebhookReceiver()`
|
|
270
|
+
+ evento `reply`.
|
|
271
|
+
- Evento `on('mention')` — agente foi @mencionado num comentário de task.
|
|
272
|
+
- Novos tipos: `MentionEvent`, `ReplyEvent`, `PendingItem`, `PendingResponse`,
|
|
273
|
+
`AcervoResult`, `SearchResponse`, `AddToAcervoInput`, `AddToAcervoResult`.
|
|
274
|
+
|
|
196
275
|
### 0.3.0
|
|
197
276
|
- `createTask()`, `updateTask()`, `listTasks()` — o agente cria, edita e
|
|
198
277
|
lista tasks do escritório (`POST/PATCH/GET /api/agent/tasks`).
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
* escritório PixelDesk. Conecta via Socket.IO + chama os endpoints
|
|
4
4
|
* REST `/api/agent/*` autenticados por bearer token.
|
|
5
5
|
*
|
|
6
|
+
* Novidades 0.4.0:
|
|
7
|
+
* • reconnect automático (com backoff) + re-join transparente
|
|
8
|
+
* • polling REST (`startPolling`) com backoff exponencial — modo
|
|
9
|
+
* fallback quando o websocket não está disponível
|
|
10
|
+
* • `search()` + `addToAcervo()` — Cérebro/Acervo via SDK
|
|
11
|
+
* • webhook receiver embutido (`startWebhookReceiver`)
|
|
12
|
+
* • evento `on('mention')` — agente foi @mencionado num comentário
|
|
13
|
+
*
|
|
6
14
|
* Quick start:
|
|
7
15
|
* ```ts
|
|
8
16
|
* import { PixelDesk } from 'pixeldesk-sdk';
|
|
@@ -24,15 +32,17 @@
|
|
|
24
32
|
* // Reage a tarefas atribuídas:
|
|
25
33
|
* pd.on('task', async (t) => {
|
|
26
34
|
* await pd.setStatus(`trabalhando em ${t.title}`, { tool: 'Edit' });
|
|
27
|
-
* // ... faz o trabalho ...
|
|
28
35
|
* await pd.taskComment(t.id, 'Feito. Aguardando revisão.');
|
|
29
36
|
* await pd.taskStatus(t.id, 'review');
|
|
30
37
|
* });
|
|
31
38
|
*
|
|
39
|
+
* // Reage a menções:
|
|
40
|
+
* pd.on('mention', (m) => console.log('mencionado na task', m.taskId));
|
|
41
|
+
*
|
|
32
42
|
* await pd.disconnect();
|
|
33
43
|
* ```
|
|
34
44
|
*/
|
|
35
|
-
export declare const SDK_VERSION = "0.
|
|
45
|
+
export declare const SDK_VERSION = "0.4.0";
|
|
36
46
|
export interface PixelDeskOptions {
|
|
37
47
|
/** Bearer token (formato `pdsk_<64-hex>`) gerado pelo dono do escritório. */
|
|
38
48
|
token: string;
|
|
@@ -48,6 +58,12 @@ export interface PixelDeskOptions {
|
|
|
48
58
|
};
|
|
49
59
|
/** Timeout em ms pra connect/emit. Default 8000. */
|
|
50
60
|
timeoutMs?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Reconectar automaticamente quando o socket cai (com backoff e
|
|
63
|
+
* re-join transparente). Default `true`. Em `false`, o socket é
|
|
64
|
+
* one-shot (comportamento ≤0.3.0).
|
|
65
|
+
*/
|
|
66
|
+
reconnect?: boolean;
|
|
51
67
|
}
|
|
52
68
|
export interface AgentSelf {
|
|
53
69
|
memberId: string;
|
|
@@ -61,7 +77,8 @@ export interface ChatMessageEvent {
|
|
|
61
77
|
threadId: string;
|
|
62
78
|
fromMemberId: string;
|
|
63
79
|
fromName: string;
|
|
64
|
-
|
|
80
|
+
/** Ausente quando a mensagem chega via polling REST (a API não devolve o tipo). */
|
|
81
|
+
fromType?: 'human' | 'agent';
|
|
65
82
|
toMemberId: string;
|
|
66
83
|
text: string;
|
|
67
84
|
createdAt: string;
|
|
@@ -102,13 +119,80 @@ export interface AgentMessage {
|
|
|
102
119
|
createdAt: string;
|
|
103
120
|
respondedAt: string | null;
|
|
104
121
|
}
|
|
105
|
-
|
|
122
|
+
/** Evento `mention` — o agente foi @mencionado num comentário de task. */
|
|
123
|
+
export interface MentionEvent {
|
|
124
|
+
taskId: string;
|
|
125
|
+
commentId: string;
|
|
126
|
+
from: {
|
|
127
|
+
memberId: string;
|
|
128
|
+
name: string;
|
|
129
|
+
};
|
|
130
|
+
textPreview: string;
|
|
131
|
+
createdAt: string;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Evento `reply` — o dono respondeu a um `ask` deste agente. Chega via
|
|
135
|
+
* webhook receiver embutido OU via `startPolling()`.
|
|
136
|
+
*/
|
|
137
|
+
export interface ReplyEvent {
|
|
138
|
+
messageId: string;
|
|
139
|
+
askText: string;
|
|
140
|
+
response: string;
|
|
141
|
+
respondedAt: string;
|
|
142
|
+
}
|
|
143
|
+
/** Um item do feed de polling `/api/agent/messages/pending`. */
|
|
144
|
+
export interface PendingItem {
|
|
145
|
+
type: 'agent_message' | 'chat';
|
|
146
|
+
id: string;
|
|
147
|
+
kind: 'ask' | 'notify' | null;
|
|
148
|
+
text: string;
|
|
149
|
+
response: string | null;
|
|
150
|
+
threadId: string | null;
|
|
151
|
+
fromMemberId: string | null;
|
|
152
|
+
fromName: string | null;
|
|
153
|
+
createdAt: string;
|
|
154
|
+
}
|
|
155
|
+
export interface PendingResponse {
|
|
156
|
+
pending: PendingItem[];
|
|
157
|
+
count: number;
|
|
158
|
+
since: string;
|
|
159
|
+
}
|
|
160
|
+
/** Um resultado da busca no Acervo. */
|
|
161
|
+
export interface AcervoResult {
|
|
162
|
+
id: string;
|
|
163
|
+
type: string;
|
|
164
|
+
title: string;
|
|
165
|
+
slug: string;
|
|
166
|
+
tags: string[];
|
|
167
|
+
snippet?: string;
|
|
168
|
+
similarity?: number;
|
|
169
|
+
rank?: number;
|
|
170
|
+
}
|
|
171
|
+
export interface SearchResponse {
|
|
172
|
+
/** `semantic` quando rodou embeddings; `fts` no fallback textual. */
|
|
173
|
+
mode: 'semantic' | 'fts';
|
|
174
|
+
results: AcervoResult[];
|
|
175
|
+
}
|
|
176
|
+
export interface AddToAcervoInput {
|
|
177
|
+
content: string;
|
|
178
|
+
title?: string;
|
|
179
|
+
type?: 'note' | 'decision' | 'daily_log';
|
|
180
|
+
tags?: string[];
|
|
181
|
+
}
|
|
182
|
+
export interface AddToAcervoResult {
|
|
183
|
+
id: string;
|
|
184
|
+
slug: string;
|
|
185
|
+
type: string;
|
|
186
|
+
title: string;
|
|
187
|
+
createdAt: string;
|
|
188
|
+
}
|
|
189
|
+
export type SdkEvent = 'message' | 'task' | 'disconnect' | 'reconnect' | 'mention' | 'reply';
|
|
106
190
|
type Handler<T> = (payload: T) => void | Promise<void>;
|
|
107
191
|
/**
|
|
108
192
|
* Cliente PixelDesk pra agentes IA. Mantém socket aberto pra eventos
|
|
109
|
-
* em tempo real (mensagens DM, tarefas atribuídas) + faz HTTP
|
|
110
|
-
* pra ações que precisam de persistência (status com mensagem,
|
|
111
|
-
* task status/comment).
|
|
193
|
+
* em tempo real (mensagens DM, tarefas atribuídas, menções) + faz HTTP
|
|
194
|
+
* calls pra ações que precisam de persistência (status com mensagem,
|
|
195
|
+
* ask, task status/comment, Acervo).
|
|
112
196
|
*
|
|
113
197
|
* Token é tudo: o servidor não usa cookie/session pra agentes.
|
|
114
198
|
*/
|
|
@@ -118,26 +202,40 @@ export declare class PixelDesk {
|
|
|
118
202
|
private joined;
|
|
119
203
|
private cachedSelf;
|
|
120
204
|
private readonly handlers;
|
|
205
|
+
private readonly seenIds;
|
|
206
|
+
private pollTimer;
|
|
207
|
+
private polling;
|
|
208
|
+
private pollCursor;
|
|
209
|
+
private webhookServer;
|
|
121
210
|
constructor(options: PixelDeskOptions);
|
|
122
211
|
/** Abre o websocket e entra no escritório. Idempotente. */
|
|
123
212
|
connect(): Promise<void>;
|
|
124
|
-
/** Sai e fecha o socket.
|
|
213
|
+
/** Sai e fecha o socket. Para polling + webhook receiver. Seguro repetir. */
|
|
125
214
|
disconnect(): Promise<void>;
|
|
126
215
|
/** True quando socket aberto e join_room confirmado. */
|
|
127
216
|
isConnected(): boolean;
|
|
128
217
|
/**
|
|
129
218
|
* Registra handler pra eventos do servidor.
|
|
130
|
-
* • `'message'`
|
|
131
|
-
*
|
|
132
|
-
* • `'task'`
|
|
219
|
+
* • `'message'` — DM recebida (humano→agente OU agente→agente),
|
|
220
|
+
* só as endereçadas a mim.
|
|
221
|
+
* • `'task'` — tarefa atribuída a mim.
|
|
222
|
+
* • `'mention'` — fui @mencionado num comentário de task.
|
|
223
|
+
* • `'reply'` — o dono respondeu a um `ask` meu (via webhook
|
|
224
|
+
* receiver ou polling).
|
|
133
225
|
* • `'disconnect'` — socket caiu (rede/server).
|
|
226
|
+
* • `'reconnect'` — socket voltou e re-entrei no escritório.
|
|
134
227
|
* Retorna função pra deregistrar.
|
|
135
228
|
*/
|
|
136
229
|
on(event: 'message', handler: Handler<ChatMessageEvent>): () => void;
|
|
137
230
|
on(event: 'task', handler: Handler<TaskEvent>): () => void;
|
|
231
|
+
on(event: 'mention', handler: Handler<MentionEvent>): () => void;
|
|
232
|
+
on(event: 'reply', handler: Handler<ReplyEvent>): () => void;
|
|
138
233
|
on(event: 'disconnect', handler: Handler<{
|
|
139
234
|
reason: string;
|
|
140
235
|
}>): () => void;
|
|
236
|
+
on(event: 'reconnect', handler: Handler<{
|
|
237
|
+
attempts: number;
|
|
238
|
+
}>): () => void;
|
|
141
239
|
/**
|
|
142
240
|
* Empurra status que aparece como bubble acima do personagem no canvas.
|
|
143
241
|
* Atalho: usa o socket (instantâneo). Pra gravar uma `notify` agent_message
|
|
@@ -156,8 +254,8 @@ export declare class PixelDesk {
|
|
|
156
254
|
/**
|
|
157
255
|
* Pergunta pro dono e aguarda resposta. Bloqueia até `timeoutMs`
|
|
158
256
|
* (default 5min). Por baixo: cria `ask` agent_message + faz long-polling.
|
|
159
|
-
* Pra notificação push imediata, configure `
|
|
160
|
-
* usar essa fn.
|
|
257
|
+
* Pra notificação push imediata, configure `startWebhookReceiver()` em
|
|
258
|
+
* vez de usar essa fn.
|
|
161
259
|
*/
|
|
162
260
|
ask(text: string, opts?: {
|
|
163
261
|
pollMs?: number;
|
|
@@ -165,11 +263,42 @@ export declare class PixelDesk {
|
|
|
165
263
|
}): Promise<string>;
|
|
166
264
|
/** Lista as últimas 50 mensagens (ask + notify) deste agente. */
|
|
167
265
|
messages(): Promise<AgentMessage[]>;
|
|
266
|
+
/**
|
|
267
|
+
* Snapshot único do feed de pendências (`/api/agent/messages/pending`):
|
|
268
|
+
* respostas a `ask` + DMs recebidas desde `since` (default 24h atrás).
|
|
269
|
+
* Pra reagir continuamente, use `startPolling()`.
|
|
270
|
+
*/
|
|
271
|
+
getPendingMessages(since?: string): Promise<PendingResponse>;
|
|
272
|
+
/**
|
|
273
|
+
* Liga o polling REST do feed de pendências. Útil quando o websocket
|
|
274
|
+
* não está disponível (firewall, serverless): a cada `intervalMs` o
|
|
275
|
+
* SDK consulta `/messages/pending` e dispara os eventos `message` e
|
|
276
|
+
* `reply`. Em erro, faz backoff exponencial até 5min. Idempotente.
|
|
277
|
+
*/
|
|
278
|
+
startPolling(opts?: {
|
|
279
|
+
intervalMs?: number;
|
|
280
|
+
since?: string;
|
|
281
|
+
}): void;
|
|
282
|
+
/** Desliga o polling REST. Seguro de chamar mesmo se não estava ligado. */
|
|
283
|
+
stopPolling(): void;
|
|
168
284
|
/**
|
|
169
285
|
* Manda DM pra qualquer member do mesmo escritório (humano ou agente).
|
|
170
286
|
* Aparece no chat 1:1 dele em tempo real.
|
|
171
287
|
*/
|
|
172
288
|
chat(toMemberId: string, text: string): Promise<ChatMessageEvent>;
|
|
289
|
+
/**
|
|
290
|
+
* Busca no Cérebro/Acervo do escritório. Tenta busca semântica
|
|
291
|
+
* (embeddings) e cai pra busca textual quando indisponível — o campo
|
|
292
|
+
* `mode` no retorno diz qual rodou.
|
|
293
|
+
*/
|
|
294
|
+
search(query: string, opts?: {
|
|
295
|
+
limit?: number;
|
|
296
|
+
}): Promise<SearchResponse>;
|
|
297
|
+
/**
|
|
298
|
+
* Publica um item de conhecimento no Acervo do escritório. O embedding
|
|
299
|
+
* é gerado em background pra busca semântica.
|
|
300
|
+
*/
|
|
301
|
+
addToAcervo(input: AddToAcervoInput): Promise<AddToAcervoResult>;
|
|
173
302
|
/** Info do próprio agente (member id, office, displayName). Cached. */
|
|
174
303
|
me(): Promise<AgentSelf>;
|
|
175
304
|
/**
|
|
@@ -177,8 +306,26 @@ export declare class PixelDesk {
|
|
|
177
306
|
* o dono responde a um `ask`. Servidor faz POST com header
|
|
178
307
|
* `Authorization: Bearer <seu-token>` pra você verificar.
|
|
179
308
|
* Body: `{ messageId, askText, response, respondedAt }`.
|
|
309
|
+
*
|
|
310
|
+
* Pra subir um receiver embutido sem montar um servidor HTTP na mão,
|
|
311
|
+
* use `startWebhookReceiver()`.
|
|
180
312
|
*/
|
|
181
313
|
webhook(url: string | null): Promise<void>;
|
|
314
|
+
/**
|
|
315
|
+
* Sobe um servidor HTTP embutido que recebe os webhooks de resposta
|
|
316
|
+
* a `ask` e dispara o evento `reply`. Registra automaticamente o
|
|
317
|
+
* `publicUrl` no servidor PixelDesk. Node-only.
|
|
318
|
+
*
|
|
319
|
+
* `publicUrl` precisa ser acessível pelo servidor PixelDesk (ex: uma
|
|
320
|
+
* URL de túnel/cloud). `port` é a porta local onde o receiver escuta.
|
|
321
|
+
*/
|
|
322
|
+
startWebhookReceiver(opts: {
|
|
323
|
+
port: number;
|
|
324
|
+
publicUrl: string;
|
|
325
|
+
path?: string;
|
|
326
|
+
}): Promise<void>;
|
|
327
|
+
/** Derruba o webhook receiver embutido e limpa a URL registrada. */
|
|
328
|
+
stopWebhookReceiver(): Promise<void>;
|
|
182
329
|
/**
|
|
183
330
|
* Muda status de uma task atribuída a este agente.
|
|
184
331
|
* Permitidos: `pending` | `in_progress` | `review` | `blocked`.
|
|
@@ -203,8 +350,18 @@ export declare class PixelDesk {
|
|
|
203
350
|
updateTask(taskId: string, fields: UpdateTaskInput): Promise<TaskEvent>;
|
|
204
351
|
/** Lista as tasks do escritório do agente (até 100, mais recentes). */
|
|
205
352
|
listTasks(): Promise<TaskEvent[]>;
|
|
353
|
+
/** Emite join_room e valida o ack. Usado no connect e no re-join. */
|
|
354
|
+
private joinRoom;
|
|
206
355
|
/** Liga handlers do socket → handlers do SDK. */
|
|
207
356
|
private wireEventListeners;
|
|
357
|
+
/** Roteia um item do feed de pendências pro evento certo. */
|
|
358
|
+
private dispatchPending;
|
|
359
|
+
/** Dispara `message` com dedup (socket + polling não duplicam). */
|
|
360
|
+
private emitMessage;
|
|
361
|
+
/** Dispara `reply` com dedup (webhook + polling não duplicam). */
|
|
362
|
+
private dispatchReply;
|
|
363
|
+
/** Guarda um id de dedup; limpa o set quando cresce demais. */
|
|
364
|
+
private rememberId;
|
|
208
365
|
/** Defesa em profundidade: só dispatcha mensagens addressed pra mim. */
|
|
209
366
|
private dispatchIfMine;
|
|
210
367
|
private dispatchTaskIfMine;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -4,6 +4,14 @@
|
|
|
4
4
|
* escritório PixelDesk. Conecta via Socket.IO + chama os endpoints
|
|
5
5
|
* REST `/api/agent/*` autenticados por bearer token.
|
|
6
6
|
*
|
|
7
|
+
* Novidades 0.4.0:
|
|
8
|
+
* • reconnect automático (com backoff) + re-join transparente
|
|
9
|
+
* • polling REST (`startPolling`) com backoff exponencial — modo
|
|
10
|
+
* fallback quando o websocket não está disponível
|
|
11
|
+
* • `search()` + `addToAcervo()` — Cérebro/Acervo via SDK
|
|
12
|
+
* • webhook receiver embutido (`startWebhookReceiver`)
|
|
13
|
+
* • evento `on('mention')` — agente foi @mencionado num comentário
|
|
14
|
+
*
|
|
7
15
|
* Quick start:
|
|
8
16
|
* ```ts
|
|
9
17
|
* import { PixelDesk } from 'pixeldesk-sdk';
|
|
@@ -25,25 +33,62 @@
|
|
|
25
33
|
* // Reage a tarefas atribuídas:
|
|
26
34
|
* pd.on('task', async (t) => {
|
|
27
35
|
* await pd.setStatus(`trabalhando em ${t.title}`, { tool: 'Edit' });
|
|
28
|
-
* // ... faz o trabalho ...
|
|
29
36
|
* await pd.taskComment(t.id, 'Feito. Aguardando revisão.');
|
|
30
37
|
* await pd.taskStatus(t.id, 'review');
|
|
31
38
|
* });
|
|
32
39
|
*
|
|
40
|
+
* // Reage a menções:
|
|
41
|
+
* pd.on('mention', (m) => console.log('mencionado na task', m.taskId));
|
|
42
|
+
*
|
|
33
43
|
* await pd.disconnect();
|
|
34
44
|
* ```
|
|
35
45
|
*/
|
|
46
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
47
|
+
if (k2 === undefined) k2 = k;
|
|
48
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
49
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
50
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
51
|
+
}
|
|
52
|
+
Object.defineProperty(o, k2, desc);
|
|
53
|
+
}) : (function(o, m, k, k2) {
|
|
54
|
+
if (k2 === undefined) k2 = k;
|
|
55
|
+
o[k2] = m[k];
|
|
56
|
+
}));
|
|
57
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
58
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
59
|
+
}) : function(o, v) {
|
|
60
|
+
o["default"] = v;
|
|
61
|
+
});
|
|
62
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
63
|
+
var ownKeys = function(o) {
|
|
64
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
65
|
+
var ar = [];
|
|
66
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
67
|
+
return ar;
|
|
68
|
+
};
|
|
69
|
+
return ownKeys(o);
|
|
70
|
+
};
|
|
71
|
+
return function (mod) {
|
|
72
|
+
if (mod && mod.__esModule) return mod;
|
|
73
|
+
var result = {};
|
|
74
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
75
|
+
__setModuleDefault(result, mod);
|
|
76
|
+
return result;
|
|
77
|
+
};
|
|
78
|
+
})();
|
|
36
79
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
80
|
exports.PixelDesk = exports.SDK_VERSION = void 0;
|
|
38
81
|
const socket_io_client_1 = require("socket.io-client");
|
|
39
|
-
exports.SDK_VERSION = '0.
|
|
82
|
+
exports.SDK_VERSION = '0.4.0';
|
|
40
83
|
const DEFAULT_SERVER = 'https://api.pixeldesk.dev';
|
|
41
84
|
const DEFAULT_TIMEOUT = 8000;
|
|
85
|
+
const DEFAULT_POLL_INTERVAL = 5000;
|
|
86
|
+
const MAX_POLL_BACKOFF = 5 * 60000;
|
|
42
87
|
/**
|
|
43
88
|
* Cliente PixelDesk pra agentes IA. Mantém socket aberto pra eventos
|
|
44
|
-
* em tempo real (mensagens DM, tarefas atribuídas) + faz HTTP
|
|
45
|
-
* pra ações que precisam de persistência (status com mensagem,
|
|
46
|
-
* task status/comment).
|
|
89
|
+
* em tempo real (mensagens DM, tarefas atribuídas, menções) + faz HTTP
|
|
90
|
+
* calls pra ações que precisam de persistência (status com mensagem,
|
|
91
|
+
* ask, task status/comment, Acervo).
|
|
47
92
|
*
|
|
48
93
|
* Token é tudo: o servidor não usa cookie/session pra agentes.
|
|
49
94
|
*/
|
|
@@ -52,7 +97,18 @@ class PixelDesk {
|
|
|
52
97
|
this.socket = null;
|
|
53
98
|
this.joined = false;
|
|
54
99
|
this.cachedSelf = null;
|
|
55
|
-
this.handlers = {
|
|
100
|
+
this.handlers = {
|
|
101
|
+
message: new Set(), task: new Set(), disconnect: new Set(),
|
|
102
|
+
reconnect: new Set(), mention: new Set(), reply: new Set()
|
|
103
|
+
};
|
|
104
|
+
// Dedup — uma mensagem/resposta pode chegar por socket E por polling.
|
|
105
|
+
this.seenIds = new Set();
|
|
106
|
+
// Polling REST.
|
|
107
|
+
this.pollTimer = null;
|
|
108
|
+
this.polling = false;
|
|
109
|
+
this.pollCursor = null;
|
|
110
|
+
// Webhook receiver embutido (node-only, carregado sob demanda).
|
|
111
|
+
this.webhookServer = null;
|
|
56
112
|
if (!options || typeof options !== 'object') {
|
|
57
113
|
throw new Error('pixeldesk-sdk: options is required');
|
|
58
114
|
}
|
|
@@ -67,6 +123,7 @@ class PixelDesk {
|
|
|
67
123
|
officeSlug: options.officeSlug,
|
|
68
124
|
serverUrl: options.serverUrl ?? DEFAULT_SERVER,
|
|
69
125
|
timeoutMs: options.timeoutMs ?? DEFAULT_TIMEOUT,
|
|
126
|
+
reconnect: options.reconnect ?? true,
|
|
70
127
|
spawn: options.spawn ?? { col: 1, row: 1, dir: 0 }
|
|
71
128
|
};
|
|
72
129
|
}
|
|
@@ -80,7 +137,13 @@ class PixelDesk {
|
|
|
80
137
|
const sock = (0, socket_io_client_1.io)(this.opts.serverUrl, {
|
|
81
138
|
auth: { token: this.opts.token },
|
|
82
139
|
transports: ['websocket', 'polling'],
|
|
83
|
-
|
|
140
|
+
// 0.4.0 — reconnect automático com backoff exponencial (o
|
|
141
|
+
// socket.io já randomiza entre delay e delayMax). O re-join no
|
|
142
|
+
// escritório é feito pela gente no handler de `connect`.
|
|
143
|
+
reconnection: this.opts.reconnect,
|
|
144
|
+
reconnectionAttempts: Infinity,
|
|
145
|
+
reconnectionDelay: 1000,
|
|
146
|
+
reconnectionDelayMax: 15000,
|
|
84
147
|
timeout: this.opts.timeoutMs
|
|
85
148
|
});
|
|
86
149
|
await new Promise((resolve, reject) => {
|
|
@@ -93,27 +156,13 @@ class PixelDesk {
|
|
|
93
156
|
});
|
|
94
157
|
this.socket = sock;
|
|
95
158
|
this.wireEventListeners(sock);
|
|
96
|
-
|
|
97
|
-
const timer = setTimeout(() => reject(new Error('pixeldesk-sdk: join_room timeout')), this.opts.timeoutMs);
|
|
98
|
-
sock.emit('join_room', {
|
|
99
|
-
slug: this.opts.officeSlug,
|
|
100
|
-
pos: {
|
|
101
|
-
col: this.opts.spawn.col,
|
|
102
|
-
row: this.opts.spawn.row,
|
|
103
|
-
dir: this.opts.spawn.dir ?? 0
|
|
104
|
-
}
|
|
105
|
-
}, (a) => { clearTimeout(timer); resolve(a); });
|
|
106
|
-
});
|
|
107
|
-
if (!ack?.ok) {
|
|
108
|
-
const reason = ack?.reason ?? 'unknown';
|
|
109
|
-
this.socket = null;
|
|
110
|
-
sock.disconnect();
|
|
111
|
-
throw new Error(`pixeldesk-sdk: join_room rejected: ${reason}`);
|
|
112
|
-
}
|
|
159
|
+
await this.joinRoom(sock);
|
|
113
160
|
this.joined = true;
|
|
114
161
|
}
|
|
115
|
-
/** Sai e fecha o socket.
|
|
162
|
+
/** Sai e fecha o socket. Para polling + webhook receiver. Seguro repetir. */
|
|
116
163
|
async disconnect() {
|
|
164
|
+
this.stopPolling();
|
|
165
|
+
await this.stopWebhookReceiver().catch(() => null);
|
|
117
166
|
const sock = this.socket;
|
|
118
167
|
this.socket = null;
|
|
119
168
|
this.joined = false;
|
|
@@ -123,6 +172,8 @@ class PixelDesk {
|
|
|
123
172
|
const t = setTimeout(resolve, 500);
|
|
124
173
|
sock.emit('leave_room');
|
|
125
174
|
sock.once('disconnect', () => { clearTimeout(t); resolve(); });
|
|
175
|
+
// Desliga o reconnect antes de fechar pra ele não tentar voltar.
|
|
176
|
+
sock.io.opts.reconnection = false;
|
|
126
177
|
sock.disconnect();
|
|
127
178
|
});
|
|
128
179
|
}
|
|
@@ -175,8 +226,8 @@ class PixelDesk {
|
|
|
175
226
|
/**
|
|
176
227
|
* Pergunta pro dono e aguarda resposta. Bloqueia até `timeoutMs`
|
|
177
228
|
* (default 5min). Por baixo: cria `ask` agent_message + faz long-polling.
|
|
178
|
-
* Pra notificação push imediata, configure `
|
|
179
|
-
* usar essa fn.
|
|
229
|
+
* Pra notificação push imediata, configure `startWebhookReceiver()` em
|
|
230
|
+
* vez de usar essa fn.
|
|
180
231
|
*/
|
|
181
232
|
async ask(text, opts) {
|
|
182
233
|
const pollMs = opts?.pollMs ?? 2000;
|
|
@@ -198,6 +249,63 @@ class PixelDesk {
|
|
|
198
249
|
const r = await this.httpGet('/api/agent/messages');
|
|
199
250
|
return r.messages;
|
|
200
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Snapshot único do feed de pendências (`/api/agent/messages/pending`):
|
|
254
|
+
* respostas a `ask` + DMs recebidas desde `since` (default 24h atrás).
|
|
255
|
+
* Pra reagir continuamente, use `startPolling()`.
|
|
256
|
+
*/
|
|
257
|
+
async getPendingMessages(since) {
|
|
258
|
+
const q = since ? `?since=${encodeURIComponent(since)}` : '';
|
|
259
|
+
return this.httpGet(`/api/agent/messages/pending${q}`);
|
|
260
|
+
}
|
|
261
|
+
// ─── Polling REST ──────────────────────────────────────────────
|
|
262
|
+
/**
|
|
263
|
+
* Liga o polling REST do feed de pendências. Útil quando o websocket
|
|
264
|
+
* não está disponível (firewall, serverless): a cada `intervalMs` o
|
|
265
|
+
* SDK consulta `/messages/pending` e dispara os eventos `message` e
|
|
266
|
+
* `reply`. Em erro, faz backoff exponencial até 5min. Idempotente.
|
|
267
|
+
*/
|
|
268
|
+
startPolling(opts) {
|
|
269
|
+
if (this.polling)
|
|
270
|
+
return;
|
|
271
|
+
this.polling = true;
|
|
272
|
+
this.pollCursor = opts?.since ?? null;
|
|
273
|
+
const interval = Math.max(1000, opts?.intervalMs ?? DEFAULT_POLL_INTERVAL);
|
|
274
|
+
let backoff = interval;
|
|
275
|
+
const tick = async () => {
|
|
276
|
+
if (!this.polling)
|
|
277
|
+
return;
|
|
278
|
+
let wait = interval;
|
|
279
|
+
try {
|
|
280
|
+
const res = await this.getPendingMessages(this.pollCursor ?? undefined);
|
|
281
|
+
for (const item of res.pending)
|
|
282
|
+
this.dispatchPending(item);
|
|
283
|
+
// Avança o cursor pro item mais recente visto.
|
|
284
|
+
for (const item of res.pending) {
|
|
285
|
+
if (!this.pollCursor || item.createdAt > this.pollCursor) {
|
|
286
|
+
this.pollCursor = item.createdAt;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
backoff = interval; // reset do backoff em sucesso
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
wait = backoff;
|
|
293
|
+
backoff = Math.min(backoff * 2, MAX_POLL_BACKOFF);
|
|
294
|
+
}
|
|
295
|
+
if (this.polling) {
|
|
296
|
+
this.pollTimer = setTimeout(() => void tick(), wait);
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
void tick();
|
|
300
|
+
}
|
|
301
|
+
/** Desliga o polling REST. Seguro de chamar mesmo se não estava ligado. */
|
|
302
|
+
stopPolling() {
|
|
303
|
+
this.polling = false;
|
|
304
|
+
if (this.pollTimer) {
|
|
305
|
+
clearTimeout(this.pollTimer);
|
|
306
|
+
this.pollTimer = null;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
201
309
|
// ─── DMs ───────────────────────────────────────────────────────
|
|
202
310
|
/**
|
|
203
311
|
* Manda DM pra qualquer member do mesmo escritório (humano ou agente).
|
|
@@ -207,6 +315,25 @@ class PixelDesk {
|
|
|
207
315
|
const r = await this.httpPost('/api/agent/chat', { toMemberId, text });
|
|
208
316
|
return r.message;
|
|
209
317
|
}
|
|
318
|
+
// ─── Cérebro / Acervo ──────────────────────────────────────────
|
|
319
|
+
/**
|
|
320
|
+
* Busca no Cérebro/Acervo do escritório. Tenta busca semântica
|
|
321
|
+
* (embeddings) e cai pra busca textual quando indisponível — o campo
|
|
322
|
+
* `mode` no retorno diz qual rodou.
|
|
323
|
+
*/
|
|
324
|
+
async search(query, opts) {
|
|
325
|
+
const params = new URLSearchParams({ q: query });
|
|
326
|
+
if (opts?.limit)
|
|
327
|
+
params.set('limit', String(opts.limit));
|
|
328
|
+
return this.httpGet(`/api/agent/acervo/search?${params.toString()}`);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Publica um item de conhecimento no Acervo do escritório. O embedding
|
|
332
|
+
* é gerado em background pra busca semântica.
|
|
333
|
+
*/
|
|
334
|
+
async addToAcervo(input) {
|
|
335
|
+
return this.httpPost('/api/agent/acervo/items', input);
|
|
336
|
+
}
|
|
210
337
|
// ─── Self / config ─────────────────────────────────────────────
|
|
211
338
|
/** Info do próprio agente (member id, office, displayName). Cached. */
|
|
212
339
|
async me() {
|
|
@@ -221,10 +348,80 @@ class PixelDesk {
|
|
|
221
348
|
* o dono responde a um `ask`. Servidor faz POST com header
|
|
222
349
|
* `Authorization: Bearer <seu-token>` pra você verificar.
|
|
223
350
|
* Body: `{ messageId, askText, response, respondedAt }`.
|
|
351
|
+
*
|
|
352
|
+
* Pra subir um receiver embutido sem montar um servidor HTTP na mão,
|
|
353
|
+
* use `startWebhookReceiver()`.
|
|
224
354
|
*/
|
|
225
355
|
async webhook(url) {
|
|
226
356
|
await this.httpPost('/api/agent/webhook', { url });
|
|
227
357
|
}
|
|
358
|
+
/**
|
|
359
|
+
* Sobe um servidor HTTP embutido que recebe os webhooks de resposta
|
|
360
|
+
* a `ask` e dispara o evento `reply`. Registra automaticamente o
|
|
361
|
+
* `publicUrl` no servidor PixelDesk. Node-only.
|
|
362
|
+
*
|
|
363
|
+
* `publicUrl` precisa ser acessível pelo servidor PixelDesk (ex: uma
|
|
364
|
+
* URL de túnel/cloud). `port` é a porta local onde o receiver escuta.
|
|
365
|
+
*/
|
|
366
|
+
async startWebhookReceiver(opts) {
|
|
367
|
+
if (this.webhookServer) {
|
|
368
|
+
throw new Error('pixeldesk-sdk: webhook receiver already running');
|
|
369
|
+
}
|
|
370
|
+
const path = opts.path ?? '/pixeldesk-webhook';
|
|
371
|
+
// import dinâmico — mantém o SDK utilizável no browser (onde só as
|
|
372
|
+
// features de socket/HTTP rodam) sem arrastar `node:http`.
|
|
373
|
+
const http = await Promise.resolve().then(() => __importStar(require('node:http')));
|
|
374
|
+
const server = http.createServer((req, res) => {
|
|
375
|
+
if (req.method !== 'POST' || (req.url ?? '').split('?')[0] !== path) {
|
|
376
|
+
res.statusCode = 404;
|
|
377
|
+
res.end('not found');
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
// Defesa: o servidor PixelDesk manda o próprio token do agente
|
|
381
|
+
// como bearer — confere antes de aceitar.
|
|
382
|
+
const auth = req.headers.authorization ?? '';
|
|
383
|
+
if (auth !== `Bearer ${this.opts.token}`) {
|
|
384
|
+
res.statusCode = 401;
|
|
385
|
+
res.end('unauthorized');
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
let body = '';
|
|
389
|
+
req.on('data', (c) => { body += c; });
|
|
390
|
+
req.on('end', () => {
|
|
391
|
+
res.statusCode = 200;
|
|
392
|
+
res.end('ok');
|
|
393
|
+
try {
|
|
394
|
+
const data = JSON.parse(body);
|
|
395
|
+
if (data.messageId && typeof data.response === 'string') {
|
|
396
|
+
this.dispatchReply({
|
|
397
|
+
messageId: String(data.messageId),
|
|
398
|
+
askText: String(data.askText ?? ''),
|
|
399
|
+
response: data.response,
|
|
400
|
+
respondedAt: String(data.respondedAt ?? new Date().toISOString())
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
/* corpo inválido — ignora */
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
});
|
|
409
|
+
await new Promise((resolve, reject) => {
|
|
410
|
+
server.once('error', reject);
|
|
411
|
+
server.listen(opts.port, () => resolve());
|
|
412
|
+
});
|
|
413
|
+
this.webhookServer = server;
|
|
414
|
+
await this.webhook(opts.publicUrl);
|
|
415
|
+
}
|
|
416
|
+
/** Derruba o webhook receiver embutido e limpa a URL registrada. */
|
|
417
|
+
async stopWebhookReceiver() {
|
|
418
|
+
const server = this.webhookServer;
|
|
419
|
+
if (!server)
|
|
420
|
+
return;
|
|
421
|
+
this.webhookServer = null;
|
|
422
|
+
await this.webhook(null).catch(() => null);
|
|
423
|
+
await new Promise((resolve) => server.close(() => resolve()));
|
|
424
|
+
}
|
|
228
425
|
// ─── Tasks ─────────────────────────────────────────────────────
|
|
229
426
|
/**
|
|
230
427
|
* Muda status de uma task atribuída a este agente.
|
|
@@ -265,6 +462,23 @@ class PixelDesk {
|
|
|
265
462
|
return r.tasks;
|
|
266
463
|
}
|
|
267
464
|
// ─── Internos ──────────────────────────────────────────────────
|
|
465
|
+
/** Emite join_room e valida o ack. Usado no connect e no re-join. */
|
|
466
|
+
async joinRoom(sock) {
|
|
467
|
+
const ack = await new Promise((resolve, reject) => {
|
|
468
|
+
const timer = setTimeout(() => reject(new Error('pixeldesk-sdk: join_room timeout')), this.opts.timeoutMs);
|
|
469
|
+
sock.emit('join_room', {
|
|
470
|
+
slug: this.opts.officeSlug,
|
|
471
|
+
pos: {
|
|
472
|
+
col: this.opts.spawn.col,
|
|
473
|
+
row: this.opts.spawn.row,
|
|
474
|
+
dir: this.opts.spawn.dir ?? 0
|
|
475
|
+
}
|
|
476
|
+
}, (a) => { clearTimeout(timer); resolve(a); });
|
|
477
|
+
});
|
|
478
|
+
if (!ack?.ok) {
|
|
479
|
+
throw new Error(`pixeldesk-sdk: join_room rejected: ${ack?.reason ?? 'unknown'}`);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
268
482
|
/** Liga handlers do socket → handlers do SDK. */
|
|
269
483
|
wireEventListeners(sock) {
|
|
270
484
|
sock.on('chat_message', (raw) => {
|
|
@@ -281,18 +495,89 @@ class PixelDesk {
|
|
|
281
495
|
return;
|
|
282
496
|
void this.dispatchTaskIfMine(t);
|
|
283
497
|
});
|
|
498
|
+
// 0.4.0 — o servidor emite `task_mention` direcionado (broadcastToMember)
|
|
499
|
+
// pro membro mencionado num comentário.
|
|
500
|
+
sock.on('task_mention', (raw) => {
|
|
501
|
+
const m = raw;
|
|
502
|
+
if (!m || typeof m.taskId !== 'string')
|
|
503
|
+
return;
|
|
504
|
+
for (const h of this.handlers.mention)
|
|
505
|
+
void h(m);
|
|
506
|
+
});
|
|
284
507
|
sock.on('disconnect', (reason) => {
|
|
285
508
|
this.joined = false;
|
|
286
509
|
for (const h of this.handlers.disconnect)
|
|
287
510
|
void h({ reason });
|
|
288
511
|
});
|
|
512
|
+
// 0.4.0 — re-join transparente. wireEventListeners() roda DEPOIS do
|
|
513
|
+
// connect inicial, então todo `connect` que este handler vê já é uma
|
|
514
|
+
// reconexão: o servidor não lembra do join_room, então a gente
|
|
515
|
+
// refaz e avisa via evento `reconnect`.
|
|
516
|
+
let reconnectCount = 0;
|
|
517
|
+
sock.on('connect', () => {
|
|
518
|
+
reconnectCount += 1;
|
|
519
|
+
const attempts = reconnectCount;
|
|
520
|
+
void this.joinRoom(sock)
|
|
521
|
+
.then(() => {
|
|
522
|
+
this.joined = true;
|
|
523
|
+
for (const h of this.handlers.reconnect)
|
|
524
|
+
void h({ attempts });
|
|
525
|
+
})
|
|
526
|
+
.catch(() => { this.joined = false; });
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
/** Roteia um item do feed de pendências pro evento certo. */
|
|
530
|
+
dispatchPending(item) {
|
|
531
|
+
if (item.type === 'chat' && item.fromMemberId && item.threadId) {
|
|
532
|
+
const me = this.cachedSelf;
|
|
533
|
+
this.emitMessage({
|
|
534
|
+
id: item.id,
|
|
535
|
+
threadId: item.threadId,
|
|
536
|
+
fromMemberId: item.fromMemberId,
|
|
537
|
+
fromName: item.fromName ?? '',
|
|
538
|
+
toMemberId: me?.memberId ?? '',
|
|
539
|
+
text: item.text,
|
|
540
|
+
createdAt: item.createdAt
|
|
541
|
+
});
|
|
542
|
+
}
|
|
543
|
+
else if (item.type === 'agent_message' && item.response) {
|
|
544
|
+
this.dispatchReply({
|
|
545
|
+
messageId: item.id,
|
|
546
|
+
askText: item.text,
|
|
547
|
+
response: item.response,
|
|
548
|
+
respondedAt: item.createdAt
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
/** Dispara `message` com dedup (socket + polling não duplicam). */
|
|
553
|
+
emitMessage(m) {
|
|
554
|
+
const key = `msg:${m.id}`;
|
|
555
|
+
if (this.seenIds.has(key))
|
|
556
|
+
return;
|
|
557
|
+
this.rememberId(key);
|
|
558
|
+
for (const h of this.handlers.message)
|
|
559
|
+
void h(m);
|
|
560
|
+
}
|
|
561
|
+
/** Dispara `reply` com dedup (webhook + polling não duplicam). */
|
|
562
|
+
dispatchReply(r) {
|
|
563
|
+
const key = `reply:${r.messageId}`;
|
|
564
|
+
if (this.seenIds.has(key))
|
|
565
|
+
return;
|
|
566
|
+
this.rememberId(key);
|
|
567
|
+
for (const h of this.handlers.reply)
|
|
568
|
+
void h(r);
|
|
569
|
+
}
|
|
570
|
+
/** Guarda um id de dedup; limpa o set quando cresce demais. */
|
|
571
|
+
rememberId(key) {
|
|
572
|
+
if (this.seenIds.size > 1000)
|
|
573
|
+
this.seenIds.clear();
|
|
574
|
+
this.seenIds.add(key);
|
|
289
575
|
}
|
|
290
576
|
/** Defesa em profundidade: só dispatcha mensagens addressed pra mim. */
|
|
291
577
|
dispatchIfMine(m) {
|
|
292
578
|
if (!this.cachedSelf || m.toMemberId !== this.cachedSelf.memberId)
|
|
293
579
|
return;
|
|
294
|
-
|
|
295
|
-
void h(m);
|
|
580
|
+
this.emitMessage(m);
|
|
296
581
|
}
|
|
297
582
|
async dispatchTaskIfMine(t) {
|
|
298
583
|
const me = await this.me().catch(() => null);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uDAAmD;AAEtC,QAAA,WAAW,GAAG,OAAO,CAAC;AAuKnC,MAAM,cAAc,GAAG,2BAA2B,CAAC;AACnD,MAAM,eAAe,GAAG,IAAK,CAAC;AAC9B,MAAM,qBAAqB,GAAG,IAAK,CAAC;AACpC,MAAM,gBAAgB,GAAG,CAAC,GAAG,KAAM,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAa,SAAS;IA8BpB,YAAY,OAAyB;QA1B7B,WAAM,GAAkB,IAAI,CAAC;QAC7B,WAAM,GAAG,KAAK,CAAC;QACf,eAAU,GAAqB,IAAI,CAAC;QAC3B,aAAQ,GAOrB;YACF,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE;YAC1D,SAAS,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE;SAC3D,CAAC;QAEF,sEAAsE;QACrD,YAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAE7C,gBAAgB;QACR,cAAS,GAAyC,IAAI,CAAC;QACvD,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAkB,IAAI,CAAC;QAEzC,gEAAgE;QACxD,kBAAa,GAAgD,IAAI,CAAC;QAGxE,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,IAAI,GAAG;YACV,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,cAAc;YAC9C,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,eAAe;YAC/C,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;SACnD,CAAC;IACJ,CAAC;IAED,kEAAkE;IAElE,2DAA2D;IAC3D,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACvC,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAEzC,MAAM,IAAI,GAAG,IAAA,qBAAE,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChC,UAAU,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;YACpC,0DAA0D;YAC1D,+DAA+D;YAC/D,yDAAyD;YACzD,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YACjC,oBAAoB,EAAE,QAAQ;YAC9B,iBAAiB,EAAE,IAAK;YACxB,oBAAoB,EAAE,KAAM;YAC5B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,EACzD,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,EAAE;gBACjC,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,iEAAiE;YACjE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,wDAAwD;IACxD,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACxD,CAAC;IAsBD,EAAE,CAAC,KAAe,EAAE,OAAuB;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAA0B,CAAC;QAC1D,GAAG,CAAC,GAAG,CAAC,OAA2B,CAAC,CAAC;QACrC,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,OAA2B,CAAC,CAAC;IACvD,CAAC;IAED,kEAAkE;IAElE;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CACb,MAAc,EACd,IAAwD;QAExD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;YAClB,mEAAmE;YACnE,0DAA0D;YAC1D,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,MAAM,GAAG,GAAc,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC,CAAY,EAAE,EAAE;gBAC9E,YAAY,CAAC,KAAK,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC3B,mBAAmB,EACnB,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAC9C,CAAC;QACF,OAAO,CAAC,CAAC,SAAS,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CACP,IAAY,EACZ,IAA8C;QAE9C,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,IAAK,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,CAAC,GAAG,KAAM,CAAC;QAChD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC3B,gBAAgB,EAChB,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QACF,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAC7B,uBAAuB,EAAE,EAAE,CAC5B,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBACpE,OAAO,IAAI,CAAC,QAAQ,CAAC;YACvB,CAAC;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,QAAQ;QACZ,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAA+B,qBAAqB,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC,QAAQ,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAc;QACrC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAkB,8BAA8B,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,kEAAkE;IAElE;;;;;OAKG;IACH,YAAY,CAAC,IAA8C;QACzD,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAK,EAAE,IAAI,EAAE,UAAU,IAAI,qBAAqB,CAAC,CAAC;QAC5E,IAAI,OAAO,GAAG,QAAQ,CAAC;QAEvB,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAC1B,IAAI,IAAI,GAAG,QAAQ,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;gBACxE,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO;oBAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAC3D,+CAA+C;gBAC/C,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;wBACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;oBACnC,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,QAAQ,CAAC,CAAC,8BAA8B;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,OAAO,CAAC;gBACf,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACpD,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;YACvD,CAAC;QACH,CAAC,CAAC;QACF,KAAK,IAAI,EAAE,CAAC;IACd,CAAC;IAED,2EAA2E;IAC3E,WAAW;QACT,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAED,kEAAkE;IAElE;;;OAGG;IACH,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,IAAY;QACzC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC3B,iBAAiB,EACjB,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;QACF,OAAO,CAAC,CAAC,OAAO,CAAC;IACnB,CAAC;IAED,kEAAkE;IAElE;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,IAAyB;QACnD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,IAAI,EAAE,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,OAAO,CAAiB,4BAA4B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,KAAuB;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAoB,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED,kEAAkE;IAElE,uEAAuE;IACvE,KAAK,CAAC,EAAE;QACN,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QAC5C,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAY,eAAe,CAAC,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,OAAO,CAAC,GAAkB;QAC9B,MAAM,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CAAC,IAI1B;QACC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,oBAAoB,CAAC;QAC/C,mEAAmE;QACnE,2DAA2D;QAC3D,MAAM,IAAI,GAAG,wDAAa,WAAW,GAAC,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACpE,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YACD,+DAA+D;YAC/D,0CAA0C;YAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;YAC7C,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;gBACzC,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBACxB,OAAO;YACT,CAAC;YACD,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;gBACrB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAwB,CAAC;oBACrD,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBACxD,IAAI,CAAC,aAAa,CAAC;4BACjB,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;4BACjC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;4BACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;4BACvB,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;yBAClE,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,6BAA6B;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,mBAAmB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,kEAAkE;IAElE;;;;OAIG;IACH,KAAK,CAAC,UAAU,CACd,MAAc,EACd,MAAwD;QAExD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC3B,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,SAAS,EACvD,EAAE,MAAM,EAAE,CACX,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,IAAY;QAC5C,MAAM,IAAI,CAAC,QAAQ,CACjB,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,UAAU,EACxD,EAAE,IAAI,EAAE,CACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,KAAsB;QACrC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC3B,kBAAkB,EAClB,KAAK,CACN,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc,EAAE,MAAuB;QACtD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAC5B,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAChD,MAAM,CACP,CAAC;QACF,OAAO,CAAC,CAAC,IAAI,CAAC;IAChB,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,SAAS;QACb,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAyB,kBAAkB,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IAED,kEAAkE;IAElE,qEAAqE;IAC7D,KAAK,CAAC,QAAQ,CAAC,IAAY;QACjC,MAAM,GAAG,GAAY,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAC3D,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB,CAAC;YACF,IAAI,CAAC,IAAI,CACP,WAAW,EACX;gBACE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;gBAC1B,GAAG,EAAE;oBACH,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;oBACxB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;oBACxB,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;iBAC9B;aACF,EACD,CAAC,CAAU,EAAE,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrD,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,iDAAiD;IACzC,kBAAkB,CAAC,IAAY;QACrC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,GAAY,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,GAA8B,CAAC;YACzC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;gBAAE,OAAO;YAC3C,IAAI,CAAC,UAAU;gBACb,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACxB,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,GAAY,EAAE,EAAE;YACxC,MAAM,CAAC,GAAG,GAAuB,CAAC;YAClC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;gBAAE,OAAO;YAC3C,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,0EAA0E;QAC1E,wCAAwC;QACxC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,GAAY,EAAE,EAAE;YACvC,MAAM,CAAC,GAAG,GAA0B,CAAC;YACrC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO;YAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,EAAE;YACvC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAAE,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,oEAAoE;QACpE,qEAAqE;QACrE,+DAA+D;QAC/D,wCAAwC;QACxC,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACtB,cAAc,IAAI,CAAC,CAAC;YACpB,MAAM,QAAQ,GAAG,cAAc,CAAC;YAChC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;iBACrB,IAAI,CAAC,GAAG,EAAE;gBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS;oBAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;YAChE,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IACrD,eAAe,CAAC,IAAiB;QACvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/D,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC;gBACf,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;gBAC7B,UAAU,EAAE,EAAE,EAAE,QAAQ,IAAI,EAAE;gBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1D,IAAI,CAAC,aAAa,CAAC;gBACjB,SAAS,EAAE,IAAI,CAAC,EAAE;gBAClB,OAAO,EAAE,IAAI,CAAC,IAAI;gBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,mEAAmE;IAC3D,WAAW,CAAC,CAAmB;QACrC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,kEAAkE;IAC1D,aAAa,CAAC,CAAa;QACjC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,+DAA+D;IACvD,UAAU,CAAC,GAAW;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAK;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,wEAAwE;IAChE,cAAc,CAAC,CAAmB;QACxC,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,QAAQ;YAAE,OAAO;QAC1E,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC;IACO,KAAK,CAAC,kBAAkB,CAAC,CAAY;QAC3C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,QAAQ;YAAE,OAAO;QAChD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAmB,IAAY,EAAE,IAAa;QAClE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;aAC3C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,SAAS,CAAmB,IAAY,EAAE,IAAa;QACnE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,EAAE;YACvD,MAAM,EAAE,OAAO;YACf,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;aAC3C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,OAAO,CAAI,IAAY;QACnC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,EAAE;YACvD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;SACxD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,kBAAkB,IAAI,WAAW,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;CACF;AAjoBD,8BAioBC;AAED,kBAAe,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pixeldesk-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "SDK oficial do PixelDesk — agentes IA fazem push de status, recebem mensagens e tarefas, e respondem ao dono do escritório virtual",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/josueramosleites-collab/pixeldesk/tree/main/packages/sdk#readme",
|