@runflow-ai/sdk 1.0.17 → 1.0.19
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 +14 -4
- package/dist/core/agent.d.ts +5 -30
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +259 -472
- package/dist/core/agent.js.map +1 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +1 -11
- package/dist/core/context.js.map +1 -1
- package/dist/core/helpers/agent-context.d.ts +23 -0
- package/dist/core/helpers/agent-context.d.ts.map +1 -0
- package/dist/core/helpers/agent-context.js +90 -0
- package/dist/core/helpers/agent-context.js.map +1 -0
- package/dist/core/helpers/agent-memory.d.ts +17 -0
- package/dist/core/helpers/agent-memory.d.ts.map +1 -0
- package/dist/core/helpers/agent-memory.js +194 -0
- package/dist/core/helpers/agent-memory.js.map +1 -0
- package/dist/core/helpers/agent-rag.d.ts +22 -0
- package/dist/core/helpers/agent-rag.d.ts.map +1 -0
- package/dist/core/helpers/agent-rag.js +216 -0
- package/dist/core/helpers/agent-rag.js.map +1 -0
- package/dist/core/helpers/agent-utils.d.ts +13 -0
- package/dist/core/helpers/agent-utils.d.ts.map +1 -0
- package/dist/core/helpers/agent-utils.js +35 -0
- package/dist/core/helpers/agent-utils.js.map +1 -0
- package/dist/core/logger.d.ts +22 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +91 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/performance-logger.d.ts +45 -0
- package/dist/core/performance-logger.d.ts.map +1 -0
- package/dist/core/performance-logger.js +140 -0
- package/dist/core/performance-logger.js.map +1 -0
- package/dist/observability/trace-collector.d.ts.map +1 -1
- package/dist/observability/trace-collector.js +0 -16
- package/dist/observability/trace-collector.js.map +1 -1
- package/dist/types/all-types.d.ts +11 -3
- package/dist/types/all-types.d.ts.map +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createRAGTools = createRAGTools;
|
|
4
|
+
exports.createRAGTool = createRAGTool;
|
|
5
|
+
exports.performRAG = performRAG;
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// AGENTIC RAG - Create Tools Automatically
|
|
8
|
+
// ============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Cria tools de RAG automaticamente baseado na configuração
|
|
11
|
+
* LLM decide quando buscar (não busca sempre)
|
|
12
|
+
*/
|
|
13
|
+
function createRAGTools(ragConfig, logger) {
|
|
14
|
+
const tools = {};
|
|
15
|
+
logger?.debug('Creating RAG tools', {
|
|
16
|
+
hasVectorStore: !!ragConfig.vectorStore,
|
|
17
|
+
hasVectorStores: !!ragConfig.vectorStores
|
|
18
|
+
});
|
|
19
|
+
// Caso 1: KB única (simples)
|
|
20
|
+
if (ragConfig.vectorStore) {
|
|
21
|
+
logger?.debug('Creating single knowledge base tool', {
|
|
22
|
+
vectorStore: ragConfig.vectorStore
|
|
23
|
+
});
|
|
24
|
+
tools['searchKnowledge'] = createRAGTool({
|
|
25
|
+
id: 'knowledge',
|
|
26
|
+
name: ragConfig.vectorStore,
|
|
27
|
+
threshold: ragConfig.threshold || 0.7,
|
|
28
|
+
k: ragConfig.k || 5,
|
|
29
|
+
description: ragConfig.toolDescription || `Search in ${ragConfig.vectorStore} knowledge base for relevant information`,
|
|
30
|
+
}, logger);
|
|
31
|
+
}
|
|
32
|
+
// Caso 2: Múltiplas KBs (avançado) - ARRAY
|
|
33
|
+
if (ragConfig.vectorStores && Array.isArray(ragConfig.vectorStores)) {
|
|
34
|
+
logger?.debug('Creating multiple knowledge base tools', {
|
|
35
|
+
count: ragConfig.vectorStores.length
|
|
36
|
+
});
|
|
37
|
+
for (const vs of ragConfig.vectorStores) {
|
|
38
|
+
const toolName = `search_${vs.id}`;
|
|
39
|
+
logger?.debug('Creating KB tool', {
|
|
40
|
+
toolName,
|
|
41
|
+
vectorStore: vs.name
|
|
42
|
+
});
|
|
43
|
+
tools[toolName] = createRAGTool({
|
|
44
|
+
id: vs.id,
|
|
45
|
+
name: vs.name,
|
|
46
|
+
threshold: vs.threshold || ragConfig.threshold || 0.7,
|
|
47
|
+
k: vs.k || ragConfig.k || 5,
|
|
48
|
+
description: vs.description || `Search in ${vs.name} knowledge base`,
|
|
49
|
+
}, logger);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
logger?.info('RAG tools created', {
|
|
53
|
+
toolsCount: Object.keys(tools).length,
|
|
54
|
+
toolNames: Object.keys(tools)
|
|
55
|
+
});
|
|
56
|
+
return tools;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Cria uma tool individual de RAG
|
|
60
|
+
*/
|
|
61
|
+
function createRAGTool(config, logger) {
|
|
62
|
+
return {
|
|
63
|
+
id: `search-${config.id}`,
|
|
64
|
+
name: `search_${config.id}`,
|
|
65
|
+
description: config.description,
|
|
66
|
+
parameters: {
|
|
67
|
+
query: {
|
|
68
|
+
type: 'string',
|
|
69
|
+
description: 'Search query to find relevant information',
|
|
70
|
+
required: true,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
execute: async (params, context) => {
|
|
74
|
+
const searchStartTime = Date.now();
|
|
75
|
+
logger?.debug('Executing RAG search', {
|
|
76
|
+
toolId: config.id,
|
|
77
|
+
query: params.query,
|
|
78
|
+
vectorStore: config.name,
|
|
79
|
+
k: config.k,
|
|
80
|
+
threshold: config.threshold
|
|
81
|
+
});
|
|
82
|
+
try {
|
|
83
|
+
const results = await context.runflowAPI.vectorSearch(params.query, {
|
|
84
|
+
vectorStore: config.name,
|
|
85
|
+
k: config.k,
|
|
86
|
+
threshold: config.threshold,
|
|
87
|
+
});
|
|
88
|
+
const formattedResults = results.results.map((r) => ({
|
|
89
|
+
content: r.content,
|
|
90
|
+
score: r.score,
|
|
91
|
+
metadata: r.metadata,
|
|
92
|
+
}));
|
|
93
|
+
if (formattedResults.length === 0) {
|
|
94
|
+
logger?.debug('No RAG results found', {
|
|
95
|
+
toolId: config.id,
|
|
96
|
+
query: params.query,
|
|
97
|
+
processingTimeMs: Date.now() - searchStartTime
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
found: false,
|
|
101
|
+
message: 'No relevant information found in knowledge base',
|
|
102
|
+
results: [],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
logger?.info('RAG search completed', {
|
|
106
|
+
toolId: config.id,
|
|
107
|
+
resultsCount: formattedResults.length,
|
|
108
|
+
topScore: formattedResults[0]?.score,
|
|
109
|
+
processingTimeMs: Date.now() - searchStartTime
|
|
110
|
+
});
|
|
111
|
+
return {
|
|
112
|
+
found: true,
|
|
113
|
+
count: formattedResults.length,
|
|
114
|
+
results: formattedResults,
|
|
115
|
+
context: formattedResults.map((r, i) => `[Result ${i + 1}] (score: ${r.score.toFixed(2)})\n${r.content}`).join('\n\n---\n\n'),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
logger?.error('RAG search failed', {
|
|
120
|
+
toolId: config.id,
|
|
121
|
+
query: params.query,
|
|
122
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
123
|
+
processingTimeMs: Date.now() - searchStartTime
|
|
124
|
+
});
|
|
125
|
+
return {
|
|
126
|
+
found: false,
|
|
127
|
+
error: error instanceof Error ? error.message : 'Search failed',
|
|
128
|
+
results: [],
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* RAG automático (DEPRECATED - mantido para compatibilidade temporária)
|
|
136
|
+
*/
|
|
137
|
+
async function performRAG(query, ragConfig, apiClient, traceCollector, logger) {
|
|
138
|
+
const ragStartTime = Date.now();
|
|
139
|
+
logger?.debug('Performing automatic RAG search', {
|
|
140
|
+
query,
|
|
141
|
+
vectorStore: ragConfig.vectorStore,
|
|
142
|
+
k: ragConfig.k || 5,
|
|
143
|
+
threshold: ragConfig.threshold || 0.7
|
|
144
|
+
});
|
|
145
|
+
const ragSpan = traceCollector?.startSpan('rag_search', {
|
|
146
|
+
operation: 'vector_search',
|
|
147
|
+
vectorStore: ragConfig.vectorStore,
|
|
148
|
+
k: ragConfig.k || 5,
|
|
149
|
+
threshold: ragConfig.threshold || 0.7,
|
|
150
|
+
});
|
|
151
|
+
ragSpan?.setInput({ query });
|
|
152
|
+
try {
|
|
153
|
+
const searchResults = await apiClient.vectorSearch(query, {
|
|
154
|
+
vectorStore: ragConfig.vectorStore,
|
|
155
|
+
k: ragConfig.k || 5,
|
|
156
|
+
threshold: ragConfig.threshold || 0.7,
|
|
157
|
+
});
|
|
158
|
+
if (searchResults.results.length === 0) {
|
|
159
|
+
logger?.debug('No RAG results found', {
|
|
160
|
+
query,
|
|
161
|
+
processingTimeMs: Date.now() - ragStartTime
|
|
162
|
+
});
|
|
163
|
+
ragSpan?.setOutput({ resultsCount: 0, hasResults: false });
|
|
164
|
+
ragSpan?.setMetadata({
|
|
165
|
+
operation: 'vector_search',
|
|
166
|
+
vectorStore: ragConfig.vectorStore,
|
|
167
|
+
resultsCount: 0,
|
|
168
|
+
processingTimeMs: Date.now() - ragStartTime,
|
|
169
|
+
success: true,
|
|
170
|
+
});
|
|
171
|
+
ragSpan?.finish();
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
const context = searchResults.results
|
|
175
|
+
.map((result) => result.content)
|
|
176
|
+
.join('\n\n');
|
|
177
|
+
logger?.info('RAG search completed', {
|
|
178
|
+
resultsCount: searchResults.results.length,
|
|
179
|
+
contextLength: context.length,
|
|
180
|
+
processingTimeMs: Date.now() - ragStartTime
|
|
181
|
+
});
|
|
182
|
+
ragSpan?.setOutput({
|
|
183
|
+
resultsCount: searchResults.results.length,
|
|
184
|
+
hasResults: true,
|
|
185
|
+
contextLength: context.length,
|
|
186
|
+
});
|
|
187
|
+
ragSpan?.setMetadata({
|
|
188
|
+
operation: 'vector_search',
|
|
189
|
+
vectorStore: ragConfig.vectorStore,
|
|
190
|
+
resultsCount: searchResults.results.length,
|
|
191
|
+
k: ragConfig.k || 5,
|
|
192
|
+
threshold: ragConfig.threshold || 0.7,
|
|
193
|
+
processingTimeMs: Date.now() - ragStartTime,
|
|
194
|
+
success: true,
|
|
195
|
+
});
|
|
196
|
+
ragSpan?.finish();
|
|
197
|
+
return context;
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
logger?.error('RAG search failed', {
|
|
201
|
+
query,
|
|
202
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
203
|
+
processingTimeMs: Date.now() - ragStartTime
|
|
204
|
+
});
|
|
205
|
+
ragSpan?.setMetadata({
|
|
206
|
+
operation: 'vector_search',
|
|
207
|
+
vectorStore: ragConfig.vectorStore,
|
|
208
|
+
success: false,
|
|
209
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
210
|
+
processingTimeMs: Date.now() - ragStartTime,
|
|
211
|
+
});
|
|
212
|
+
ragSpan?.finish();
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=agent-rag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-rag.js","sourceRoot":"","sources":["../../../src/core/helpers/agent-rag.ts"],"names":[],"mappings":";;AAWA,wCAoDC;AAKD,sCAuFC;AAKD,gCAgGC;AA7PD,+EAA+E;AAC/E,2CAA2C;AAC3C,+EAA+E;AAE/E;;;GAGG;AACH,SAAgB,cAAc,CAAC,SAAc,EAAE,MAAe;IAC5D,MAAM,KAAK,GAAwB,EAAE,CAAC;IAEtC,MAAM,EAAE,KAAK,CAAC,oBAAoB,EAAE;QAClC,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW;QACvC,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,YAAY;KAC1C,CAAC,CAAC;IAEH,6BAA6B;IAC7B,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1B,MAAM,EAAE,KAAK,CAAC,qCAAqC,EAAE;YACnD,WAAW,EAAE,SAAS,CAAC,WAAW;SACnC,CAAC,CAAC;QAEH,KAAK,CAAC,iBAAiB,CAAC,GAAG,aAAa,CAAC;YACvC,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,SAAS,CAAC,WAAW;YAC3B,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,GAAG;YACrC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC;YACnB,WAAW,EAAE,SAAS,CAAC,eAAe,IAAI,aAAa,SAAS,CAAC,WAAW,0CAA0C;SACvH,EAAE,MAAM,CAAC,CAAC;IACb,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QACpE,MAAM,EAAE,KAAK,CAAC,wCAAwC,EAAE;YACtD,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,MAAM;SACrC,CAAC,CAAC;QAEH,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,EAAE,KAAK,CAAC,kBAAkB,EAAE;gBAChC,QAAQ;gBACR,WAAW,EAAE,EAAE,CAAC,IAAI;aACrB,CAAC,CAAC;YAEH,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;gBAC9B,EAAE,EAAE,EAAE,CAAC,EAAE;gBACT,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,SAAS,EAAE,EAAE,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,IAAI,GAAG;gBACrD,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC;gBAC3B,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,aAAa,EAAE,CAAC,IAAI,iBAAiB;aACrE,EAAE,MAAM,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE;QAChC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;QACrC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;KAC9B,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,MAM7B,EAAE,MAAe;IAChB,OAAO;QACL,EAAE,EAAE,UAAU,MAAM,CAAC,EAAE,EAAE;QACzB,IAAI,EAAE,UAAU,MAAM,CAAC,EAAE,EAAE;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,2CAA2C;gBACxD,QAAQ,EAAE,IAAI;aACf;SACF;QACD,OAAO,EAAE,KAAK,EAAE,MAAW,EAAE,OAAY,EAAE,EAAE;YAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEnC,MAAM,EAAE,KAAK,CAAC,sBAAsB,EAAE;gBACpC,MAAM,EAAE,MAAM,CAAC,EAAE;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,IAAI;gBACxB,CAAC,EAAE,MAAM,CAAC,CAAC;gBACX,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE;oBAClE,WAAW,EAAE,MAAM,CAAC,IAAI;oBACxB,CAAC,EAAE,MAAM,CAAC,CAAC;oBACX,SAAS,EAAE,MAAM,CAAC,SAAS;iBAC5B,CAAC,CAAC;gBAEH,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;oBACxD,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACrB,CAAC,CAAC,CAAC;gBAEJ,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAClC,MAAM,EAAE,KAAK,CAAC,sBAAsB,EAAE;wBACpC,MAAM,EAAE,MAAM,CAAC,EAAE;wBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe;qBAC/C,CAAC,CAAC;oBAEH,OAAO;wBACL,KAAK,EAAE,KAAK;wBACZ,OAAO,EAAE,iDAAiD;wBAC1D,OAAO,EAAE,EAAE;qBACZ,CAAC;gBACJ,CAAC;gBAED,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE;oBACnC,MAAM,EAAE,MAAM,CAAC,EAAE;oBACjB,YAAY,EAAE,gBAAgB,CAAC,MAAM;oBACrC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,KAAK;oBACpC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe;iBAC/C,CAAC,CAAC;gBAEH,OAAO;oBACL,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,gBAAgB,CAAC,MAAM;oBAC9B,OAAO,EAAE,gBAAgB;oBACzB,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAClD,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CACjE,CAAC,IAAI,CAAC,aAAa,CAAC;iBACtB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE;oBACjC,MAAM,EAAE,MAAM,CAAC,EAAE;oBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;oBAC/D,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe;iBAC/C,CAAC,CAAC;gBAEH,OAAO;oBACL,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;oBAC/D,OAAO,EAAE,EAAE;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,KAAa,EACb,SAAc,EACd,SAA2B,EAC3B,cAAmB,EACnB,MAAe;IAEf,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEhC,MAAM,EAAE,KAAK,CAAC,iCAAiC,EAAE;QAC/C,KAAK;QACL,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,GAAG;KACtC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,cAAc,EAAE,SAAS,CAAC,YAAY,EAAE;QACtD,SAAS,EAAE,eAAe;QAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC;QACnB,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,GAAG;KACtC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE;YACxD,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,GAAG;SACtC,CAAC,CAAC;QAEH,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,EAAE,KAAK,CAAC,sBAAsB,EAAE;gBACpC,KAAK;gBACL,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;aAC5C,CAAC,CAAC;YAEH,OAAO,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3D,OAAO,EAAE,WAAW,CAAC;gBACnB,SAAS,EAAE,eAAe;gBAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,YAAY,EAAE,CAAC;gBACf,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;gBAC3C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO;aAClC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;aACpC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhB,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE;YACnC,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;YAC1C,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;SAC5C,CAAC,CAAC;QAEH,OAAO,EAAE,SAAS,CAAC;YACjB,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;YAC1C,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,OAAO,CAAC,MAAM;SAC9B,CAAC,CAAC;QAEH,OAAO,EAAE,WAAW,CAAC;YACnB,SAAS,EAAE,eAAe;YAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,YAAY,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM;YAC1C,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,GAAG;YACrC,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;YAC3C,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,CAAC;QAElB,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CAAC,mBAAmB,EAAE;YACjC,KAAK;YACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;SAC5C,CAAC,CAAC;QAEH,OAAO,EAAE,WAAW,CAAC;YACnB,SAAS,EAAE,eAAe;YAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY;SAC5C,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,CAAC;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
2
|
+
/**
|
|
3
|
+
* Processa chunks de streaming
|
|
4
|
+
*/
|
|
5
|
+
export declare function processStreamChunks(stream: AsyncIterable<any>, logger?: Logger): AsyncIterable<{
|
|
6
|
+
text: string;
|
|
7
|
+
done: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Obtém lista de tools utilizadas (para traces)
|
|
11
|
+
*/
|
|
12
|
+
export declare function getUsedTools(tools?: Record<string, any>): string[];
|
|
13
|
+
//# sourceMappingURL=agent-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-utils.d.ts","sourceRoot":"","sources":["../../../src/core/helpers/agent-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAM9B;;GAEG;AACH,wBAAuB,mBAAmB,CACxC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAahD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE,CAGlE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processStreamChunks = processStreamChunks;
|
|
4
|
+
exports.getUsedTools = getUsedTools;
|
|
5
|
+
// ============================================================================
|
|
6
|
+
// UTILITY FUNCTIONS
|
|
7
|
+
// ============================================================================
|
|
8
|
+
/**
|
|
9
|
+
* Processa chunks de streaming
|
|
10
|
+
*/
|
|
11
|
+
async function* processStreamChunks(stream, logger) {
|
|
12
|
+
for await (const chunk of stream) {
|
|
13
|
+
if (chunk.type === 'content') {
|
|
14
|
+
yield { text: chunk.content || '', done: false };
|
|
15
|
+
}
|
|
16
|
+
else if (chunk.type === 'done') {
|
|
17
|
+
logger?.debug('Stream completed');
|
|
18
|
+
yield { text: '', done: true };
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
else if (chunk.type === 'error') {
|
|
22
|
+
logger?.error('Stream error', { error: chunk.error });
|
|
23
|
+
throw new Error(chunk.error || 'Streaming error');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Obtém lista de tools utilizadas (para traces)
|
|
29
|
+
*/
|
|
30
|
+
function getUsedTools(tools) {
|
|
31
|
+
if (!tools)
|
|
32
|
+
return [];
|
|
33
|
+
return Object.keys(tools);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=agent-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-utils.js","sourceRoot":"","sources":["../../../src/core/helpers/agent-utils.ts"],"names":[],"mappings":";;AASA,kDAgBC;AAKD,oCAGC;AA/BD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACI,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACxC,MAA0B,EAC1B,MAAe;IAEf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACnD,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACjC,MAAM,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC/B,MAAM;QACR,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,KAA2B;IACtD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Logger } from 'pino';
|
|
2
|
+
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
3
|
+
export interface LoggerConfig {
|
|
4
|
+
level?: LogLevel;
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
pretty?: boolean;
|
|
7
|
+
name?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Cria logger Pino configurado para o Runflow SDK
|
|
11
|
+
*
|
|
12
|
+
* Configuração por ordem de prioridade:
|
|
13
|
+
* 1. Parâmetros passados diretamente
|
|
14
|
+
* 2. Variáveis de ambiente (RUNFLOW_LOG_LEVEL, RUNFLOW_DEBUG)
|
|
15
|
+
* 3. Defaults (info em produção, debug em desenvolvimento)
|
|
16
|
+
*/
|
|
17
|
+
export declare function createLogger(config?: LoggerConfig): Logger;
|
|
18
|
+
/**
|
|
19
|
+
* Logger padrão do SDK (pode ser sobrescrito)
|
|
20
|
+
*/
|
|
21
|
+
export declare const defaultLogger: Logger;
|
|
22
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAMnD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,MAAM,CA4C9D;AAwCD;;GAEG;AACH,eAAO,MAAM,aAAa,QAAwC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.defaultLogger = void 0;
|
|
7
|
+
exports.createLogger = createLogger;
|
|
8
|
+
const pino_1 = __importDefault(require("pino"));
|
|
9
|
+
/**
|
|
10
|
+
* Cria logger Pino configurado para o Runflow SDK
|
|
11
|
+
*
|
|
12
|
+
* Configuração por ordem de prioridade:
|
|
13
|
+
* 1. Parâmetros passados diretamente
|
|
14
|
+
* 2. Variáveis de ambiente (RUNFLOW_LOG_LEVEL, RUNFLOW_DEBUG)
|
|
15
|
+
* 3. Defaults (info em produção, debug em desenvolvimento)
|
|
16
|
+
*/
|
|
17
|
+
function createLogger(config = {}) {
|
|
18
|
+
// Resolver nível de log
|
|
19
|
+
const level = resolveLogLevel(config);
|
|
20
|
+
// Verificar se está desabilitado
|
|
21
|
+
if (config.enabled === false) {
|
|
22
|
+
return createSilentLogger();
|
|
23
|
+
}
|
|
24
|
+
// Determinar se deve usar pretty print
|
|
25
|
+
const usePretty = config.pretty !== false && (process.env.NODE_ENV !== 'production' ||
|
|
26
|
+
process.env.RUNFLOW_LOG_PRETTY === 'true');
|
|
27
|
+
const pinoConfig = {
|
|
28
|
+
name: config.name || 'runflow-sdk',
|
|
29
|
+
level,
|
|
30
|
+
formatters: {
|
|
31
|
+
level: (label) => {
|
|
32
|
+
return { level: label };
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
timestamp: pino_1.default.stdTimeFunctions.isoTime,
|
|
36
|
+
};
|
|
37
|
+
// Pretty print para desenvolvimento
|
|
38
|
+
if (usePretty) {
|
|
39
|
+
return (0, pino_1.default)({
|
|
40
|
+
...pinoConfig,
|
|
41
|
+
transport: {
|
|
42
|
+
target: 'pino-pretty',
|
|
43
|
+
options: {
|
|
44
|
+
colorize: true,
|
|
45
|
+
translateTime: 'yyyy-mm-dd HH:MM:ss.l',
|
|
46
|
+
ignore: 'pid,hostname',
|
|
47
|
+
singleLine: false,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
// JSON logging para produção
|
|
53
|
+
return (0, pino_1.default)(pinoConfig);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve o nível de log por ordem de prioridade
|
|
57
|
+
*/
|
|
58
|
+
function resolveLogLevel(config) {
|
|
59
|
+
// 1. Config explícito
|
|
60
|
+
if (config.level) {
|
|
61
|
+
return config.level;
|
|
62
|
+
}
|
|
63
|
+
// 2. Variável de ambiente RUNFLOW_LOG_LEVEL
|
|
64
|
+
const envLevel = process.env.RUNFLOW_LOG_LEVEL?.toLowerCase();
|
|
65
|
+
if (envLevel && isValidLogLevel(envLevel)) {
|
|
66
|
+
return envLevel;
|
|
67
|
+
}
|
|
68
|
+
// 3. RUNFLOW_DEBUG=true -> debug level
|
|
69
|
+
if (process.env.RUNFLOW_DEBUG === 'true') {
|
|
70
|
+
return 'debug';
|
|
71
|
+
}
|
|
72
|
+
// 4. Default: info em produção, debug em desenvolvimento
|
|
73
|
+
return process.env.NODE_ENV === 'production' ? 'info' : 'debug';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Valida se string é um nível de log válido
|
|
77
|
+
*/
|
|
78
|
+
function isValidLogLevel(level) {
|
|
79
|
+
return ['trace', 'debug', 'info', 'warn', 'error', 'fatal'].includes(level);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Cria logger silencioso (quando desabilitado)
|
|
83
|
+
*/
|
|
84
|
+
function createSilentLogger() {
|
|
85
|
+
return (0, pino_1.default)({ level: 'silent' });
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Logger padrão do SDK (pode ser sobrescrito)
|
|
89
|
+
*/
|
|
90
|
+
exports.defaultLogger = createLogger({ name: 'runflow-sdk' });
|
|
91
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":";;;;;;AAuBA,oCA4CC;AAnED,gDAAmD;AAenD;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,SAAuB,EAAE;IACpD,wBAAwB;IACxB,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEtC,iCAAiC;IACjC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,kBAAkB,EAAE,CAAC;IAC9B,CAAC;IAED,uCAAuC;IACvC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,CAC3C,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;QACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,CAC1C,CAAC;IAEF,MAAM,UAAU,GAAkB;QAChC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,aAAa;QAClC,KAAK;QACL,UAAU,EAAE;YACV,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;SACF;QACD,SAAS,EAAE,cAAI,CAAC,gBAAgB,CAAC,OAAO;KACzC,CAAC;IAEF,oCAAoC;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAA,cAAI,EAAC;YACV,GAAG,UAAU;YACb,SAAS,EAAE;gBACT,MAAM,EAAE,aAAa;gBACrB,OAAO,EAAE;oBACP,QAAQ,EAAE,IAAI;oBACd,aAAa,EAAE,uBAAuB;oBACtC,MAAM,EAAE,cAAc;oBACtB,UAAU,EAAE,KAAK;iBAClB;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,6BAA6B;IAC7B,OAAO,IAAA,cAAI,EAAC,UAAU,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAoB;IAC3C,sBAAsB;IACtB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,4CAA4C;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,WAAW,EAAE,CAAC;IAC9D,IAAI,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,QAAoB,CAAC;IAC9B,CAAC;IAED,uCAAuC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,yDAAyD;IACzD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB;IACzB,OAAO,IAAA,cAAI,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACU,QAAA,aAAa,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface PerformanceMetrics {
|
|
2
|
+
operation: string;
|
|
3
|
+
durationMs: number;
|
|
4
|
+
timestamp: number;
|
|
5
|
+
metadata?: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Logger específico para métricas de performance
|
|
9
|
+
* Ativado via RUNFLOW_LOG_PERFORMANCE=true
|
|
10
|
+
*/
|
|
11
|
+
export declare class PerformanceLogger {
|
|
12
|
+
private logger;
|
|
13
|
+
private enabled;
|
|
14
|
+
private metrics;
|
|
15
|
+
constructor();
|
|
16
|
+
/**
|
|
17
|
+
* Marca o início de uma operação
|
|
18
|
+
*/
|
|
19
|
+
start(operationId: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Marca o fim de uma operação e loga o tempo
|
|
22
|
+
*/
|
|
23
|
+
end(operationId: string, metadata?: Record<string, any>): number;
|
|
24
|
+
/**
|
|
25
|
+
* Loga tempo de uma operação diretamente
|
|
26
|
+
*/
|
|
27
|
+
log(operation: string, durationMs: number, metadata?: Record<string, any>): void;
|
|
28
|
+
/**
|
|
29
|
+
* Mede tempo de uma função async
|
|
30
|
+
*/
|
|
31
|
+
measure<T>(operation: string, fn: () => Promise<T>, metadata?: Record<string, any>): Promise<T>;
|
|
32
|
+
/**
|
|
33
|
+
* Cria um resumo de performance com múltiplas métricas
|
|
34
|
+
*/
|
|
35
|
+
summary(operation: string, metrics: Record<string, number>, total: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Verifica se performance logging está ativado
|
|
38
|
+
*/
|
|
39
|
+
isEnabled(): boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Instância singleton do performance logger
|
|
43
|
+
*/
|
|
44
|
+
export declare const performanceLogger: PerformanceLogger;
|
|
45
|
+
//# sourceMappingURL=performance-logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-logger.d.ts","sourceRoot":"","sources":["../../src/core/performance-logger.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,OAAO,CAAkC;;IAsBjD;;OAEG;IACH,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKhC;;OAEG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAuBhE;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAWhF;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAmCb;;OAEG;IACH,OAAO,CACL,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,EAAE,MAAM,GACZ,IAAI;IAkBP;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.performanceLogger = exports.PerformanceLogger = void 0;
|
|
7
|
+
const pino_1 = __importDefault(require("pino"));
|
|
8
|
+
/**
|
|
9
|
+
* Logger específico para métricas de performance
|
|
10
|
+
* Ativado via RUNFLOW_LOG_PERFORMANCE=true
|
|
11
|
+
*/
|
|
12
|
+
class PerformanceLogger {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.logger = null;
|
|
15
|
+
this.enabled = false;
|
|
16
|
+
this.metrics = new Map();
|
|
17
|
+
// Ativar apenas se variável de ambiente estiver configurada
|
|
18
|
+
this.enabled = process.env.RUNFLOW_LOG_PERFORMANCE === 'true';
|
|
19
|
+
if (this.enabled) {
|
|
20
|
+
this.logger = (0, pino_1.default)({
|
|
21
|
+
name: 'runflow-performance',
|
|
22
|
+
level: 'info',
|
|
23
|
+
formatters: {
|
|
24
|
+
level: (label) => {
|
|
25
|
+
return { level: label };
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
timestamp: pino_1.default.stdTimeFunctions.isoTime,
|
|
29
|
+
});
|
|
30
|
+
this.logger.info('⏱️ Performance logging enabled');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Marca o início de uma operação
|
|
35
|
+
*/
|
|
36
|
+
start(operationId) {
|
|
37
|
+
if (!this.enabled)
|
|
38
|
+
return;
|
|
39
|
+
this.metrics.set(operationId, Date.now());
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Marca o fim de uma operação e loga o tempo
|
|
43
|
+
*/
|
|
44
|
+
end(operationId, metadata) {
|
|
45
|
+
if (!this.enabled)
|
|
46
|
+
return 0;
|
|
47
|
+
const startTime = this.metrics.get(operationId);
|
|
48
|
+
if (!startTime) {
|
|
49
|
+
this.logger?.warn(`⚠️ Operation '${operationId}' was not started`);
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
const durationMs = Date.now() - startTime;
|
|
53
|
+
this.metrics.delete(operationId);
|
|
54
|
+
// Log estruturado com timing
|
|
55
|
+
this.logger?.info({
|
|
56
|
+
type: 'performance',
|
|
57
|
+
operation: operationId,
|
|
58
|
+
durationMs,
|
|
59
|
+
...metadata,
|
|
60
|
+
}, `⏱️ ${operationId}: ${durationMs}ms`);
|
|
61
|
+
return durationMs;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Loga tempo de uma operação diretamente
|
|
65
|
+
*/
|
|
66
|
+
log(operation, durationMs, metadata) {
|
|
67
|
+
if (!this.enabled)
|
|
68
|
+
return;
|
|
69
|
+
this.logger?.info({
|
|
70
|
+
type: 'performance',
|
|
71
|
+
operation,
|
|
72
|
+
durationMs,
|
|
73
|
+
...metadata,
|
|
74
|
+
}, `⏱️ ${operation}: ${durationMs}ms`);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Mede tempo de uma função async
|
|
78
|
+
*/
|
|
79
|
+
async measure(operation, fn, metadata) {
|
|
80
|
+
if (!this.enabled) {
|
|
81
|
+
return fn();
|
|
82
|
+
}
|
|
83
|
+
const startTime = Date.now();
|
|
84
|
+
try {
|
|
85
|
+
const result = await fn();
|
|
86
|
+
const durationMs = Date.now() - startTime;
|
|
87
|
+
this.logger?.info({
|
|
88
|
+
type: 'performance',
|
|
89
|
+
operation,
|
|
90
|
+
durationMs,
|
|
91
|
+
success: true,
|
|
92
|
+
...metadata,
|
|
93
|
+
}, `⏱️ ${operation}: ${durationMs}ms`);
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
const durationMs = Date.now() - startTime;
|
|
98
|
+
this.logger?.error({
|
|
99
|
+
type: 'performance',
|
|
100
|
+
operation,
|
|
101
|
+
durationMs,
|
|
102
|
+
success: false,
|
|
103
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
104
|
+
...metadata,
|
|
105
|
+
}, `⏱️ ${operation}: ${durationMs}ms (failed)`);
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Cria um resumo de performance com múltiplas métricas
|
|
111
|
+
*/
|
|
112
|
+
summary(operation, metrics, total) {
|
|
113
|
+
if (!this.enabled)
|
|
114
|
+
return;
|
|
115
|
+
// Calcular porcentagens
|
|
116
|
+
const breakdown = Object.entries(metrics).map(([step, duration]) => ({
|
|
117
|
+
step,
|
|
118
|
+
durationMs: duration,
|
|
119
|
+
percentage: ((duration / total) * 100).toFixed(1) + '%',
|
|
120
|
+
}));
|
|
121
|
+
this.logger?.info({
|
|
122
|
+
type: 'performance-summary',
|
|
123
|
+
operation,
|
|
124
|
+
totalMs: total,
|
|
125
|
+
breakdown,
|
|
126
|
+
}, `⏱️ ${operation} Summary: ${total}ms`);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Verifica se performance logging está ativado
|
|
130
|
+
*/
|
|
131
|
+
isEnabled() {
|
|
132
|
+
return this.enabled;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
exports.PerformanceLogger = PerformanceLogger;
|
|
136
|
+
/**
|
|
137
|
+
* Instância singleton do performance logger
|
|
138
|
+
*/
|
|
139
|
+
exports.performanceLogger = new PerformanceLogger();
|
|
140
|
+
//# sourceMappingURL=performance-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-logger.js","sourceRoot":"","sources":["../../src/core/performance-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-collector.d.ts","sourceRoot":"","sources":["../../src/observability/trace-collector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAQlB,qBAAa,qBAAsB,YAAW,cAAc;IAC1D,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,OAAO,CAMR;gBAEK,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B;IAgB/F,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC,GAAG,MAAM;IA4BtF;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"trace-collector.d.ts","sourceRoot":"","sources":["../../src/observability/trace-collector.ts"],"names":[],"mappings":"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"}
|