@runflow-ai/cli 0.2.30 → 0.2.32
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/CLI-DOCS.md +64 -0
- package/dist/commands/agents/agents.command.d.ts +1 -0
- package/dist/commands/agents/agents.command.js +26 -0
- package/dist/commands/agents/agents.command.js.map +1 -1
- package/dist/commands/agents/types.d.ts +1 -0
- package/dist/commands/agents/types.js.map +1 -1
- package/dist/commands/metrics/metrics.command.d.ts +12 -0
- package/dist/commands/metrics/metrics.command.js +218 -0
- package/dist/commands/metrics/metrics.command.js.map +1 -0
- package/dist/commands/test/test.command.js +10 -3
- package/dist/commands/test/test.command.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/static/dist-test/assets/main-BLhXgRj0.js +59 -0
- package/static/dist-test/assets/main-CihNdCv9.css +1 -0
- package/static/dist-test/index-test.html +2 -2
package/CLI-DOCS.md
CHANGED
|
@@ -42,6 +42,7 @@ rf agent <action> [data] # alias
|
|
|
42
42
|
| `clone` | Clona repositório do agente (download) | `rf agents clone` |
|
|
43
43
|
| `duplicate` | Duplica agente no servidor | `rf agents duplicate` |
|
|
44
44
|
| `deploy` | Faz deploy do agente com mudanças locais | `rf agents deploy` |
|
|
45
|
+
| `deploy --metrics` | Deploy + sincroniza cards do metrics.json | `rf agents deploy --metrics` |
|
|
45
46
|
|
|
46
47
|
**Exemplo de uso:**
|
|
47
48
|
```bash
|
|
@@ -292,6 +293,69 @@ rf credentials list
|
|
|
292
293
|
|
|
293
294
|
---
|
|
294
295
|
|
|
296
|
+
## 📊 Metrics (Dashboard de Métricas)
|
|
297
|
+
|
|
298
|
+
Provisiona cards de dashboard de métricas a partir de um arquivo `metrics.json` na raiz do agente.
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
rf metrics sync
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
**Pré-requisitos:**
|
|
305
|
+
- Estar no diretório do agente (com `.runflow/rf.json`)
|
|
306
|
+
- Arquivo `metrics.json` na raiz do projeto
|
|
307
|
+
- Autenticado (`rf login`)
|
|
308
|
+
|
|
309
|
+
**Formato do `metrics.json`:**
|
|
310
|
+
|
|
311
|
+
```json
|
|
312
|
+
{
|
|
313
|
+
"cards": [
|
|
314
|
+
{
|
|
315
|
+
"title": "Total de Alertas",
|
|
316
|
+
"cardType": "number",
|
|
317
|
+
"config": {
|
|
318
|
+
"eventName": "alert_received",
|
|
319
|
+
"aggregation": "count",
|
|
320
|
+
"color": "#3B82F6"
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
"title": "Alertas por Severidade",
|
|
325
|
+
"cardType": "bar",
|
|
326
|
+
"config": {
|
|
327
|
+
"eventName": "alert_received",
|
|
328
|
+
"aggregation": "group_by",
|
|
329
|
+
"propertyKey": "severity",
|
|
330
|
+
"dateGrouping": "day"
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
]
|
|
334
|
+
}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
**Tipos de card (`cardType`):** `number`, `rate`, `line`, `bar`, `pie`
|
|
338
|
+
|
|
339
|
+
**Tipos de agregação (`aggregation`):** `count`, `rate`, `sum`, `avg`, `distinct_count`, `group_by`
|
|
340
|
+
|
|
341
|
+
**Comportamento:**
|
|
342
|
+
- **Idempotente**: identificado por `(agentId, eventName)` — não duplica em chamadas repetidas
|
|
343
|
+
- Card existente com mesmo `eventName` é atualizado (título, tipo, config)
|
|
344
|
+
|
|
345
|
+
**Deploy com sync:**
|
|
346
|
+
```bash
|
|
347
|
+
rf agents deploy --metrics
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**Emitindo eventos no agente (SDK):**
|
|
351
|
+
```typescript
|
|
352
|
+
import { track } from '@runflow-ai/sdk';
|
|
353
|
+
|
|
354
|
+
track('alert_received', { severity: 'High', company: 'ACME' });
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
295
359
|
## 🧪 Test (Local Testing)
|
|
296
360
|
|
|
297
361
|
Inicia servidor local de observabilidade com interface web para testar agentes.
|
|
@@ -22,6 +22,7 @@ const logger_1 = require("../../common/logger");
|
|
|
22
22
|
const api_client_1 = require("../../common/api-client");
|
|
23
23
|
const file_service_1 = require("./file.service");
|
|
24
24
|
const agents_service_1 = require("./agents.service");
|
|
25
|
+
const metrics_command_1 = require("../metrics/metrics.command");
|
|
25
26
|
let AgentsCommand = class AgentsCommand extends nest_commander_1.CommandRunner {
|
|
26
27
|
async executeAction(action, agent, apiClient, options) {
|
|
27
28
|
const agentId = agent.id;
|
|
@@ -258,6 +259,19 @@ let AgentsCommand = class AgentsCommand extends nest_commander_1.CommandRunner {
|
|
|
258
259
|
return;
|
|
259
260
|
}
|
|
260
261
|
await agents_service_1.AgentsService.performDeploy(detectedAgent.agentId, apiClient, data, detectedAgent.agentName);
|
|
262
|
+
if (options.metrics) {
|
|
263
|
+
const { synced, updated, failed } = await (0, metrics_command_1.runMetricsSync)(detectedAgent.agentId, apiClient, detectedAgent.agentName || undefined);
|
|
264
|
+
const total = synced + updated + failed;
|
|
265
|
+
if (total > 0) {
|
|
266
|
+
console.log(chalk_1.default.cyan.bold('\n📋 Metrics Sync Summary:'));
|
|
267
|
+
if (synced > 0)
|
|
268
|
+
console.log(chalk_1.default.green(` ✅ ${synced} card(s) created`));
|
|
269
|
+
if (updated > 0)
|
|
270
|
+
console.log(chalk_1.default.blue(` 🔄 ${updated} card(s) updated`));
|
|
271
|
+
if (failed > 0)
|
|
272
|
+
console.log(chalk_1.default.red(` ❌ ${failed} card(s) failed`));
|
|
273
|
+
}
|
|
274
|
+
}
|
|
261
275
|
break;
|
|
262
276
|
}
|
|
263
277
|
}
|
|
@@ -283,6 +297,9 @@ let AgentsCommand = class AgentsCommand extends nest_commander_1.CommandRunner {
|
|
|
283
297
|
parseYes() {
|
|
284
298
|
return true;
|
|
285
299
|
}
|
|
300
|
+
parseMetrics() {
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
286
303
|
};
|
|
287
304
|
exports.AgentsCommand = AgentsCommand;
|
|
288
305
|
__decorate([
|
|
@@ -312,6 +329,15 @@ __decorate([
|
|
|
312
329
|
__metadata("design:paramtypes", []),
|
|
313
330
|
__metadata("design:returntype", Boolean)
|
|
314
331
|
], AgentsCommand.prototype, "parseYes", null);
|
|
332
|
+
__decorate([
|
|
333
|
+
(0, nest_commander_1.Option)({
|
|
334
|
+
flags: '--metrics',
|
|
335
|
+
description: 'Sync metrics.json dashboard cards after deploy',
|
|
336
|
+
}),
|
|
337
|
+
__metadata("design:type", Function),
|
|
338
|
+
__metadata("design:paramtypes", []),
|
|
339
|
+
__metadata("design:returntype", Boolean)
|
|
340
|
+
], AgentsCommand.prototype, "parseMetrics", null);
|
|
315
341
|
exports.AgentsCommand = AgentsCommand = __decorate([
|
|
316
342
|
(0, nest_commander_1.Command)({
|
|
317
343
|
name: 'agents',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.command.js","sourceRoot":"","sources":["../../../src/commands/agents/agents.command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents.command.js","sourceRoot":"","sources":["../../../src/commands/agents/agents.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/agents/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/agents/types.ts"],"names":[],"mappings":";;;AAkCa,QAAA,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC;AAC3B,QAAA,WAAW,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC3D,QAAA,YAAY,GAAG,CAAC,WAAW,CAAC,CAAC;AAC7B,QAAA,eAAe,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CommandRunner } from 'nest-commander';
|
|
2
|
+
export declare function runMetricsSync(agentId: string, apiClient: any, agentName?: string): Promise<{
|
|
3
|
+
synced: number;
|
|
4
|
+
updated: number;
|
|
5
|
+
failed: number;
|
|
6
|
+
}>;
|
|
7
|
+
export declare class MetricsSyncCommand extends CommandRunner {
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare class MetricsCommand extends CommandRunner {
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
exports.MetricsCommand = exports.MetricsSyncCommand = void 0;
|
|
46
|
+
exports.runMetricsSync = runMetricsSync;
|
|
47
|
+
const nest_commander_1 = require("nest-commander");
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
51
|
+
const api_client_1 = require("../../common/api-client");
|
|
52
|
+
const file_service_1 = require("../agents/file.service");
|
|
53
|
+
const logger_1 = require("../../common/logger");
|
|
54
|
+
const VALID_CARD_TYPES = ['number', 'rate', 'line', 'bar', 'pie'];
|
|
55
|
+
const VALID_AGGREGATIONS = ['count', 'rate', 'sum', 'avg', 'distinct_count', 'group_by'];
|
|
56
|
+
const VALID_DATE_GROUPINGS = ['hour', 'day', 'week', 'month'];
|
|
57
|
+
function validateMetricsJson(data) {
|
|
58
|
+
const errors = [];
|
|
59
|
+
if (!data || typeof data !== 'object') {
|
|
60
|
+
return { valid: false, errors: ['metrics.json must be a JSON object'] };
|
|
61
|
+
}
|
|
62
|
+
if (!Array.isArray(data.cards)) {
|
|
63
|
+
return { valid: false, errors: ['metrics.json must have a "cards" array'] };
|
|
64
|
+
}
|
|
65
|
+
if (data.cards.length === 0) {
|
|
66
|
+
return { valid: false, errors: ['metrics.json "cards" array is empty'] };
|
|
67
|
+
}
|
|
68
|
+
data.cards.forEach((card, index) => {
|
|
69
|
+
const prefix = `cards[${index}]`;
|
|
70
|
+
if (!card.title || typeof card.title !== 'string') {
|
|
71
|
+
errors.push(`${prefix}.title is required and must be a string`);
|
|
72
|
+
}
|
|
73
|
+
if (!card.cardType || !VALID_CARD_TYPES.includes(card.cardType)) {
|
|
74
|
+
errors.push(`${prefix}.cardType must be one of: ${VALID_CARD_TYPES.join(', ')}`);
|
|
75
|
+
}
|
|
76
|
+
if (!card.config || typeof card.config !== 'object') {
|
|
77
|
+
errors.push(`${prefix}.config is required`);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (!card.config.eventName || typeof card.config.eventName !== 'string') {
|
|
81
|
+
errors.push(`${prefix}.config.eventName is required and must be a string`);
|
|
82
|
+
}
|
|
83
|
+
if (!card.config.aggregation ||
|
|
84
|
+
!VALID_AGGREGATIONS.includes(card.config.aggregation)) {
|
|
85
|
+
errors.push(`${prefix}.config.aggregation must be one of: ${VALID_AGGREGATIONS.join(', ')}`);
|
|
86
|
+
}
|
|
87
|
+
if (card.config.dateGrouping &&
|
|
88
|
+
!VALID_DATE_GROUPINGS.includes(card.config.dateGrouping)) {
|
|
89
|
+
errors.push(`${prefix}.config.dateGrouping must be one of: ${VALID_DATE_GROUPINGS.join(', ')}`);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return { valid: errors.length === 0, errors };
|
|
93
|
+
}
|
|
94
|
+
async function runMetricsSync(agentId, apiClient, agentName) {
|
|
95
|
+
const metricsPath = path.join(process.cwd(), 'metrics.json');
|
|
96
|
+
if (!fs.existsSync(metricsPath)) {
|
|
97
|
+
console.log(chalk_1.default.yellow('\n⚠ metrics.json not found in current directory.'));
|
|
98
|
+
console.log(chalk_1.default.gray(' Create a metrics.json file to define dashboard cards.'));
|
|
99
|
+
console.log(chalk_1.default.gray(' Example:'));
|
|
100
|
+
console.log(chalk_1.default.gray(`
|
|
101
|
+
{
|
|
102
|
+
"cards": [
|
|
103
|
+
{
|
|
104
|
+
"title": "Total Events",
|
|
105
|
+
"cardType": "number",
|
|
106
|
+
"config": {
|
|
107
|
+
"eventName": "my_event",
|
|
108
|
+
"aggregation": "count"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
`));
|
|
114
|
+
return { synced: 0, updated: 0, failed: 0 };
|
|
115
|
+
}
|
|
116
|
+
let metricsJson;
|
|
117
|
+
try {
|
|
118
|
+
const raw = fs.readFileSync(metricsPath, 'utf8');
|
|
119
|
+
metricsJson = JSON.parse(raw);
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
(0, logger_1.logError)(`❌ Failed to parse metrics.json: ${err.message}`);
|
|
123
|
+
return { synced: 0, updated: 0, failed: 0 };
|
|
124
|
+
}
|
|
125
|
+
const { valid, errors } = validateMetricsJson(metricsJson);
|
|
126
|
+
if (!valid) {
|
|
127
|
+
console.error(chalk_1.default.red('\n❌ metrics.json validation failed:'));
|
|
128
|
+
errors.forEach((e) => console.error(chalk_1.default.red(` • ${e}`)));
|
|
129
|
+
return { synced: 0, updated: 0, failed: 0 };
|
|
130
|
+
}
|
|
131
|
+
const label = agentName ? `${agentName} (${agentId})` : agentId;
|
|
132
|
+
console.log(chalk_1.default.cyan.bold(`\n📊 Syncing metrics cards for ${label}...`));
|
|
133
|
+
console.log(chalk_1.default.gray(` Found ${metricsJson.cards.length} card(s) in metrics.json`));
|
|
134
|
+
let synced = 0;
|
|
135
|
+
let updated = 0;
|
|
136
|
+
let failed = 0;
|
|
137
|
+
for (const card of metricsJson.cards) {
|
|
138
|
+
try {
|
|
139
|
+
const res = await apiClient.post('/observability/dashboard-cards', {
|
|
140
|
+
agentId,
|
|
141
|
+
title: card.title,
|
|
142
|
+
cardType: card.cardType,
|
|
143
|
+
config: card.config,
|
|
144
|
+
sortOrder: card.sortOrder,
|
|
145
|
+
});
|
|
146
|
+
if (res.data?.created) {
|
|
147
|
+
synced++;
|
|
148
|
+
console.log(chalk_1.default.green(` ✅ Created: "${card.title}" (${card.config.eventName})`));
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
updated++;
|
|
152
|
+
console.log(chalk_1.default.blue(` 🔄 Updated: "${card.title}" (${card.config.eventName})`));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
failed++;
|
|
157
|
+
const detail = err.response?.data?.message || err.message || 'Unknown error';
|
|
158
|
+
console.error(chalk_1.default.red(` ❌ Failed: "${card.title}" — ${detail}`));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return { synced, updated, failed };
|
|
162
|
+
}
|
|
163
|
+
let MetricsSyncCommand = class MetricsSyncCommand extends nest_commander_1.CommandRunner {
|
|
164
|
+
async run() {
|
|
165
|
+
const detectedAgent = await file_service_1.FileService.detectAgentFromCurrentDirectory();
|
|
166
|
+
if (!detectedAgent) {
|
|
167
|
+
(0, logger_1.logError)('❌ No agent detected. Run this command inside a cloned agent directory with .runflow/rf.json.');
|
|
168
|
+
(0, logger_1.logError)('💡 Use "rf agents clone <id>" to download an agent first.');
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const apiClient = (0, api_client_1.createApiClient)();
|
|
172
|
+
const { synced, updated, failed } = await runMetricsSync(detectedAgent.agentId, apiClient, detectedAgent.agentName || undefined);
|
|
173
|
+
const total = synced + updated + failed;
|
|
174
|
+
if (total === 0)
|
|
175
|
+
return;
|
|
176
|
+
console.log(chalk_1.default.cyan.bold('\n📋 Metrics Sync Summary:'));
|
|
177
|
+
if (synced > 0)
|
|
178
|
+
console.log(chalk_1.default.green(` ✅ ${synced} card(s) created`));
|
|
179
|
+
if (updated > 0)
|
|
180
|
+
console.log(chalk_1.default.blue(` 🔄 ${updated} card(s) updated`));
|
|
181
|
+
if (failed > 0)
|
|
182
|
+
console.log(chalk_1.default.red(` ❌ ${failed} card(s) failed`));
|
|
183
|
+
if (failed === 0) {
|
|
184
|
+
console.log(chalk_1.default.green.bold(`\n✓ ${synced + updated} card(s) synced successfully!`));
|
|
185
|
+
console.log(chalk_1.default.gray(' View your dashboard at the Runflow portal → Agent → Metrics'));
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
console.log(chalk_1.default.yellow(`\n⚠ Completed with ${failed} error(s). Check the output above.`));
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
exports.MetricsSyncCommand = MetricsSyncCommand;
|
|
193
|
+
exports.MetricsSyncCommand = MetricsSyncCommand = __decorate([
|
|
194
|
+
(0, nest_commander_1.SubCommand)({
|
|
195
|
+
name: 'sync',
|
|
196
|
+
description: '📊 Sync metrics.json dashboard cards to the Runflow platform',
|
|
197
|
+
})
|
|
198
|
+
], MetricsSyncCommand);
|
|
199
|
+
let MetricsCommand = class MetricsCommand extends nest_commander_1.CommandRunner {
|
|
200
|
+
async run() {
|
|
201
|
+
console.log(chalk_1.default.cyan.bold('\n📊 Runflow Metrics\n'));
|
|
202
|
+
console.log(chalk_1.default.white('Available commands:'));
|
|
203
|
+
console.log(chalk_1.default.gray(' rf metrics sync'), chalk_1.default.white(' Sync metrics.json cards to the platform'));
|
|
204
|
+
console.log('\nUsage:');
|
|
205
|
+
console.log(chalk_1.default.gray(' 1. Create a'), chalk_1.default.white('metrics.json'), chalk_1.default.gray('in your agent directory'));
|
|
206
|
+
console.log(chalk_1.default.gray(' 2. Run'), chalk_1.default.white('rf metrics sync'), chalk_1.default.gray('to provision dashboard cards'));
|
|
207
|
+
console.log(chalk_1.default.gray(' 3. Use'), chalk_1.default.white('track()'), chalk_1.default.gray('from the SDK to emit events\n'));
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
exports.MetricsCommand = MetricsCommand;
|
|
211
|
+
exports.MetricsCommand = MetricsCommand = __decorate([
|
|
212
|
+
(0, nest_commander_1.Command)({
|
|
213
|
+
name: 'metrics',
|
|
214
|
+
description: '📊 Manage agent metrics dashboard cards',
|
|
215
|
+
subCommands: [MetricsSyncCommand],
|
|
216
|
+
})
|
|
217
|
+
], MetricsCommand);
|
|
218
|
+
//# sourceMappingURL=metrics.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metrics.command.js","sourceRoot":"","sources":["../../../src/commands/metrics/metrics.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -153,6 +153,9 @@ let TestCommand = class TestCommand extends nest_commander_1.CommandRunner {
|
|
|
153
153
|
if (!config.apiUrl) {
|
|
154
154
|
config.apiUrl = (0, config_1.getApiUrl)(profile);
|
|
155
155
|
}
|
|
156
|
+
if (!config.tenantId && profile.tenantId) {
|
|
157
|
+
config.tenantId = profile.tenantId;
|
|
158
|
+
}
|
|
156
159
|
}
|
|
157
160
|
}
|
|
158
161
|
return config;
|
|
@@ -332,9 +335,13 @@ let TestCommand = class TestCommand extends nest_commander_1.CommandRunner {
|
|
|
332
335
|
console.log(chalk_1.default.gray(' Result type:', typeof result));
|
|
333
336
|
console.log(chalk_1.default.gray(' Result keys:', Object.keys(result || {}).join(', ')));
|
|
334
337
|
const message = result?.message ||
|
|
338
|
+
result?.response ||
|
|
335
339
|
result?.output ||
|
|
336
340
|
result?.text ||
|
|
337
|
-
|
|
341
|
+
result?.content ||
|
|
342
|
+
(result?.data ? JSON.stringify(result.data, null, 2) : null) ||
|
|
343
|
+
(typeof result === 'string' ? result : null) ||
|
|
344
|
+
(typeof result === 'object' ? JSON.stringify(result, null, 2) : null);
|
|
338
345
|
if (!message) {
|
|
339
346
|
console.log(chalk_1.default.yellow(' ⚠️ No message found in result, using fallback'));
|
|
340
347
|
}
|
|
@@ -820,8 +827,8 @@ let TestCommand = class TestCommand extends nest_commander_1.CommandRunner {
|
|
|
820
827
|
const tracesWithChildren = this.buildTraceHierarchy(traces);
|
|
821
828
|
const executionData = {
|
|
822
829
|
executionId: exec.executionId,
|
|
823
|
-
inputMessage: agentTrace?.input?.message || 'N/A',
|
|
824
|
-
outputMessage: agentTrace?.output?.message || 'N/A',
|
|
830
|
+
inputMessage: agentTrace?.input?.message || agentTrace?.input?.action || (typeof agentTrace?.input === 'string' ? agentTrace.input : null) || (agentTrace?.input ? JSON.stringify(agentTrace.input) : 'N/A'),
|
|
831
|
+
outputMessage: agentTrace?.output?.message || agentTrace?.output?.response || agentTrace?.output?.text || (agentTrace?.output?.data ? JSON.stringify(agentTrace.output.data) : null) || (typeof agentTrace?.output === 'string' ? agentTrace.output : null) || (agentTrace?.output ? JSON.stringify(agentTrace.output) : 'N/A'),
|
|
825
832
|
status: exec.status || 'success',
|
|
826
833
|
totalDurationMs: traces.reduce((sum, t) => sum + (t.duration || 0), 0),
|
|
827
834
|
totalTokens: traces.reduce((sum, t) => sum + (t.metadata?.totalTokens || 0), 0),
|