Update working comment on error or non responsive agent

This commit is contained in:
Shawn Morreau
2025-12-04 15:33:16 -05:00
3 changed files with 41 additions and 2 deletions
+12
View File
@@ -23,6 +23,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
@@ -53,23 +54,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");
await validateApiKey(ctx);
const result = await runAgent(ctx);
+8 -2
View File
@@ -245,9 +245,15 @@ export async function ensureProgressCommentUpdated(): Promise<void> {
// check if MCP context is initialized (MCP server started)
try {
const ctx = getMcpContext();
const errorMessage = `🐸 this run croaked
const repoContext = parseRepoContext();
const runId = process.env.GITHUB_RUN_ID;
const workflowRunLink = runId
? `[workflow](https://github.com/${repoContext.owner}/${repoContext.name}/actions/runs/${runId})`
: "workflow";
The workflow encountered an error before any progress could be reported. Please check the workflow run logs for details.`;
const errorMessage = `❌ this run croaked
The workflow encountered an error before any progress could be reported. Please check the ${workflowRunLink} for details.`;
const bodyWithFooter = addFooter(errorMessage, ctx.payload);
+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;
}
}