feat(reports): record personal report generation telemetry
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import assert from "node:assert/strict";
|
||||
import test from "node:test";
|
||||
import { Agent } from "@mastra/core/agent";
|
||||
import { createPersonalReportAgent } from "../src/mastra/personal-report.ts";
|
||||
|
||||
const model = {
|
||||
specificationVersion: "v2",
|
||||
provider: "telemetry-test",
|
||||
modelId: "telemetry-test",
|
||||
} as never;
|
||||
|
||||
function testModel() {
|
||||
return {
|
||||
id: "telemetry-test",
|
||||
label: "Telemetry test",
|
||||
description: "Telemetry test",
|
||||
creditCost: 0,
|
||||
isDefault: false,
|
||||
mode: "openai" as const,
|
||||
model,
|
||||
};
|
||||
}
|
||||
|
||||
test("personal report telemetry records each truncated attempt without private payloads", async () => {
|
||||
const originalGenerate = Agent.prototype.generate;
|
||||
const originalInfo = console.info;
|
||||
const logs: unknown[][] = [];
|
||||
let calls = 0;
|
||||
Agent.prototype.generate = (async function () {
|
||||
calls += 1;
|
||||
return {
|
||||
object: {},
|
||||
usage: Promise.resolve({ inputTokens: 11, outputTokens: 3, totalTokens: 14 }),
|
||||
finishReason: Promise.resolve("length"),
|
||||
};
|
||||
}) as never;
|
||||
console.info = (...args: unknown[]) => logs.push(args);
|
||||
|
||||
try {
|
||||
const agent = createPersonalReportAgent(testModel());
|
||||
await assert.rejects(agent.generate({} as never, {} as never));
|
||||
} finally {
|
||||
Agent.prototype.generate = originalGenerate;
|
||||
console.info = originalInfo;
|
||||
}
|
||||
|
||||
assert.equal(calls, 2);
|
||||
const telemetry = logs
|
||||
.filter(([label]) => label === "[personal-report-agent]")
|
||||
.map(([, payload]) => JSON.parse(String(payload)) as Record<string, unknown>);
|
||||
assert.equal(telemetry.length, 2);
|
||||
assert.deepEqual(telemetry.map((entry) => entry.finishReason), ["length", "length"]);
|
||||
assert.deepEqual(telemetry.map((entry) => entry.repairAttempted), [false, true]);
|
||||
assert.deepEqual(telemetry.map((entry) => entry.outputTokens), [3, 3]);
|
||||
assert.equal("prompt" in telemetry[0], false);
|
||||
assert.equal("bundle" in telemetry[0], false);
|
||||
assert.equal("report" in telemetry[0], false);
|
||||
});
|
||||
Reference in New Issue
Block a user