From 94363f9ae03684edaaac702b5e66566cbd428c72 Mon Sep 17 00:00:00 2001 From: Lauren ten Hoor Date: Tue, 10 Feb 2026 23:17:45 +0800 Subject: [PATCH] feat: include issue URL in workerComplete notifications for better tracking --- lib/notify.ts | 2 ++ lib/tools/work-finish.ts | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/notify.ts b/lib/notify.ts index 447e0df..5fc6be2 100644 --- a/lib/notify.ts +++ b/lib/notify.ts @@ -42,6 +42,7 @@ export type NotifyEvent = project: string; groupId: string; issueId: number; + issueUrl: string; role: "dev" | "qa"; result: "done" | "pass" | "fail" | "refine" | "blocked"; summary?: string; @@ -95,6 +96,7 @@ function buildMessage(event: NotifyEvent): string { if (event.nextState) { msg += ` → ${event.nextState}`; } + msg += `\nšŸ”— ${event.issueUrl}`; return msg; } diff --git a/lib/tools/work-finish.ts b/lib/tools/work-finish.ts index d48f9e0..ecab469 100644 --- a/lib/tools/work-finish.ts +++ b/lib/tools/work-finish.ts @@ -56,6 +56,7 @@ export function createWorkFinishTool(api: OpenClawPluginApi) { const { provider } = resolveProvider(project); const repoPath = resolveRepoPath(project.repo); + const issue = await provider.getIssue(issueId); // Execute completion (pipeline service) const completion = await executeCompletion({ @@ -71,7 +72,7 @@ export function createWorkFinishTool(api: OpenClawPluginApi) { const pluginConfig = getPluginConfig(api); const notifyConfig = getNotificationConfig(pluginConfig); await notify( - { type: "workerComplete", project: project.name, groupId, issueId, role, result: result as "done" | "pass" | "fail" | "refine" | "blocked", summary, nextState: NEXT_STATE[`${role}:${result}`] }, + { type: "workerComplete", project: project.name, groupId, issueId, issueUrl: issue.web_url, role, result: result as "done" | "pass" | "fail" | "refine" | "blocked", summary, nextState: NEXT_STATE[`${role}:${result}`] }, { workspaceDir, config: notifyConfig, groupId, channel: project.channel ?? "telegram" }, );