refactor instructions to return object with full/system/user/event/runtime properties, fix duplicate modes and json prompt extraction (#110)

This commit is contained in:
Colin McDonnell
2026-01-16 21:43:54 +00:00
committed by pullfrog[bot]
parent 410b11db71
commit cb925556e8
16 changed files with 1843 additions and 1952 deletions
+7 -45
View File
@@ -1,59 +1,21 @@
import type { ToolState } from "../mcp/server.ts";
import { createOctokit, parseRepoContext } from "./github.ts";
import { getGitHubInstallationToken } from "./token.ts";
import { fetchWorkflowRunInfo } from "./workflowRun.ts";
/**
* Get progress comment ID from environment variable or database.
*/
function getProgressCommentIdFromEnv(): number | null {
const envCommentId = process.env.PULLFROG_PROGRESS_COMMENT_ID;
if (envCommentId) {
const parsed = parseInt(envCommentId, 10);
if (!Number.isNaN(parsed)) {
return parsed;
}
}
return null;
}
export async function reportErrorToComment({
error,
title,
}: {
interface ReportErrorParams {
toolState: ToolState;
error: string;
title?: string;
}): Promise<void> {
const formattedError = title ? `${title}\n\n${error}` : error;
}
// try to get comment ID from env var first, then from database if needed
let commentId = getProgressCommentIdFromEnv();
export async function reportErrorToComment(ctx: ReportErrorParams): Promise<void> {
const formattedError = ctx.title ? `${ctx.title}\n\n${ctx.error}` : ctx.error;
// if not in env var, try fetching from database using run ID
if (!commentId) {
const runId = process.env.GITHUB_RUN_ID;
if (runId) {
try {
const workflowRunInfo = await fetchWorkflowRunInfo(runId);
if (workflowRunInfo.progressCommentId) {
const parsed = parseInt(workflowRunInfo.progressCommentId, 10);
if (!Number.isNaN(parsed)) {
commentId = parsed;
// cache it in env var for future use
process.env.PULLFROG_PROGRESS_COMMENT_ID = workflowRunInfo.progressCommentId;
}
}
} catch {
// database fetch failed, continue without comment ID
}
}
}
// if no comment ID available, can't update comment
const commentId = ctx.toolState.progressComment.id;
if (!commentId) {
return;
}
// update comment directly using GitHub API
const repoContext = parseRepoContext();
const octokit = createOctokit(getGitHubInstallationToken());