Merge pull request #107 from laurentenhoor/feature/106-enhance-notification-urls

feat: enhance notification URLs with issue links and tool aliases
This commit is contained in:
Lauren ten Hoor
2026-02-10 20:33:30 +08:00
committed by GitHub
2 changed files with 17 additions and 6 deletions

View File

@@ -65,10 +65,10 @@ const plugin = {
register(api: OpenClawPluginApi) {
// Agent tools (primary interface — agent calls these directly)
api.registerTool(createTaskPickupTool(api), {
names: ["task_pickup"],
names: ["task_pickup", "work_start"],
});
api.registerTool(createTaskCompleteTool(api), {
names: ["task_complete"],
names: ["task_complete", "work_finish"],
});
api.registerTool(createTaskUpdateTool(api), {
names: ["task_update"],
@@ -77,7 +77,7 @@ const plugin = {
names: ["task_comment"],
});
api.registerTool(createQueueStatusTool(api), {
names: ["queue_status"],
names: ["queue_status", "status"],
});
api.registerTool(createSessionHealthTool(api), {
names: ["session_health"],

View File

@@ -138,6 +138,10 @@ export function createTaskCompleteTool(api: OpenClawPluginApi) {
output.gitPull = `warning: ${(err as Error).message}`;
}
// Fetch issue to get URL
const issue = await provider.getIssue(issueId);
const issueUrl = issue.web_url;
// Auto-detect PR/MR URL if not provided
if (!prUrl) {
try {
@@ -152,17 +156,19 @@ export function createTaskCompleteTool(api: OpenClawPluginApi) {
output.labelTransition = "Doing → To Test";
// Build announcement with PR URL if available
// Build announcement with URLs
let announcement = `✅ DEV done #${issueId}`;
if (summary) {
announcement += `${summary}`;
}
announcement += `\n📋 Issue: ${issueUrl}`;
if (prUrl) {
announcement += `\n🔗 PR: ${prUrl}`;
}
announcement += `. Moved to QA queue.`;
announcement += `\nMoved to QA queue.`;
output.announcement = announcement;
output.issueUrl = issueUrl;
if (prUrl) {
output.prUrl = prUrl;
}
@@ -215,13 +221,18 @@ export function createTaskCompleteTool(api: OpenClawPluginApi) {
// === QA PASS ===
if (role === "qa" && result === "pass") {
// Fetch issue to get URL
const issue = await provider.getIssue(issueId);
const issueUrl = issue.web_url;
await deactivateWorker(workspaceDir, groupId, "qa");
await provider.transitionLabel(issueId, "Testing", "Done");
await provider.closeIssue(issueId);
output.labelTransition = "Testing → Done";
output.issueClosed = true;
output.announcement = `🎉 QA PASS #${issueId}${summary ? `${summary}` : ""}. Issue closed.`;
output.issueUrl = issueUrl;
output.announcement = `🎉 QA PASS #${issueId}${summary ? `${summary}` : ""}\n📋 Issue: ${issueUrl}\nIssue closed.`;
}
// === QA FAIL ===