agentcrumbs
Version:
Debug mode for any agent.
44 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replay = replay;
const format_js_1 = require("../format.js");
const args_js_1 = require("../args.js");
const app_store_js_1 = require("../app-store.js");
async function replay(args) {
const sessionId = args[0];
const json = (0, args_js_1.hasFlag)(args, "--json");
const appCtx = (0, app_store_js_1.parseAppFlags)(args);
const showApp = appCtx.allApps;
if (!sessionId) {
process.stderr.write("Usage: agentcrumbs replay <session-id> [--app <name>] [--all-apps] [--json]\n");
process.exit(1);
}
const allCrumbs = (0, app_store_js_1.readAllCrumbs)(appCtx);
const sessionCrumbs = allCrumbs.filter((c) => c.sid === sessionId);
if (sessionCrumbs.length === 0) {
process.stderr.write(`No crumbs found for session: ${sessionId}\n`);
process.exit(1);
}
// Sort by timestamp
sessionCrumbs.sort((a, b) => new Date(a.ts).getTime() - new Date(b.ts).getTime());
const first = sessionCrumbs[0];
const last = sessionCrumbs[sessionCrumbs.length - 1];
const duration = new Date(last.ts).getTime() - new Date(first.ts).getTime();
process.stderr.write(`Replaying session ${sessionId} (${sessionCrumbs.length} crumbs, ${formatDuration(duration)})\n\n`);
for (const crumb of sessionCrumbs) {
if (json) {
process.stdout.write((0, format_js_1.formatCrumbJson)(crumb) + "\n");
}
else {
process.stdout.write((0, format_js_1.formatCrumbPretty)(crumb, { showApp }) + "\n");
}
}
}
function formatDuration(ms) {
if (ms < 1000)
return `${ms}ms`;
if (ms < 60000)
return `${(ms / 1000).toFixed(1)}s`;
return `${(ms / 60000).toFixed(1)}m`;
}
//# sourceMappingURL=replay.js.map