@runflow-ai/sdk 1.0.1 → 1.0.3
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 +290 -54
- package/dist/agents/server.d.ts +2 -0
- package/dist/agents/server.d.ts.map +1 -1
- package/dist/agents/server.js +11 -0
- package/dist/agents/server.js.map +1 -1
- package/dist/agents/swagger.d.ts +678 -0
- package/dist/agents/swagger.d.ts.map +1 -0
- package/dist/agents/swagger.js +338 -0
- package/dist/agents/swagger.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/runflow-sdk.d.ts +1 -0
- package/dist/runflow-sdk.d.ts.map +1 -1
- package/dist/runflow-sdk.js +6 -1
- package/dist/runflow-sdk.js.map +1 -1
- package/dist/utils.d.ts +74 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +312 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -162,10 +162,22 @@ export const handler = createHandler(async (input, context) => {
|
|
|
162
162
|
import {
|
|
163
163
|
getCredential, // Buscar credencial
|
|
164
164
|
getPrompt, // Buscar prompt
|
|
165
|
+
getAvailableVectorStores, // Listar vector stores
|
|
165
166
|
searchVectorStore, // Buscar em knowledge base
|
|
167
|
+
addDocument, // Adicionar documento ao vector store
|
|
168
|
+
listDocuments, // Listar documentos do vector store
|
|
169
|
+
deleteDocument, // Remover documento do vector store
|
|
166
170
|
getSession, // Gerenciar sessão
|
|
167
171
|
log, // Log estruturado
|
|
168
|
-
trace
|
|
172
|
+
trace, // Tracing e observabilidade
|
|
173
|
+
// Utilitários
|
|
174
|
+
validateAgentInput, // Validação de entrada
|
|
175
|
+
sanitizeMetadata, // Limpeza de metadados
|
|
176
|
+
maskSensitiveData, // Mascarar dados sensíveis
|
|
177
|
+
HttpClient, // Cliente HTTP com retry
|
|
178
|
+
batchRequests, // Requests em lote
|
|
179
|
+
withTimeout, // Timeout para promises
|
|
180
|
+
debounce // Debounce para funções
|
|
169
181
|
} from '@runflow-ai/sdk';
|
|
170
182
|
```
|
|
171
183
|
|
|
@@ -242,6 +254,40 @@ searchResults.results.forEach(result => {
|
|
|
242
254
|
- Weaviate
|
|
243
255
|
- Qdrant
|
|
244
256
|
|
|
257
|
+
### 📄 Gerenciamento de Documentos
|
|
258
|
+
|
|
259
|
+
Gerencie documentos nos vector stores:
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// Adicionar um documento
|
|
263
|
+
const documentResponse = await sdk.addDocument({
|
|
264
|
+
vectorStore: 'knowledge-base',
|
|
265
|
+
content: 'Como configurar pagamentos via PIX...',
|
|
266
|
+
metadata: {
|
|
267
|
+
source: 'manual-pagamentos.pdf',
|
|
268
|
+
category: 'financeiro',
|
|
269
|
+
version: '1.0'
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
console.log(`Documento adicionado: ${documentResponse.id}`);
|
|
274
|
+
|
|
275
|
+
// Listar documentos
|
|
276
|
+
const documents = await sdk.listDocuments('knowledge-base', {
|
|
277
|
+
limit: 20,
|
|
278
|
+
offset: 0
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
console.log(`Total de documentos: ${documents.total}`);
|
|
282
|
+
documents.documents.forEach(doc => {
|
|
283
|
+
console.log(`${doc.id}: ${doc.content.substring(0, 100)}...`);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
// Remover um documento
|
|
287
|
+
const deleteResult = await sdk.deleteDocument('doc-123');
|
|
288
|
+
console.log(`Documento removido: ${deleteResult.success}`);
|
|
289
|
+
```
|
|
290
|
+
|
|
245
291
|
### 💬 Gerenciamento de Sessões
|
|
246
292
|
|
|
247
293
|
Mantenha contexto e histórico de conversas:
|
|
@@ -284,27 +330,96 @@ sdk.log('Busca realizada', {
|
|
|
284
330
|
vectorStore: 'knowledge-base'
|
|
285
331
|
});
|
|
286
332
|
|
|
287
|
-
// Enviar trace
|
|
333
|
+
// Enviar trace - Formato Padrão (Recomendado)
|
|
288
334
|
const trace = await sdk.trace({
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
results: searchResults.results.length,
|
|
296
|
-
answered: true
|
|
297
|
-
},
|
|
298
|
-
status: 'success',
|
|
299
|
-
metadata: {
|
|
300
|
-
model: 'gpt-4',
|
|
301
|
-
tokens: 150
|
|
302
|
-
}
|
|
335
|
+
input: [
|
|
336
|
+
{ type: 'human', content: 'Como configurar pagamentos?' },
|
|
337
|
+
{ type: 'system', content: 'Contexto adicional...' }
|
|
338
|
+
],
|
|
339
|
+
output: 'Para configurar pagamentos via PIX...',
|
|
340
|
+
status: 'success'
|
|
303
341
|
});
|
|
304
342
|
|
|
305
343
|
console.log(`Trace ID: ${trace.traceId}`);
|
|
306
344
|
```
|
|
307
345
|
|
|
346
|
+
## 🛠️ Utilitários
|
|
347
|
+
|
|
348
|
+
### Validação e Segurança
|
|
349
|
+
|
|
350
|
+
```typescript
|
|
351
|
+
import { validateAgentInput, sanitizeMetadata, maskSensitiveData } from '@runflow-ai/sdk';
|
|
352
|
+
|
|
353
|
+
// Validar entrada do agente
|
|
354
|
+
const validation = validateAgentInput(input, {
|
|
355
|
+
requireCompanyId: true,
|
|
356
|
+
maxMessageLength: 5000,
|
|
357
|
+
allowedChannels: ['web', 'whatsapp', 'telegram']
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
if (!validation.isValid) {
|
|
361
|
+
console.log('Errors:', validation.errors);
|
|
362
|
+
return { success: false, error: validation.errors.join(', ') };
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// Usar entrada sanitizada
|
|
366
|
+
const cleanInput = validation.sanitized;
|
|
367
|
+
|
|
368
|
+
// Limpar metadados
|
|
369
|
+
const cleanMetadata = sanitizeMetadata(rawMetadata, {
|
|
370
|
+
allowedKeys: ['source', 'version', 'category'],
|
|
371
|
+
maxDepth: 2,
|
|
372
|
+
maxStringLength: 500
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
// Mascarar dados sensíveis em logs
|
|
376
|
+
const logData = {
|
|
377
|
+
userEmail: 'user@example.com',
|
|
378
|
+
phone: '+5511999999999',
|
|
379
|
+
password: 'secret123'
|
|
380
|
+
};
|
|
381
|
+
|
|
382
|
+
const maskedData = maskSensitiveData(logData);
|
|
383
|
+
// Resultado: { userEmail: 'us***@example.com', phone: '***********', password: '***' }
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Cliente HTTP Avançado
|
|
387
|
+
|
|
388
|
+
```typescript
|
|
389
|
+
import { HttpClient, batchRequests, withTimeout, debounce } from '@runflow-ai/sdk';
|
|
390
|
+
|
|
391
|
+
// Cliente HTTP com retry automático
|
|
392
|
+
const client = new HttpClient();
|
|
393
|
+
|
|
394
|
+
const response = await client.post('https://api.external.com/data', {
|
|
395
|
+
query: 'example'
|
|
396
|
+
}, {
|
|
397
|
+
timeout: 5000,
|
|
398
|
+
retries: 3,
|
|
399
|
+
retryDelay: 1000
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
// Requests em lote com controle de concorrência
|
|
403
|
+
const requests = [
|
|
404
|
+
() => client.get('/api/data/1'),
|
|
405
|
+
() => client.get('/api/data/2'),
|
|
406
|
+
() => client.get('/api/data/3')
|
|
407
|
+
];
|
|
408
|
+
|
|
409
|
+
const results = await batchRequests(requests, { concurrent: 2 });
|
|
410
|
+
|
|
411
|
+
// Timeout para qualquer Promise
|
|
412
|
+
const timedResult = await withTimeout(
|
|
413
|
+
sdk.searchVectorStore('knowledge', 'query'),
|
|
414
|
+
3000
|
|
415
|
+
);
|
|
416
|
+
|
|
417
|
+
// Debounce para buscas
|
|
418
|
+
const debouncedSearch = debounce(async (query: string) => {
|
|
419
|
+
return await sdk.searchVectorStore('knowledge', query);
|
|
420
|
+
}, 300);
|
|
421
|
+
```
|
|
422
|
+
|
|
308
423
|
## 🏗️ Arquitetura
|
|
309
424
|
|
|
310
425
|
### Classes Principais
|
|
@@ -316,16 +431,30 @@ Classe principal que oferece acesso a todos os recursos da plataforma:
|
|
|
316
431
|
class RunflowSDK {
|
|
317
432
|
constructor(context?: AgentContext)
|
|
318
433
|
|
|
319
|
-
//
|
|
434
|
+
// 🔐 Credenciais
|
|
320
435
|
async getCredential(name: string): Promise<Credential>
|
|
436
|
+
|
|
437
|
+
// 📝 Prompts
|
|
321
438
|
async getPrompt(name: string, variables?: Record<string, any>): Promise<string>
|
|
439
|
+
|
|
440
|
+
// 🔍 Vector Stores & Busca
|
|
322
441
|
async getAvailableVectorStores(): Promise<VectorStore[]>
|
|
323
442
|
async searchVectorStore(vectorStore: string, query: string, options?: SearchOptions): Promise<SearchResponse>
|
|
443
|
+
|
|
444
|
+
// 📄 Gerenciamento de Documentos
|
|
445
|
+
async addDocument(request: AddDocumentRequest): Promise<AddDocumentResponse>
|
|
446
|
+
async listDocuments(vectorStore: string, options?: ListDocumentsOptions): Promise<ListDocumentsResponse>
|
|
447
|
+
async deleteDocument(documentId: string): Promise<DeleteDocumentResponse>
|
|
448
|
+
|
|
449
|
+
// 📊 Observabilidade
|
|
324
450
|
log(message: string, data?: any): void
|
|
325
|
-
async trace(traceData
|
|
451
|
+
async trace(traceData: TraceData): Promise<TraceResponse>
|
|
326
452
|
|
|
327
|
-
//
|
|
453
|
+
// 💬 Sessões
|
|
328
454
|
session: { get(sessionId: string): SessionManager }
|
|
455
|
+
|
|
456
|
+
// ⚙️ Utilitários
|
|
457
|
+
async health(): Promise<any>
|
|
329
458
|
}
|
|
330
459
|
```
|
|
331
460
|
|
|
@@ -361,11 +490,14 @@ Entrada padrão dos handlers:
|
|
|
361
490
|
```typescript
|
|
362
491
|
interface AgentInput {
|
|
363
492
|
message: string; // Mensagem do usuário
|
|
493
|
+
companyId: string; // ID da empresa (obrigatório)
|
|
364
494
|
userId?: string; // ID do usuário
|
|
365
495
|
sessionId?: string; // ID da sessão
|
|
366
|
-
companyId?: string; // ID da empresa
|
|
367
496
|
channel?: string; // Canal de origem
|
|
368
497
|
metadata?: Record<string, any>; // Metadados adicionais
|
|
498
|
+
// Compatibilidade com versões antigas
|
|
499
|
+
tab?: string;
|
|
500
|
+
preChatInfo?: string;
|
|
369
501
|
}
|
|
370
502
|
```
|
|
371
503
|
|
|
@@ -374,14 +506,14 @@ Saída padrão dos handlers:
|
|
|
374
506
|
|
|
375
507
|
```typescript
|
|
376
508
|
interface AgentOutput {
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
509
|
+
message: string; // Resposta do agente
|
|
510
|
+
metadata?: {
|
|
511
|
+
llmProvider?: string; // Provedor do LLM usado
|
|
512
|
+
model?: string; // Modelo usado
|
|
513
|
+
toolsUsed?: string[]; // Ferramentas utilizadas
|
|
514
|
+
steps?: number; // Número de passos executados
|
|
515
|
+
[key: string]: any; // Metadados adicionais
|
|
383
516
|
};
|
|
384
|
-
error?: string; // Erro (se houver)
|
|
385
517
|
}
|
|
386
518
|
```
|
|
387
519
|
|
|
@@ -399,6 +531,107 @@ O SDK utiliza as seguintes variáveis de ambiente, automaticamente configuradas
|
|
|
399
531
|
- `RUNFLOW_SESSION_ID`: ID da sessão
|
|
400
532
|
- `RUNFLOW_API_URL`: URL da API (padrão: `http://localhost:3001`)
|
|
401
533
|
|
|
534
|
+
## 🤖 Agentes Avançados
|
|
535
|
+
|
|
536
|
+
O SDK inclui suporte completo para criação de agentes inteligentes:
|
|
537
|
+
|
|
538
|
+
### `RunflowAgent`
|
|
539
|
+
Classe para criar agentes inteligentes com IA e ferramentas:
|
|
540
|
+
|
|
541
|
+
```typescript
|
|
542
|
+
import { RunflowAgent } from '@runflow-ai/sdk';
|
|
543
|
+
|
|
544
|
+
const agent = new RunflowAgent({
|
|
545
|
+
llm: {
|
|
546
|
+
provider: 'anthropic', // ou 'openai'
|
|
547
|
+
model: 'claude-3-sonnet',
|
|
548
|
+
credential: 'claude-api',
|
|
549
|
+
temperature: 0.7
|
|
550
|
+
},
|
|
551
|
+
systemPrompt: 'customer-support', // Nome do prompt na plataforma
|
|
552
|
+
toolsPath: './tools', // Pasta com ferramentas customizadas
|
|
553
|
+
tools: ['search-knowledge'], // Ferramentas built-in
|
|
554
|
+
session: {
|
|
555
|
+
enabled: true,
|
|
556
|
+
historyLimit: 10
|
|
557
|
+
}
|
|
558
|
+
});
|
|
559
|
+
|
|
560
|
+
// Processar mensagem
|
|
561
|
+
const response = await agent.process({
|
|
562
|
+
message: 'Como posso cancelar meu pedido?',
|
|
563
|
+
companyId: 'company-123',
|
|
564
|
+
userId: 'user-456',
|
|
565
|
+
sessionId: 'session-789'
|
|
566
|
+
});
|
|
567
|
+
|
|
568
|
+
console.log(response.message);
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### Ferramentas Customizadas
|
|
572
|
+
Crie ferramentas que o agente pode usar:
|
|
573
|
+
|
|
574
|
+
```typescript
|
|
575
|
+
// tools/order-lookup.ts
|
|
576
|
+
export const orderLookup = {
|
|
577
|
+
name: 'order_lookup',
|
|
578
|
+
description: 'Busca informações de um pedido pelo ID',
|
|
579
|
+
parameters: {
|
|
580
|
+
orderId: {
|
|
581
|
+
type: 'string',
|
|
582
|
+
required: true,
|
|
583
|
+
description: 'ID do pedido'
|
|
584
|
+
}
|
|
585
|
+
},
|
|
586
|
+
execute: async (params: { orderId: string }, context: ToolContext) => {
|
|
587
|
+
// Usar o SDK dentro da ferramenta
|
|
588
|
+
const orderData = await fetch(`/api/orders/${params.orderId}`);
|
|
589
|
+
|
|
590
|
+
// Log da operação
|
|
591
|
+
context.sdk.log('Pedido consultado', {
|
|
592
|
+
orderId: params.orderId,
|
|
593
|
+
companyId: context.companyId
|
|
594
|
+
});
|
|
595
|
+
|
|
596
|
+
return orderData;
|
|
597
|
+
}
|
|
598
|
+
};
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### Servidor de Agente
|
|
602
|
+
Crie um servidor HTTP completo para seu agente:
|
|
603
|
+
|
|
604
|
+
```typescript
|
|
605
|
+
import { createAgentServer } from '@runflow-ai/sdk';
|
|
606
|
+
|
|
607
|
+
const server = createAgentServer({
|
|
608
|
+
llm: {
|
|
609
|
+
provider: 'anthropic',
|
|
610
|
+
model: 'claude-3-sonnet',
|
|
611
|
+
credential: 'claude-api'
|
|
612
|
+
},
|
|
613
|
+
systemPrompt: 'customer-support',
|
|
614
|
+
toolsPath: './tools'
|
|
615
|
+
}, {
|
|
616
|
+
port: 3000,
|
|
617
|
+
cors: true,
|
|
618
|
+
rateLimiting: true,
|
|
619
|
+
tracing: true, // Trace automático
|
|
620
|
+
hooks: {
|
|
621
|
+
beforeChat: async (req, res) => {
|
|
622
|
+
// Validações customizadas
|
|
623
|
+
console.log('Nova conversa iniciada');
|
|
624
|
+
},
|
|
625
|
+
afterChat: async (input, output, ctx) => {
|
|
626
|
+
// Pós-processamento
|
|
627
|
+
console.log(`Conversa processada em ${ctx.durationMs}ms`);
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
server.start(); // Inicia na porta 3000
|
|
633
|
+
```
|
|
634
|
+
|
|
402
635
|
## 📚 Exemplos Avançados
|
|
403
636
|
|
|
404
637
|
### Agente com Busca em Conhecimento
|
|
@@ -579,28 +812,23 @@ export const handler = createHandler(async (input, context) => {
|
|
|
579
812
|
});
|
|
580
813
|
```
|
|
581
814
|
|
|
582
|
-
### Available
|
|
815
|
+
### Available Methods
|
|
583
816
|
|
|
584
|
-
The SDK provides
|
|
817
|
+
The SDK provides essential methods for daily development:
|
|
585
818
|
|
|
586
|
-
- `
|
|
587
|
-
- `
|
|
588
|
-
- `
|
|
589
|
-
- `
|
|
590
|
-
- `
|
|
591
|
-
- `
|
|
592
|
-
- `
|
|
593
|
-
- `
|
|
594
|
-
- `
|
|
595
|
-
- `
|
|
596
|
-
- `
|
|
597
|
-
- `users` – list, get, create, update, delete
|
|
598
|
-
- `searchTools`
|
|
599
|
-
- `searchVectorStore`
|
|
600
|
-
- `session`
|
|
601
|
-
- `trace`
|
|
819
|
+
- `getCredential` – Get API credentials
|
|
820
|
+
- `getPrompt` – Get prompts with variable substitution
|
|
821
|
+
- `getAvailableVectorStores` – List available vector stores
|
|
822
|
+
- `searchVectorStore` – Semantic search in knowledge base
|
|
823
|
+
- `addDocument` – Add documents to vector store
|
|
824
|
+
- `listDocuments` – List documents in vector store
|
|
825
|
+
- `deleteDocument` – Remove documents from vector store
|
|
826
|
+
- `session.get()` – Session management
|
|
827
|
+
- `log` – Structured logging
|
|
828
|
+
- `trace` – Send traces for observability
|
|
829
|
+
- `health` – Health check
|
|
602
830
|
|
|
603
|
-
### Example:
|
|
831
|
+
### Example: Health check
|
|
604
832
|
|
|
605
833
|
```typescript
|
|
606
834
|
import { RunflowSDK } from '@runflow-ai/sdk';
|
|
@@ -610,24 +838,33 @@ const status = await sdk.health();
|
|
|
610
838
|
console.log(status);
|
|
611
839
|
```
|
|
612
840
|
|
|
613
|
-
### Example:
|
|
841
|
+
### Example: Fetch prompt with variables
|
|
614
842
|
|
|
615
843
|
```typescript
|
|
616
844
|
import { RunflowSDK } from '@runflow-ai/sdk';
|
|
617
845
|
|
|
618
846
|
const sdk = new RunflowSDK({ tenantId: 't', agentId: 'a', requestId: 'r' });
|
|
619
|
-
const content = await sdk.getPrompt('welcome'
|
|
847
|
+
const content = await sdk.getPrompt('welcome', {
|
|
848
|
+
userName: 'João',
|
|
849
|
+
company: 'Acme Corp'
|
|
850
|
+
});
|
|
620
851
|
console.log(content);
|
|
621
852
|
```
|
|
622
853
|
|
|
623
|
-
### Example:
|
|
854
|
+
### Example: Search knowledge base
|
|
624
855
|
|
|
625
856
|
```typescript
|
|
626
|
-
import {
|
|
857
|
+
import { searchVectorStore } from '@runflow-ai/sdk';
|
|
627
858
|
|
|
628
|
-
const
|
|
629
|
-
|
|
630
|
-
|
|
859
|
+
const results = await searchVectorStore(
|
|
860
|
+
'knowledge-base',
|
|
861
|
+
'How to configure payments?',
|
|
862
|
+
{ k: 5, threshold: 0.8 }
|
|
863
|
+
);
|
|
864
|
+
|
|
865
|
+
results.results.forEach(result => {
|
|
866
|
+
console.log(`${result.score}: ${result.content}`);
|
|
867
|
+
});
|
|
631
868
|
```
|
|
632
869
|
|
|
633
870
|
### Flow Diagram
|
|
@@ -653,4 +890,3 @@ Contribuições são bem-vindas! Por favor, abra uma issue ou pull request no re
|
|
|
653
890
|
## 📞 Suporte
|
|
654
891
|
|
|
655
892
|
Para suporte técnico, entre em contato através dos canais oficiais da Runflow ou consulte a documentação completa da plataforma.
|
|
656
|
-
>>>>>>> 6435d75437a22d2d974b5406d5c881d3d016d76d
|
package/dist/agents/server.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { RunflowAgentConfig } from './runflow-agent';
|
|
3
3
|
import { AgentInput } from '../types';
|
|
4
|
+
import { SwaggerConfig } from './swagger';
|
|
4
5
|
export interface AgentServerConfig extends RunflowAgentConfig {
|
|
5
6
|
port?: number;
|
|
6
7
|
cors?: boolean;
|
|
@@ -13,6 +14,7 @@ export interface AgentServerOptions {
|
|
|
13
14
|
rateLimiting?: boolean;
|
|
14
15
|
healthEndpoint?: boolean;
|
|
15
16
|
middleware?: express.RequestHandler[];
|
|
17
|
+
swagger?: boolean | SwaggerConfig;
|
|
16
18
|
hooks?: {
|
|
17
19
|
beforeChat?: (req: express.Request, res: express.Response) => Promise<void> | void;
|
|
18
20
|
transformInput?: (raw: any) => AgentInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/agents/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/agents/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAgB,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAgB,aAAa,EAAE,MAAM,WAAW,CAAC;AAIxD,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC;IAEtC,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IAElC,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACnF,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,UAAU,CAAC;QAC1C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE;YAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;YAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAClK,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;YAAE,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;YAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KAC3K,CAAC;IAGF,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,kBAAuB;;iBAmNjB,MAAM;EAetB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,QAsE7C"}
|
package/dist/agents/server.js
CHANGED
|
@@ -40,6 +40,7 @@ exports.createAgentServer = createAgentServer;
|
|
|
40
40
|
exports.startAgent = startAgent;
|
|
41
41
|
const express_1 = __importDefault(require("express"));
|
|
42
42
|
const runflow_agent_1 = require("./runflow-agent");
|
|
43
|
+
const swagger_1 = require("./swagger");
|
|
43
44
|
const fs = __importStar(require("fs"));
|
|
44
45
|
const path = __importStar(require("path"));
|
|
45
46
|
/**
|
|
@@ -229,6 +230,12 @@ function createAgentServer(config, options = {}) {
|
|
|
229
230
|
sessionEnabled: config.session?.enabled || false
|
|
230
231
|
});
|
|
231
232
|
});
|
|
233
|
+
// Swagger/OpenAPI Documentation
|
|
234
|
+
if (options.swagger !== false) {
|
|
235
|
+
const swaggerConfig = typeof options.swagger === 'object' ? options.swagger : {};
|
|
236
|
+
const serverPort = options.port || process.env.PORT || 3000;
|
|
237
|
+
(0, swagger_1.setupSwagger)(app, Number(serverPort), swaggerConfig);
|
|
238
|
+
}
|
|
232
239
|
return {
|
|
233
240
|
app,
|
|
234
241
|
start(port) {
|
|
@@ -238,6 +245,10 @@ function createAgentServer(config, options = {}) {
|
|
|
238
245
|
console.log(`📡 Chat endpoint: http://localhost:${serverPort}/chat`);
|
|
239
246
|
console.log(`❤️ Health check: http://localhost:${serverPort}/health`);
|
|
240
247
|
console.log(`ℹ️ Agent info: http://localhost:${serverPort}/agent-info`);
|
|
248
|
+
if (options.swagger !== false) {
|
|
249
|
+
console.log(`📚 API Documentation: http://localhost:${serverPort}/docs`);
|
|
250
|
+
console.log(`📄 OpenAPI Spec: http://localhost:${serverPort}/api-docs.json`);
|
|
251
|
+
}
|
|
241
252
|
});
|
|
242
253
|
}
|
|
243
254
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/agents/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/agents/server.ts"],"names":[],"mappings":"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"}
|