@runflow-ai/sdk 1.0.5 → 1.0.6
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/dist/connectors/connector-creator.d.ts +29 -0
- package/dist/connectors/connector-creator.d.ts.map +1 -0
- package/dist/connectors/connector-creator.js +123 -0
- package/dist/connectors/connector-creator.js.map +1 -0
- package/dist/connectors/index.d.ts +3 -0
- package/dist/connectors/index.d.ts.map +1 -0
- package/dist/connectors/index.js +11 -0
- package/dist/connectors/index.js.map +1 -0
- package/dist/core/agent.d.ts +42 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +533 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/api-client.d.ts +34 -0
- package/dist/core/api-client.d.ts.map +1 -0
- package/dist/core/api-client.js +339 -0
- package/dist/core/api-client.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/models.d.ts +4 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/models.js +20 -0
- package/dist/core/models.js.map +1 -0
- package/dist/index.d.ts +6 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -107
- package/dist/index.js.map +1 -1
- package/dist/memory/index.d.ts +1 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +4 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/observability/index.d.ts +3 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +10 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/trace-collector.d.ts +43 -0
- package/dist/observability/trace-collector.d.ts.map +1 -0
- package/dist/observability/trace-collector.js +233 -0
- package/dist/observability/trace-collector.js.map +1 -0
- package/dist/streaming/index.d.ts +1 -0
- package/dist/streaming/index.d.ts.map +1 -0
- package/dist/streaming/index.js +4 -0
- package/dist/streaming/index.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +7 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/tool-creator.d.ts +3 -0
- package/dist/tools/tool-creator.d.ts.map +1 -0
- package/dist/tools/tool-creator.js +105 -0
- package/dist/tools/tool-creator.js.map +1 -0
- package/dist/types/all-types.d.ts +432 -0
- package/dist/types/all-types.d.ts.map +1 -0
- package/dist/{types.js → types/all-types.js} +1 -2
- package/dist/types/all-types.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/workflows/index.d.ts +3 -0
- package/dist/workflows/index.d.ts.map +1 -0
- package/dist/workflows/index.js +13 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/workflow.d.ts +53 -0
- package/dist/workflows/workflow.d.ts.map +1 -0
- package/dist/workflows/workflow.js +414 -0
- package/dist/workflows/workflow.js.map +1 -0
- package/package.json +69 -21
- package/README.md +0 -892
- package/dist/agents/runflow-agent.d.ts +0 -54
- package/dist/agents/runflow-agent.d.ts.map +0 -1
- package/dist/agents/runflow-agent.js +0 -343
- package/dist/agents/runflow-agent.js.map +0 -1
- package/dist/agents/server.d.ts +0 -47
- package/dist/agents/server.d.ts.map +0 -1
- package/dist/agents/server.js +0 -329
- package/dist/agents/server.js.map +0 -1
- package/dist/agents/swagger.d.ts +0 -758
- package/dist/agents/swagger.d.ts.map +0 -1
- package/dist/agents/swagger.js +0 -375
- package/dist/agents/swagger.js.map +0 -1
- package/dist/config.d.ts +0 -17
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -131
- package/dist/config.js.map +0 -1
- package/dist/runflow-sdk.d.ts +0 -57
- package/dist/runflow-sdk.d.ts.map +0 -1
- package/dist/runflow-sdk.js +0 -622
- package/dist/runflow-sdk.js.map +0 -1
- package/dist/singleton.d.ts +0 -37
- package/dist/singleton.d.ts.map +0 -1
- package/dist/singleton.js +0 -86
- package/dist/singleton.js.map +0 -1
- package/dist/types.d.ts +0 -147
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts +0 -74
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -312
- package/dist/utils.js.map +0 -1
package/dist/runflow-sdk.js
DELETED
|
@@ -1,622 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SessionManager = exports.RunflowSDK = void 0;
|
|
4
|
-
const config_1 = require("./config");
|
|
5
|
-
const utils_1 = require("./utils");
|
|
6
|
-
class RunflowSDK {
|
|
7
|
-
constructor(context) {
|
|
8
|
-
// =============================================================================
|
|
9
|
-
// 💬 SESSÕES
|
|
10
|
-
// =============================================================================
|
|
11
|
-
this.session = {
|
|
12
|
-
get: (sessionId) => {
|
|
13
|
-
// companyId vem automaticamente do context injetado pela plataforma
|
|
14
|
-
const companyId = this.context.companyId || this.context.tenantId;
|
|
15
|
-
return new SessionManager(sessionId, companyId, this.context, this.getApiUrl(), this.getApiKey());
|
|
16
|
-
},
|
|
17
|
-
};
|
|
18
|
-
// Tentar carregar configurações do arquivo .runflow automaticamente
|
|
19
|
-
(0, config_1.loadRunflowConfig)();
|
|
20
|
-
// Context é SEMPRE injetado pela plataforma via env vars
|
|
21
|
-
this.context = context || {
|
|
22
|
-
tenantId: this.getRequiredEnv("RUNFLOW_TENANT_ID"),
|
|
23
|
-
agentId: this.getRequiredEnv("RUNFLOW_AGENT_ID"),
|
|
24
|
-
requestId: process.env.RUNFLOW_REQUEST_ID || `req_${Date.now()}`,
|
|
25
|
-
sessionId: process.env.RUNFLOW_SESSION_ID,
|
|
26
|
-
};
|
|
27
|
-
// Inicializar HTTP client
|
|
28
|
-
this.httpClient = new utils_1.HttpClient();
|
|
29
|
-
}
|
|
30
|
-
getRequiredEnv(key) {
|
|
31
|
-
const value = process.env[key];
|
|
32
|
-
if (!value) {
|
|
33
|
-
throw new Error(`Variável obrigatória ${key} não definida. Certifique-se de que o agente está sendo executado na plataforma Runflow.`);
|
|
34
|
-
}
|
|
35
|
-
return value;
|
|
36
|
-
}
|
|
37
|
-
getApiUrl() {
|
|
38
|
-
return process.env.RUNFLOW_API_URL || "http://localhost:3001";
|
|
39
|
-
}
|
|
40
|
-
getApiKey() {
|
|
41
|
-
const key = process.env.RUNFLOW_API_KEY;
|
|
42
|
-
if (!key) {
|
|
43
|
-
throw new Error("RUNFLOW_API_KEY não definida. Certifique-se de que o agente está sendo executado na plataforma Runflow.");
|
|
44
|
-
}
|
|
45
|
-
return key;
|
|
46
|
-
}
|
|
47
|
-
getHeaders(includeCompany = false) {
|
|
48
|
-
const headers = {
|
|
49
|
-
"x-api-key": this.getApiKey(),
|
|
50
|
-
"Content-Type": "application/json",
|
|
51
|
-
"X-Runflow-Tenant-Id": this.context.tenantId,
|
|
52
|
-
"X-Runflow-Agent-Id": this.context.agentId,
|
|
53
|
-
};
|
|
54
|
-
return headers;
|
|
55
|
-
}
|
|
56
|
-
// =============================================================================
|
|
57
|
-
// ⚙️ COMANDOS GERAIS
|
|
58
|
-
// =============================================================================
|
|
59
|
-
async login(apiKey) {
|
|
60
|
-
this.log("Validando API key");
|
|
61
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/login`, {
|
|
62
|
-
method: "POST",
|
|
63
|
-
headers: {
|
|
64
|
-
Authorization: `Bearer ${apiKey}`,
|
|
65
|
-
"Content-Type": "application/json",
|
|
66
|
-
},
|
|
67
|
-
});
|
|
68
|
-
if (!response.ok) {
|
|
69
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
70
|
-
}
|
|
71
|
-
return response.json();
|
|
72
|
-
}
|
|
73
|
-
async health() {
|
|
74
|
-
this.log("Verificando saúde da API");
|
|
75
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/health`, {
|
|
76
|
-
method: "GET",
|
|
77
|
-
headers: this.getHeaders(),
|
|
78
|
-
});
|
|
79
|
-
if (!response.ok) {
|
|
80
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
81
|
-
}
|
|
82
|
-
return response.json();
|
|
83
|
-
}
|
|
84
|
-
async tenants() {
|
|
85
|
-
this.log("Listando tenants");
|
|
86
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/tenants`, {
|
|
87
|
-
method: "GET",
|
|
88
|
-
headers: this.getHeaders(),
|
|
89
|
-
});
|
|
90
|
-
if (!response.ok) {
|
|
91
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
92
|
-
}
|
|
93
|
-
return response.json();
|
|
94
|
-
}
|
|
95
|
-
async agents() {
|
|
96
|
-
this.log("Listando agentes");
|
|
97
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/agents`, {
|
|
98
|
-
method: "GET",
|
|
99
|
-
headers: this.getHeaders(),
|
|
100
|
-
});
|
|
101
|
-
if (!response.ok) {
|
|
102
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
103
|
-
}
|
|
104
|
-
return response.json();
|
|
105
|
-
}
|
|
106
|
-
async getAgent(id) {
|
|
107
|
-
this.log(`Buscando agente: ${id}`);
|
|
108
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/agents/${id}`, {
|
|
109
|
-
method: "GET",
|
|
110
|
-
headers: this.getHeaders(),
|
|
111
|
-
});
|
|
112
|
-
if (!response.ok) {
|
|
113
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
114
|
-
}
|
|
115
|
-
return response.json();
|
|
116
|
-
}
|
|
117
|
-
async createAgent(data) {
|
|
118
|
-
this.log("Criando agente", data);
|
|
119
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/agents`, {
|
|
120
|
-
method: "POST",
|
|
121
|
-
headers: this.getHeaders(),
|
|
122
|
-
body: JSON.stringify(data),
|
|
123
|
-
});
|
|
124
|
-
if (!response.ok) {
|
|
125
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
126
|
-
}
|
|
127
|
-
return response.json();
|
|
128
|
-
}
|
|
129
|
-
async updateAgent(id, data) {
|
|
130
|
-
this.log(`Atualizando agente: ${id}`, data);
|
|
131
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/agents/${id}`, {
|
|
132
|
-
method: "PUT",
|
|
133
|
-
headers: this.getHeaders(),
|
|
134
|
-
body: JSON.stringify(data),
|
|
135
|
-
});
|
|
136
|
-
if (!response.ok) {
|
|
137
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
138
|
-
}
|
|
139
|
-
return response.json();
|
|
140
|
-
}
|
|
141
|
-
async deleteAgent(id) {
|
|
142
|
-
this.log(`Removendo agente: ${id}`);
|
|
143
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/agents/${id}`, {
|
|
144
|
-
method: "DELETE",
|
|
145
|
-
headers: this.getHeaders(),
|
|
146
|
-
});
|
|
147
|
-
if (!response.ok) {
|
|
148
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
async cloneAgent(id) {
|
|
152
|
-
this.log(`Clonando agente: ${id}`);
|
|
153
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/agents/${id}/clone`, {
|
|
154
|
-
method: "POST",
|
|
155
|
-
headers: this.getHeaders(),
|
|
156
|
-
});
|
|
157
|
-
if (!response.ok) {
|
|
158
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
159
|
-
}
|
|
160
|
-
return response.json();
|
|
161
|
-
}
|
|
162
|
-
async deployAgent(id) {
|
|
163
|
-
this.log(`Publicando agente: ${id}`);
|
|
164
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/agents/${id}/deploy`, {
|
|
165
|
-
method: "POST",
|
|
166
|
-
headers: this.getHeaders(),
|
|
167
|
-
});
|
|
168
|
-
if (!response.ok) {
|
|
169
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
170
|
-
}
|
|
171
|
-
return response.json();
|
|
172
|
-
}
|
|
173
|
-
async connectors() {
|
|
174
|
-
this.log("Listando conectores");
|
|
175
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/connectors`, {
|
|
176
|
-
method: "GET",
|
|
177
|
-
headers: this.getHeaders(),
|
|
178
|
-
});
|
|
179
|
-
if (!response.ok) {
|
|
180
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
181
|
-
}
|
|
182
|
-
return response.json();
|
|
183
|
-
}
|
|
184
|
-
async credentials() {
|
|
185
|
-
this.log("Listando credenciais");
|
|
186
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/credentials`, {
|
|
187
|
-
method: "GET",
|
|
188
|
-
headers: this.getHeaders(),
|
|
189
|
-
});
|
|
190
|
-
if (!response.ok) {
|
|
191
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
192
|
-
}
|
|
193
|
-
return response.json();
|
|
194
|
-
}
|
|
195
|
-
async datasources() {
|
|
196
|
-
this.log("Listando fontes de dados");
|
|
197
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/datasources`, {
|
|
198
|
-
method: "GET",
|
|
199
|
-
headers: this.getHeaders(),
|
|
200
|
-
});
|
|
201
|
-
if (!response.ok) {
|
|
202
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
203
|
-
}
|
|
204
|
-
return response.json();
|
|
205
|
-
}
|
|
206
|
-
async triggers() {
|
|
207
|
-
this.log("Listando triggers");
|
|
208
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/triggers`, {
|
|
209
|
-
method: "GET",
|
|
210
|
-
headers: this.getHeaders(),
|
|
211
|
-
});
|
|
212
|
-
if (!response.ok) {
|
|
213
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
214
|
-
}
|
|
215
|
-
return response.json();
|
|
216
|
-
}
|
|
217
|
-
async executions() {
|
|
218
|
-
this.log("Listando execuções");
|
|
219
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/executions`, {
|
|
220
|
-
method: "GET",
|
|
221
|
-
headers: this.getHeaders(),
|
|
222
|
-
});
|
|
223
|
-
if (!response.ok) {
|
|
224
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
225
|
-
}
|
|
226
|
-
return response.json();
|
|
227
|
-
}
|
|
228
|
-
async users() {
|
|
229
|
-
this.log("Listando usuários");
|
|
230
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/users`, {
|
|
231
|
-
method: "GET",
|
|
232
|
-
headers: this.getHeaders(),
|
|
233
|
-
});
|
|
234
|
-
if (!response.ok) {
|
|
235
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
236
|
-
}
|
|
237
|
-
return response.json();
|
|
238
|
-
}
|
|
239
|
-
async getUser(id) {
|
|
240
|
-
this.log(`Buscando usuário: ${id}`);
|
|
241
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/users/${id}`, {
|
|
242
|
-
method: "GET",
|
|
243
|
-
headers: this.getHeaders(),
|
|
244
|
-
});
|
|
245
|
-
if (!response.ok) {
|
|
246
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
247
|
-
}
|
|
248
|
-
return response.json();
|
|
249
|
-
}
|
|
250
|
-
async createUser(data) {
|
|
251
|
-
this.log("Criando usuário", data);
|
|
252
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/users`, {
|
|
253
|
-
method: "POST",
|
|
254
|
-
headers: this.getHeaders(),
|
|
255
|
-
body: JSON.stringify(data),
|
|
256
|
-
});
|
|
257
|
-
if (!response.ok) {
|
|
258
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
259
|
-
}
|
|
260
|
-
return response.json();
|
|
261
|
-
}
|
|
262
|
-
async updateUser(id, data) {
|
|
263
|
-
this.log(`Atualizando usuário: ${id}`, data);
|
|
264
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/users/${id}`, {
|
|
265
|
-
method: "PUT",
|
|
266
|
-
headers: this.getHeaders(),
|
|
267
|
-
body: JSON.stringify(data),
|
|
268
|
-
});
|
|
269
|
-
if (!response.ok) {
|
|
270
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
271
|
-
}
|
|
272
|
-
return response.json();
|
|
273
|
-
}
|
|
274
|
-
async deleteUser(id) {
|
|
275
|
-
this.log(`Removendo usuário: ${id}`);
|
|
276
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/users/${id}`, {
|
|
277
|
-
method: "DELETE",
|
|
278
|
-
headers: this.getHeaders(),
|
|
279
|
-
});
|
|
280
|
-
if (!response.ok) {
|
|
281
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
// =============================================================================
|
|
285
|
-
// 🔐 CREDENCIAIS
|
|
286
|
-
// =============================================================================
|
|
287
|
-
async getCredential(name) {
|
|
288
|
-
this.log(`Buscando credencial: ${name}`);
|
|
289
|
-
try {
|
|
290
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/credentials/${name}`, {
|
|
291
|
-
method: "GET",
|
|
292
|
-
headers: this.getHeaders(),
|
|
293
|
-
});
|
|
294
|
-
if (!response.ok) {
|
|
295
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
296
|
-
}
|
|
297
|
-
const credential = (await response.json());
|
|
298
|
-
this.log(`Credencial obtida: ${credential.name} (${credential.type})`);
|
|
299
|
-
return credential;
|
|
300
|
-
}
|
|
301
|
-
catch (error) {
|
|
302
|
-
this.log(`Erro ao buscar credencial ${name}:`, error);
|
|
303
|
-
throw error;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
// =============================================================================
|
|
307
|
-
// 📝 PROMPTS
|
|
308
|
-
// =============================================================================
|
|
309
|
-
async getPrompt(name, variables) {
|
|
310
|
-
this.log(`Buscando prompt: ${name}`, variables ? { variables } : undefined);
|
|
311
|
-
try {
|
|
312
|
-
const url = `${this.getApiUrl()}/api/v1/sdk/prompts/${name}`;
|
|
313
|
-
const hasVariables = variables && Object.keys(variables).length > 0;
|
|
314
|
-
const response = await fetch(url, {
|
|
315
|
-
method: hasVariables ? "POST" : "GET",
|
|
316
|
-
headers: this.getHeaders(),
|
|
317
|
-
body: hasVariables ? JSON.stringify({ variables }) : undefined,
|
|
318
|
-
});
|
|
319
|
-
if (!response.ok) {
|
|
320
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
321
|
-
}
|
|
322
|
-
const promptResponse = (await response.json());
|
|
323
|
-
this.log(`Prompt obtido: ${promptResponse.name}`);
|
|
324
|
-
return promptResponse.content;
|
|
325
|
-
}
|
|
326
|
-
catch (error) {
|
|
327
|
-
this.log(`Erro ao buscar prompt ${name}:`, error);
|
|
328
|
-
throw error;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
// =============================================================================
|
|
332
|
-
// 🔍 SEARCH & VECTOR STORES
|
|
333
|
-
// =============================================================================
|
|
334
|
-
async getAvailableVectorStores() {
|
|
335
|
-
this.log("Listando vector stores disponíveis");
|
|
336
|
-
try {
|
|
337
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/search-tools`, {
|
|
338
|
-
method: "GET",
|
|
339
|
-
headers: this.getHeaders(),
|
|
340
|
-
});
|
|
341
|
-
if (!response.ok) {
|
|
342
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
343
|
-
}
|
|
344
|
-
const data = await response.json();
|
|
345
|
-
return data.vector_stores || [];
|
|
346
|
-
}
|
|
347
|
-
catch (error) {
|
|
348
|
-
this.log("Erro ao listar vector stores:", error);
|
|
349
|
-
throw error;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
async searchVectorStore(vectorStore, query, options = {}) {
|
|
353
|
-
const { k = 5, threshold = 0.7 } = options;
|
|
354
|
-
this.log(`Buscando em ${vectorStore}: "${query}"`, { k, threshold });
|
|
355
|
-
try {
|
|
356
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/search-tools/${vectorStore}/search`, {
|
|
357
|
-
method: "POST",
|
|
358
|
-
headers: this.getHeaders(),
|
|
359
|
-
body: JSON.stringify({ query, k, threshold }),
|
|
360
|
-
});
|
|
361
|
-
if (!response.ok) {
|
|
362
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
363
|
-
}
|
|
364
|
-
const searchResponse = (await response.json());
|
|
365
|
-
this.log(`Busca realizada: ${searchResponse.results.length} resultados`);
|
|
366
|
-
return searchResponse;
|
|
367
|
-
}
|
|
368
|
-
catch (error) {
|
|
369
|
-
this.log(`Erro na busca em ${vectorStore}:`, error);
|
|
370
|
-
throw error;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
async addDocument(request) {
|
|
374
|
-
this.log(`Adicionando documento ao vector store: ${request.vectorStore}`, {
|
|
375
|
-
contentLength: request.content.length,
|
|
376
|
-
hasMetadata: !!request.metadata
|
|
377
|
-
});
|
|
378
|
-
try {
|
|
379
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/search-tools/documents`, {
|
|
380
|
-
method: "POST",
|
|
381
|
-
headers: this.getHeaders(),
|
|
382
|
-
body: JSON.stringify(request),
|
|
383
|
-
});
|
|
384
|
-
if (!response.ok) {
|
|
385
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
386
|
-
}
|
|
387
|
-
const result = (await response.json());
|
|
388
|
-
this.log(`Documento adicionado: ${result.id}`);
|
|
389
|
-
return result;
|
|
390
|
-
}
|
|
391
|
-
catch (error) {
|
|
392
|
-
this.log("Erro ao adicionar documento:", error);
|
|
393
|
-
throw error;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
async listDocuments(vectorStore, options = {}) {
|
|
397
|
-
const { limit = 10, offset = 0 } = options;
|
|
398
|
-
this.log(`Listando documentos do vector store: ${vectorStore}`, { limit, offset });
|
|
399
|
-
try {
|
|
400
|
-
const params = new URLSearchParams({
|
|
401
|
-
limit: limit.toString(),
|
|
402
|
-
...(offset > 0 && { offset: offset.toString() })
|
|
403
|
-
});
|
|
404
|
-
const url = `${this.getApiUrl()}/api/v1/sdk/search-tools/${vectorStore}/documents?${params}`;
|
|
405
|
-
const response = await fetch(url, {
|
|
406
|
-
method: "GET",
|
|
407
|
-
headers: this.getHeaders(),
|
|
408
|
-
});
|
|
409
|
-
if (!response.ok) {
|
|
410
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
411
|
-
}
|
|
412
|
-
const result = (await response.json());
|
|
413
|
-
this.log(`Documentos listados: ${result.documents.length} de ${result.total}`);
|
|
414
|
-
return result;
|
|
415
|
-
}
|
|
416
|
-
catch (error) {
|
|
417
|
-
this.log(`Erro ao listar documentos do vector store ${vectorStore}:`, error);
|
|
418
|
-
throw error;
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
async deleteDocument(documentId) {
|
|
422
|
-
this.log(`Removendo documento: ${documentId}`);
|
|
423
|
-
try {
|
|
424
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/search-tools/documents/${documentId}`, {
|
|
425
|
-
method: "DELETE",
|
|
426
|
-
headers: this.getHeaders(),
|
|
427
|
-
});
|
|
428
|
-
if (!response.ok) {
|
|
429
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
430
|
-
}
|
|
431
|
-
const result = (await response.json());
|
|
432
|
-
this.log(`Documento removido: ${documentId}`);
|
|
433
|
-
return result;
|
|
434
|
-
}
|
|
435
|
-
catch (error) {
|
|
436
|
-
this.log(`Erro ao remover documento ${documentId}:`, error);
|
|
437
|
-
throw error;
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
// =============================================================================
|
|
441
|
-
// 📊 LOGS & TRACES
|
|
442
|
-
// =============================================================================
|
|
443
|
-
log(message, data) {
|
|
444
|
-
const timestamp = new Date().toISOString();
|
|
445
|
-
const logEntry = `[${timestamp}] [${this.context.agentId}] ${message}`;
|
|
446
|
-
if (data) {
|
|
447
|
-
// Mascarar dados sensíveis antes de logar
|
|
448
|
-
const maskedData = (0, utils_1.maskSensitiveData)(data);
|
|
449
|
-
console.log(logEntry, maskedData);
|
|
450
|
-
}
|
|
451
|
-
else {
|
|
452
|
-
console.log(logEntry);
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
async trace(traceData) {
|
|
456
|
-
this.log("Enviando trace para LangSmith", { operation: "agent.invoke" });
|
|
457
|
-
try {
|
|
458
|
-
// Converte dados legados para o formato padronizado
|
|
459
|
-
const standardizedData = this.standardizeTraceData(traceData);
|
|
460
|
-
const response = await fetch(`${this.getApiUrl()}/api/v1/sdk/traces`, {
|
|
461
|
-
method: "POST",
|
|
462
|
-
headers: this.getHeaders(),
|
|
463
|
-
body: JSON.stringify(standardizedData),
|
|
464
|
-
});
|
|
465
|
-
if (!response.ok) {
|
|
466
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
467
|
-
}
|
|
468
|
-
const result = (await response.json());
|
|
469
|
-
this.log(`Trace enviado: ${result.traceId}`, {
|
|
470
|
-
langsmith: result.langsmith,
|
|
471
|
-
});
|
|
472
|
-
return result;
|
|
473
|
-
}
|
|
474
|
-
catch (error) {
|
|
475
|
-
this.log("Erro ao enviar trace:", error);
|
|
476
|
-
throw error;
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
standardizeTraceData(data) {
|
|
480
|
-
// Se já está no formato padrão, retorna como está
|
|
481
|
-
if (this.isStandardTraceData(data)) {
|
|
482
|
-
return data;
|
|
483
|
-
}
|
|
484
|
-
// Converte formato legado para o padronizado
|
|
485
|
-
const legacyData = data;
|
|
486
|
-
// Converte inputs para o formato de array com type e content
|
|
487
|
-
const input = [];
|
|
488
|
-
if (legacyData.inputs) {
|
|
489
|
-
// Se inputs é um objeto, converte cada chave em uma mensagem
|
|
490
|
-
for (const [key, value] of Object.entries(legacyData.inputs)) {
|
|
491
|
-
input.push({
|
|
492
|
-
type: key === 'message' || key === 'query' ? 'human' : 'system',
|
|
493
|
-
content: typeof value === 'string' ? value : JSON.stringify(value)
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
// Se não há inputs, cria um input padrão
|
|
498
|
-
if (input.length === 0) {
|
|
499
|
-
input.push({
|
|
500
|
-
type: 'human',
|
|
501
|
-
content: 'No input provided'
|
|
502
|
-
});
|
|
503
|
-
}
|
|
504
|
-
// Converte outputs para string
|
|
505
|
-
let output = '';
|
|
506
|
-
if (legacyData.outputs) {
|
|
507
|
-
if (typeof legacyData.outputs === 'string') {
|
|
508
|
-
output = legacyData.outputs;
|
|
509
|
-
}
|
|
510
|
-
else if (legacyData.outputs.message) {
|
|
511
|
-
output = legacyData.outputs.message;
|
|
512
|
-
}
|
|
513
|
-
else if (legacyData.outputs.answer) {
|
|
514
|
-
output = legacyData.outputs.answer;
|
|
515
|
-
}
|
|
516
|
-
else {
|
|
517
|
-
output = JSON.stringify(legacyData.outputs);
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
else {
|
|
521
|
-
output = 'No output provided';
|
|
522
|
-
}
|
|
523
|
-
return {
|
|
524
|
-
input,
|
|
525
|
-
output,
|
|
526
|
-
status: legacyData.status || 'success'
|
|
527
|
-
};
|
|
528
|
-
}
|
|
529
|
-
isStandardTraceData(data) {
|
|
530
|
-
return (data &&
|
|
531
|
-
Array.isArray(data.input) &&
|
|
532
|
-
typeof data.output === 'string' &&
|
|
533
|
-
typeof data.status === 'string');
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
exports.RunflowSDK = RunflowSDK;
|
|
537
|
-
// =============================================================================
|
|
538
|
-
// 💬 SESSION MANAGER
|
|
539
|
-
// =============================================================================
|
|
540
|
-
class SessionManager {
|
|
541
|
-
constructor(sessionId, companyId, context, apiUrl, apiKey) {
|
|
542
|
-
this.sessionId = sessionId;
|
|
543
|
-
this.companyId = companyId;
|
|
544
|
-
this.context = context;
|
|
545
|
-
this.apiUrl = apiUrl;
|
|
546
|
-
this.apiKey = apiKey;
|
|
547
|
-
}
|
|
548
|
-
getHeaders() {
|
|
549
|
-
return {
|
|
550
|
-
"x-api-key": this.apiKey,
|
|
551
|
-
"Content-Type": "application/json",
|
|
552
|
-
"X-Runflow-Tenant-Id": this.context.tenantId,
|
|
553
|
-
"X-Runflow-Agent-Id": this.context.agentId,
|
|
554
|
-
"X-Runflow-Company-Id": this.companyId,
|
|
555
|
-
};
|
|
556
|
-
}
|
|
557
|
-
async addMessage(role, content, metadata) {
|
|
558
|
-
try {
|
|
559
|
-
const response = await fetch(`${this.apiUrl}/api/v1/sdk/sessions/${this.sessionId}/messages`, {
|
|
560
|
-
method: "POST",
|
|
561
|
-
headers: this.getHeaders(),
|
|
562
|
-
body: JSON.stringify({
|
|
563
|
-
role,
|
|
564
|
-
content,
|
|
565
|
-
metadata: {
|
|
566
|
-
timestamp: new Date().toISOString(),
|
|
567
|
-
...metadata,
|
|
568
|
-
},
|
|
569
|
-
}),
|
|
570
|
-
});
|
|
571
|
-
if (!response.ok) {
|
|
572
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
573
|
-
}
|
|
574
|
-
console.log(`💬 Mensagem adicionada à sessão ${this.sessionId}: ${role}`);
|
|
575
|
-
}
|
|
576
|
-
catch (error) {
|
|
577
|
-
console.log(`Erro ao adicionar mensagem à sessão:`, error);
|
|
578
|
-
throw error;
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
async getHistory(options = {}) {
|
|
582
|
-
const { limit = 10, offset = 0 } = options;
|
|
583
|
-
try {
|
|
584
|
-
const params = new URLSearchParams({
|
|
585
|
-
limit: limit.toString(),
|
|
586
|
-
offset: offset.toString(),
|
|
587
|
-
});
|
|
588
|
-
const response = await fetch(`${this.apiUrl}/api/v1/sdk/sessions/${this.sessionId}/history?${params}`, {
|
|
589
|
-
method: "GET",
|
|
590
|
-
headers: this.getHeaders(),
|
|
591
|
-
});
|
|
592
|
-
if (!response.ok) {
|
|
593
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
594
|
-
}
|
|
595
|
-
const historyResponse = (await response.json());
|
|
596
|
-
console.log(`📚 Histórico obtido: ${historyResponse.messages.length} mensagens`);
|
|
597
|
-
return historyResponse.messages;
|
|
598
|
-
}
|
|
599
|
-
catch (error) {
|
|
600
|
-
console.log(`Erro ao buscar histórico da sessão:`, error);
|
|
601
|
-
throw error;
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
async clear() {
|
|
605
|
-
try {
|
|
606
|
-
const response = await fetch(`${this.apiUrl}/api/v1/sdk/sessions/${this.sessionId}`, {
|
|
607
|
-
method: "DELETE",
|
|
608
|
-
headers: this.getHeaders(),
|
|
609
|
-
});
|
|
610
|
-
if (!response.ok) {
|
|
611
|
-
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
612
|
-
}
|
|
613
|
-
console.log(`🗑️ Sessão ${this.sessionId} limpa`);
|
|
614
|
-
}
|
|
615
|
-
catch (error) {
|
|
616
|
-
console.log(`Erro ao limpar sessão:`, error);
|
|
617
|
-
throw error;
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
}
|
|
621
|
-
exports.SessionManager = SessionManager;
|
|
622
|
-
//# sourceMappingURL=runflow-sdk.js.map
|
package/dist/runflow-sdk.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runflow-sdk.js","sourceRoot":"","sources":["../src/runflow-sdk.ts"],"names":[],"mappings":"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"}
|