@runflow-ai/sdk 1.0.4 → 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 -17
- package/README.md +0 -892
- package/dist/agents/runflow-agent.d.ts +0 -53
- package/dist/agents/runflow-agent.d.ts.map +0 -1
- package/dist/agents/runflow-agent.js +0 -263
- 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 -326
- package/dist/agents/server.js.map +0 -1
- package/dist/agents/swagger.d.ts +0 -678
- package/dist/agents/swagger.d.ts.map +0 -1
- package/dist/agents/swagger.js +0 -338
- 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 -140
- 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/singleton.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { RunflowSDK } from "./runflow-sdk";
|
|
2
|
-
import { AgentContext } from "./types";
|
|
3
|
-
/**
|
|
4
|
-
* Obtém ou cria uma instância singleton do SDK
|
|
5
|
-
*
|
|
6
|
-
* @param context - Contexto do agente (opcional, usado apenas na primeira chamada)
|
|
7
|
-
* @returns Instância do SDK
|
|
8
|
-
*/
|
|
9
|
-
export declare function getSDK(context?: AgentContext): RunflowSDK;
|
|
10
|
-
/**
|
|
11
|
-
* Reinicia a instância singleton (útil para testes ou mudanças de contexto)
|
|
12
|
-
*
|
|
13
|
-
* @param context - Novo contexto do agente
|
|
14
|
-
* @returns Nova instância do SDK
|
|
15
|
-
*/
|
|
16
|
-
export declare function resetSDK(context?: AgentContext): RunflowSDK;
|
|
17
|
-
/**
|
|
18
|
-
* Verifica se já existe uma instância do SDK
|
|
19
|
-
*
|
|
20
|
-
* @returns true se existe uma instância ativa
|
|
21
|
-
*/
|
|
22
|
-
export declare function hasSDKInstance(): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* Funções de conveniência que usam a instância singleton
|
|
25
|
-
* Estas funções permitem usar o SDK sem precisar instanciar
|
|
26
|
-
*/
|
|
27
|
-
export declare function getCredential(name: string): Promise<import("./types").Credential>;
|
|
28
|
-
export declare function getPrompt(name: string, variables?: Record<string, any>): Promise<string>;
|
|
29
|
-
export declare function getAvailableVectorStores(): Promise<import("./types").VectorStore[]>;
|
|
30
|
-
export declare function searchVectorStore(vectorStore: string, query: string, options?: import("./types").SearchOptions): Promise<import("./types").SearchResponse>;
|
|
31
|
-
export declare function addDocument(request: import("./types").AddDocumentRequest): Promise<import("./types").AddDocumentResponse>;
|
|
32
|
-
export declare function listDocuments(vectorStore: string, options?: import("./types").ListDocumentsOptions): Promise<import("./types").ListDocumentsResponse>;
|
|
33
|
-
export declare function deleteDocument(documentId: string): Promise<import("./types").DeleteDocumentResponse>;
|
|
34
|
-
export declare function getSession(sessionId: string): import("./runflow-sdk").SessionManager;
|
|
35
|
-
export declare function log(message: string, data?: any): void;
|
|
36
|
-
export declare function trace(traceData: import("./types").TraceData): Promise<import("./types").TraceResponse>;
|
|
37
|
-
//# sourceMappingURL=singleton.d.ts.map
|
package/dist/singleton.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.d.ts","sourceRoot":"","sources":["../src/singleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAQvC;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAKzD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAG3D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;;GAGG;AAEH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,SAAS,EAAE,UAAU,CAAC,CAEvC;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CACvD,OAAO,SAAS,EAAE,WAAW,EAAE,CAChC,CAEA;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,OAAO,SAAS,EAAE,aAAa,GACxC,OAAO,CAAC,OAAO,SAAS,EAAE,cAAc,CAAC,CAE3C;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,OAAO,SAAS,EAAE,kBAAkB,GAC5C,OAAO,CAAC,OAAO,SAAS,EAAE,mBAAmB,CAAC,CAEhD;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,OAAO,SAAS,EAAE,oBAAoB,GAC/C,OAAO,CAAC,OAAO,SAAS,EAAE,qBAAqB,CAAC,CAElD;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,SAAS,EAAE,sBAAsB,CAAC,CAEnD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,0CAE3C;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAErD;AAED,wBAAsB,KAAK,CACzB,SAAS,EAAE,OAAO,SAAS,EAAE,SAAS,GACrC,OAAO,CAAC,OAAO,SAAS,EAAE,aAAa,CAAC,CAE1C"}
|
package/dist/singleton.js
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSDK = getSDK;
|
|
4
|
-
exports.resetSDK = resetSDK;
|
|
5
|
-
exports.hasSDKInstance = hasSDKInstance;
|
|
6
|
-
exports.getCredential = getCredential;
|
|
7
|
-
exports.getPrompt = getPrompt;
|
|
8
|
-
exports.getAvailableVectorStores = getAvailableVectorStores;
|
|
9
|
-
exports.searchVectorStore = searchVectorStore;
|
|
10
|
-
exports.addDocument = addDocument;
|
|
11
|
-
exports.listDocuments = listDocuments;
|
|
12
|
-
exports.deleteDocument = deleteDocument;
|
|
13
|
-
exports.getSession = getSession;
|
|
14
|
-
exports.log = log;
|
|
15
|
-
exports.trace = trace;
|
|
16
|
-
const runflow_sdk_1 = require("./runflow-sdk");
|
|
17
|
-
/**
|
|
18
|
-
* Instância singleton do SDK
|
|
19
|
-
* Permite reutilizar a mesma instância em toda a aplicação
|
|
20
|
-
*/
|
|
21
|
-
let _sdkInstance = null;
|
|
22
|
-
/**
|
|
23
|
-
* Obtém ou cria uma instância singleton do SDK
|
|
24
|
-
*
|
|
25
|
-
* @param context - Contexto do agente (opcional, usado apenas na primeira chamada)
|
|
26
|
-
* @returns Instância do SDK
|
|
27
|
-
*/
|
|
28
|
-
function getSDK(context) {
|
|
29
|
-
if (!_sdkInstance) {
|
|
30
|
-
_sdkInstance = new runflow_sdk_1.RunflowSDK(context);
|
|
31
|
-
}
|
|
32
|
-
return _sdkInstance;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Reinicia a instância singleton (útil para testes ou mudanças de contexto)
|
|
36
|
-
*
|
|
37
|
-
* @param context - Novo contexto do agente
|
|
38
|
-
* @returns Nova instância do SDK
|
|
39
|
-
*/
|
|
40
|
-
function resetSDK(context) {
|
|
41
|
-
_sdkInstance = new runflow_sdk_1.RunflowSDK(context);
|
|
42
|
-
return _sdkInstance;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Verifica se já existe uma instância do SDK
|
|
46
|
-
*
|
|
47
|
-
* @returns true se existe uma instância ativa
|
|
48
|
-
*/
|
|
49
|
-
function hasSDKInstance() {
|
|
50
|
-
return _sdkInstance !== null;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Funções de conveniência que usam a instância singleton
|
|
54
|
-
* Estas funções permitem usar o SDK sem precisar instanciar
|
|
55
|
-
*/
|
|
56
|
-
async function getCredential(name) {
|
|
57
|
-
return getSDK().getCredential(name);
|
|
58
|
-
}
|
|
59
|
-
async function getPrompt(name, variables) {
|
|
60
|
-
return getSDK().getPrompt(name, variables);
|
|
61
|
-
}
|
|
62
|
-
async function getAvailableVectorStores() {
|
|
63
|
-
return getSDK().getAvailableVectorStores();
|
|
64
|
-
}
|
|
65
|
-
async function searchVectorStore(vectorStore, query, options) {
|
|
66
|
-
return getSDK().searchVectorStore(vectorStore, query, options);
|
|
67
|
-
}
|
|
68
|
-
async function addDocument(request) {
|
|
69
|
-
return getSDK().addDocument(request);
|
|
70
|
-
}
|
|
71
|
-
async function listDocuments(vectorStore, options) {
|
|
72
|
-
return getSDK().listDocuments(vectorStore, options);
|
|
73
|
-
}
|
|
74
|
-
async function deleteDocument(documentId) {
|
|
75
|
-
return getSDK().deleteDocument(documentId);
|
|
76
|
-
}
|
|
77
|
-
function getSession(sessionId) {
|
|
78
|
-
return getSDK().session.get(sessionId);
|
|
79
|
-
}
|
|
80
|
-
function log(message, data) {
|
|
81
|
-
return getSDK().log(message, data);
|
|
82
|
-
}
|
|
83
|
-
async function trace(traceData) {
|
|
84
|
-
return getSDK().trace(traceData);
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=singleton.js.map
|
package/dist/singleton.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"singleton.js","sourceRoot":"","sources":["../src/singleton.ts"],"names":[],"mappings":";;AAeA,wBAKC;AAQD,4BAGC;AAOD,wCAEC;AAOD,sCAIC;AAED,8BAKC;AAED,4DAIC;AAED,8CAMC;AAED,kCAIC;AAED,sCAKC;AAED,wCAIC;AAED,gCAEC;AAED,kBAEC;AAED,sBAIC;AAzGD,+CAA2C;AAG3C;;;GAGG;AACH,IAAI,YAAY,GAAsB,IAAI,CAAC;AAE3C;;;;;GAKG;AACH,SAAgB,MAAM,CAAC,OAAsB;IAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,wBAAU,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,OAAsB;IAC7C,YAAY,GAAG,IAAI,wBAAU,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc;IAC5B,OAAO,YAAY,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED;;;GAGG;AAEI,KAAK,UAAU,aAAa,CACjC,IAAY;IAEZ,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAEM,KAAK,UAAU,SAAS,CAC7B,IAAY,EACZ,SAA+B;IAE/B,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAEM,KAAK,UAAU,wBAAwB;IAG5C,OAAO,MAAM,EAAE,CAAC,wBAAwB,EAAE,CAAC;AAC7C,CAAC;AAEM,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,KAAa,EACb,OAAyC;IAEzC,OAAO,MAAM,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AACjE,CAAC;AAEM,KAAK,UAAU,WAAW,CAC/B,OAA6C;IAE7C,OAAO,MAAM,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,WAAmB,EACnB,OAAgD;IAEhD,OAAO,MAAM,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,UAAkB;IAElB,OAAO,MAAM,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,UAAU,CAAC,SAAiB;IAC1C,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,GAAG,CAAC,OAAe,EAAE,IAAU;IAC7C,OAAO,MAAM,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAEM,KAAK,UAAU,KAAK,CACzB,SAAsC;IAEtC,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuração do arquivo .runflow
|
|
3
|
-
*
|
|
4
|
-
* Este arquivo deve estar na raiz do projeto ou em um diretório pai
|
|
5
|
-
* e conter as credenciais e configurações necessárias para o SDK.
|
|
6
|
-
*/
|
|
7
|
-
export interface RunflowConfig {
|
|
8
|
-
/** ID único do agente */
|
|
9
|
-
agentId: string;
|
|
10
|
-
/** ID do tenant/organização */
|
|
11
|
-
tenantId: string;
|
|
12
|
-
/** Chave de API para autenticação */
|
|
13
|
-
apiKey: string;
|
|
14
|
-
/** URL base da API do Runflow */
|
|
15
|
-
apiUrl: string;
|
|
16
|
-
}
|
|
17
|
-
export interface AgentContext {
|
|
18
|
-
tenantId: string;
|
|
19
|
-
agentId: string;
|
|
20
|
-
requestId: string;
|
|
21
|
-
sessionId?: string;
|
|
22
|
-
companyId?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface AgentInput {
|
|
25
|
-
message: string;
|
|
26
|
-
companyId: string;
|
|
27
|
-
userId?: string;
|
|
28
|
-
sessionId?: string;
|
|
29
|
-
channel?: string;
|
|
30
|
-
metadata?: Record<string, any>;
|
|
31
|
-
tab?: string;
|
|
32
|
-
preChatInfo?: string;
|
|
33
|
-
}
|
|
34
|
-
export interface AgentOutput {
|
|
35
|
-
message: string;
|
|
36
|
-
metadata?: {
|
|
37
|
-
llmProvider?: string;
|
|
38
|
-
model?: string;
|
|
39
|
-
toolsUsed?: string[];
|
|
40
|
-
steps?: number;
|
|
41
|
-
[key: string]: any;
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
export interface Credential {
|
|
45
|
-
name: string;
|
|
46
|
-
type: "API_KEY" | "OAUTH" | "JWT";
|
|
47
|
-
apiKey: string;
|
|
48
|
-
config: Record<string, any>;
|
|
49
|
-
tenant_id: string;
|
|
50
|
-
project_id: string;
|
|
51
|
-
}
|
|
52
|
-
export interface PromptResponse {
|
|
53
|
-
content: string;
|
|
54
|
-
name: string;
|
|
55
|
-
variables: Record<string, any>;
|
|
56
|
-
}
|
|
57
|
-
export interface VectorStore {
|
|
58
|
-
id: string;
|
|
59
|
-
name: string;
|
|
60
|
-
description: string;
|
|
61
|
-
type: "pinecone" | "weaviate" | "qdrant";
|
|
62
|
-
status: "active" | "inactive";
|
|
63
|
-
}
|
|
64
|
-
export interface SearchResult {
|
|
65
|
-
content: string;
|
|
66
|
-
score: number;
|
|
67
|
-
metadata: {
|
|
68
|
-
source?: string;
|
|
69
|
-
updated?: string;
|
|
70
|
-
[key: string]: any;
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
export interface SearchResponse {
|
|
74
|
-
query: string;
|
|
75
|
-
vector_store: string;
|
|
76
|
-
results: SearchResult[];
|
|
77
|
-
}
|
|
78
|
-
export interface SearchOptions {
|
|
79
|
-
k?: number;
|
|
80
|
-
threshold?: number;
|
|
81
|
-
}
|
|
82
|
-
export interface Document {
|
|
83
|
-
id: string;
|
|
84
|
-
content: string;
|
|
85
|
-
metadata: Record<string, any>;
|
|
86
|
-
createdAt: string;
|
|
87
|
-
}
|
|
88
|
-
export interface AddDocumentRequest {
|
|
89
|
-
vectorStore: string;
|
|
90
|
-
content: string;
|
|
91
|
-
metadata?: Record<string, any>;
|
|
92
|
-
}
|
|
93
|
-
export interface AddDocumentResponse {
|
|
94
|
-
id: string;
|
|
95
|
-
message: string;
|
|
96
|
-
}
|
|
97
|
-
export interface ListDocumentsResponse {
|
|
98
|
-
documents: Document[];
|
|
99
|
-
total: number;
|
|
100
|
-
}
|
|
101
|
-
export interface ListDocumentsOptions {
|
|
102
|
-
limit?: number;
|
|
103
|
-
offset?: number;
|
|
104
|
-
}
|
|
105
|
-
export interface DeleteDocumentResponse {
|
|
106
|
-
success: boolean;
|
|
107
|
-
}
|
|
108
|
-
export interface SessionMessage {
|
|
109
|
-
role: "human" | "ai";
|
|
110
|
-
content: string;
|
|
111
|
-
timestamp: string;
|
|
112
|
-
metadata?: Record<string, any>;
|
|
113
|
-
}
|
|
114
|
-
export interface SessionHistoryResponse {
|
|
115
|
-
messages: SessionMessage[];
|
|
116
|
-
total: number;
|
|
117
|
-
}
|
|
118
|
-
export interface SessionHistoryOptions {
|
|
119
|
-
limit?: number;
|
|
120
|
-
offset?: number;
|
|
121
|
-
}
|
|
122
|
-
export interface TraceData {
|
|
123
|
-
input: {
|
|
124
|
-
type: string;
|
|
125
|
-
content: string;
|
|
126
|
-
}[];
|
|
127
|
-
output: string;
|
|
128
|
-
status: "success" | "error" | "pending";
|
|
129
|
-
}
|
|
130
|
-
export interface LegacyTraceData {
|
|
131
|
-
inputs?: Record<string, any>;
|
|
132
|
-
outputs?: Record<string, any>;
|
|
133
|
-
status?: "success" | "error" | "pending";
|
|
134
|
-
}
|
|
135
|
-
export interface TraceResponse {
|
|
136
|
-
success: boolean;
|
|
137
|
-
traceId: string;
|
|
138
|
-
langsmith: boolean;
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,wCAAwC"}
|
package/dist/utils.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { AgentInput } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Valida entrada do agente com regras padronizadas
|
|
4
|
-
*/
|
|
5
|
-
export declare function validateAgentInput(input: any, options?: {
|
|
6
|
-
requireCompanyId?: boolean;
|
|
7
|
-
maxMessageLength?: number;
|
|
8
|
-
allowedChannels?: string[];
|
|
9
|
-
}): {
|
|
10
|
-
isValid: boolean;
|
|
11
|
-
errors: string[];
|
|
12
|
-
sanitized?: AgentInput;
|
|
13
|
-
};
|
|
14
|
-
/**
|
|
15
|
-
* Limpa e valida metadados
|
|
16
|
-
*/
|
|
17
|
-
export declare function sanitizeMetadata(metadata: any, options?: {
|
|
18
|
-
allowedKeys?: string[];
|
|
19
|
-
maxDepth?: number;
|
|
20
|
-
maxStringLength?: number;
|
|
21
|
-
}): Record<string, any> | undefined;
|
|
22
|
-
/**
|
|
23
|
-
* Mascara dados sensíveis em logs
|
|
24
|
-
*/
|
|
25
|
-
export declare function maskSensitiveData(data: any, patterns?: string[]): any;
|
|
26
|
-
export interface RequestOptions {
|
|
27
|
-
timeout?: number;
|
|
28
|
-
retries?: number;
|
|
29
|
-
retryDelay?: number;
|
|
30
|
-
headers?: Record<string, string>;
|
|
31
|
-
}
|
|
32
|
-
export interface BatchRequestOptions {
|
|
33
|
-
concurrent?: number;
|
|
34
|
-
timeout?: number;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Cliente HTTP com retry e timeout
|
|
38
|
-
*/
|
|
39
|
-
export declare class HttpClient {
|
|
40
|
-
private defaultTimeout;
|
|
41
|
-
private defaultRetries;
|
|
42
|
-
private defaultRetryDelay;
|
|
43
|
-
request(url: string, options?: RequestInit & RequestOptions): Promise<Response>;
|
|
44
|
-
get(url: string, options?: RequestOptions): Promise<Response>;
|
|
45
|
-
post(url: string, data: any, options?: RequestOptions): Promise<Response>;
|
|
46
|
-
put(url: string, data: any, options?: RequestOptions): Promise<Response>;
|
|
47
|
-
delete(url: string, options?: RequestOptions): Promise<Response>;
|
|
48
|
-
private delay;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Executa múltiplas requests em lote com controle de concorrência
|
|
52
|
-
*/
|
|
53
|
-
export declare function batchRequests<T>(requests: (() => Promise<T>)[], options?: BatchRequestOptions): Promise<T[]>;
|
|
54
|
-
/**
|
|
55
|
-
* Aplica timeout em uma Promise
|
|
56
|
-
*/
|
|
57
|
-
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
|
|
58
|
-
/**
|
|
59
|
-
* Debounce para funções async
|
|
60
|
-
*/
|
|
61
|
-
export declare function debounce<T extends (...args: any[]) => Promise<any>>(func: T, delay: number): T;
|
|
62
|
-
export declare class SimpleCache<T> {
|
|
63
|
-
private cache;
|
|
64
|
-
set(key: string, value: T, ttlMs?: number): void;
|
|
65
|
-
get(key: string): T | null;
|
|
66
|
-
has(key: string): boolean;
|
|
67
|
-
delete(key: string): void;
|
|
68
|
-
clear(): void;
|
|
69
|
-
size(): number;
|
|
70
|
-
private cleanup;
|
|
71
|
-
}
|
|
72
|
-
export declare const credentialCache: SimpleCache<any>;
|
|
73
|
-
export declare const sessionCache: SimpleCache<any>;
|
|
74
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.sessionCache = exports.credentialCache = exports.SimpleCache = exports.HttpClient = void 0;
|
|
4
|
-
exports.validateAgentInput = validateAgentInput;
|
|
5
|
-
exports.sanitizeMetadata = sanitizeMetadata;
|
|
6
|
-
exports.maskSensitiveData = maskSensitiveData;
|
|
7
|
-
exports.batchRequests = batchRequests;
|
|
8
|
-
exports.withTimeout = withTimeout;
|
|
9
|
-
exports.debounce = debounce;
|
|
10
|
-
// =============================================================================
|
|
11
|
-
// 🔒 VALIDATION & SECURITY
|
|
12
|
-
// =============================================================================
|
|
13
|
-
/**
|
|
14
|
-
* Valida entrada do agente com regras padronizadas
|
|
15
|
-
*/
|
|
16
|
-
function validateAgentInput(input, options = {}) {
|
|
17
|
-
const errors = [];
|
|
18
|
-
const { requireCompanyId = true, maxMessageLength = 10000, allowedChannels } = options;
|
|
19
|
-
// Verificar se input existe
|
|
20
|
-
if (!input || typeof input !== 'object') {
|
|
21
|
-
return { isValid: false, errors: ['Input deve ser um objeto válido'] };
|
|
22
|
-
}
|
|
23
|
-
// Validar message (obrigatório)
|
|
24
|
-
if (!input.message || typeof input.message !== 'string') {
|
|
25
|
-
errors.push('Campo "message" é obrigatório e deve ser uma string');
|
|
26
|
-
}
|
|
27
|
-
else if (input.message.trim().length === 0) {
|
|
28
|
-
errors.push('Campo "message" não pode estar vazio');
|
|
29
|
-
}
|
|
30
|
-
else if (input.message.length > maxMessageLength) {
|
|
31
|
-
errors.push(`Campo "message" não pode ter mais de ${maxMessageLength} caracteres`);
|
|
32
|
-
}
|
|
33
|
-
// Validar companyId
|
|
34
|
-
if (requireCompanyId && (!input.companyId || typeof input.companyId !== 'string')) {
|
|
35
|
-
errors.push('Campo "companyId" é obrigatório');
|
|
36
|
-
}
|
|
37
|
-
// Validar channel se fornecido
|
|
38
|
-
if (input.channel && allowedChannels && !allowedChannels.includes(input.channel)) {
|
|
39
|
-
errors.push(`Canal "${input.channel}" não é permitido. Canais válidos: ${allowedChannels.join(', ')}`);
|
|
40
|
-
}
|
|
41
|
-
// Validar IDs se fornecidos
|
|
42
|
-
if (input.userId && typeof input.userId !== 'string') {
|
|
43
|
-
errors.push('Campo "userId" deve ser uma string');
|
|
44
|
-
}
|
|
45
|
-
if (input.sessionId && typeof input.sessionId !== 'string') {
|
|
46
|
-
errors.push('Campo "sessionId" deve ser uma string');
|
|
47
|
-
}
|
|
48
|
-
if (errors.length > 0) {
|
|
49
|
-
return { isValid: false, errors };
|
|
50
|
-
}
|
|
51
|
-
// Criar versão sanitizada
|
|
52
|
-
const sanitized = {
|
|
53
|
-
message: input.message.trim(),
|
|
54
|
-
companyId: input.companyId?.trim(),
|
|
55
|
-
userId: input.userId?.trim(),
|
|
56
|
-
sessionId: input.sessionId?.trim(),
|
|
57
|
-
channel: input.channel?.trim(),
|
|
58
|
-
metadata: sanitizeMetadata(input.metadata),
|
|
59
|
-
tab: input.tab?.trim(),
|
|
60
|
-
preChatInfo: input.preChatInfo?.trim()
|
|
61
|
-
};
|
|
62
|
-
return { isValid: true, errors: [], sanitized };
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Limpa e valida metadados
|
|
66
|
-
*/
|
|
67
|
-
function sanitizeMetadata(metadata, options = {}) {
|
|
68
|
-
const { allowedKeys, maxDepth = 3, maxStringLength = 1000 } = options;
|
|
69
|
-
if (!metadata || typeof metadata !== 'object') {
|
|
70
|
-
return undefined;
|
|
71
|
-
}
|
|
72
|
-
function sanitizeValue(value, depth) {
|
|
73
|
-
if (depth > maxDepth) {
|
|
74
|
-
return '[Max depth exceeded]';
|
|
75
|
-
}
|
|
76
|
-
if (value === null || value === undefined) {
|
|
77
|
-
return value;
|
|
78
|
-
}
|
|
79
|
-
if (typeof value === 'string') {
|
|
80
|
-
return value.length > maxStringLength
|
|
81
|
-
? value.substring(0, maxStringLength) + '...'
|
|
82
|
-
: value;
|
|
83
|
-
}
|
|
84
|
-
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
85
|
-
return value;
|
|
86
|
-
}
|
|
87
|
-
if (Array.isArray(value)) {
|
|
88
|
-
return value.slice(0, 50).map(item => sanitizeValue(item, depth + 1));
|
|
89
|
-
}
|
|
90
|
-
if (typeof value === 'object') {
|
|
91
|
-
const sanitized = {};
|
|
92
|
-
for (const [key, val] of Object.entries(value)) {
|
|
93
|
-
if (allowedKeys && !allowedKeys.includes(key)) {
|
|
94
|
-
continue;
|
|
95
|
-
}
|
|
96
|
-
sanitized[key] = sanitizeValue(val, depth + 1);
|
|
97
|
-
}
|
|
98
|
-
return sanitized;
|
|
99
|
-
}
|
|
100
|
-
return String(value);
|
|
101
|
-
}
|
|
102
|
-
return sanitizeValue(metadata, 0);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Mascara dados sensíveis em logs
|
|
106
|
-
*/
|
|
107
|
-
function maskSensitiveData(data, patterns = ['email', 'phone', 'cpf', 'password', 'token']) {
|
|
108
|
-
if (!data)
|
|
109
|
-
return data;
|
|
110
|
-
function maskValue(key, value) {
|
|
111
|
-
if (typeof value === 'string') {
|
|
112
|
-
const lowerKey = key.toLowerCase();
|
|
113
|
-
for (const pattern of patterns) {
|
|
114
|
-
if (lowerKey.includes(pattern.toLowerCase())) {
|
|
115
|
-
if (pattern === 'email' && value.includes('@')) {
|
|
116
|
-
const [user, domain] = value.split('@');
|
|
117
|
-
return `${user.substring(0, 2)}***@${domain}`;
|
|
118
|
-
}
|
|
119
|
-
if (pattern === 'phone' && /\d/.test(value)) {
|
|
120
|
-
return value.replace(/\d/g, '*');
|
|
121
|
-
}
|
|
122
|
-
if (pattern === 'cpf' && /\d{11}/.test(value.replace(/\D/g, ''))) {
|
|
123
|
-
return value.replace(/\d/g, '*');
|
|
124
|
-
}
|
|
125
|
-
if (pattern === 'password' || pattern === 'token') {
|
|
126
|
-
return '***';
|
|
127
|
-
}
|
|
128
|
-
// Padrão geral: mostrar apenas primeiros 2 caracteres
|
|
129
|
-
return value.length > 2 ? value.substring(0, 2) + '*'.repeat(value.length - 2) : '***';
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return value;
|
|
134
|
-
}
|
|
135
|
-
if (typeof data === 'string') {
|
|
136
|
-
return maskValue('data', data);
|
|
137
|
-
}
|
|
138
|
-
if (Array.isArray(data)) {
|
|
139
|
-
return data.map(item => maskSensitiveData(item, patterns));
|
|
140
|
-
}
|
|
141
|
-
if (typeof data === 'object') {
|
|
142
|
-
const masked = {};
|
|
143
|
-
for (const [key, value] of Object.entries(data)) {
|
|
144
|
-
if (typeof value === 'object' && value !== null) {
|
|
145
|
-
masked[key] = maskSensitiveData(value, patterns);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
masked[key] = maskValue(key, value);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return masked;
|
|
152
|
-
}
|
|
153
|
-
return data;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Cliente HTTP com retry e timeout
|
|
157
|
-
*/
|
|
158
|
-
class HttpClient {
|
|
159
|
-
constructor() {
|
|
160
|
-
this.defaultTimeout = 10000;
|
|
161
|
-
this.defaultRetries = 3;
|
|
162
|
-
this.defaultRetryDelay = 1000;
|
|
163
|
-
}
|
|
164
|
-
async request(url, options = {}) {
|
|
165
|
-
const { timeout = this.defaultTimeout, retries = this.defaultRetries, retryDelay = this.defaultRetryDelay, ...fetchOptions } = options;
|
|
166
|
-
let lastError = new Error('Unknown error');
|
|
167
|
-
for (let attempt = 0; attempt <= retries; attempt++) {
|
|
168
|
-
try {
|
|
169
|
-
const controller = new AbortController();
|
|
170
|
-
const timeoutId = setTimeout(() => controller.abort(), timeout);
|
|
171
|
-
const response = await fetch(url, {
|
|
172
|
-
...fetchOptions,
|
|
173
|
-
signal: controller.signal
|
|
174
|
-
});
|
|
175
|
-
clearTimeout(timeoutId);
|
|
176
|
-
return response;
|
|
177
|
-
}
|
|
178
|
-
catch (error) {
|
|
179
|
-
lastError = error;
|
|
180
|
-
if (attempt < retries) {
|
|
181
|
-
await this.delay(retryDelay * Math.pow(2, attempt)); // Exponential backoff
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
throw new Error(`Request failed after ${retries + 1} attempts: ${lastError.message}`);
|
|
186
|
-
}
|
|
187
|
-
async get(url, options = {}) {
|
|
188
|
-
return this.request(url, { ...options, method: 'GET' });
|
|
189
|
-
}
|
|
190
|
-
async post(url, data, options = {}) {
|
|
191
|
-
return this.request(url, {
|
|
192
|
-
...options,
|
|
193
|
-
method: 'POST',
|
|
194
|
-
body: JSON.stringify(data),
|
|
195
|
-
headers: {
|
|
196
|
-
'Content-Type': 'application/json',
|
|
197
|
-
...options.headers
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
async put(url, data, options = {}) {
|
|
202
|
-
return this.request(url, {
|
|
203
|
-
...options,
|
|
204
|
-
method: 'PUT',
|
|
205
|
-
body: JSON.stringify(data),
|
|
206
|
-
headers: {
|
|
207
|
-
'Content-Type': 'application/json',
|
|
208
|
-
...options.headers
|
|
209
|
-
}
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
async delete(url, options = {}) {
|
|
213
|
-
return this.request(url, { ...options, method: 'DELETE' });
|
|
214
|
-
}
|
|
215
|
-
delay(ms) {
|
|
216
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
exports.HttpClient = HttpClient;
|
|
220
|
-
/**
|
|
221
|
-
* Executa múltiplas requests em lote com controle de concorrência
|
|
222
|
-
*/
|
|
223
|
-
async function batchRequests(requests, options = {}) {
|
|
224
|
-
const { concurrent = 3 } = options;
|
|
225
|
-
const results = [];
|
|
226
|
-
for (let i = 0; i < requests.length; i += concurrent) {
|
|
227
|
-
const batch = requests.slice(i, i + concurrent);
|
|
228
|
-
const batchResults = await Promise.all(batch.map(req => req()));
|
|
229
|
-
results.push(...batchResults);
|
|
230
|
-
}
|
|
231
|
-
return results;
|
|
232
|
-
}
|
|
233
|
-
/**
|
|
234
|
-
* Aplica timeout em uma Promise
|
|
235
|
-
*/
|
|
236
|
-
function withTimeout(promise, timeoutMs) {
|
|
237
|
-
return Promise.race([
|
|
238
|
-
promise,
|
|
239
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error(`Operation timed out after ${timeoutMs}ms`)), timeoutMs))
|
|
240
|
-
]);
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Debounce para funções async
|
|
244
|
-
*/
|
|
245
|
-
function debounce(func, delay) {
|
|
246
|
-
let timeoutId;
|
|
247
|
-
let lastCall = null;
|
|
248
|
-
return ((...args) => {
|
|
249
|
-
return new Promise((resolve, reject) => {
|
|
250
|
-
clearTimeout(timeoutId);
|
|
251
|
-
timeoutId = setTimeout(async () => {
|
|
252
|
-
try {
|
|
253
|
-
lastCall = func(...args);
|
|
254
|
-
const result = await lastCall;
|
|
255
|
-
resolve(result);
|
|
256
|
-
}
|
|
257
|
-
catch (error) {
|
|
258
|
-
reject(error);
|
|
259
|
-
}
|
|
260
|
-
}, delay);
|
|
261
|
-
});
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
// =============================================================================
|
|
265
|
-
// 🔧 CACHE UTILITIES
|
|
266
|
-
// =============================================================================
|
|
267
|
-
class SimpleCache {
|
|
268
|
-
constructor() {
|
|
269
|
-
this.cache = new Map();
|
|
270
|
-
}
|
|
271
|
-
set(key, value, ttlMs = 300000) {
|
|
272
|
-
const expiry = Date.now() + ttlMs;
|
|
273
|
-
this.cache.set(key, { value, expiry });
|
|
274
|
-
}
|
|
275
|
-
get(key) {
|
|
276
|
-
const item = this.cache.get(key);
|
|
277
|
-
if (!item)
|
|
278
|
-
return null;
|
|
279
|
-
if (Date.now() > item.expiry) {
|
|
280
|
-
this.cache.delete(key);
|
|
281
|
-
return null;
|
|
282
|
-
}
|
|
283
|
-
return item.value;
|
|
284
|
-
}
|
|
285
|
-
has(key) {
|
|
286
|
-
return this.get(key) !== null;
|
|
287
|
-
}
|
|
288
|
-
delete(key) {
|
|
289
|
-
this.cache.delete(key);
|
|
290
|
-
}
|
|
291
|
-
clear() {
|
|
292
|
-
this.cache.clear();
|
|
293
|
-
}
|
|
294
|
-
size() {
|
|
295
|
-
// Limpar itens expirados antes de contar
|
|
296
|
-
this.cleanup();
|
|
297
|
-
return this.cache.size;
|
|
298
|
-
}
|
|
299
|
-
cleanup() {
|
|
300
|
-
const now = Date.now();
|
|
301
|
-
for (const [key, item] of this.cache.entries()) {
|
|
302
|
-
if (now > item.expiry) {
|
|
303
|
-
this.cache.delete(key);
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
exports.SimpleCache = SimpleCache;
|
|
309
|
-
// Instâncias globais de cache
|
|
310
|
-
exports.credentialCache = new SimpleCache();
|
|
311
|
-
exports.sessionCache = new SimpleCache();
|
|
312
|
-
//# sourceMappingURL=utils.js.map
|