From a4885701c243421741ef5fda674d18a82bfd9e47 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Mar 2026 03:52:43 +0000
Subject: [PATCH 1/7] Initial plan
From b4fbbca801d47f0d06fb8fabc6138a673ca47a4e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Mar 2026 04:09:17 +0000
Subject: [PATCH 2/7] Add history link to generated footer for issues, PRs, and
discussions
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
---
actions/setup/js/create_discussion.cjs | 12 +-
actions/setup/js/create_issue.cjs | 15 +-
actions/setup/js/create_pull_request.cjs | 10 +-
actions/setup/js/generate_history_link.cjs | 105 ++++
.../setup/js/generate_history_link.test.cjs | 473 ++++++++++++++++++
actions/setup/js/messages.test.cjs | 37 ++
actions/setup/js/messages_footer.cjs | 9 +-
7 files changed, 657 insertions(+), 4 deletions(-)
create mode 100644 actions/setup/js/generate_history_link.cjs
create mode 100644 actions/setup/js/generate_history_link.test.cjs
diff --git a/actions/setup/js/create_discussion.cjs b/actions/setup/js/create_discussion.cjs
index ac79920d89..0930d501d7 100644
--- a/actions/setup/js/create_discussion.cjs
+++ b/actions/setup/js/create_discussion.cjs
@@ -22,6 +22,7 @@ const { tryEnforceArrayLimit } = require("./limit_enforcement_helpers.cjs");
const { logStagedPreviewInfo } = require("./staged_preview.cjs");
const { parseBoolTemplatable } = require("./templatable.cjs");
const { buildWorkflowRunUrl } = require("./workflow_metadata_helpers.cjs");
+const { generateHistoryLink } = require("./generate_history_link.cjs");
/**
* Maximum limits for discussion parameters to prevent resource exhaustion.
@@ -520,8 +521,17 @@ async function main(config = {}) {
// Generate footer with expiration using helper
// When footer is disabled, only add XML markers (no visible footer content)
if (includeFooter) {
+ const historyLink = generateHistoryLink({
+ owner: repoParts.owner,
+ repo: repoParts.repo,
+ itemType: "discussion",
+ workflowCallId: callerWorkflowId,
+ workflowId,
+ serverUrl: context.serverUrl,
+ });
+ const footerText = historyLink ? `> AI generated by [${workflowName}](${runUrl}) · ${historyLink}` : `> AI generated by [${workflowName}](${runUrl})`;
const footer = generateFooterWithExpiration({
- footerText: `> AI generated by [${workflowName}](${runUrl})`,
+ footerText,
expiresHours,
entityType: "Discussion",
});
diff --git a/actions/setup/js/create_issue.cjs b/actions/setup/js/create_issue.cjs
index ab7d5d9959..ea8635a398 100644
--- a/actions/setup/js/create_issue.cjs
+++ b/actions/setup/js/create_issue.cjs
@@ -29,6 +29,7 @@ const { sanitizeLabelContent } = require("./sanitize_label_content.cjs");
const { sanitizeTitle, applyTitlePrefix } = require("./sanitize_title.cjs");
const { generateFooterWithMessages } = require("./messages_footer.cjs");
const { generateWorkflowIdMarker, generateWorkflowCallIdMarker } = require("./generate_footer.cjs");
+const { generateHistoryUrl } = require("./generate_history_link.cjs");
const { getTrackerID } = require("./get_tracker_id.cjs");
const { generateTemporaryId, isTemporaryId, normalizeTemporaryId, getOrGenerateTemporaryId, replaceTemporaryIdReferences } = require("./temporary_id.cjs");
const { resolveTargetRepoConfig, resolveAndValidateRepo } = require("./repo_helpers.cjs");
@@ -448,7 +449,19 @@ async function main(config = {}) {
// Generate footer and add expiration using helper
// When footer is disabled, only add XML markers (no visible footer content)
if (includeFooter) {
- const footer = addExpirationToFooter(generateFooterWithMessages(workflowName, runUrl, workflowSource, workflowSourceURL, triggeringIssueNumber, triggeringPRNumber, triggeringDiscussionNumber).trimEnd(), expiresHours, "Issue");
+ const historyUrl = generateHistoryUrl({
+ owner: repoParts.owner,
+ repo: repoParts.repo,
+ itemType: "issue",
+ workflowCallId: callerWorkflowId,
+ workflowId,
+ serverUrl: context.serverUrl,
+ });
+ const footer = addExpirationToFooter(
+ generateFooterWithMessages(workflowName, runUrl, workflowSource, workflowSourceURL, triggeringIssueNumber, triggeringPRNumber, triggeringDiscussionNumber, historyUrl).trimEnd(),
+ expiresHours,
+ "Issue"
+ );
bodyLines.push(``, ``, footer);
}
diff --git a/actions/setup/js/create_pull_request.cjs b/actions/setup/js/create_pull_request.cjs
index d308798ad5..58e48d0024 100644
--- a/actions/setup/js/create_pull_request.cjs
+++ b/actions/setup/js/create_pull_request.cjs
@@ -16,6 +16,7 @@ const { addExpirationToFooter } = require("./ephemerals.cjs");
const { generateWorkflowIdMarker } = require("./generate_footer.cjs");
const { parseBoolTemplatable } = require("./templatable.cjs");
const { generateFooterWithMessages } = require("./messages_footer.cjs");
+const { generateHistoryUrl } = require("./generate_history_link.cjs");
const { normalizeBranchName } = require("./normalize_branch_name.cjs");
const { pushExtraEmptyCommit } = require("./extra_empty_commit.cjs");
const { createCheckoutManager } = require("./dynamic_checkout.cjs");
@@ -547,7 +548,14 @@ async function main(config = {}) {
// Generate footer using messages template system (respects custom messages.footer config)
// When footer is disabled, only add XML markers (no visible footer content)
if (includeFooter) {
- let footer = generateFooterWithMessages(workflowName, runUrl, workflowSource, workflowSourceURL, triggeringIssueNumber, triggeringPRNumber, triggeringDiscussionNumber).trimEnd();
+ const historyUrl = generateHistoryUrl({
+ owner: repoParts.owner,
+ repo: repoParts.repo,
+ itemType: "pull_request",
+ workflowId,
+ serverUrl: context.serverUrl,
+ });
+ let footer = generateFooterWithMessages(workflowName, runUrl, workflowSource, workflowSourceURL, triggeringIssueNumber, triggeringPRNumber, triggeringDiscussionNumber, historyUrl).trimEnd();
footer = addExpirationToFooter(footer, expiresHours, "Pull Request");
if (expiresHours > 0) {
footer += "\n\n";
diff --git a/actions/setup/js/generate_history_link.cjs b/actions/setup/js/generate_history_link.cjs
new file mode 100644
index 0000000000..b0444be0bc
--- /dev/null
+++ b/actions/setup/js/generate_history_link.cjs
@@ -0,0 +1,105 @@
+// @ts-check
+///
+
+/**
+ * Generate History Link Module
+ *
+ * This module provides functions for generating GitHub search URLs that allow
+ * users to view all items (issues, pull requests, discussions) created by a
+ * specific workflow run. The history link uses the workflow-call-id or
+ * workflow-id XML marker to filter results to a specific workflow.
+ */
+
+/**
+ * @typedef {"issue" | "pull_request" | "discussion"} ItemType
+ */
+
+/**
+ * @typedef {Object} HistoryLinkParams
+ * @property {string} owner - Repository owner
+ * @property {string} repo - Repository name
+ * @property {ItemType} itemType - Type of GitHub item: "issue", "pull_request", or "discussion"
+ * @property {string} [workflowCallId] - Caller workflow ID (e.g. "owner/repo/WorkflowName"). Takes precedence over workflowId.
+ * @property {string} [workflowId] - Workflow identifier. Used when workflowCallId is not available.
+ * @property {string} [serverUrl] - GitHub server URL for enterprise deployments (e.g. "https://github.example.com"). Defaults to "https://github.com".
+ */
+
+/**
+ * Generate a GitHub search URL for finding all items of a given type created by a workflow.
+ *
+ * The search URL uses the workflow-call-id marker when available (preferred, as it
+ * distinguishes callers that share the same reusable workflow), falling back to
+ * the workflow-id marker. Results are filtered to the specified item type but are
+ * not filtered by open/closed state.
+ *
+ * Enterprise GitHub deployments are supported via the serverUrl parameter or the
+ * GITHUB_SERVER_URL environment variable.
+ *
+ * @param {HistoryLinkParams} params
+ * @returns {string | null} The search URL, or null if no workflow ID is available
+ */
+function generateHistoryUrl({ owner, repo, itemType, workflowCallId, workflowId, serverUrl }) {
+ // Prefer caller workflow ID for more specific matching; fall back to workflow ID
+ const markerId = workflowCallId ? `gh-aw-workflow-call-id: ${workflowCallId}` : workflowId ? `gh-aw-workflow-id: ${workflowId}` : null;
+
+ if (!markerId) {
+ return null;
+ }
+
+ const server = serverUrl || process.env.GITHUB_SERVER_URL || "https://github.com";
+
+ // Build the search query parts
+ const queryParts = [`repo:${owner}/${repo}`];
+
+ // Add item type qualifier (issues and PRs use is: qualifiers; discussions use type= param only)
+ if (itemType === "issue") {
+ queryParts.push("is:issue");
+ } else if (itemType === "pull_request") {
+ queryParts.push("is:pr");
+ }
+
+ // Search for the XML marker in the body
+ queryParts.push(`"${markerId}"`);
+ queryParts.push("in:body");
+
+ // Determine the search result type parameter
+ let typeParam;
+ if (itemType === "issue") {
+ typeParam = "issues";
+ } else if (itemType === "pull_request") {
+ typeParam = "pullrequests";
+ } else if (itemType === "discussion") {
+ typeParam = "discussions";
+ }
+
+ const url = new URL(`${server}/search`);
+ url.searchParams.set("q", queryParts.join(" "));
+ if (typeParam) {
+ url.searchParams.set("type", typeParam);
+ }
+
+ return url.toString();
+}
+
+/**
+ * Generate a markdown history link with a clock symbol (🕐) for use in GitHub item footers.
+ *
+ * The link opens a GitHub search page filtered to items of the same type created by
+ * the same workflow. Returns null if no workflow ID is available (so callers can
+ * conditionally include the link).
+ *
+ * @param {HistoryLinkParams} params
+ * @returns {string | null} Markdown link (e.g. "[🕐 history](url)"), or null if unavailable
+ */
+function generateHistoryLink(params) {
+ const url = generateHistoryUrl(params);
+ if (!url) {
+ return null;
+ }
+ return `[🕐 history](${url})`;
+}
+
+module.exports = {
+ generateHistoryUrl,
+ generateHistoryLink,
+};
diff --git a/actions/setup/js/generate_history_link.test.cjs b/actions/setup/js/generate_history_link.test.cjs
new file mode 100644
index 0000000000..b82f80c826
--- /dev/null
+++ b/actions/setup/js/generate_history_link.test.cjs
@@ -0,0 +1,473 @@
+import { describe, it, expect, beforeEach, afterEach } from "vitest";
+
+// Set up global mocks before importing the module
+const mockCore = {
+ debug: () => {},
+ info: () => {},
+ warning: () => {},
+ error: () => {},
+};
+global.core = mockCore;
+
+describe("generate_history_link.cjs", () => {
+ let generateHistoryUrl;
+ let generateHistoryLink;
+
+ let originalEnv;
+
+ beforeEach(async () => {
+ originalEnv = { ...process.env };
+
+ const module = await import("./generate_history_link.cjs");
+ generateHistoryUrl = module.generateHistoryUrl;
+ generateHistoryLink = module.generateHistoryLink;
+ });
+
+ afterEach(() => {
+ // Restore environment by mutating process.env in place
+ for (const key of Object.keys(process.env)) {
+ if (!(key in originalEnv)) {
+ delete process.env[key];
+ }
+ }
+ Object.assign(process.env, originalEnv);
+ });
+
+ describe("generateHistoryUrl", () => {
+ describe("item type filtering", () => {
+ it("should include is:issue qualifier for issue type", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("is%3Aissue");
+ expect(url).toContain("type=issues");
+ });
+
+ it("should include is:pr qualifier for pull_request type", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "pull_request",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("is%3Apr");
+ expect(url).toContain("type=pullrequests");
+ });
+
+ it("should NOT include is: qualifier for discussion type", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "discussion",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).not.toContain("is%3A");
+ expect(url).toContain("type=discussions");
+ });
+ });
+
+ describe("workflow ID selection", () => {
+ it("should prefer workflowCallId over workflowId when both are provided", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowCallId: "caller/repo/WorkflowName",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("gh-aw-workflow-call-id");
+ expect(url).not.toContain("gh-aw-workflow-id");
+ });
+
+ it("should use workflowId when workflowCallId is not provided", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("gh-aw-workflow-id");
+ expect(url).not.toContain("gh-aw-workflow-call-id");
+ });
+
+ it("should use workflowId when workflowCallId is empty string", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowCallId: "",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("gh-aw-workflow-id");
+ expect(url).not.toContain("gh-aw-workflow-call-id");
+ });
+
+ it("should return null when neither workflowCallId nor workflowId is provided", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toBeNull();
+ });
+
+ it("should return null when both workflowCallId and workflowId are empty strings", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowCallId: "",
+ workflowId: "",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toBeNull();
+ });
+ });
+
+ describe("search query content", () => {
+ it("should include repo qualifier in search query", () => {
+ const url = generateHistoryUrl({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("repo%3Amyowner%2Fmyrepo");
+ });
+
+ it("should include workflow-call-id marker in search query when provided", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowCallId: "caller/repo/WorkflowName",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("gh-aw-workflow-call-id%3A+caller%2Frepo%2FWorkflowName");
+ });
+
+ it("should include workflow-id marker in search query when used", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("gh-aw-workflow-id%3A+my-workflow");
+ });
+
+ it("should include in:body qualifier in search query", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("in%3Abody");
+ });
+
+ it("should NOT include open/closed state filter", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).not.toContain("is%3Aopen");
+ expect(url).not.toContain("is%3Aclosed");
+ expect(url).not.toContain("is:open");
+ expect(url).not.toContain("is:closed");
+ });
+ });
+
+ describe("enterprise deployment", () => {
+ it("should use provided serverUrl for enterprise deployments", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.mycompany.com",
+ });
+
+ expect(url).toMatch(/^https:\/\/github\.mycompany\.com\/search/);
+ });
+
+ it("should use GITHUB_SERVER_URL env var when serverUrl is not provided", () => {
+ process.env.GITHUB_SERVER_URL = "https://github.enterprise.example.com";
+
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ });
+
+ expect(url).toMatch(/^https:\/\/github\.enterprise\.example\.com\/search/);
+ });
+
+ it("should default to https://github.com when no server URL is configured", () => {
+ delete process.env.GITHUB_SERVER_URL;
+
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ });
+
+ expect(url).toMatch(/^https:\/\/github\.com\/search/);
+ });
+
+ it("should prefer serverUrl param over GITHUB_SERVER_URL env var", () => {
+ process.env.GITHUB_SERVER_URL = "https://github.enterprise.example.com";
+
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.mycompany.com",
+ });
+
+ expect(url).toMatch(/^https:\/\/github\.mycompany\.com\/search/);
+ });
+ });
+
+ describe("URL structure", () => {
+ it("should generate a valid URL with /search path", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toMatch(/^https:\/\/github\.com\/search\?/);
+ });
+
+ it("should include q parameter in URL", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("?q=");
+ });
+
+ it("should include type parameter in URL", () => {
+ const url = generateHistoryUrl({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(url).toContain("type=");
+ });
+
+ it("should generate a complete issue search URL", () => {
+ const url = generateHistoryUrl({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ const parsed = new URL(url);
+ expect(parsed.hostname).toBe("github.com");
+ expect(parsed.pathname).toBe("/search");
+ expect(parsed.searchParams.get("type")).toBe("issues");
+
+ const query = parsed.searchParams.get("q");
+ expect(query).toContain("repo:myowner/myrepo");
+ expect(query).toContain("is:issue");
+ expect(query).toContain('"gh-aw-workflow-id: my-workflow"');
+ expect(query).toContain("in:body");
+ });
+
+ it("should generate a complete pull_request search URL", () => {
+ const url = generateHistoryUrl({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "pull_request",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ const parsed = new URL(url);
+ expect(parsed.searchParams.get("type")).toBe("pullrequests");
+
+ const query = parsed.searchParams.get("q");
+ expect(query).toContain("is:pr");
+ expect(query).toContain('"gh-aw-workflow-id: my-workflow"');
+ });
+
+ it("should generate a complete discussion search URL", () => {
+ const url = generateHistoryUrl({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "discussion",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ const parsed = new URL(url);
+ expect(parsed.searchParams.get("type")).toBe("discussions");
+
+ const query = parsed.searchParams.get("q");
+ expect(query).not.toContain("is:issue");
+ expect(query).not.toContain("is:pr");
+ expect(query).toContain('"gh-aw-workflow-id: my-workflow"');
+ });
+
+ it("should generate correct URL with workflowCallId", () => {
+ const url = generateHistoryUrl({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "issue",
+ workflowCallId: "callerowner/callerrepo/WorkflowName",
+ serverUrl: "https://github.com",
+ });
+
+ const parsed = new URL(url);
+ const query = parsed.searchParams.get("q");
+ expect(query).toContain('"gh-aw-workflow-call-id: callerowner/callerrepo/WorkflowName"');
+ expect(query).not.toContain("gh-aw-workflow-id");
+ });
+ });
+ });
+
+ describe("generateHistoryLink", () => {
+ it("should return null when no workflow ID is available", () => {
+ const link = generateHistoryLink({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ serverUrl: "https://github.com",
+ });
+
+ expect(link).toBeNull();
+ });
+
+ it("should return a markdown link with clock symbol", () => {
+ const link = generateHistoryLink({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(link).toMatch(/^\[🕐 history\]\(https:\/\/github\.com\/search\?/);
+ });
+
+ it("should use the clock emoji 🕐 as history symbol", () => {
+ const link = generateHistoryLink({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(link).toContain("🕐");
+ expect(link).toContain("history");
+ });
+
+ it("should wrap the search URL in markdown link syntax", () => {
+ const link = generateHistoryLink({
+ owner: "testowner",
+ repo: "testrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ // Should be valid markdown link: [text](url)
+ expect(link).toMatch(/^\[.+\]\(https?:\/\/.+\)$/);
+ });
+
+ it("should generate link with correct search URL for issue", () => {
+ const link = generateHistoryLink({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(link).toContain("type=issues");
+ expect(link).toContain("is%3Aissue");
+ });
+
+ it("should generate link with correct search URL for pull_request", () => {
+ const link = generateHistoryLink({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "pull_request",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(link).toContain("type=pullrequests");
+ });
+
+ it("should generate link with correct search URL for discussion", () => {
+ const link = generateHistoryLink({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "discussion",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.com",
+ });
+
+ expect(link).toContain("type=discussions");
+ });
+
+ it("should support enterprise URLs in the history link", () => {
+ const link = generateHistoryLink({
+ owner: "myowner",
+ repo: "myrepo",
+ itemType: "issue",
+ workflowId: "my-workflow",
+ serverUrl: "https://github.mycompany.com",
+ });
+
+ expect(link).toContain("https://github.mycompany.com/search");
+ });
+ });
+});
diff --git a/actions/setup/js/messages.test.cjs b/actions/setup/js/messages.test.cjs
index deb45c6578..9c46593ece 100644
--- a/actions/setup/js/messages.test.cjs
+++ b/actions/setup/js/messages.test.cjs
@@ -242,6 +242,43 @@ describe("messages.cjs", () => {
expect(result).toBe("> Test (Test)");
});
+
+ it("should append history link with clock symbol when historyUrl is provided", async () => {
+ const { getFooterMessage } = await import("./messages.cjs");
+
+ const result = getFooterMessage({
+ workflowName: "Test Workflow",
+ runUrl: "https://github.com/test/repo/actions/runs/123",
+ historyUrl: "https://github.com/search?q=repo:test/repo+is:issue&type=issues",
+ });
+
+ expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) · [🕐 history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
+ });
+
+ it("should include both triggering number and history link when both are provided", async () => {
+ const { getFooterMessage } = await import("./messages.cjs");
+
+ const result = getFooterMessage({
+ workflowName: "Test Workflow",
+ runUrl: "https://github.com/test/repo/actions/runs/123",
+ triggeringNumber: 42,
+ historyUrl: "https://github.com/search?q=repo:test/repo+is:issue&type=issues",
+ });
+
+ expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) for issue #42 · [🕐 history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
+ });
+
+ it("should not append history link when historyUrl is not provided", async () => {
+ const { getFooterMessage } = await import("./messages.cjs");
+
+ const result = getFooterMessage({
+ workflowName: "Test Workflow",
+ runUrl: "https://github.com/test/repo/actions/runs/123",
+ });
+
+ expect(result).not.toContain("history");
+ expect(result).not.toContain("🕐");
+ });
});
describe("getFooterInstallMessage", () => {
diff --git a/actions/setup/js/messages_footer.cjs b/actions/setup/js/messages_footer.cjs
index 364bef100c..ac897dacc1 100644
--- a/actions/setup/js/messages_footer.cjs
+++ b/actions/setup/js/messages_footer.cjs
@@ -19,6 +19,7 @@ const { getBlockedDomains, generateBlockedDomainsSection } = require("./firewall
* @property {string} [workflowSource] - Source of the workflow (owner/repo/path@ref)
* @property {string} [workflowSourceUrl] - GitHub URL for the workflow source
* @property {number|string} [triggeringNumber] - Issue, PR, or discussion number that triggered this workflow
+ * @property {string} [historyUrl] - GitHub search URL for items created by this workflow (for the history link)
*/
/**
@@ -42,6 +43,10 @@ function getFooterMessage(ctx) {
if (ctx.triggeringNumber) {
defaultFooter += " for issue #{triggering_number}";
}
+ // Append history link with clock symbol when available
+ if (ctx.historyUrl) {
+ defaultFooter += " · [🕐 history]({history_url})";
+ }
return renderTemplate(defaultFooter, templateContext);
}
@@ -227,9 +232,10 @@ function generateXMLMarker(workflowName, runUrl) {
* @param {number|undefined} triggeringIssueNumber - Issue number that triggered this workflow
* @param {number|undefined} triggeringPRNumber - Pull request number that triggered this workflow
* @param {number|undefined} triggeringDiscussionNumber - Discussion number that triggered this workflow
+ * @param {string|null|undefined} [historyUrl] - GitHub search URL for items created by this workflow
* @returns {string} Complete footer text
*/
-function generateFooterWithMessages(workflowName, runUrl, workflowSource, workflowSourceURL, triggeringIssueNumber, triggeringPRNumber, triggeringDiscussionNumber) {
+function generateFooterWithMessages(workflowName, runUrl, workflowSource, workflowSourceURL, triggeringIssueNumber, triggeringPRNumber, triggeringDiscussionNumber, historyUrl) {
// Determine triggering number (issue takes precedence, then PR, then discussion)
let triggeringNumber;
if (triggeringIssueNumber) {
@@ -246,6 +252,7 @@ function generateFooterWithMessages(workflowName, runUrl, workflowSource, workfl
workflowSource,
workflowSourceUrl: workflowSourceURL,
triggeringNumber,
+ historyUrl: historyUrl || undefined,
};
let footer = "\n\n" + getFooterMessage(ctx);
From 4550f5386f27c069230db2d3e1d535af351cacd3 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Mar 2026 04:16:09 +0000
Subject: [PATCH 3/7] Remove clock emoji from history link
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
---
actions/setup/js/generate_history_link.cjs | 6 +++---
actions/setup/js/generate_history_link.test.cjs | 6 +++---
actions/setup/js/messages.test.cjs | 7 +++----
actions/setup/js/messages_footer.cjs | 2 +-
4 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/actions/setup/js/generate_history_link.cjs b/actions/setup/js/generate_history_link.cjs
index b0444be0bc..0e16630d25 100644
--- a/actions/setup/js/generate_history_link.cjs
+++ b/actions/setup/js/generate_history_link.cjs
@@ -82,21 +82,21 @@ function generateHistoryUrl({ owner, repo, itemType, workflowCallId, workflowId,
}
/**
- * Generate a markdown history link with a clock symbol (🕐) for use in GitHub item footers.
+ * Generate a markdown history link for use in GitHub item footers.
*
* The link opens a GitHub search page filtered to items of the same type created by
* the same workflow. Returns null if no workflow ID is available (so callers can
* conditionally include the link).
*
* @param {HistoryLinkParams} params
- * @returns {string | null} Markdown link (e.g. "[🕐 history](url)"), or null if unavailable
+ * @returns {string | null} Markdown link (e.g. "[history](url)"), or null if unavailable
*/
function generateHistoryLink(params) {
const url = generateHistoryUrl(params);
if (!url) {
return null;
}
- return `[🕐 history](${url})`;
+ return `[history](${url})`;
}
module.exports = {
diff --git a/actions/setup/js/generate_history_link.test.cjs b/actions/setup/js/generate_history_link.test.cjs
index b82f80c826..9b1a5d7304 100644
--- a/actions/setup/js/generate_history_link.test.cjs
+++ b/actions/setup/js/generate_history_link.test.cjs
@@ -392,10 +392,10 @@ describe("generate_history_link.cjs", () => {
serverUrl: "https://github.com",
});
- expect(link).toMatch(/^\[🕐 history\]\(https:\/\/github\.com\/search\?/);
+ expect(link).toMatch(/^\[history\]\(https:\/\/github\.com\/search\?/);
});
- it("should use the clock emoji 🕐 as history symbol", () => {
+ it("should use 'history' as the link label", () => {
const link = generateHistoryLink({
owner: "testowner",
repo: "testrepo",
@@ -404,7 +404,7 @@ describe("generate_history_link.cjs", () => {
serverUrl: "https://github.com",
});
- expect(link).toContain("🕐");
+ expect(link).not.toContain("🕐");
expect(link).toContain("history");
});
diff --git a/actions/setup/js/messages.test.cjs b/actions/setup/js/messages.test.cjs
index 9c46593ece..93ea5a6b36 100644
--- a/actions/setup/js/messages.test.cjs
+++ b/actions/setup/js/messages.test.cjs
@@ -243,7 +243,7 @@ describe("messages.cjs", () => {
expect(result).toBe("> Test (Test)");
});
- it("should append history link with clock symbol when historyUrl is provided", async () => {
+ it("should append history link when historyUrl is provided", async () => {
const { getFooterMessage } = await import("./messages.cjs");
const result = getFooterMessage({
@@ -252,7 +252,7 @@ describe("messages.cjs", () => {
historyUrl: "https://github.com/search?q=repo:test/repo+is:issue&type=issues",
});
- expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) · [🕐 history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
+ expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) · [history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
});
it("should include both triggering number and history link when both are provided", async () => {
@@ -265,7 +265,7 @@ describe("messages.cjs", () => {
historyUrl: "https://github.com/search?q=repo:test/repo+is:issue&type=issues",
});
- expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) for issue #42 · [🕐 history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
+ expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) for issue #42 · [history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
});
it("should not append history link when historyUrl is not provided", async () => {
@@ -277,7 +277,6 @@ describe("messages.cjs", () => {
});
expect(result).not.toContain("history");
- expect(result).not.toContain("🕐");
});
});
diff --git a/actions/setup/js/messages_footer.cjs b/actions/setup/js/messages_footer.cjs
index ac897dacc1..45902b0905 100644
--- a/actions/setup/js/messages_footer.cjs
+++ b/actions/setup/js/messages_footer.cjs
@@ -45,7 +45,7 @@ function getFooterMessage(ctx) {
}
// Append history link with clock symbol when available
if (ctx.historyUrl) {
- defaultFooter += " · [🕐 history]({history_url})";
+ defaultFooter += " · [history]({history_url})";
}
return renderTemplate(defaultFooter, templateContext);
}
From 27bed90ff6393cca5d8cbc35482f89afd94f9373 Mon Sep 17 00:00:00 2001
From: Codex
Date: Tue, 3 Mar 2026 04:20:34 +0000
Subject: [PATCH 4/7] Add changeset [skip-ci]
---
.changeset/patch-history-link-footer.md | 5 +++++
1 file changed, 5 insertions(+)
create mode 100644 .changeset/patch-history-link-footer.md
diff --git a/.changeset/patch-history-link-footer.md b/.changeset/patch-history-link-footer.md
new file mode 100644
index 0000000000..946c3228be
--- /dev/null
+++ b/.changeset/patch-history-link-footer.md
@@ -0,0 +1,5 @@
+---
+"gh-aw": patch
+---
+
+Add history links to workflow-generated issue, discussion, and PR footers so readers can jump to the set of items created by the same workflow.
From de74ccdc9304bfc9b7771cccea34dbd5c3cc1f6b Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Tue, 3 Mar 2026 04:21:39 +0000
Subject: [PATCH 5/7] ci: trigger checks
From 1299ac77a0b69f31f216e6d9f2584cc372a690a9 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Mar 2026 04:38:51 +0000
Subject: [PATCH 6/7] Add {history_link} template variable to footer messages
in agentic workflows
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
---
.github/workflows/archie.lock.yml | 6 ++--
.github/workflows/archie.md | 2 +-
.github/workflows/brave.lock.yml | 6 ++--
.github/workflows/brave.md | 2 +-
.../breaking-change-checker.lock.yml | 6 ++--
.github/workflows/breaking-change-checker.md | 2 +-
.github/workflows/ci-doctor.lock.yml | 6 ++--
.github/workflows/ci-doctor.md | 2 +-
.github/workflows/cloclo.lock.yml | 6 ++--
.github/workflows/cloclo.md | 2 +-
.github/workflows/craft.lock.yml | 6 ++--
.github/workflows/craft.md | 2 +-
.github/workflows/daily-fact.lock.yml | 6 ++--
.github/workflows/daily-fact.md | 2 +-
.github/workflows/delight.lock.yml | 6 ++--
.github/workflows/delight.md | 2 +-
.github/workflows/dev-hawk.lock.yml | 6 ++--
.github/workflows/dev-hawk.md | 2 +-
.../workflows/discussion-task-miner.lock.yml | 6 ++--
.github/workflows/discussion-task-miner.md | 2 +-
.github/workflows/grumpy-reviewer.lock.yml | 6 ++--
.github/workflows/grumpy-reviewer.md | 2 +-
.github/workflows/issue-monster.lock.yml | 6 ++--
.github/workflows/issue-monster.md | 2 +-
.github/workflows/pdf-summary.lock.yml | 6 ++--
.github/workflows/pdf-summary.md | 2 +-
.github/workflows/poem-bot.lock.yml | 8 ++---
.github/workflows/poem-bot.md | 2 +-
.../workflows/pr-nitpick-reviewer.lock.yml | 6 ++--
.github/workflows/pr-nitpick-reviewer.md | 2 +-
.github/workflows/q.lock.yml | 6 ++--
.github/workflows/q.md | 2 +-
.github/workflows/scout.lock.yml | 6 ++--
.github/workflows/scout.md | 2 +-
.github/workflows/security-review.lock.yml | 6 ++--
.github/workflows/security-review.md | 2 +-
.github/workflows/smoke-agent.lock.yml | 10 +++---
.github/workflows/smoke-agent.md | 2 +-
.github/workflows/smoke-claude.lock.yml | 10 +++---
.github/workflows/smoke-claude.md | 2 +-
.github/workflows/smoke-codex.lock.yml | 10 +++---
.github/workflows/smoke-codex.md | 2 +-
.github/workflows/smoke-copilot-arm.lock.yml | 10 +++---
.github/workflows/smoke-copilot-arm.md | 2 +-
.github/workflows/smoke-copilot.lock.yml | 10 +++---
.github/workflows/smoke-copilot.md | 2 +-
.../smoke-create-cross-repo-pr.lock.yml | 10 +++---
.../workflows/smoke-create-cross-repo-pr.md | 2 +-
.github/workflows/smoke-gemini.lock.yml | 10 +++---
.github/workflows/smoke-gemini.md | 2 +-
.github/workflows/smoke-multi-pr.lock.yml | 10 +++---
.github/workflows/smoke-multi-pr.md | 2 +-
.github/workflows/smoke-project.lock.yml | 10 +++---
.github/workflows/smoke-project.md | 2 +-
.github/workflows/smoke-temporary-id.lock.yml | 10 +++---
.github/workflows/smoke-temporary-id.md | 2 +-
.github/workflows/smoke-test-tools.lock.yml | 10 +++---
.github/workflows/smoke-test-tools.md | 2 +-
.../smoke-update-cross-repo-pr.lock.yml | 10 +++---
.../workflows/smoke-update-cross-repo-pr.md | 2 +-
.../workflows/smoke-workflow-call.lock.yml | 6 ++--
.github/workflows/smoke-workflow-call.md | 2 +-
.../workflows/stale-repo-identifier.lock.yml | 8 ++---
.github/workflows/stale-repo-identifier.md | 2 +-
.../workflows/technical-doc-writer.lock.yml | 8 ++---
.github/workflows/technical-doc-writer.md | 2 +-
.github/workflows/unbloat-docs.lock.yml | 8 ++---
.github/workflows/unbloat-docs.md | 2 +-
actions/setup/js/messages.test.cjs | 33 +++++++++++++++++++
actions/setup/js/messages_footer.cjs | 10 ++++--
70 files changed, 204 insertions(+), 167 deletions(-)
diff --git a/.github/workflows/archie.lock.yml b/.github/workflows/archie.lock.yml
index 0fc1bf9fa9..e172a8910b 100644
--- a/.github/workflows/archie.lock.yml
+++ b/.github/workflows/archie.lock.yml
@@ -27,7 +27,7 @@
# Imports:
# - shared/mcp/serena-go.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"5c67f34342f7e950c8bde628676a1bc97f4471bdaf5fccfcc5c187af8484d16c"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"79e0293df146b166f4756691d48758815d02702f4f41f9b2bf9c41229f56ccf7"}
name: "Archie"
"on":
@@ -1017,7 +1017,7 @@ jobs:
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "archie"
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *Diagram rendered by [{workflow_name}]({run_url})*\",\"footerWorkflowRecompile\":\"\\u003e 🔧 *Workflow sync report by [{workflow_name}]({run_url}) for {repository}*\",\"footerWorkflowRecompileComment\":\"\\u003e 🔄 *Update from [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"📐 [{workflow_name}]({run_url}) is analyzing the architecture for this {event_type}...\",\"runSuccess\":\"🎨 [{workflow_name}]({run_url}) has completed the architecture visualization. ✅\",\"runFailure\":\"📐 [{workflow_name}]({run_url}) encountered an issue and could not complete the architecture diagram. Check the [run logs]({run_url}) for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *Diagram rendered by [{workflow_name}]({run_url})*{history_link}\",\"footerWorkflowRecompile\":\"\\u003e 🔧 *Workflow sync report by [{workflow_name}]({run_url}) for {repository}*\",\"footerWorkflowRecompileComment\":\"\\u003e 🔄 *Update from [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"📐 [{workflow_name}]({run_url}) is analyzing the architecture for this {event_type}...\",\"runSuccess\":\"🎨 [{workflow_name}]({run_url}) has completed the architecture visualization. ✅\",\"runFailure\":\"📐 [{workflow_name}]({run_url}) encountered an issue and could not complete the architecture diagram. Check the [run logs]({run_url}) for details.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1122,7 +1122,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *Diagram rendered by [{workflow_name}]({run_url})*\",\"footerWorkflowRecompile\":\"\\u003e 🔧 *Workflow sync report by [{workflow_name}]({run_url}) for {repository}*\",\"footerWorkflowRecompileComment\":\"\\u003e 🔄 *Update from [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"📐 [{workflow_name}]({run_url}) is analyzing the architecture for this {event_type}...\",\"runSuccess\":\"🎨 [{workflow_name}]({run_url}) has completed the architecture visualization. ✅\",\"runFailure\":\"📐 [{workflow_name}]({run_url}) encountered an issue and could not complete the architecture diagram. Check the [run logs]({run_url}) for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *Diagram rendered by [{workflow_name}]({run_url})*{history_link}\",\"footerWorkflowRecompile\":\"\\u003e 🔧 *Workflow sync report by [{workflow_name}]({run_url}) for {repository}*\",\"footerWorkflowRecompileComment\":\"\\u003e 🔄 *Update from [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"📐 [{workflow_name}]({run_url}) is analyzing the architecture for this {event_type}...\",\"runSuccess\":\"🎨 [{workflow_name}]({run_url}) has completed the architecture visualization. ✅\",\"runFailure\":\"📐 [{workflow_name}]({run_url}) encountered an issue and could not complete the architecture diagram. Check the [run logs]({run_url}) for details.\"}"
GH_AW_WORKFLOW_ID: "archie"
GH_AW_WORKFLOW_NAME: "Archie"
outputs:
diff --git a/.github/workflows/archie.md b/.github/workflows/archie.md
index c6405f684c..6c58e74b64 100644
--- a/.github/workflows/archie.md
+++ b/.github/workflows/archie.md
@@ -25,7 +25,7 @@ safe-outputs:
add-comment:
max: 1
messages:
- footer: "> 📊 *Diagram rendered by [{workflow_name}]({run_url})*"
+ footer: "> 📊 *Diagram rendered by [{workflow_name}]({run_url})*{history_link}"
footer-workflow-recompile: "> 🔧 *Workflow sync report by [{workflow_name}]({run_url}) for {repository}*"
footer-workflow-recompile-comment: "> 🔄 *Update from [{workflow_name}]({run_url}) for {repository}*"
run-started: "📐 [{workflow_name}]({run_url}) is analyzing the architecture for this {event_type}..."
diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml
index 9f7ac9451e..1735050d21 100644
--- a/.github/workflows/brave.lock.yml
+++ b/.github/workflows/brave.lock.yml
@@ -27,7 +27,7 @@
# Imports:
# - shared/mcp/brave.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"871a85857b04cbb09df3b9386cbea718d3811c0f80322a9e8cd213382cb264fe"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"1f0b9c5f3a6d5a7d20a40ad39984bdd13fe40c0e47eb008b568fc7641f264ed6"}
name: "Brave Web Search Agent"
"on":
@@ -1005,7 +1005,7 @@ jobs:
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "brave"
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦁 *Search results brought to you by [{workflow_name}]({run_url})*\",\"footerWorkflowRecompile\":\"\\u003e 🔄 *Maintenance report by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔍 Brave Search activated! [{workflow_name}]({run_url}) is venturing into the web on this {event_type}...\",\"runSuccess\":\"🦁 Mission accomplished! [{workflow_name}]({run_url}) has returned with the findings. Knowledge acquired! 🏆\",\"runFailure\":\"🔍 Search interrupted! [{workflow_name}]({run_url}) {status}. The web remains unexplored...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦁 *Search results brought to you by [{workflow_name}]({run_url})*{history_link}\",\"footerWorkflowRecompile\":\"\\u003e 🔄 *Maintenance report by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔍 Brave Search activated! [{workflow_name}]({run_url}) is venturing into the web on this {event_type}...\",\"runSuccess\":\"🦁 Mission accomplished! [{workflow_name}]({run_url}) has returned with the findings. Knowledge acquired! 🏆\",\"runFailure\":\"🔍 Search interrupted! [{workflow_name}]({run_url}) {status}. The web remains unexplored...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1107,7 +1107,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦁 *Search results brought to you by [{workflow_name}]({run_url})*\",\"footerWorkflowRecompile\":\"\\u003e 🔄 *Maintenance report by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔍 Brave Search activated! [{workflow_name}]({run_url}) is venturing into the web on this {event_type}...\",\"runSuccess\":\"🦁 Mission accomplished! [{workflow_name}]({run_url}) has returned with the findings. Knowledge acquired! 🏆\",\"runFailure\":\"🔍 Search interrupted! [{workflow_name}]({run_url}) {status}. The web remains unexplored...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦁 *Search results brought to you by [{workflow_name}]({run_url})*{history_link}\",\"footerWorkflowRecompile\":\"\\u003e 🔄 *Maintenance report by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔍 Brave Search activated! [{workflow_name}]({run_url}) is venturing into the web on this {event_type}...\",\"runSuccess\":\"🦁 Mission accomplished! [{workflow_name}]({run_url}) has returned with the findings. Knowledge acquired! 🏆\",\"runFailure\":\"🔍 Search interrupted! [{workflow_name}]({run_url}) {status}. The web remains unexplored...\"}"
GH_AW_WORKFLOW_ID: "brave"
GH_AW_WORKFLOW_NAME: "Brave Web Search Agent"
outputs:
diff --git a/.github/workflows/brave.md b/.github/workflows/brave.md
index 4dcc214076..27b0fd9e8f 100644
--- a/.github/workflows/brave.md
+++ b/.github/workflows/brave.md
@@ -16,7 +16,7 @@ safe-outputs:
add-comment:
max: 1
messages:
- footer: "> 🦁 *Search results brought to you by [{workflow_name}]({run_url})*"
+ footer: "> 🦁 *Search results brought to you by [{workflow_name}]({run_url})*{history_link}"
footer-workflow-recompile: "> 🔄 *Maintenance report by [{workflow_name}]({run_url}) for {repository}*"
run-started: "🔍 Brave Search activated! [{workflow_name}]({run_url}) is venturing into the web on this {event_type}..."
run-success: "🦁 Mission accomplished! [{workflow_name}]({run_url}) has returned with the findings. Knowledge acquired! 🏆"
diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml
index d921c3bc53..0eb31646a1 100644
--- a/.github/workflows/breaking-change-checker.lock.yml
+++ b/.github/workflows/breaking-change-checker.lock.yml
@@ -27,7 +27,7 @@
# Imports:
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"03914da6ced46766a0fd7c3fd6479d3fbc1d54a5beae2693ea3fd4fa4cff7079"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"298055babdc6d453ead986983230edf4cbb2c74f82c5a110850af9b8a64e89c2"}
name: "Breaking Change Checker"
"on":
@@ -1016,7 +1016,7 @@ jobs:
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "breaking-change-checker"
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚠️ *Compatibility report by [{workflow_name}]({run_url})*\",\"footerWorkflowRecompile\":\"\\u003e 🛠️ *Workflow maintenance by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔬 Breaking Change Checker online! [{workflow_name}]({run_url}) is analyzing API compatibility on this {event_type}...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has reviewed all changes. Compatibility verdict delivered! 📋\",\"runFailure\":\"🔬 Analysis interrupted! [{workflow_name}]({run_url}) {status}. Compatibility status unknown...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚠️ *Compatibility report by [{workflow_name}]({run_url})*{history_link}\",\"footerWorkflowRecompile\":\"\\u003e 🛠️ *Workflow maintenance by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔬 Breaking Change Checker online! [{workflow_name}]({run_url}) is analyzing API compatibility on this {event_type}...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has reviewed all changes. Compatibility verdict delivered! 📋\",\"runFailure\":\"🔬 Analysis interrupted! [{workflow_name}]({run_url}) {status}. Compatibility status unknown...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1100,7 +1100,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚠️ *Compatibility report by [{workflow_name}]({run_url})*\",\"footerWorkflowRecompile\":\"\\u003e 🛠️ *Workflow maintenance by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔬 Breaking Change Checker online! [{workflow_name}]({run_url}) is analyzing API compatibility on this {event_type}...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has reviewed all changes. Compatibility verdict delivered! 📋\",\"runFailure\":\"🔬 Analysis interrupted! [{workflow_name}]({run_url}) {status}. Compatibility status unknown...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚠️ *Compatibility report by [{workflow_name}]({run_url})*{history_link}\",\"footerWorkflowRecompile\":\"\\u003e 🛠️ *Workflow maintenance by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"🔬 Breaking Change Checker online! [{workflow_name}]({run_url}) is analyzing API compatibility on this {event_type}...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has reviewed all changes. Compatibility verdict delivered! 📋\",\"runFailure\":\"🔬 Analysis interrupted! [{workflow_name}]({run_url}) {status}. Compatibility status unknown...\"}"
GH_AW_TRACKER_ID: "breaking-change-checker"
GH_AW_WORKFLOW_ID: "breaking-change-checker"
GH_AW_WORKFLOW_NAME: "Breaking Change Checker"
diff --git a/.github/workflows/breaking-change-checker.md b/.github/workflows/breaking-change-checker.md
index 656ee0942d..bc272600d1 100644
--- a/.github/workflows/breaking-change-checker.md
+++ b/.github/workflows/breaking-change-checker.md
@@ -27,7 +27,7 @@ safe-outputs:
assignees: copilot
max: 1
messages:
- footer: "> ⚠️ *Compatibility report by [{workflow_name}]({run_url})*"
+ footer: "> ⚠️ *Compatibility report by [{workflow_name}]({run_url})*{history_link}"
footer-workflow-recompile: "> 🛠️ *Workflow maintenance by [{workflow_name}]({run_url}) for {repository}*"
run-started: "🔬 Breaking Change Checker online! [{workflow_name}]({run_url}) is analyzing API compatibility on this {event_type}..."
run-success: "✅ Analysis complete! [{workflow_name}]({run_url}) has reviewed all changes. Compatibility verdict delivered! 📋"
diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml
index 8bfd4842d2..137c0b64a0 100644
--- a/.github/workflows/ci-doctor.lock.yml
+++ b/.github/workflows/ci-doctor.lock.yml
@@ -25,7 +25,7 @@
#
# Source: githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"4b04d4420888fefcba8d30800c71be38c78560388ca3fea47576b52946b4afc8","stop_time":"2026-03-03 16:27:58"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"fcaeacfaaa62a6775511b360ff105863e4d913c99f71eab55489bcd96db114f0","stop_time":"2026-03-03 16:27:58"}
#
# Effective stop-time: 2026-03-03 16:27:58
@@ -1223,7 +1223,7 @@ jobs:
GH_AW_WORKFLOW_ID: "ci-doctor"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*\",\"runStarted\":\"🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...\",\"runSuccess\":\"🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊\",\"runFailure\":\"🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...\",\"runSuccess\":\"🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊\",\"runFailure\":\"🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "20"
with:
@@ -1311,7 +1311,7 @@ jobs:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
GH_AW_ENGINE_MODEL: "gpt-5.1-codex-mini"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*\",\"runStarted\":\"🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...\",\"runSuccess\":\"🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊\",\"runFailure\":\"🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...\",\"runSuccess\":\"🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊\",\"runFailure\":\"🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...\"}"
GH_AW_WORKFLOW_ID: "ci-doctor"
GH_AW_WORKFLOW_NAME: "CI Failure Doctor"
GH_AW_WORKFLOW_SOURCE: "githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d"
diff --git a/.github/workflows/ci-doctor.md b/.github/workflows/ci-doctor.md
index 7b44308d51..b1032f3b20 100644
--- a/.github/workflows/ci-doctor.md
+++ b/.github/workflows/ci-doctor.md
@@ -36,7 +36,7 @@ safe-outputs:
update-issue:
noop:
messages:
- footer: "> 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*"
+ footer: "> 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*{history_link}"
run-started: "🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}..."
run-success: "🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊"
run-failure: "🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance..."
diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml
index a7dd912108..ec167264e5 100644
--- a/.github/workflows/cloclo.lock.yml
+++ b/.github/workflows/cloclo.lock.yml
@@ -27,7 +27,7 @@
# - shared/jqschema.md
# - shared/mcp/serena-go.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"9c9cd0d4f68fbedcbb012f1b424efca362e2fe0307125aa2d86a6fac79f79152"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f0cbb935127a3229a5af7be73bfbe1e18cd4d83455bfab734bc621259e3a9b8c"}
name: "/cloclo"
"on":
@@ -1368,7 +1368,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎤 *Magnifique! Performance by [{workflow_name}]({run_url})*\",\"runStarted\":\"🎵 Comme d'habitude! [{workflow_name}]({run_url}) takes the stage on this {event_type}...\",\"runSuccess\":\"🎤 Bravo! [{workflow_name}]({run_url}) has delivered a stunning performance! Standing ovation! 🌟\",\"runFailure\":\"🎵 Intermission... [{workflow_name}]({run_url}) {status}. The show must go on... eventually!\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎤 *Magnifique! Performance by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🎵 Comme d'habitude! [{workflow_name}]({run_url}) takes the stage on this {event_type}...\",\"runSuccess\":\"🎤 Bravo! [{workflow_name}]({run_url}) has delivered a stunning performance! Standing ovation! 🌟\",\"runFailure\":\"🎵 Intermission... [{workflow_name}]({run_url}) {status}. The show must go on... eventually!\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "20"
with:
@@ -1499,7 +1499,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "claude"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎤 *Magnifique! Performance by [{workflow_name}]({run_url})*\",\"runStarted\":\"🎵 Comme d'habitude! [{workflow_name}]({run_url}) takes the stage on this {event_type}...\",\"runSuccess\":\"🎤 Bravo! [{workflow_name}]({run_url}) has delivered a stunning performance! Standing ovation! 🌟\",\"runFailure\":\"🎵 Intermission... [{workflow_name}]({run_url}) {status}. The show must go on... eventually!\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎤 *Magnifique! Performance by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🎵 Comme d'habitude! [{workflow_name}]({run_url}) takes the stage on this {event_type}...\",\"runSuccess\":\"🎤 Bravo! [{workflow_name}]({run_url}) has delivered a stunning performance! Standing ovation! 🌟\",\"runFailure\":\"🎵 Intermission... [{workflow_name}]({run_url}) {status}. The show must go on... eventually!\"}"
GH_AW_WORKFLOW_ID: "cloclo"
GH_AW_WORKFLOW_NAME: "/cloclo"
outputs:
diff --git a/.github/workflows/cloclo.md b/.github/workflows/cloclo.md
index 540ccb1df5..3df5ee3b71 100644
--- a/.github/workflows/cloclo.md
+++ b/.github/workflows/cloclo.md
@@ -35,7 +35,7 @@ safe-outputs:
add-comment:
max: 1
messages:
- footer: "> 🎤 *Magnifique! Performance by [{workflow_name}]({run_url})*"
+ footer: "> 🎤 *Magnifique! Performance by [{workflow_name}]({run_url})*{history_link}"
run-started: "🎵 Comme d'habitude! [{workflow_name}]({run_url}) takes the stage on this {event_type}..."
run-success: "🎤 Bravo! [{workflow_name}]({run_url}) has delivered a stunning performance! Standing ovation! 🌟"
run-failure: "🎵 Intermission... [{workflow_name}]({run_url}) {status}. The show must go on... eventually!"
diff --git a/.github/workflows/craft.lock.yml b/.github/workflows/craft.lock.yml
index 1e4437f7b1..e40cf78dc3 100644
--- a/.github/workflows/craft.lock.yml
+++ b/.github/workflows/craft.lock.yml
@@ -23,7 +23,7 @@
#
# Generates new agentic workflow markdown files based on user requests when invoked with /craft command
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"6b3d8caf13884b7e6f4365b42c550bf20efa307416accdc1258293325dc533ae"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ec234868e45fe0e4849c2b73f9ef1181d4d0e9072b1f6beaef8b2d7d403860f4"}
name: "Workflow Craft Agent"
"on":
@@ -1042,7 +1042,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚒️ *Crafted with care by [{workflow_name}]({run_url})*\",\"runStarted\":\"🛠️ Master Crafter at work! [{workflow_name}]({run_url}) is forging a new workflow on this {event_type}...\",\"runSuccess\":\"⚒️ Masterpiece complete! [{workflow_name}]({run_url}) has crafted your workflow. May it serve you well! 🎖️\",\"runFailure\":\"🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚒️ *Crafted with care by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🛠️ Master Crafter at work! [{workflow_name}]({run_url}) is forging a new workflow on this {event_type}...\",\"runSuccess\":\"⚒️ Masterpiece complete! [{workflow_name}]({run_url}) has crafted your workflow. May it serve you well! 🎖️\",\"runFailure\":\"🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1145,7 +1145,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚒️ *Crafted with care by [{workflow_name}]({run_url})*\",\"runStarted\":\"🛠️ Master Crafter at work! [{workflow_name}]({run_url}) is forging a new workflow on this {event_type}...\",\"runSuccess\":\"⚒️ Masterpiece complete! [{workflow_name}]({run_url}) has crafted your workflow. May it serve you well! 🎖️\",\"runFailure\":\"🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ⚒️ *Crafted with care by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🛠️ Master Crafter at work! [{workflow_name}]({run_url}) is forging a new workflow on this {event_type}...\",\"runSuccess\":\"⚒️ Masterpiece complete! [{workflow_name}]({run_url}) has crafted your workflow. May it serve you well! 🎖️\",\"runFailure\":\"🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt...\"}"
GH_AW_WORKFLOW_ID: "craft"
GH_AW_WORKFLOW_NAME: "Workflow Craft Agent"
outputs:
diff --git a/.github/workflows/craft.md b/.github/workflows/craft.md
index 1a7b6df8ab..e9781486b2 100644
--- a/.github/workflows/craft.md
+++ b/.github/workflows/craft.md
@@ -26,7 +26,7 @@ safe-outputs:
max: 1
push-to-pull-request-branch:
messages:
- footer: "> ⚒️ *Crafted with care by [{workflow_name}]({run_url})*"
+ footer: "> ⚒️ *Crafted with care by [{workflow_name}]({run_url})*{history_link}"
run-started: "🛠️ Master Crafter at work! [{workflow_name}]({run_url}) is forging a new workflow on this {event_type}..."
run-success: "⚒️ Masterpiece complete! [{workflow_name}]({run_url}) has crafted your workflow. May it serve you well! 🎖️"
run-failure: "🛠️ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt..."
diff --git a/.github/workflows/daily-fact.lock.yml b/.github/workflows/daily-fact.lock.yml
index 988af2315a..25c4b50cc4 100644
--- a/.github/workflows/daily-fact.lock.yml
+++ b/.github/workflows/daily-fact.lock.yml
@@ -23,7 +23,7 @@
#
# Posts a daily poetic verse about the gh-aw project to a discussion thread
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"84332636923bdd52873d33f582920c0d1d2f146891db15505ec113a664f4d35b"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3fe8069e73efba5ca03ea4db342e0206f7f91ab0173b8e9897869d15d9c78230"}
name: "Daily Fact About gh-aw"
"on":
@@ -924,7 +924,7 @@ jobs:
GH_AW_WORKFLOW_ID: "daily-fact"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Penned with care by [{workflow_name}]({run_url})*\",\"runStarted\":\"📜 Hark! The muse awakens — [{workflow_name}]({run_url}) begins its verse upon this {event_type}...\",\"runSuccess\":\"✨ Lo! [{workflow_name}]({run_url}) hath woven its tale to completion, like a sonnet finding its final rhyme. 🌟\",\"runFailure\":\"🌧️ Alas! [{workflow_name}]({run_url}) {status}, its quill fallen mid-verse. The poem remains unfinished...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Penned with care by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📜 Hark! The muse awakens — [{workflow_name}]({run_url}) begins its verse upon this {event_type}...\",\"runSuccess\":\"✨ Lo! [{workflow_name}]({run_url}) hath woven its tale to completion, like a sonnet finding its final rhyme. 🌟\",\"runFailure\":\"🌧️ Alas! [{workflow_name}]({run_url}) {status}, its quill fallen mid-verse. The poem remains unfinished...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -967,7 +967,7 @@ jobs:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "codex"
GH_AW_ENGINE_MODEL: "gpt-5.1-codex-mini"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Penned with care by [{workflow_name}]({run_url})*\",\"runStarted\":\"📜 Hark! The muse awakens — [{workflow_name}]({run_url}) begins its verse upon this {event_type}...\",\"runSuccess\":\"✨ Lo! [{workflow_name}]({run_url}) hath woven its tale to completion, like a sonnet finding its final rhyme. 🌟\",\"runFailure\":\"🌧️ Alas! [{workflow_name}]({run_url}) {status}, its quill fallen mid-verse. The poem remains unfinished...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Penned with care by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📜 Hark! The muse awakens — [{workflow_name}]({run_url}) begins its verse upon this {event_type}...\",\"runSuccess\":\"✨ Lo! [{workflow_name}]({run_url}) hath woven its tale to completion, like a sonnet finding its final rhyme. 🌟\",\"runFailure\":\"🌧️ Alas! [{workflow_name}]({run_url}) {status}, its quill fallen mid-verse. The poem remains unfinished...\"}"
GH_AW_TRACKER_ID: "daily-fact-thread"
GH_AW_WORKFLOW_ID: "daily-fact"
GH_AW_WORKFLOW_NAME: "Daily Fact About gh-aw"
diff --git a/.github/workflows/daily-fact.md b/.github/workflows/daily-fact.md
index a6c6843013..f46cd494bf 100644
--- a/.github/workflows/daily-fact.md
+++ b/.github/workflows/daily-fact.md
@@ -32,7 +32,7 @@ safe-outputs:
add-comment:
target: "4750"
messages:
- footer: "> 🪶 *Penned with care by [{workflow_name}]({run_url})*"
+ footer: "> 🪶 *Penned with care by [{workflow_name}]({run_url})*{history_link}"
run-started: "📜 Hark! The muse awakens — [{workflow_name}]({run_url}) begins its verse upon this {event_type}..."
run-success: "✨ Lo! [{workflow_name}]({run_url}) hath woven its tale to completion, like a sonnet finding its final rhyme. 🌟"
run-failure: "🌧️ Alas! [{workflow_name}]({run_url}) {status}, its quill fallen mid-verse. The poem remains unfinished..."
diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml
index 6e907eafa3..5d71ee166c 100644
--- a/.github/workflows/delight.lock.yml
+++ b/.github/workflows/delight.lock.yml
@@ -28,7 +28,7 @@
# - shared/jqschema.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"49d8e5f50c2936a0f74096cc7d7e82e33842a8fca47bdd1a6309d315b3919acb"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e01a758d3c758d82eabd4d9eb701b44134df6d64acef6cfda2bfc18ba603d73d"}
name: "Delight"
"on":
@@ -1109,7 +1109,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }}
GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *User experience analysis by [{workflow_name}]({run_url})*\",\"runStarted\":\"📊 Delight Agent starting! [{workflow_name}]({run_url}) is analyzing user-facing aspects for improvement opportunities...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has identified targeted improvements for user experience.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *User experience analysis by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📊 Delight Agent starting! [{workflow_name}]({run_url}) is analyzing user-facing aspects for improvement opportunities...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has identified targeted improvements for user experience.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }}
GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }}
GH_AW_GROUP_REPORTS: "false"
@@ -1219,7 +1219,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *User experience analysis by [{workflow_name}]({run_url})*\",\"runStarted\":\"📊 Delight Agent starting! [{workflow_name}]({run_url}) is analyzing user-facing aspects for improvement opportunities...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has identified targeted improvements for user experience.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📊 *User experience analysis by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📊 Delight Agent starting! [{workflow_name}]({run_url}) is analyzing user-facing aspects for improvement opportunities...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has identified targeted improvements for user experience.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
GH_AW_TRACKER_ID: "delight-daily"
GH_AW_WORKFLOW_ID: "delight"
GH_AW_WORKFLOW_NAME: "Delight"
diff --git a/.github/workflows/delight.md b/.github/workflows/delight.md
index 11d972f622..3066c35c73 100644
--- a/.github/workflows/delight.md
+++ b/.github/workflows/delight.md
@@ -32,7 +32,7 @@ safe-outputs:
max: 2
group: true
messages:
- footer: "> 📊 *User experience analysis by [{workflow_name}]({run_url})*"
+ footer: "> 📊 *User experience analysis by [{workflow_name}]({run_url})*{history_link}"
run-started: "📊 Delight Agent starting! [{workflow_name}]({run_url}) is analyzing user-facing aspects for improvement opportunities..."
run-success: "✅ Analysis complete! [{workflow_name}]({run_url}) has identified targeted improvements for user experience."
run-failure: "⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs..."
diff --git a/.github/workflows/dev-hawk.lock.yml b/.github/workflows/dev-hawk.lock.yml
index 1662e23f49..16a09f19f7 100644
--- a/.github/workflows/dev-hawk.lock.yml
+++ b/.github/workflows/dev-hawk.lock.yml
@@ -23,7 +23,7 @@
#
# Monitors development workflow activities and provides real-time alerts and insights on pull requests and CI status
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"6886ae1b7a01524693b0e553d72c1446a2e2096ed0709d3e4d2d7b060120ff20"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"aa448b3fcead039b6003089c1039cb3d15ce90ec940704c2e34f745bc25cc03f"}
name: "Dev Hawk"
"on":
@@ -1067,7 +1067,7 @@ jobs:
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "dev-hawk"
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦅 *Observed from above by [{workflow_name}]({run_url})*\",\"runStarted\":\"🦅 Dev Hawk circles the sky! [{workflow_name}]({run_url}) is monitoring this {event_type} from above...\",\"runSuccess\":\"🦅 Hawk eyes report! [{workflow_name}]({run_url}) has completed reconnaissance. Intel delivered! 🎯\",\"runFailure\":\"🦅 Hawk down! [{workflow_name}]({run_url}) {status}. The skies grow quiet...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦅 *Observed from above by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🦅 Dev Hawk circles the sky! [{workflow_name}]({run_url}) is monitoring this {event_type} from above...\",\"runSuccess\":\"🦅 Hawk eyes report! [{workflow_name}]({run_url}) has completed reconnaissance. Intel delivered! 🎯\",\"runFailure\":\"🦅 Hawk down! [{workflow_name}]({run_url}) {status}. The skies grow quiet...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1140,7 +1140,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦅 *Observed from above by [{workflow_name}]({run_url})*\",\"runStarted\":\"🦅 Dev Hawk circles the sky! [{workflow_name}]({run_url}) is monitoring this {event_type} from above...\",\"runSuccess\":\"🦅 Hawk eyes report! [{workflow_name}]({run_url}) has completed reconnaissance. Intel delivered! 🎯\",\"runFailure\":\"🦅 Hawk down! [{workflow_name}]({run_url}) {status}. The skies grow quiet...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🦅 *Observed from above by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🦅 Dev Hawk circles the sky! [{workflow_name}]({run_url}) is monitoring this {event_type} from above...\",\"runSuccess\":\"🦅 Hawk eyes report! [{workflow_name}]({run_url}) has completed reconnaissance. Intel delivered! 🎯\",\"runFailure\":\"🦅 Hawk down! [{workflow_name}]({run_url}) {status}. The skies grow quiet...\"}"
GH_AW_WORKFLOW_ID: "dev-hawk"
GH_AW_WORKFLOW_NAME: "Dev Hawk"
outputs:
diff --git a/.github/workflows/dev-hawk.md b/.github/workflows/dev-hawk.md
index 0a897b6ffb..1d92dab54c 100644
--- a/.github/workflows/dev-hawk.md
+++ b/.github/workflows/dev-hawk.md
@@ -26,7 +26,7 @@ safe-outputs:
max: 1
target: "*"
messages:
- footer: "> 🦅 *Observed from above by [{workflow_name}]({run_url})*"
+ footer: "> 🦅 *Observed from above by [{workflow_name}]({run_url})*{history_link}"
run-started: "🦅 Dev Hawk circles the sky! [{workflow_name}]({run_url}) is monitoring this {event_type} from above..."
run-success: "🦅 Hawk eyes report! [{workflow_name}]({run_url}) has completed reconnaissance. Intel delivered! 🎯"
run-failure: "🦅 Hawk down! [{workflow_name}]({run_url}) {status}. The skies grow quiet..."
diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml
index d36a0181f3..ca0043d647 100644
--- a/.github/workflows/discussion-task-miner.lock.yml
+++ b/.github/workflows/discussion-task-miner.lock.yml
@@ -28,7 +28,7 @@
# - shared/jqschema.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ffd2aae4d5f4bf6b20fb1abcc45e1319b957bc3e4bc2d3c5208ace42fdf132a3"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"369306db8e069e8fb4ba4a3dbc0d85f4455b1aa0b39e52107b7822a8ef096aba"}
name: "Discussion Task Miner - Code Quality Improvement Agent"
"on":
@@ -1083,7 +1083,7 @@ jobs:
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "discussion-task-miner"
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Task mining by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 Discussion Task Miner starting! [{workflow_name}]({run_url}) is scanning discussions for code quality improvements...\",\"runSuccess\":\"✅ Task mining complete! [{workflow_name}]({run_url}) has identified actionable code quality tasks. 📊\",\"runFailure\":\"⚠️ Task mining interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Task mining by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔍 Discussion Task Miner starting! [{workflow_name}]({run_url}) is scanning discussions for code quality improvements...\",\"runSuccess\":\"✅ Task mining complete! [{workflow_name}]({run_url}) has identified actionable code quality tasks. 📊\",\"runFailure\":\"⚠️ Task mining interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
GH_AW_REPO_MEMORY_VALIDATION_FAILED_default: ${{ needs.push_repo_memory.outputs.validation_failed_default }}
GH_AW_REPO_MEMORY_VALIDATION_ERROR_default: ${{ needs.push_repo_memory.outputs.validation_error_default }}
GH_AW_GROUP_REPORTS: "false"
@@ -1194,7 +1194,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Task mining by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 Discussion Task Miner starting! [{workflow_name}]({run_url}) is scanning discussions for code quality improvements...\",\"runSuccess\":\"✅ Task mining complete! [{workflow_name}]({run_url}) has identified actionable code quality tasks. 📊\",\"runFailure\":\"⚠️ Task mining interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Task mining by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔍 Discussion Task Miner starting! [{workflow_name}]({run_url}) is scanning discussions for code quality improvements...\",\"runSuccess\":\"✅ Task mining complete! [{workflow_name}]({run_url}) has identified actionable code quality tasks. 📊\",\"runFailure\":\"⚠️ Task mining interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}"
GH_AW_TRACKER_ID: "discussion-task-miner"
GH_AW_WORKFLOW_ID: "discussion-task-miner"
GH_AW_WORKFLOW_NAME: "Discussion Task Miner - Code Quality Improvement Agent"
diff --git a/.github/workflows/discussion-task-miner.md b/.github/workflows/discussion-task-miner.md
index a2d9e2461c..56de6f4b13 100644
--- a/.github/workflows/discussion-task-miner.md
+++ b/.github/workflows/discussion-task-miner.md
@@ -31,7 +31,7 @@ safe-outputs:
add-comment:
max: 3
messages:
- footer: "> 🔍 *Task mining by [{workflow_name}]({run_url})*"
+ footer: "> 🔍 *Task mining by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔍 Discussion Task Miner starting! [{workflow_name}]({run_url}) is scanning discussions for code quality improvements..."
run-success: "✅ Task mining complete! [{workflow_name}]({run_url}) has identified actionable code quality tasks. 📊"
run-failure: "⚠️ Task mining interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs..."
diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml
index 1e1366c32a..f4198fc5fb 100644
--- a/.github/workflows/grumpy-reviewer.lock.yml
+++ b/.github/workflows/grumpy-reviewer.lock.yml
@@ -23,7 +23,7 @@
#
# Performs critical code review with a focus on edge cases, potential bugs, and code quality issues
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ca707f3cb9152f02cb85c9df3d1460542d8790c63497ba41d5ae6f5554d1da5b"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"403d9936fc6249000fae23cde6a8f3c8cc9247d18a0878db821aa3fa2766b340"}
name: "Grumpy Code Reviewer 🔥"
"on":
@@ -1086,7 +1086,7 @@ jobs:
GH_AW_WORKFLOW_ID: "grumpy-reviewer"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 😤 *Reluctantly reviewed by [{workflow_name}]({run_url})*\",\"runStarted\":\"😤 *sigh* [{workflow_name}]({run_url}) is begrudgingly looking at this {event_type}... This better be worth my time.\",\"runSuccess\":\"😤 Fine. [{workflow_name}]({run_url}) finished the review. It wasn't completely terrible. I guess. 🙄\",\"runFailure\":\"😤 Great. [{workflow_name}]({run_url}) {status}. As if my day couldn't get any worse...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 😤 *Reluctantly reviewed by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"😤 *sigh* [{workflow_name}]({run_url}) is begrudgingly looking at this {event_type}... This better be worth my time.\",\"runSuccess\":\"😤 Fine. [{workflow_name}]({run_url}) finished the review. It wasn't completely terrible. I guess. 🙄\",\"runFailure\":\"😤 Great. [{workflow_name}]({run_url}) {status}. As if my day couldn't get any worse...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1187,7 +1187,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 😤 *Reluctantly reviewed by [{workflow_name}]({run_url})*\",\"runStarted\":\"😤 *sigh* [{workflow_name}]({run_url}) is begrudgingly looking at this {event_type}... This better be worth my time.\",\"runSuccess\":\"😤 Fine. [{workflow_name}]({run_url}) finished the review. It wasn't completely terrible. I guess. 🙄\",\"runFailure\":\"😤 Great. [{workflow_name}]({run_url}) {status}. As if my day couldn't get any worse...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 😤 *Reluctantly reviewed by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"😤 *sigh* [{workflow_name}]({run_url}) is begrudgingly looking at this {event_type}... This better be worth my time.\",\"runSuccess\":\"😤 Fine. [{workflow_name}]({run_url}) finished the review. It wasn't completely terrible. I guess. 🙄\",\"runFailure\":\"😤 Great. [{workflow_name}]({run_url}) {status}. As if my day couldn't get any worse...\"}"
GH_AW_WORKFLOW_ID: "grumpy-reviewer"
GH_AW_WORKFLOW_NAME: "Grumpy Code Reviewer 🔥"
outputs:
diff --git a/.github/workflows/grumpy-reviewer.md b/.github/workflows/grumpy-reviewer.md
index 3464635949..1f1b17896f 100644
--- a/.github/workflows/grumpy-reviewer.md
+++ b/.github/workflows/grumpy-reviewer.md
@@ -20,7 +20,7 @@ safe-outputs:
submit-pull-request-review:
max: 1
messages:
- footer: "> 😤 *Reluctantly reviewed by [{workflow_name}]({run_url})*"
+ footer: "> 😤 *Reluctantly reviewed by [{workflow_name}]({run_url})*{history_link}"
run-started: "😤 *sigh* [{workflow_name}]({run_url}) is begrudgingly looking at this {event_type}... This better be worth my time."
run-success: "😤 Fine. [{workflow_name}]({run_url}) finished the review. It wasn't completely terrible. I guess. 🙄"
run-failure: "😤 Great. [{workflow_name}]({run_url}) {status}. As if my day couldn't get any worse..."
diff --git a/.github/workflows/issue-monster.lock.yml b/.github/workflows/issue-monster.lock.yml
index 395b06af9d..cb06127da9 100644
--- a/.github/workflows/issue-monster.lock.yml
+++ b/.github/workflows/issue-monster.lock.yml
@@ -23,7 +23,7 @@
#
# The Cookie Monster of issues - assigns issues to Copilot coding agent one at a time
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"d412096e32d3063c5bd537ff9f6978f59d9e529955396ccfa768eb96635593dc"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"2ababe1bdc7d094c401b9491ec0f362786fabd31e1e5fc1025db33681912136a"}
name: "Issue Monster"
"on":
@@ -1028,7 +1028,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_ASSIGNMENT_ERRORS: ${{ needs.safe_outputs.outputs.assign_to_agent_assignment_errors }}
GH_AW_ASSIGNMENT_ERROR_COUNT: ${{ needs.safe_outputs.outputs.assign_to_agent_assignment_error_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🍪 *Om nom nom by [{workflow_name}]({run_url})*\",\"runStarted\":\"🍪 ISSUE! ISSUE! [{workflow_name}]({run_url}) hungry for issues on this {event_type}! Om nom nom...\",\"runSuccess\":\"🍪 YUMMY! [{workflow_name}]({run_url}) ate the issues! That was DELICIOUS! Me want MORE! 😋\",\"runFailure\":\"🍪 Aww... [{workflow_name}]({run_url}) {status}. No cookie for monster today... 😢\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🍪 *Om nom nom by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🍪 ISSUE! ISSUE! [{workflow_name}]({run_url}) hungry for issues on this {event_type}! Om nom nom...\",\"runSuccess\":\"🍪 YUMMY! [{workflow_name}]({run_url}) ate the issues! That was DELICIOUS! Me want MORE! 😋\",\"runFailure\":\"🍪 Aww... [{workflow_name}]({run_url}) {status}. No cookie for monster today... 😢\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "30"
with:
@@ -1127,7 +1127,7 @@ jobs:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
GH_AW_ENGINE_MODEL: "gpt-5.1-codex-mini"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🍪 *Om nom nom by [{workflow_name}]({run_url})*\",\"runStarted\":\"🍪 ISSUE! ISSUE! [{workflow_name}]({run_url}) hungry for issues on this {event_type}! Om nom nom...\",\"runSuccess\":\"🍪 YUMMY! [{workflow_name}]({run_url}) ate the issues! That was DELICIOUS! Me want MORE! 😋\",\"runFailure\":\"🍪 Aww... [{workflow_name}]({run_url}) {status}. No cookie for monster today... 😢\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🍪 *Om nom nom by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🍪 ISSUE! ISSUE! [{workflow_name}]({run_url}) hungry for issues on this {event_type}! Om nom nom...\",\"runSuccess\":\"🍪 YUMMY! [{workflow_name}]({run_url}) ate the issues! That was DELICIOUS! Me want MORE! 😋\",\"runFailure\":\"🍪 Aww... [{workflow_name}]({run_url}) {status}. No cookie for monster today... 😢\"}"
GH_AW_WORKFLOW_ID: "issue-monster"
GH_AW_WORKFLOW_NAME: "Issue Monster"
outputs:
diff --git a/.github/workflows/issue-monster.md b/.github/workflows/issue-monster.md
index 9fa45cafad..0615f91726 100644
--- a/.github/workflows/issue-monster.md
+++ b/.github/workflows/issue-monster.md
@@ -371,7 +371,7 @@ safe-outputs:
max: 3
target: "*"
messages:
- footer: "> 🍪 *Om nom nom by [{workflow_name}]({run_url})*"
+ footer: "> 🍪 *Om nom nom by [{workflow_name}]({run_url})*{history_link}"
run-started: "🍪 ISSUE! ISSUE! [{workflow_name}]({run_url}) hungry for issues on this {event_type}! Om nom nom..."
run-success: "🍪 YUMMY! [{workflow_name}]({run_url}) ate the issues! That was DELICIOUS! Me want MORE! 😋"
run-failure: "🍪 Aww... [{workflow_name}]({run_url}) {status}. No cookie for monster today... 😢"
diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml
index 6ccd8213df..42d44920ba 100644
--- a/.github/workflows/pdf-summary.lock.yml
+++ b/.github/workflows/pdf-summary.lock.yml
@@ -27,7 +27,7 @@
# Imports:
# - shared/mcp/markitdown.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"679f539777c41eaf2cce6d6f0fe7a8317fd60276472fbe133957800bef530785"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"6d3174d6f6e18cf0e99b8c93c294401c6d7ddb699196eaa13776f0b49f5909ed"}
name: "Resource Summarizer Agent"
"on":
@@ -1111,7 +1111,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }}
GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📄 *Summary compiled by [{workflow_name}]({run_url})*\",\"runStarted\":\"📖 Page by page! [{workflow_name}]({run_url}) is reading through this {event_type}...\",\"runSuccess\":\"📚 TL;DR ready! [{workflow_name}]({run_url}) has distilled the essence. Knowledge condensed! ✨\",\"runFailure\":\"📖 Reading interrupted! [{workflow_name}]({run_url}) {status}. The document remains unsummarized...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📄 *Summary compiled by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📖 Page by page! [{workflow_name}]({run_url}) is reading through this {event_type}...\",\"runSuccess\":\"📚 TL;DR ready! [{workflow_name}]({run_url}) has distilled the essence. Knowledge condensed! ✨\",\"runFailure\":\"📖 Reading interrupted! [{workflow_name}]({run_url}) {status}. The document remains unsummarized...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1216,7 +1216,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📄 *Summary compiled by [{workflow_name}]({run_url})*\",\"runStarted\":\"📖 Page by page! [{workflow_name}]({run_url}) is reading through this {event_type}...\",\"runSuccess\":\"📚 TL;DR ready! [{workflow_name}]({run_url}) has distilled the essence. Knowledge condensed! ✨\",\"runFailure\":\"📖 Reading interrupted! [{workflow_name}]({run_url}) {status}. The document remains unsummarized...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📄 *Summary compiled by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📖 Page by page! [{workflow_name}]({run_url}) is reading through this {event_type}...\",\"runSuccess\":\"📚 TL;DR ready! [{workflow_name}]({run_url}) has distilled the essence. Knowledge condensed! ✨\",\"runFailure\":\"📖 Reading interrupted! [{workflow_name}]({run_url}) {status}. The document remains unsummarized...\"}"
GH_AW_WORKFLOW_ID: "pdf-summary"
GH_AW_WORKFLOW_NAME: "Resource Summarizer Agent"
outputs:
diff --git a/.github/workflows/pdf-summary.md b/.github/workflows/pdf-summary.md
index e7722200dc..1ae05ec14b 100644
--- a/.github/workflows/pdf-summary.md
+++ b/.github/workflows/pdf-summary.md
@@ -40,7 +40,7 @@ safe-outputs:
expires: 1d
max: 1
messages:
- footer: "> 📄 *Summary compiled by [{workflow_name}]({run_url})*"
+ footer: "> 📄 *Summary compiled by [{workflow_name}]({run_url})*{history_link}"
run-started: "📖 Page by page! [{workflow_name}]({run_url}) is reading through this {event_type}..."
run-success: "📚 TL;DR ready! [{workflow_name}]({run_url}) has distilled the essence. Knowledge condensed! ✨"
run-failure: "📖 Reading interrupted! [{workflow_name}]({run_url}) {status}. The document remains unsummarized..."
diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml
index 87802301b5..8c45d6fea0 100644
--- a/.github/workflows/poem-bot.lock.yml
+++ b/.github/workflows/poem-bot.lock.yml
@@ -27,7 +27,7 @@
# Imports:
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"314f6f54602697187fcd162e43ce69f5549c8c2c7a8fac1c609dd9411807b66c"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e24bfae6e6ba9dc7f6a26fe8161c93e8774e99aa4873bb6744f0c887c91a4483"}
name: "Poem Bot - A Creative Agentic Workflow"
"on":
@@ -1704,7 +1704,7 @@ jobs:
GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Verses penned by [{workflow_name}]({run_url})*\",\"runStarted\":\"🎭 Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}...\",\"runSuccess\":\"🪶 The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! 👏\",\"runFailure\":\"🎭 Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Verses penned by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🎭 Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}...\",\"runSuccess\":\"🪶 The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! 👏\",\"runFailure\":\"🎭 Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1824,7 +1824,7 @@ jobs:
GH_AW_ENGINE_ID: "copilot"
GH_AW_ENGINE_MODEL: "gpt-5"
GH_AW_SAFE_OUTPUTS_STAGED: "true"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Verses penned by [{workflow_name}]({run_url})*\",\"runStarted\":\"🎭 Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}...\",\"runSuccess\":\"🪶 The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! 👏\",\"runFailure\":\"🎭 Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Verses penned by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🎭 Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}...\",\"runSuccess\":\"🪶 The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! 👏\",\"runFailure\":\"🎭 Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung...\"}"
GH_AW_WORKFLOW_ID: "poem-bot"
GH_AW_WORKFLOW_NAME: "Poem Bot - A Creative Agentic Workflow"
outputs:
@@ -2040,7 +2040,7 @@ jobs:
GH_AW_ENGINE_ID: "copilot"
GH_AW_ENGINE_MODEL: "gpt-5"
GH_AW_SAFE_OUTPUTS_STAGED: "true"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Verses penned by [{workflow_name}]({run_url})*\",\"runStarted\":\"🎭 Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}...\",\"runSuccess\":\"🪶 The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! 👏\",\"runFailure\":\"🎭 Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🪶 *Verses penned by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🎭 Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}...\",\"runSuccess\":\"🪶 The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! 👏\",\"runFailure\":\"🎭 Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung...\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
diff --git a/.github/workflows/poem-bot.md b/.github/workflows/poem-bot.md
index 398d6b3379..b0688560b1 100644
--- a/.github/workflows/poem-bot.md
+++ b/.github/workflows/poem-bot.md
@@ -136,7 +136,7 @@ safe-outputs:
# Custom messages in poetic style
messages:
- footer: "> 🪶 *Verses penned by [{workflow_name}]({run_url})*"
+ footer: "> 🪶 *Verses penned by [{workflow_name}]({run_url})*{history_link}"
run-started: "🎭 Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}..."
run-success: "🪶 The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! 👏"
run-failure: "🎭 Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung..."
diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml
index f329af2bd1..bca1a771be 100644
--- a/.github/workflows/pr-nitpick-reviewer.lock.yml
+++ b/.github/workflows/pr-nitpick-reviewer.lock.yml
@@ -27,7 +27,7 @@
# Imports:
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"a80495182f8b00cbd45aa46685d5cd2410e5d01d1fdaf261137ad49a1be16ffc"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"02499e8cdb83ed473b50353b2f91edd95d5c962027fc11a8aaf5b11e67096427"}
name: "PR Nitpick Reviewer 🔍"
"on":
@@ -1183,7 +1183,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }}
GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Meticulously inspected by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔬 Adjusting monocle... [{workflow_name}]({run_url}) is scrutinizing every pixel of this {event_type}...\",\"runSuccess\":\"🔍 Nitpicks catalogued! [{workflow_name}]({run_url}) has documented all the tiny details. Perfection awaits! ✅\",\"runFailure\":\"🔬 Lens cracked! [{workflow_name}]({run_url}) {status}. Some nitpicks remain undetected...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Meticulously inspected by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔬 Adjusting monocle... [{workflow_name}]({run_url}) is scrutinizing every pixel of this {event_type}...\",\"runSuccess\":\"🔍 Nitpicks catalogued! [{workflow_name}]({run_url}) has documented all the tiny details. Perfection awaits! ✅\",\"runFailure\":\"🔬 Lens cracked! [{workflow_name}]({run_url}) {status}. Some nitpicks remain undetected...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1292,7 +1292,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Meticulously inspected by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔬 Adjusting monocle... [{workflow_name}]({run_url}) is scrutinizing every pixel of this {event_type}...\",\"runSuccess\":\"🔍 Nitpicks catalogued! [{workflow_name}]({run_url}) has documented all the tiny details. Perfection awaits! ✅\",\"runFailure\":\"🔬 Lens cracked! [{workflow_name}]({run_url}) {status}. Some nitpicks remain undetected...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Meticulously inspected by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔬 Adjusting monocle... [{workflow_name}]({run_url}) is scrutinizing every pixel of this {event_type}...\",\"runSuccess\":\"🔍 Nitpicks catalogued! [{workflow_name}]({run_url}) has documented all the tiny details. Perfection awaits! ✅\",\"runFailure\":\"🔬 Lens cracked! [{workflow_name}]({run_url}) {status}. Some nitpicks remain undetected...\"}"
GH_AW_WORKFLOW_ID: "pr-nitpick-reviewer"
GH_AW_WORKFLOW_NAME: "PR Nitpick Reviewer 🔍"
outputs:
diff --git a/.github/workflows/pr-nitpick-reviewer.md b/.github/workflows/pr-nitpick-reviewer.md
index a195439137..b07eed1b35 100644
--- a/.github/workflows/pr-nitpick-reviewer.md
+++ b/.github/workflows/pr-nitpick-reviewer.md
@@ -23,7 +23,7 @@ safe-outputs:
submit-pull-request-review:
max: 1
messages:
- footer: "> 🔍 *Meticulously inspected by [{workflow_name}]({run_url})*"
+ footer: "> 🔍 *Meticulously inspected by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔬 Adjusting monocle... [{workflow_name}]({run_url}) is scrutinizing every pixel of this {event_type}..."
run-success: "🔍 Nitpicks catalogued! [{workflow_name}]({run_url}) has documented all the tiny details. Perfection awaits! ✅"
run-failure: "🔬 Lens cracked! [{workflow_name}]({run_url}) {status}. Some nitpicks remain undetected..."
diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml
index d7a2a30106..52593115d8 100644
--- a/.github/workflows/q.lock.yml
+++ b/.github/workflows/q.lock.yml
@@ -27,7 +27,7 @@
# Imports:
# - shared/mcp/serena-go.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3d877629b8dbdc70c876f0006e969ffbcbf171447cebd877f2cd15883e36b7ff"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"cb6ed8dab707b132d94308cfeeaff3742ef7760d4c81f0b8b323517152ecc608"}
name: "Q"
"on":
@@ -1222,7 +1222,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎩 *Equipped by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔧 Pay attention, 007! [{workflow_name}]({run_url}) is preparing your gadgets for this {event_type}...\",\"runSuccess\":\"🎩 Mission equipment ready! [{workflow_name}]({run_url}) has optimized your workflow. Use wisely, 007! 🔫\",\"runFailure\":\"🔧 Technical difficulties! [{workflow_name}]({run_url}) {status}. Even Q Branch has bad days...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎩 *Equipped by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔧 Pay attention, 007! [{workflow_name}]({run_url}) is preparing your gadgets for this {event_type}...\",\"runSuccess\":\"🎩 Mission equipment ready! [{workflow_name}]({run_url}) has optimized your workflow. Use wisely, 007! 🔫\",\"runFailure\":\"🔧 Technical difficulties! [{workflow_name}]({run_url}) {status}. Even Q Branch has bad days...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1353,7 +1353,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎩 *Equipped by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔧 Pay attention, 007! [{workflow_name}]({run_url}) is preparing your gadgets for this {event_type}...\",\"runSuccess\":\"🎩 Mission equipment ready! [{workflow_name}]({run_url}) has optimized your workflow. Use wisely, 007! 🔫\",\"runFailure\":\"🔧 Technical difficulties! [{workflow_name}]({run_url}) {status}. Even Q Branch has bad days...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🎩 *Equipped by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔧 Pay attention, 007! [{workflow_name}]({run_url}) is preparing your gadgets for this {event_type}...\",\"runSuccess\":\"🎩 Mission equipment ready! [{workflow_name}]({run_url}) has optimized your workflow. Use wisely, 007! 🔫\",\"runFailure\":\"🔧 Technical difficulties! [{workflow_name}]({run_url}) {status}. Even Q Branch has bad days...\"}"
GH_AW_WORKFLOW_ID: "q"
GH_AW_WORKFLOW_NAME: "Q"
outputs:
diff --git a/.github/workflows/q.md b/.github/workflows/q.md
index 39b4cf5365..643e09877d 100644
--- a/.github/workflows/q.md
+++ b/.github/workflows/q.md
@@ -36,7 +36,7 @@ safe-outputs:
draft: false
if-no-changes: "ignore"
messages:
- footer: "> 🎩 *Equipped by [{workflow_name}]({run_url})*"
+ footer: "> 🎩 *Equipped by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔧 Pay attention, 007! [{workflow_name}]({run_url}) is preparing your gadgets for this {event_type}..."
run-success: "🎩 Mission equipment ready! [{workflow_name}]({run_url}) has optimized your workflow. Use wisely, 007! 🔫"
run-failure: "🔧 Technical difficulties! [{workflow_name}]({run_url}) {status}. Even Q Branch has bad days..."
diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml
index 60c945136a..4769772109 100644
--- a/.github/workflows/scout.lock.yml
+++ b/.github/workflows/scout.lock.yml
@@ -33,7 +33,7 @@
# - shared/mcp/tavily.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"d1b8f912fedaf229893c58ad94255da08c661a60d3bf2905782c024f805fd6aa"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"ab1cde07589013cf3883a1da93d56db5e5aa305c3baae6e98dae8954cf10dcdd"}
name: "Scout"
"on":
@@ -1241,7 +1241,7 @@ jobs:
GH_AW_WORKFLOW_ID: "scout"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔭 *Intelligence gathered by [{workflow_name}]({run_url})*\",\"runStarted\":\"🏕️ Scout on patrol! [{workflow_name}]({run_url}) is blazing trails through this {event_type}...\",\"runSuccess\":\"🔭 Recon complete! [{workflow_name}]({run_url}) has charted the territory. Map ready! 🗺️\",\"runFailure\":\"🏕️ Lost in the wilderness! [{workflow_name}]({run_url}) {status}. Sending search party...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔭 *Intelligence gathered by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🏕️ Scout on patrol! [{workflow_name}]({run_url}) is blazing trails through this {event_type}...\",\"runSuccess\":\"🔭 Recon complete! [{workflow_name}]({run_url}) has charted the territory. Map ready! 🗺️\",\"runFailure\":\"🏕️ Lost in the wilderness! [{workflow_name}]({run_url}) {status}. Sending search party...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "20"
with:
@@ -1355,7 +1355,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "claude"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔭 *Intelligence gathered by [{workflow_name}]({run_url})*\",\"runStarted\":\"🏕️ Scout on patrol! [{workflow_name}]({run_url}) is blazing trails through this {event_type}...\",\"runSuccess\":\"🔭 Recon complete! [{workflow_name}]({run_url}) has charted the territory. Map ready! 🗺️\",\"runFailure\":\"🏕️ Lost in the wilderness! [{workflow_name}]({run_url}) {status}. Sending search party...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔭 *Intelligence gathered by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🏕️ Scout on patrol! [{workflow_name}]({run_url}) is blazing trails through this {event_type}...\",\"runSuccess\":\"🔭 Recon complete! [{workflow_name}]({run_url}) has charted the territory. Map ready! 🗺️\",\"runFailure\":\"🏕️ Lost in the wilderness! [{workflow_name}]({run_url}) {status}. Sending search party...\"}"
GH_AW_WORKFLOW_ID: "scout"
GH_AW_WORKFLOW_NAME: "Scout"
outputs:
diff --git a/.github/workflows/scout.md b/.github/workflows/scout.md
index 59c5db846a..d240b82251 100644
--- a/.github/workflows/scout.md
+++ b/.github/workflows/scout.md
@@ -42,7 +42,7 @@ safe-outputs:
add-labels:
max: 1
messages:
- footer: "> 🔭 *Intelligence gathered by [{workflow_name}]({run_url})*"
+ footer: "> 🔭 *Intelligence gathered by [{workflow_name}]({run_url})*{history_link}"
run-started: "🏕️ Scout on patrol! [{workflow_name}]({run_url}) is blazing trails through this {event_type}..."
run-success: "🔭 Recon complete! [{workflow_name}]({run_url}) has charted the territory. Map ready! 🗺️"
run-failure: "🏕️ Lost in the wilderness! [{workflow_name}]({run_url}) {status}. Sending search party..."
diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml
index 3543374924..92849e7c6e 100644
--- a/.github/workflows/security-review.lock.yml
+++ b/.github/workflows/security-review.lock.yml
@@ -23,7 +23,7 @@
#
# Security-focused AI agent that reviews pull requests to identify changes that could weaken security posture or extend AWF boundaries
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"89b6c4fe1498ad945536eaa86140de2974414d1c9942926af9b2833c11eef069"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"d5881d67be07fecc7e9406368eba2019fc2dc659a2db705ea58278f705731b16"}
name: "Security Review Agent 🔒"
"on":
@@ -1165,7 +1165,7 @@ jobs:
GH_AW_WORKFLOW_ID: "security-review"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔒 *Security review by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 [{workflow_name}]({run_url}) is analyzing this {event_type} for security implications...\",\"runSuccess\":\"🔒 [{workflow_name}]({run_url}) completed the security review.\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status} during security review.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔒 *Security review by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔍 [{workflow_name}]({run_url}) is analyzing this {event_type} for security implications...\",\"runSuccess\":\"🔒 [{workflow_name}]({run_url}) completed the security review.\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status} during security review.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1266,7 +1266,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔒 *Security review by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 [{workflow_name}]({run_url}) is analyzing this {event_type} for security implications...\",\"runSuccess\":\"🔒 [{workflow_name}]({run_url}) completed the security review.\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status} during security review.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔒 *Security review by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔍 [{workflow_name}]({run_url}) is analyzing this {event_type} for security implications...\",\"runSuccess\":\"🔒 [{workflow_name}]({run_url}) completed the security review.\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status} during security review.\"}"
GH_AW_WORKFLOW_ID: "security-review"
GH_AW_WORKFLOW_NAME: "Security Review Agent 🔒"
outputs:
diff --git a/.github/workflows/security-review.md b/.github/workflows/security-review.md
index e91184d14c..e8e7261f26 100644
--- a/.github/workflows/security-review.md
+++ b/.github/workflows/security-review.md
@@ -26,7 +26,7 @@ safe-outputs:
submit-pull-request-review:
max: 1
messages:
- footer: "> 🔒 *Security review by [{workflow_name}]({run_url})*"
+ footer: "> 🔒 *Security review by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔍 [{workflow_name}]({run_url}) is analyzing this {event_type} for security implications..."
run-success: "🔒 [{workflow_name}]({run_url}) completed the security review."
run-failure: "⚠️ [{workflow_name}]({run_url}) {status} during security review."
diff --git a/.github/workflows/smoke-agent.lock.yml b/.github/workflows/smoke-agent.lock.yml
index 7cfac497e1..7a3ff62868 100644
--- a/.github/workflows/smoke-agent.lock.yml
+++ b/.github/workflows/smoke-agent.lock.yml
@@ -23,7 +23,7 @@
#
# Smoke test that validates assign-to-agent with the agentic-workflows custom agent
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"d2c4f0aa45ed728102302a9075bba4f4ec4d4c1a928971b40950889ba0ec15fb"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"53b841f3533e56fd2307fdc9ead2cc276bcb4fa7ff3e547aec2f1c2244f47833"}
name: "Smoke Agent"
"on":
@@ -133,7 +133,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Agent"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1039,7 +1039,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_ASSIGNMENT_ERRORS: ${{ needs.safe_outputs.outputs.assign_to_agent_assignment_errors }}
GH_AW_ASSIGNMENT_ERROR_COUNT: ${{ needs.safe_outputs.outputs.assign_to_agent_assignment_error_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1077,7 +1077,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Agent"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1133,7 +1133,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "codex"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🤖 *Smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}"
GH_AW_WORKFLOW_ID: "smoke-agent"
GH_AW_WORKFLOW_NAME: "Smoke Agent"
outputs:
diff --git a/.github/workflows/smoke-agent.md b/.github/workflows/smoke-agent.md
index 37bc2d912f..2a15e57061 100644
--- a/.github/workflows/smoke-agent.md
+++ b/.github/workflows/smoke-agent.md
@@ -29,7 +29,7 @@ safe-outputs:
hide-older-comments: true
max: 2
messages:
- footer: "> 🤖 *Smoke test by [{workflow_name}]({run_url})*"
+ footer: "> 🤖 *Smoke test by [{workflow_name}]({run_url})*{history_link}"
run-started: "🤖 [{workflow_name}]({run_url}) is looking for a Smoke issue to assign..."
run-success: "✅ [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent."
run-failure: "❌ [{workflow_name}]({run_url}) {status}. Check the logs for details."
diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml
index 24c16f77b2..92e0388c38 100644
--- a/.github/workflows/smoke-claude.lock.yml
+++ b/.github/workflows/smoke-claude.lock.yml
@@ -35,7 +35,7 @@
#
# inlined-imports: true
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"44795abbc68aff36a88e78da3acdaacdd1156a7f0abf1600e5a60943fa23edb3"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"db18e693a8f2c6dae969b17dfe2e0c3a3f7ea10e8e1292e71b8674294e5dfc6b"}
name: "Smoke Claude"
"on":
@@ -149,7 +149,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Claude"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -2601,7 +2601,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -2639,7 +2639,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Claude"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -2713,7 +2713,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "claude"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨\",\"runFailure\":\"💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}"
GH_AW_WORKFLOW_ID: "smoke-claude"
GH_AW_WORKFLOW_NAME: "Smoke Claude"
outputs:
diff --git a/.github/workflows/smoke-claude.md b/.github/workflows/smoke-claude.md
index 571446a28b..7a4e93d278 100644
--- a/.github/workflows/smoke-claude.md
+++ b/.github/workflows/smoke-claude.md
@@ -88,7 +88,7 @@ safe-outputs:
max: 2
target: "*"
messages:
- footer: "> 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*"
+ footer: "> 💥 *[THE END] — Illustrated by [{workflow_name}]({run_url})*{history_link}"
run-started: "💥 **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*"
run-success: "🎬 **THE END** — [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! ✨"
run-failure: "💫 **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges..."
diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml
index 87344cc4c6..3246a7ac06 100644
--- a/.github/workflows/smoke-codex.lock.yml
+++ b/.github/workflows/smoke-codex.lock.yml
@@ -28,7 +28,7 @@
# - shared/gh.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"3ebe89d515d272dc2a563f4cde2e033400a08293c12461af6ae3b7134c657493"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"b0d2bc9b08bd9968ab2dfacf004f1df93a0d83e2137a45bb5d634ba4ffefab44"}
name: "Smoke Codex"
"on":
@@ -143,7 +143,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Codex"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1498,7 +1498,7 @@ jobs:
GH_AW_WORKFLOW_ID: "smoke-codex"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1536,7 +1536,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Codex"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1608,7 +1608,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "codex"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟\",\"runFailure\":\"🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}"
GH_AW_WORKFLOW_ID: "smoke-codex"
GH_AW_WORKFLOW_NAME: "Smoke Codex"
outputs:
diff --git a/.github/workflows/smoke-codex.md b/.github/workflows/smoke-codex.md
index 1cce992416..f62145e219 100644
--- a/.github/workflows/smoke-codex.md
+++ b/.github/workflows/smoke-codex.md
@@ -57,7 +57,7 @@ safe-outputs:
max: 1
hide-comment:
messages:
- footer: "> 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*"
+ footer: "> 🔮 *The oracle has spoken through [{workflow_name}]({run_url})*{history_link}"
run-started: "🔮 The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}..."
run-success: "✨ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. 🌟"
run-failure: "🌑 The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation..."
diff --git a/.github/workflows/smoke-copilot-arm.lock.yml b/.github/workflows/smoke-copilot-arm.lock.yml
index 732d26d1e1..b2b7f0dd70 100644
--- a/.github/workflows/smoke-copilot-arm.lock.yml
+++ b/.github/workflows/smoke-copilot-arm.lock.yml
@@ -29,7 +29,7 @@
# - shared/github-queries-safe-input.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"c48c80387bfa8c38c2b91401970d6a06abfb23653e68538f8f267ee55c46b7d8"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"cf1f5c608523795735700f940e81346adf7deda93a6d6f7ce67469c7230d52d1"}
name: "Smoke Copilot ARM64"
"on":
@@ -141,7 +141,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Copilot ARM64"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -2020,7 +2020,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }}
GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -2058,7 +2058,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Copilot ARM64"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -2131,7 +2131,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
GH_AW_WORKFLOW_ID: "smoke-copilot-arm"
GH_AW_WORKFLOW_NAME: "Smoke Copilot ARM64"
outputs:
diff --git a/.github/workflows/smoke-copilot-arm.md b/.github/workflows/smoke-copilot-arm.md
index b4164765ef..05a8c7e686 100644
--- a/.github/workflows/smoke-copilot-arm.md
+++ b/.github/workflows/smoke-copilot-arm.md
@@ -102,7 +102,7 @@ safe-outputs:
fi
messages:
append-only-comments: true
- footer: "> 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*"
+ footer: "> 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}"
run-started: "📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing..."
run-success: "📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤"
run-failure: "📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident..."
diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml
index cf9dd2217a..25bec5718b 100644
--- a/.github/workflows/smoke-copilot.lock.yml
+++ b/.github/workflows/smoke-copilot.lock.yml
@@ -29,7 +29,7 @@
# - shared/github-queries-safe-input.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"104ae7d093a277f5ab07ee4ff516cc58f7bed0bea7bb8fba30f53eb038079763"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"d143f0ffe7b39be26e699e15f581038d7692fd3936cd0a1b7f5488e726a56405"}
name: "Smoke Copilot"
"on":
@@ -143,7 +143,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -2064,7 +2064,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CREATE_DISCUSSION_ERRORS: ${{ needs.safe_outputs.outputs.create_discussion_errors }}
GH_AW_CREATE_DISCUSSION_ERROR_COUNT: ${{ needs.safe_outputs.outputs.create_discussion_error_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -2102,7 +2102,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Copilot"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -2175,7 +2175,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤\",\"runFailure\":\"📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}"
GH_AW_WORKFLOW_ID: "smoke-copilot"
GH_AW_WORKFLOW_NAME: "Smoke Copilot"
outputs:
diff --git a/.github/workflows/smoke-copilot.md b/.github/workflows/smoke-copilot.md
index 25eeb4bb02..db542afb0b 100644
--- a/.github/workflows/smoke-copilot.md
+++ b/.github/workflows/smoke-copilot.md
@@ -105,7 +105,7 @@ safe-outputs:
fi
messages:
append-only-comments: true
- footer: "> 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*"
+ footer: "> 📰 *BREAKING: Report filed by [{workflow_name}]({run_url})*{history_link}"
run-started: "📰 BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing..."
run-success: "📰 VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. 🎤"
run-failure: "📰 DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident..."
diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml
index 0b9938de03..8d0e79a9c9 100644
--- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml
+++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml
@@ -23,7 +23,7 @@
#
# Smoke test validating cross-repo pull request creation in githubnext/gh-aw-side-repo
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"1bc008c7f23299326c6e307d71222d35fb56e68b9e649be54c73c94bbf660810"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7df6ac5fd0e9496ec5425a827a1abda3ebb1f52b59b4d1edc78b2358cdf1a856"}
name: "Smoke Create Cross-Repo PR"
"on":
@@ -128,7 +128,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Create Cross-Repo PR"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1156,7 +1156,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1208,7 +1208,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Create Cross-Repo PR"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1266,7 +1266,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}"
GH_AW_WORKFLOW_ID: "smoke-create-cross-repo-pr"
GH_AW_WORKFLOW_NAME: "Smoke Create Cross-Repo PR"
outputs:
diff --git a/.github/workflows/smoke-create-cross-repo-pr.md b/.github/workflows/smoke-create-cross-repo-pr.md
index f46fe11593..4dcb424d28 100644
--- a/.github/workflows/smoke-create-cross-repo-pr.md
+++ b/.github/workflows/smoke-create-cross-repo-pr.md
@@ -49,7 +49,7 @@ safe-outputs:
hide-older-comments: true
max: 2
messages:
- footer: "> 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*"
+ footer: "> 🔬 *Cross-repo smoke test by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔬 [{workflow_name}]({run_url}) is testing cross-repo PR creation in githubnext/gh-aw-side-repo..."
run-success: "✅ [{workflow_name}]({run_url}) successfully created a cross-repo PR in githubnext/gh-aw-side-repo!"
run-failure: "❌ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}"
diff --git a/.github/workflows/smoke-gemini.lock.yml b/.github/workflows/smoke-gemini.lock.yml
index 30320752bf..122e8898e7 100644
--- a/.github/workflows/smoke-gemini.lock.yml
+++ b/.github/workflows/smoke-gemini.lock.yml
@@ -28,7 +28,7 @@
# - shared/gh.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"95345f5bec2e20786d333877824bb16c47b438ecab2077f421fe38aeb01123d4"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"0daf3e3fd70f487864a1ae11dafd92fb015aed0e0bd633ce78a72118bac22825"}
name: "Smoke Gemini"
"on":
@@ -142,7 +142,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Gemini"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*{history_link}\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1238,7 +1238,7 @@ jobs:
GH_AW_WORKFLOW_ID: "smoke-gemini"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*{history_link}\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1276,7 +1276,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Gemini"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*{history_link}\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1348,7 +1348,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "gemini"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*{history_link}\",\"runStarted\":\"✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨\",\"runFailure\":\"⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}"
GH_AW_WORKFLOW_ID: "smoke-gemini"
GH_AW_WORKFLOW_NAME: "Smoke Gemini"
outputs:
diff --git a/.github/workflows/smoke-gemini.md b/.github/workflows/smoke-gemini.md
index 0f27546173..55406e97ee 100644
--- a/.github/workflows/smoke-gemini.md
+++ b/.github/workflows/smoke-gemini.md
@@ -42,7 +42,7 @@ safe-outputs:
add-labels:
allowed: [smoke-gemini]
messages:
- footer: "> ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*"
+ footer: "> ✨ *[{workflow_name}]({run_url}) — Powered by Gemini*{history_link}"
run-started: "✨ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}..."
run-success: "🚀 [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. ✨"
run-failure: "⚠️ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges..."
diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml
index fbb8ea21d4..82ebb8053a 100644
--- a/.github/workflows/smoke-multi-pr.lock.yml
+++ b/.github/workflows/smoke-multi-pr.lock.yml
@@ -23,7 +23,7 @@
#
# Test creating multiple pull requests in a single workflow run
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"0e6bb70daded757d833bccb6e8ddcc898890e9e7f282c228a1fddc93d7028a07"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f118d2ac9ab4ae2772a4462cb10352fba8e98d3ec1d7a4f26bd1ae2e26ad594f"}
name: "Smoke Multi PR"
"on":
@@ -137,7 +137,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Multi PR"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1098,7 +1098,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1150,7 +1150,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Multi PR"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1224,7 +1224,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}"
GH_AW_WORKFLOW_ID: "smoke-multi-pr"
GH_AW_WORKFLOW_NAME: "Smoke Multi PR"
outputs:
diff --git a/.github/workflows/smoke-multi-pr.md b/.github/workflows/smoke-multi-pr.md
index ff60f03f35..569de5833a 100644
--- a/.github/workflows/smoke-multi-pr.md
+++ b/.github/workflows/smoke-multi-pr.md
@@ -36,7 +36,7 @@ safe-outputs:
max: 1
messages:
append-only-comments: true
- footer: "> 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*"
+ footer: "> 🧪 *Multi PR smoke test by [{workflow_name}]({run_url})*{history_link}"
run-started: "🧪 [{workflow_name}]({run_url}) is now testing multiple PR creation..."
run-success: "✅ [{workflow_name}]({run_url}) successfully created multiple PRs."
run-failure: "❌ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs."
diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml
index 1f1f68826b..da1beb76d4 100644
--- a/.github/workflows/smoke-project.lock.yml
+++ b/.github/workflows/smoke-project.lock.yml
@@ -23,7 +23,7 @@
#
# Smoke Project - Test project operations
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"7aaaa336ef87b5c90766d153038baa65964cfff9142c5a8f3a470be962e8709f"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"62a1e7c54409a4610460677bbb71df79e88b6581934b10f182758930d66df8db"}
name: "Smoke Project"
"on":
@@ -135,7 +135,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Project"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1491,7 +1491,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "15"
with:
@@ -1543,7 +1543,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Project"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1617,7 +1617,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Project smoke test report by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
GH_AW_WORKFLOW_ID: "smoke-project"
GH_AW_WORKFLOW_NAME: "Smoke Project"
outputs:
diff --git a/.github/workflows/smoke-project.md b/.github/workflows/smoke-project.md
index c7bd393575..6f1a604d33 100644
--- a/.github/workflows/smoke-project.md
+++ b/.github/workflows/smoke-project.md
@@ -55,7 +55,7 @@ safe-outputs:
github-token: ${{ secrets.GH_AW_PROJECT_GITHUB_TOKEN }}
messages:
append-only-comments: true
- footer: "> 🧪 *Project smoke test report by [{workflow_name}]({run_url})*"
+ footer: "> 🧪 *Project smoke test report by [{workflow_name}]({run_url})*{history_link}"
run-started: "🧪 [{workflow_name}]({run_url}) is now testing project operations..."
run-success: "✅ [{workflow_name}]({run_url}) completed successfully. All project operations validated."
run-failure: "❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details."
diff --git a/.github/workflows/smoke-temporary-id.lock.yml b/.github/workflows/smoke-temporary-id.lock.yml
index 556d891f1f..bf36df930c 100644
--- a/.github/workflows/smoke-temporary-id.lock.yml
+++ b/.github/workflows/smoke-temporary-id.lock.yml
@@ -23,7 +23,7 @@
#
# Test temporary ID functionality for issue chaining and cross-references
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"17699cbdd3a52636d274f4f6a24975a9d66eb82fa1eb90ff2b6f0de4581bfa2d"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f821cce0a855c7806ea2b3d6f2e9bfa9817e799afdb0e9376d227b7793517bb2"}
name: "Smoke Temporary ID"
"on":
@@ -135,7 +135,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Temporary ID"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1108,7 +1108,7 @@ jobs:
GH_AW_WORKFLOW_ID: "smoke-temporary-id"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1146,7 +1146,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Temporary ID"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1218,7 +1218,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}"
GH_AW_WORKFLOW_ID: "smoke-temporary-id"
GH_AW_WORKFLOW_NAME: "Smoke Temporary ID"
outputs:
diff --git a/.github/workflows/smoke-temporary-id.md b/.github/workflows/smoke-temporary-id.md
index 3b3270fa85..311eba658d 100644
--- a/.github/workflows/smoke-temporary-id.md
+++ b/.github/workflows/smoke-temporary-id.md
@@ -34,7 +34,7 @@ safe-outputs:
hide-older-comments: true
messages:
append-only-comments: true
- footer: "> 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*"
+ footer: "> 🧪 *Temporary ID smoke test by [{workflow_name}]({run_url})*{history_link}"
run-started: "🧪 [{workflow_name}]({run_url}) is now testing temporary ID functionality..."
run-success: "✅ [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed."
run-failure: "❌ [{workflow_name}]({run_url}) encountered failures. Check the logs for details."
diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml
index e26d023265..f0097889d8 100644
--- a/.github/workflows/smoke-test-tools.lock.yml
+++ b/.github/workflows/smoke-test-tools.lock.yml
@@ -23,7 +23,7 @@
#
# Smoke test to validate common development tools are available in the agent container
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"66719f9b4f14ffe4813576ded899fbfeedc87461d1b7e22cf32d93d7f49b5f96"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"69df18949531a58c78eb1e303a1873629791d179b7184bb229c00a1a90c572e7"}
name: "Agent Container Smoke Test"
"on":
@@ -134,7 +134,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Agent Container Smoke Test"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1011,7 +1011,7 @@ jobs:
GH_AW_WORKFLOW_ID: "smoke-test-tools"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "5"
with:
@@ -1049,7 +1049,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Agent Container Smoke Test"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1105,7 +1105,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔧 *Tool validation by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}"
GH_AW_WORKFLOW_ID: "smoke-test-tools"
GH_AW_WORKFLOW_NAME: "Agent Container Smoke Test"
outputs:
diff --git a/.github/workflows/smoke-test-tools.md b/.github/workflows/smoke-test-tools.md
index 57c5b912f5..70d87c9c5a 100644
--- a/.github/workflows/smoke-test-tools.md
+++ b/.github/workflows/smoke-test-tools.md
@@ -38,7 +38,7 @@ safe-outputs:
hide-older-comments: true
max: 2
messages:
- footer: "> 🔧 *Tool validation by [{workflow_name}]({run_url})*"
+ footer: "> 🔧 *Tool validation by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔧 Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools..."
run-success: "✅ All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready."
run-failure: "❌ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}"
diff --git a/.github/workflows/smoke-update-cross-repo-pr.lock.yml b/.github/workflows/smoke-update-cross-repo-pr.lock.yml
index 8b3d864efb..235cc5cf00 100644
--- a/.github/workflows/smoke-update-cross-repo-pr.lock.yml
+++ b/.github/workflows/smoke-update-cross-repo-pr.lock.yml
@@ -23,7 +23,7 @@
#
# Smoke test validating cross-repo pull request updates in githubnext/gh-aw-side-repo by adding lines from Homer's Odyssey to the README
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"eabd7104577d8493003ffe2675348d488509f2aa274a9af821d7f87a95f1130e"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"0dbcea46ce3435c40cb5ca9fcbd9feb04e8720f1b0b3b89993c94ae5d7bf3cd0"}
name: "Smoke Update Cross-Repo PR"
"on":
@@ -128,7 +128,7 @@ jobs:
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_NAME: "Smoke Update Cross-Repo PR"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
@@ -1158,7 +1158,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1196,7 +1196,7 @@ jobs:
GH_AW_WORKFLOW_NAME: "Smoke Update Cross-Repo PR"
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_DETECTION_CONCLUSION: ${{ needs.agent.outputs.detection_conclusion }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
@@ -1254,7 +1254,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}"
GH_AW_WORKFLOW_ID: "smoke-update-cross-repo-pr"
GH_AW_WORKFLOW_NAME: "Smoke Update Cross-Repo PR"
outputs:
diff --git a/.github/workflows/smoke-update-cross-repo-pr.md b/.github/workflows/smoke-update-cross-repo-pr.md
index 23c97c115c..3f8ee59c4a 100644
--- a/.github/workflows/smoke-update-cross-repo-pr.md
+++ b/.github/workflows/smoke-update-cross-repo-pr.md
@@ -51,7 +51,7 @@ safe-outputs:
if-no-changes: "error"
target: "1" # PR #1
messages:
- footer: "> 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*"
+ footer: "> 📜 *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*{history_link}"
run-started: "📜 [{workflow_name}]({run_url}) is adding the next Odyssey line to githubnext/gh-aw-side-repo PR #1..."
run-success: "✅ [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!"
run-failure: "❌ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}"
diff --git a/.github/workflows/smoke-workflow-call.lock.yml b/.github/workflows/smoke-workflow-call.lock.yml
index ec4792ca66..8c89e82b7d 100644
--- a/.github/workflows/smoke-workflow-call.lock.yml
+++ b/.github/workflows/smoke-workflow-call.lock.yml
@@ -23,7 +23,7 @@
#
# Reusable workflow to validate checkout from fork works correctly in workflow_call context
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"bcccb0acca0e383402dda3483b94a812222ea4790115148dfa062f5fbe6d4877"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e4682ae552e6f61a928617dd63c45800073bec5a985c27eb1f470bf4ef3a19f0"}
name: "Smoke Workflow Call"
"on":
@@ -978,7 +978,7 @@ jobs:
GH_AW_WORKFLOW_ID: "smoke-workflow-call"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔁 *workflow_call smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🔁 [{workflow_name}]({run_url}) is validating workflow_call checkout...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully validated workflow_call checkout.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to validate workflow_call checkout. Check the logs.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔁 *workflow_call smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🔁 [{workflow_name}]({run_url}) is validating workflow_call checkout...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully validated workflow_call checkout.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to validate workflow_call checkout. Check the logs.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1050,7 +1050,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔁 *workflow_call smoke test by [{workflow_name}]({run_url})*\",\"appendOnlyComments\":true,\"runStarted\":\"🔁 [{workflow_name}]({run_url}) is validating workflow_call checkout...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully validated workflow_call checkout.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to validate workflow_call checkout. Check the logs.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔁 *workflow_call smoke test by [{workflow_name}]({run_url})*{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"🔁 [{workflow_name}]({run_url}) is validating workflow_call checkout...\",\"runSuccess\":\"✅ [{workflow_name}]({run_url}) successfully validated workflow_call checkout.\",\"runFailure\":\"❌ [{workflow_name}]({run_url}) failed to validate workflow_call checkout. Check the logs.\"}"
GH_AW_WORKFLOW_ID: "smoke-workflow-call"
GH_AW_WORKFLOW_NAME: "Smoke Workflow Call"
outputs:
diff --git a/.github/workflows/smoke-workflow-call.md b/.github/workflows/smoke-workflow-call.md
index 3ffed4936d..df2d161f5d 100644
--- a/.github/workflows/smoke-workflow-call.md
+++ b/.github/workflows/smoke-workflow-call.md
@@ -25,7 +25,7 @@ safe-outputs:
max: 1
messages:
append-only-comments: true
- footer: "> 🔁 *workflow_call smoke test by [{workflow_name}]({run_url})*"
+ footer: "> 🔁 *workflow_call smoke test by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔁 [{workflow_name}]({run_url}) is validating workflow_call checkout..."
run-success: "✅ [{workflow_name}]({run_url}) successfully validated workflow_call checkout."
run-failure: "❌ [{workflow_name}]({run_url}) failed to validate workflow_call checkout. Check the logs."
diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml
index 1bec44c7db..e0b67dcca6 100644
--- a/.github/workflows/stale-repo-identifier.lock.yml
+++ b/.github/workflows/stale-repo-identifier.lock.yml
@@ -29,7 +29,7 @@
# - shared/python-dataviz.md
# - shared/trending-charts-simple.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"bc4f3dae75f5ebe30a9b88bb074b181920b170cf45b7d0a95bdb2785b8337346"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"cb88eff6090a5e966484e7a4dd6f39dcd1b246e1547c910ce2695d7faf605d00"}
name: "Stale Repository Identifier"
"on":
@@ -1134,7 +1134,7 @@ jobs:
GH_AW_WORKFLOW_ID: "stale-repo-identifier"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Analysis by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Analysis by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔍 Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "45"
with:
@@ -1173,7 +1173,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Analysis by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Analysis by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔍 Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}.\"}"
GH_AW_WORKFLOW_ID: "stale-repo-identifier"
GH_AW_WORKFLOW_NAME: "Stale Repository Identifier"
outputs:
@@ -1343,7 +1343,7 @@ jobs:
GH_AW_ASSETS_ALLOWED_EXTS: ".png,.jpg,.jpeg"
GH_AW_WORKFLOW_NAME: "Stale Repository Identifier"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Analysis by [{workflow_name}]({run_url})*\",\"runStarted\":\"🔍 Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🔍 *Analysis by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"🔍 Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity...\",\"runSuccess\":\"✅ Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories.\",\"runFailure\":\"⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}.\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
diff --git a/.github/workflows/stale-repo-identifier.md b/.github/workflows/stale-repo-identifier.md
index 189d618ed2..3261daf0a7 100644
--- a/.github/workflows/stale-repo-identifier.md
+++ b/.github/workflows/stale-repo-identifier.md
@@ -40,7 +40,7 @@ safe-outputs:
group: true
upload-asset:
messages:
- footer: "> 🔍 *Analysis by [{workflow_name}]({run_url})*"
+ footer: "> 🔍 *Analysis by [{workflow_name}]({run_url})*{history_link}"
run-started: "🔍 Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity..."
run-success: "✅ Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories."
run-failure: "⚠️ Analysis interrupted! [{workflow_name}]({run_url}) {status}."
diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml
index 3ceaab2ee5..c907ae230f 100644
--- a/.github/workflows/technical-doc-writer.lock.yml
+++ b/.github/workflows/technical-doc-writer.lock.yml
@@ -28,7 +28,7 @@
# - ../agents/technical-doc-writer.agent.md
# - ../skills/documentation/SKILL.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"0fed3bd9dc465cabf5a8de79bbefc40ae0d13eb11acaba1c2a62d541a5924d57"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"f174f894cfb342e523c23e48a2c841a391fdfb8ac21ab6f7f1160f434906bb2f"}
name: "Rebuild the documentation after making changes"
"on":
@@ -1146,7 +1146,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📝 *Documentation by [{workflow_name}]({run_url})*\",\"runStarted\":\"✍️ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}...\",\"runSuccess\":\"📝 Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! ✨\",\"runFailure\":\"✍️ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📝 *Documentation by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"✍️ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}...\",\"runSuccess\":\"📝 Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! ✨\",\"runFailure\":\"✍️ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "10"
with:
@@ -1203,7 +1203,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📝 *Documentation by [{workflow_name}]({run_url})*\",\"runStarted\":\"✍️ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}...\",\"runSuccess\":\"📝 Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! ✨\",\"runFailure\":\"✍️ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📝 *Documentation by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"✍️ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}...\",\"runSuccess\":\"📝 Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! ✨\",\"runFailure\":\"✍️ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank...\"}"
GH_AW_WORKFLOW_ID: "technical-doc-writer"
GH_AW_WORKFLOW_NAME: "Rebuild the documentation after making changes"
outputs:
@@ -1404,7 +1404,7 @@ jobs:
GH_AW_ASSETS_ALLOWED_EXTS: ".png,.jpg,.jpeg"
GH_AW_WORKFLOW_NAME: "Rebuild the documentation after making changes"
GH_AW_ENGINE_ID: "copilot"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📝 *Documentation by [{workflow_name}]({run_url})*\",\"runStarted\":\"✍️ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}...\",\"runSuccess\":\"📝 Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! ✨\",\"runFailure\":\"✍️ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank...\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 📝 *Documentation by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"✍️ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}...\",\"runSuccess\":\"📝 Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! ✨\",\"runFailure\":\"✍️ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank...\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
diff --git a/.github/workflows/technical-doc-writer.md b/.github/workflows/technical-doc-writer.md
index acbb580c07..5a3c9bbc2b 100644
--- a/.github/workflows/technical-doc-writer.md
+++ b/.github/workflows/technical-doc-writer.md
@@ -38,7 +38,7 @@ safe-outputs:
draft: false
upload-asset:
messages:
- footer: "> 📝 *Documentation by [{workflow_name}]({run_url})*"
+ footer: "> 📝 *Documentation by [{workflow_name}]({run_url})*{history_link}"
run-started: "✍️ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}..."
run-success: "📝 Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! ✨"
run-failure: "✍️ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank..."
diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml
index 4ca435ac16..ef5233a83c 100644
--- a/.github/workflows/unbloat-docs.lock.yml
+++ b/.github/workflows/unbloat-docs.lock.yml
@@ -28,7 +28,7 @@
# - shared/docs-server-lifecycle.md
# - shared/reporting.md
#
-# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"e12f2743b5993b77b7036fde9cf5e74e20de84de58f72454fcfb45df90afae4d"}
+# gh-aw-metadata: {"schema_version":"v1","frontmatter_hash":"88e71e22b573468f6464e7c650c955b2a9acb1114525099be57c44ba2209bd2b"}
name: "Documentation Unbloat"
"on":
@@ -1298,7 +1298,7 @@ jobs:
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🗜️ *Compressed by [{workflow_name}]({run_url})*\",\"runStarted\":\"📦 Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}...\",\"runSuccess\":\"🗜️ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! 💪\",\"runFailure\":\"📦 Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🗜️ *Compressed by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📦 Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}...\",\"runSuccess\":\"🗜️ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! 💪\",\"runFailure\":\"📦 Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy.\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_TIMEOUT_MINUTES: "30"
with:
@@ -1416,7 +1416,7 @@ jobs:
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/${{ github.workflow }}"
GH_AW_ENGINE_ID: "claude"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🗜️ *Compressed by [{workflow_name}]({run_url})*\",\"runStarted\":\"📦 Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}...\",\"runSuccess\":\"🗜️ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! 💪\",\"runFailure\":\"📦 Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🗜️ *Compressed by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📦 Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}...\",\"runSuccess\":\"🗜️ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! 💪\",\"runFailure\":\"📦 Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy.\"}"
GH_AW_WORKFLOW_ID: "unbloat-docs"
GH_AW_WORKFLOW_NAME: "Documentation Unbloat"
outputs:
@@ -1617,7 +1617,7 @@ jobs:
GH_AW_ASSETS_ALLOWED_EXTS: ".png,.jpg,.jpeg"
GH_AW_WORKFLOW_NAME: "Documentation Unbloat"
GH_AW_ENGINE_ID: "claude"
- GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🗜️ *Compressed by [{workflow_name}]({run_url})*\",\"runStarted\":\"📦 Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}...\",\"runSuccess\":\"🗜️ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! 💪\",\"runFailure\":\"📦 Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy.\"}"
+ GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🗜️ *Compressed by [{workflow_name}]({run_url})*{history_link}\",\"runStarted\":\"📦 Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}...\",\"runSuccess\":\"🗜️ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! 💪\",\"runFailure\":\"📦 Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy.\"}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
diff --git a/.github/workflows/unbloat-docs.md b/.github/workflows/unbloat-docs.md
index ac975b290a..4172bb2527 100644
--- a/.github/workflows/unbloat-docs.md
+++ b/.github/workflows/unbloat-docs.md
@@ -83,7 +83,7 @@ safe-outputs:
max: 1
upload-asset:
messages:
- footer: "> 🗜️ *Compressed by [{workflow_name}]({run_url})*"
+ footer: "> 🗜️ *Compressed by [{workflow_name}]({run_url})*{history_link}"
run-started: "📦 Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}..."
run-success: "🗜️ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! 💪"
run-failure: "📦 Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy."
diff --git a/actions/setup/js/messages.test.cjs b/actions/setup/js/messages.test.cjs
index 93ea5a6b36..7e6d42caf4 100644
--- a/actions/setup/js/messages.test.cjs
+++ b/actions/setup/js/messages.test.cjs
@@ -278,6 +278,39 @@ describe("messages.cjs", () => {
expect(result).not.toContain("history");
});
+
+ it("should expose {history_link} placeholder in custom footer templates", async () => {
+ process.env.GH_AW_SAFE_OUTPUT_MESSAGES = JSON.stringify({
+ footer: "> 🤖 *Generated by [{workflow_name}]({run_url})*{history_link}",
+ });
+
+ const { getFooterMessage } = await import("./messages.cjs");
+
+ const historyUrl = "https://github.com/search?q=repo:test/repo+is:issue&type=issues";
+ const result = getFooterMessage({
+ workflowName: "Test Workflow",
+ runUrl: "https://github.com/test/repo/actions/runs/123",
+ historyUrl,
+ });
+
+ expect(result).toBe(`> 🤖 *Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123)* · [🕐 history](${historyUrl})`);
+ });
+
+ it("should render empty string for {history_link} when historyUrl is not provided", async () => {
+ process.env.GH_AW_SAFE_OUTPUT_MESSAGES = JSON.stringify({
+ footer: "> 🤖 *Generated by [{workflow_name}]({run_url})*{history_link}",
+ });
+
+ const { getFooterMessage } = await import("./messages.cjs");
+
+ const result = getFooterMessage({
+ workflowName: "Test Workflow",
+ runUrl: "https://github.com/test/repo/actions/runs/123",
+ });
+
+ expect(result).toBe("> 🤖 *Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123)*");
+ expect(result).not.toContain("{history_link}");
+ });
});
describe("getFooterInstallMessage", () => {
diff --git a/actions/setup/js/messages_footer.cjs b/actions/setup/js/messages_footer.cjs
index 45902b0905..3aa73e5f64 100644
--- a/actions/setup/js/messages_footer.cjs
+++ b/actions/setup/js/messages_footer.cjs
@@ -20,6 +20,7 @@ const { getBlockedDomains, generateBlockedDomainsSection } = require("./firewall
* @property {string} [workflowSourceUrl] - GitHub URL for the workflow source
* @property {number|string} [triggeringNumber] - Issue, PR, or discussion number that triggered this workflow
* @property {string} [historyUrl] - GitHub search URL for items created by this workflow (for the history link)
+ * @property {string} [historyLink] - Pre-formatted markdown history link (e.g. " · [🕐 history](url)"), or "" if unavailable
*/
/**
@@ -30,8 +31,11 @@ const { getBlockedDomains, generateBlockedDomainsSection } = require("./firewall
function getFooterMessage(ctx) {
const messages = getMessages();
- // Create context with both camelCase and snake_case keys
- const templateContext = toSnakeCase(ctx);
+ // Pre-compute history_link as a ready-to-use markdown suffix (empty string when unavailable)
+ const historyLink = ctx.historyUrl ? ` · [🕐 history](${ctx.historyUrl})` : "";
+
+ // Create context with both camelCase and snake_case keys, including computed history_link
+ const templateContext = toSnakeCase({ ...ctx, historyLink });
// Use custom footer template if configured (no automatic suffix appended)
if (messages?.footer) {
@@ -43,7 +47,7 @@ function getFooterMessage(ctx) {
if (ctx.triggeringNumber) {
defaultFooter += " for issue #{triggering_number}";
}
- // Append history link with clock symbol when available
+ // Append history link when available
if (ctx.historyUrl) {
defaultFooter += " · [history]({history_url})";
}
From 02e37f005987ee9e45d0e67ac03cda8775de287a Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 3 Mar 2026 04:51:06 +0000
Subject: [PATCH 7/7] =?UTF-8?q?Change=20history=20link=20default=20text=20?=
=?UTF-8?q?to=20=E2=97=B7=20symbol?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
---
actions/setup/js/messages.test.cjs | 7 ++++---
actions/setup/js/messages_footer.cjs | 6 +++---
2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/actions/setup/js/messages.test.cjs b/actions/setup/js/messages.test.cjs
index 7e6d42caf4..e38d21b39b 100644
--- a/actions/setup/js/messages.test.cjs
+++ b/actions/setup/js/messages.test.cjs
@@ -252,7 +252,7 @@ describe("messages.cjs", () => {
historyUrl: "https://github.com/search?q=repo:test/repo+is:issue&type=issues",
});
- expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) · [history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
+ expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) · [◷](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
});
it("should include both triggering number and history link when both are provided", async () => {
@@ -265,7 +265,7 @@ describe("messages.cjs", () => {
historyUrl: "https://github.com/search?q=repo:test/repo+is:issue&type=issues",
});
- expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) for issue #42 · [history](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
+ expect(result).toBe("> Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123) for issue #42 · [◷](https://github.com/search?q=repo:test/repo+is:issue&type=issues)");
});
it("should not append history link when historyUrl is not provided", async () => {
@@ -277,6 +277,7 @@ describe("messages.cjs", () => {
});
expect(result).not.toContain("history");
+ expect(result).not.toContain("◷");
});
it("should expose {history_link} placeholder in custom footer templates", async () => {
@@ -293,7 +294,7 @@ describe("messages.cjs", () => {
historyUrl,
});
- expect(result).toBe(`> 🤖 *Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123)* · [🕐 history](${historyUrl})`);
+ expect(result).toBe(`> 🤖 *Generated by [Test Workflow](https://github.com/test/repo/actions/runs/123)* · [◷](${historyUrl})`);
});
it("should render empty string for {history_link} when historyUrl is not provided", async () => {
diff --git a/actions/setup/js/messages_footer.cjs b/actions/setup/js/messages_footer.cjs
index 3aa73e5f64..1f19b0ec6f 100644
--- a/actions/setup/js/messages_footer.cjs
+++ b/actions/setup/js/messages_footer.cjs
@@ -20,7 +20,7 @@ const { getBlockedDomains, generateBlockedDomainsSection } = require("./firewall
* @property {string} [workflowSourceUrl] - GitHub URL for the workflow source
* @property {number|string} [triggeringNumber] - Issue, PR, or discussion number that triggered this workflow
* @property {string} [historyUrl] - GitHub search URL for items created by this workflow (for the history link)
- * @property {string} [historyLink] - Pre-formatted markdown history link (e.g. " · [🕐 history](url)"), or "" if unavailable
+ * @property {string} [historyLink] - Pre-formatted markdown history link (e.g. " · [◷](url)"), or "" if unavailable
*/
/**
@@ -32,7 +32,7 @@ function getFooterMessage(ctx) {
const messages = getMessages();
// Pre-compute history_link as a ready-to-use markdown suffix (empty string when unavailable)
- const historyLink = ctx.historyUrl ? ` · [🕐 history](${ctx.historyUrl})` : "";
+ const historyLink = ctx.historyUrl ? ` · [◷](${ctx.historyUrl})` : "";
// Create context with both camelCase and snake_case keys, including computed history_link
const templateContext = toSnakeCase({ ...ctx, historyLink });
@@ -49,7 +49,7 @@ function getFooterMessage(ctx) {
}
// Append history link when available
if (ctx.historyUrl) {
- defaultFooter += " · [history]({history_url})";
+ defaultFooter += " · [◷]({history_url})";
}
return renderTemplate(defaultFooter, templateContext);
}