Add timer

This commit is contained in:
Colin McDonnell
2025-12-04 10:56:45 -08:00
parent 6e337407a7
commit 22418b3714
2 changed files with 33 additions and 0 deletions
+12
View File
@@ -21,6 +21,7 @@ import {
setupGitHubInstallationToken,
} from "./utils/github.ts";
import { setupGitAuth, setupGitBranch, setupGitConfig } from "./utils/setup.ts";
import { Timer } from "./utils/timer.ts";
// runtime validation using agents (needed for ArkType)
// Note: The AgentName type is defined in external.ts, this is the runtime validator
@@ -51,23 +52,34 @@ export async function main(inputs: Inputs): Promise<MainResult> {
let mcpServerClose: (() => Promise<void>) | undefined;
try {
const timer = new Timer();
// parse payload early to extract agent
const payload = parsePayload(inputs);
const partialCtx = await initializeContext(inputs, payload);
const ctx = partialCtx as MainContext;
timer.checkpoint("initializeContext");
setupGitAuth({
githubInstallationToken: ctx.githubInstallationToken,
repoContext: ctx.repoContext,
});
await setupTempDirectory(ctx);
timer.checkpoint("setupTempDirectory");
setupGitBranch(ctx.payload);
await startMcpServer(ctx);
mcpServerClose = ctx.mcpServerClose;
timer.checkpoint("startMcpServer");
setupMcpServers(ctx);
await installAgentCli(ctx);
timer.checkpoint("installAgentCli");
validateApiKey(ctx);
const result = await runAgent(ctx);
+21
View File
@@ -0,0 +1,21 @@
import { log } from "./cli.ts";
export class Timer {
private initialTimestamp: number;
private lastCheckpointTimestamp: number | null = null;
constructor() {
this.initialTimestamp = Date.now();
}
checkpoint(name: string): void {
const now = Date.now();
const duration = this.lastCheckpointTimestamp
? now - this.lastCheckpointTimestamp
: now - this.initialTimestamp;
log.info(`${name}: ${duration}ms`);
this.lastCheckpointTimestamp = now;
}
}