diff --git a/.changeset/patch-migrate-detection-artifacts.md b/.changeset/patch-migrate-detection-artifacts.md new file mode 100644 index 0000000000..f959223a17 --- /dev/null +++ b/.changeset/patch-migrate-detection-artifacts.md @@ -0,0 +1,12 @@ +--- +"gh-aw": patch +--- + +Migrate detection job artifacts to the unified `/tmp/gh-aw/artifacts` path and add validations. + +- Update artifact download paths used by detection jobs to `/tmp/gh-aw/artifacts`. +- Fail fast when `prompt.txt` or `agent_output.json` are missing. +- Fail when `aw.patch` is expected but not present. + +This is an internal tooling fix and non-breaking (patch). + diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index 968645d102..08ee05315e 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -1518,13 +1518,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1535,6 +1535,7 @@ jobs: env: WORKFLOW_NAME: "Agent Performance Analyzer - Meta-Orchestrator" WORKFLOW_DESCRIPTION: "Meta-orchestrator that analyzes AI agent performance, quality, and effectiveness across the repository" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/archie.lock.yml b/.github/workflows/archie.lock.yml index 17a55a74d5..a165ca419e 100644 --- a/.github/workflows/archie.lock.yml +++ b/.github/workflows/archie.lock.yml @@ -1073,13 +1073,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1090,6 +1090,7 @@ jobs: env: WORKFLOW_NAME: "Archie" WORKFLOW_DESCRIPTION: "Generates Mermaid diagrams to visualize issue and pull request relationships when invoked with the /archie command" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index 2f68a9e0ee..8e786b5079 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -919,13 +919,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -936,6 +936,7 @@ jobs: env: WORKFLOW_NAME: "Artifacts Summary" WORKFLOW_DESCRIPTION: "Generates a comprehensive summary of GitHub Actions artifacts usage across all workflows in the repository" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 3e12511dca..981a374f49 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -1308,13 +1308,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1325,6 +1325,7 @@ jobs: env: WORKFLOW_NAME: "Agentic Workflow Audit Agent" WORKFLOW_DESCRIPTION: "Daily audit of all agentic workflow runs from the last 24 hours to identify issues, missing tools, errors, and improvement opportunities" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index 4f2a8f1aa3..2b161aa0d8 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -1193,13 +1193,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1210,6 +1210,7 @@ jobs: env: WORKFLOW_NAME: "Blog Auditor" WORKFLOW_DESCRIPTION: "Verifies that the GitHub Next Agentic Workflows blog page is accessible and contains expected content" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index 680725a518..7137d37bfd 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -966,13 +966,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -983,6 +983,7 @@ jobs: env: WORKFLOW_NAME: "Brave Web Search Agent" WORKFLOW_DESCRIPTION: "Performs web searches using Brave search engine when invoked with /brave command in issues or PRs" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml index 8cfbcfcb4a..23563c3f44 100644 --- a/.github/workflows/breaking-change-checker.lock.yml +++ b/.github/workflows/breaking-change-checker.lock.yml @@ -1018,13 +1018,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1035,6 +1035,7 @@ jobs: env: WORKFLOW_NAME: "Breaking Change Checker" WORKFLOW_DESCRIPTION: "Daily analysis of recent commits and merged PRs for breaking CLI changes" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/campaign-generator.lock.yml b/.github/workflows/campaign-generator.lock.yml index 03a0b21450..7a1e467d35 100644 --- a/.github/workflows/campaign-generator.lock.yml +++ b/.github/workflows/campaign-generator.lock.yml @@ -929,13 +929,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -946,6 +946,7 @@ jobs: env: WORKFLOW_NAME: "Campaign Generator" WORKFLOW_DESCRIPTION: "Campaign generator that updates issue status and assigns to Copilot agent for campaign design" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/changeset.lock.yml b/.github/workflows/changeset.lock.yml index cb8d9be2ed..8bf0cdc1c1 100644 --- a/.github/workflows/changeset.lock.yml +++ b/.github/workflows/changeset.lock.yml @@ -1129,13 +1129,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1146,6 +1146,7 @@ jobs: env: WORKFLOW_NAME: "Changeset Generator" WORKFLOW_DESCRIPTION: "Automatically creates changeset files when PRs are labeled with 'changeset' or 'smoke' to document changes for release notes" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index be690f8153..19d20838cb 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -1563,13 +1563,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1580,6 +1580,7 @@ jobs: env: WORKFLOW_NAME: "CI Optimization Coach" WORKFLOW_DESCRIPTION: "Daily CI optimization coach that analyzes workflow runs for efficiency improvements and cost reduction opportunities" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index ed24649477..768305bbc4 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -1103,13 +1103,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1120,6 +1120,7 @@ jobs: env: WORKFLOW_NAME: "CI Failure Doctor" WORKFLOW_DESCRIPTION: "Investigates failed CI workflows to identify root causes and patterns, creating issues with diagnostic information" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/cli-consistency-checker.lock.yml b/.github/workflows/cli-consistency-checker.lock.yml index 73c3893d32..c447ebdb66 100644 --- a/.github/workflows/cli-consistency-checker.lock.yml +++ b/.github/workflows/cli-consistency-checker.lock.yml @@ -1001,13 +1001,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1018,6 +1018,7 @@ jobs: env: WORKFLOW_NAME: "CLI Consistency Checker" WORKFLOW_DESCRIPTION: "Inspects the gh-aw CLI to identify inconsistencies, typos, bugs, or documentation gaps by running commands and analyzing output" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index e1f1c673d7..a73e4de149 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -1256,13 +1256,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1273,6 +1273,7 @@ jobs: env: WORKFLOW_NAME: "CLI Version Checker" WORKFLOW_DESCRIPTION: "Monitors and updates agentic CLI tools (Claude Code, GitHub Copilot CLI, OpenAI Codex, GitHub MCP Server, Playwright MCP, Playwright Browser) for new versions" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 4e9ac61672..eb82197599 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -1410,13 +1410,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1427,6 +1427,7 @@ jobs: env: WORKFLOW_NAME: "/cloclo" WORKFLOW_DESCRIPTION: "No description provided" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/commit-changes-analyzer.lock.yml b/.github/workflows/commit-changes-analyzer.lock.yml index 5cca99a90c..046e9b925d 100644 --- a/.github/workflows/commit-changes-analyzer.lock.yml +++ b/.github/workflows/commit-changes-analyzer.lock.yml @@ -1106,13 +1106,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1123,6 +1123,7 @@ jobs: env: WORKFLOW_NAME: "Commit Changes Analyzer" WORKFLOW_DESCRIPTION: "Analyzes and provides a comprehensive developer-focused report of all changes in the repository since a specified commit" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 183d788e9f..717dae33a6 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -1539,13 +1539,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1556,6 +1556,7 @@ jobs: env: WORKFLOW_NAME: "Copilot Agent PR Analysis" WORKFLOW_DESCRIPTION: "Analyzes GitHub Copilot agent usage patterns in pull requests to provide insights on agent effectiveness and behavior" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/copilot-pr-merged-report.lock.yml b/.github/workflows/copilot-pr-merged-report.lock.yml index 048051d26c..c6d4aff7cd 100644 --- a/.github/workflows/copilot-pr-merged-report.lock.yml +++ b/.github/workflows/copilot-pr-merged-report.lock.yml @@ -1076,13 +1076,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1093,6 +1093,7 @@ jobs: env: WORKFLOW_NAME: "Daily Copilot PR Merged Report" WORKFLOW_DESCRIPTION: "Generates a daily report analyzing Copilot pull requests merged in the last 24 hours, tracking code generation, tests, and token usage" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index 5957fa69f7..70e3c1a57a 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -1767,13 +1767,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1784,6 +1784,7 @@ jobs: env: WORKFLOW_NAME: "Copilot PR Conversation NLP Analysis" WORKFLOW_DESCRIPTION: "Performs natural language processing analysis on Copilot PR conversations to extract insights and patterns from user interactions" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 156c8539e1..919dc5bef4 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -1278,13 +1278,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1295,6 +1295,7 @@ jobs: env: WORKFLOW_NAME: "Copilot PR Prompt Pattern Analysis" WORKFLOW_DESCRIPTION: "Analyzes prompt patterns used in Copilot PR interactions to identify common usage patterns and optimization opportunities" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index 6b9034b49c..1f836e6e2e 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -2078,13 +2078,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -2095,6 +2095,7 @@ jobs: env: WORKFLOW_NAME: "Copilot Session Insights" WORKFLOW_DESCRIPTION: "Analyzes GitHub Copilot agent sessions to provide detailed insights on usage patterns, success rates, and performance metrics" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/craft.lock.yml b/.github/workflows/craft.lock.yml index c926ce1d04..c5d1d306f5 100644 --- a/.github/workflows/craft.lock.yml +++ b/.github/workflows/craft.lock.yml @@ -1139,13 +1139,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1156,6 +1156,7 @@ jobs: env: WORKFLOW_NAME: "Workflow Craft Agent" WORKFLOW_DESCRIPTION: "Generates new agentic workflow markdown files based on user requests when invoked with /craft command" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-assign-issue-to-user.lock.yml b/.github/workflows/daily-assign-issue-to-user.lock.yml index 293852f8a4..80b9e94112 100644 --- a/.github/workflows/daily-assign-issue-to-user.lock.yml +++ b/.github/workflows/daily-assign-issue-to-user.lock.yml @@ -835,13 +835,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -852,6 +852,7 @@ jobs: env: WORKFLOW_NAME: "Auto-Assign Issue" WORKFLOW_DESCRIPTION: "No description provided" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-choice-test.lock.yml b/.github/workflows/daily-choice-test.lock.yml index d5c2eb1fe7..95a97bba38 100644 --- a/.github/workflows/daily-choice-test.lock.yml +++ b/.github/workflows/daily-choice-test.lock.yml @@ -816,13 +816,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -833,6 +833,7 @@ jobs: env: WORKFLOW_NAME: "Daily Choice Type Test" WORKFLOW_DESCRIPTION: "Daily test workflow using Claude with custom safe-output job containing choice inputs" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index 52e8c2042e..324b4c976f 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -1483,13 +1483,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1500,6 +1500,7 @@ jobs: env: WORKFLOW_NAME: "Daily CLI Performance Agent" WORKFLOW_DESCRIPTION: "Daily CLI Performance - Runs benchmarks, tracks performance trends, and reports regressions" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 8be195955b..7b1d01986b 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -1785,13 +1785,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1802,6 +1802,7 @@ jobs: env: WORKFLOW_NAME: "Daily Code Metrics and Trend Tracking Agent" WORKFLOW_DESCRIPTION: "Tracks and visualizes daily code metrics and trends to monitor repository health and development patterns" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index e12009069a..5a08bac526 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -1877,13 +1877,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1894,6 +1894,7 @@ jobs: env: WORKFLOW_NAME: "Daily Copilot Token Consumption Report" WORKFLOW_DESCRIPTION: "Daily report tracking Copilot token consumption and costs across all agentic workflows with trend analysis" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 516f141e81..e1f4e02817 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -1097,13 +1097,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1114,6 +1114,7 @@ jobs: env: WORKFLOW_NAME: "Daily Documentation Updater" WORKFLOW_DESCRIPTION: "Automatically reviews and updates documentation to ensure accuracy and completeness" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-fact.lock.yml b/.github/workflows/daily-fact.lock.yml index 19b982a49c..1c68868d0b 100644 --- a/.github/workflows/daily-fact.lock.yml +++ b/.github/workflows/daily-fact.lock.yml @@ -800,13 +800,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -817,6 +817,7 @@ jobs: env: WORKFLOW_NAME: "Daily Fact About gh-aw" WORKFLOW_DESCRIPTION: "Posts a daily poetic verse about the gh-aw project to a discussion thread" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-file-diet.lock.yml b/.github/workflows/daily-file-diet.lock.yml index c69b7d68a6..05c509b433 100644 --- a/.github/workflows/daily-file-diet.lock.yml +++ b/.github/workflows/daily-file-diet.lock.yml @@ -1125,13 +1125,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1142,6 +1142,7 @@ jobs: env: WORKFLOW_NAME: "Daily File Diet" WORKFLOW_DESCRIPTION: "Analyzes the largest Go source file daily and creates an issue to refactor it into smaller files if it exceeds the healthy size threshold" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index f12cd2fd3d..cd0cf3fd34 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -1329,13 +1329,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1346,6 +1346,7 @@ jobs: env: WORKFLOW_NAME: "Daily Firewall Logs Collector and Reporter" WORKFLOW_DESCRIPTION: "Collects and reports on firewall log events to monitor network security and access patterns" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index bb103e4665..477953381d 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -1908,13 +1908,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1925,6 +1925,7 @@ jobs: env: WORKFLOW_NAME: "Daily Issues Report Generator" WORKFLOW_DESCRIPTION: "Daily report analyzing repository issues with clustering, metrics, and trend charts" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-multi-device-docs-tester.lock.yml b/.github/workflows/daily-multi-device-docs-tester.lock.yml index 63c563e2e3..cfc0724c6d 100644 --- a/.github/workflows/daily-multi-device-docs-tester.lock.yml +++ b/.github/workflows/daily-multi-device-docs-tester.lock.yml @@ -1082,13 +1082,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1099,6 +1099,7 @@ jobs: env: WORKFLOW_NAME: "Multi-Device Docs Tester" WORKFLOW_DESCRIPTION: "Tests documentation site functionality and responsive design across multiple device form factors" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 888a934134..b6dd9284a2 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -1693,13 +1693,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1710,6 +1710,7 @@ jobs: env: WORKFLOW_NAME: "Daily News" WORKFLOW_DESCRIPTION: "Generates a daily news digest of repository activity including issues, PRs, discussions, and workflow runs" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index 6b1c26a2aa..b44e41c377 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -1858,13 +1858,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1875,6 +1875,7 @@ jobs: env: WORKFLOW_NAME: "Daily Project Performance Summary Generator (Using Safe Inputs)" WORKFLOW_DESCRIPTION: "Daily project performance summary (90-day window) with trend charts using safe-inputs" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index c074309ec1..b2cea337b0 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -1533,13 +1533,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1550,6 +1550,7 @@ jobs: env: WORKFLOW_NAME: "The Daily Repository Chronicle" WORKFLOW_DESCRIPTION: "Creates a narrative chronicle of daily repository activity including commits, PRs, issues, and discussions" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-team-status.lock.yml b/.github/workflows/daily-team-status.lock.yml index dd6edf7af5..7519a9aff1 100644 --- a/.github/workflows/daily-team-status.lock.yml +++ b/.github/workflows/daily-team-status.lock.yml @@ -926,13 +926,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -943,6 +943,7 @@ jobs: env: WORKFLOW_NAME: "Daily Team Status" WORKFLOW_DESCRIPTION: "This workflow created daily team status reporter creating upbeat activity summaries.\nGathers recent repository activity (issues, PRs, releases, code changes)\nand generates engaging GitHub issues with productivity insights, community\nhighlights, and project recommendations. Uses a positive, encouraging tone with\nmoderate emoji usage to boost team morale." + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index 5efb5e4fae..f4a20356c0 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -988,13 +988,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1005,6 +1005,7 @@ jobs: env: WORKFLOW_NAME: "Daily Workflow Updater" WORKFLOW_DESCRIPTION: "Automatically updates GitHub Actions versions and creates a PR if changes are detected" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index db6f9de02e..17c7a77059 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -1409,13 +1409,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1426,6 +1426,7 @@ jobs: env: WORKFLOW_NAME: "DeepReport - Intelligence Gathering Agent" WORKFLOW_DESCRIPTION: "Intelligence gathering agent that continuously reviews and aggregates information from agent-generated reports in discussions" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/dependabot-go-checker.lock.yml b/.github/workflows/dependabot-go-checker.lock.yml index c772bd64b7..75cff8ac9a 100644 --- a/.github/workflows/dependabot-go-checker.lock.yml +++ b/.github/workflows/dependabot-go-checker.lock.yml @@ -1281,13 +1281,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1298,6 +1298,7 @@ jobs: env: WORKFLOW_NAME: "Dependabot Dependency Checker" WORKFLOW_DESCRIPTION: "Checks for Go module and NPM dependency updates and analyzes Dependabot PRs for compatibility and breaking changes" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/dev-hawk.lock.yml b/.github/workflows/dev-hawk.lock.yml index 1bd23fb93c..710070a9b4 100644 --- a/.github/workflows/dev-hawk.lock.yml +++ b/.github/workflows/dev-hawk.lock.yml @@ -1076,13 +1076,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1093,6 +1093,7 @@ jobs: env: WORKFLOW_NAME: "Dev Hawk" WORKFLOW_DESCRIPTION: "Monitors development workflow activities and provides real-time alerts and insights on pull requests and CI status" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/dev.lock.yml b/.github/workflows/dev.lock.yml index 7c45a05529..c59739a42a 100644 --- a/.github/workflows/dev.lock.yml +++ b/.github/workflows/dev.lock.yml @@ -780,13 +780,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -797,6 +797,7 @@ jobs: env: WORKFLOW_NAME: "Dev" WORKFLOW_DESCRIPTION: "Read an issue and post a poem about it" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 9d87ac577f..b738d2285d 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -1627,13 +1627,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1644,6 +1644,7 @@ jobs: env: WORKFLOW_NAME: "Developer Documentation Consolidator" WORKFLOW_DESCRIPTION: "Consolidates and organizes developer documentation from multiple sources into a unified, searchable knowledge base" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index 7eac9249c5..9e6919f4b6 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -884,13 +884,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -901,6 +901,7 @@ jobs: env: WORKFLOW_NAME: "Dictation Prompt Generator" WORKFLOW_DESCRIPTION: "Generates optimized prompts for voice dictation and speech-to-text workflows" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/docs-noob-tester.lock.yml b/.github/workflows/docs-noob-tester.lock.yml index b0e50a6a4c..3ed20bf5bd 100644 --- a/.github/workflows/docs-noob-tester.lock.yml +++ b/.github/workflows/docs-noob-tester.lock.yml @@ -1018,13 +1018,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1035,6 +1035,7 @@ jobs: env: WORKFLOW_NAME: "Documentation Noob Tester" WORKFLOW_DESCRIPTION: "Tests documentation as a new user would, identifying confusing or broken steps in getting started guides" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/docs-quality-maintenance-project67.campaign.lock.yml b/.github/workflows/docs-quality-maintenance-project67.campaign.lock.yml index 8e852423ed..894dc94453 100644 --- a/.github/workflows/docs-quality-maintenance-project67.campaign.lock.yml +++ b/.github/workflows/docs-quality-maintenance-project67.campaign.lock.yml @@ -1295,13 +1295,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1312,6 +1312,7 @@ jobs: env: WORKFLOW_NAME: "Documentation Quality & Maintenance Campaign (Project 69)" WORKFLOW_DESCRIPTION: "Systematically improve documentation quality, consistency, and maintainability. Success: all docs follow Diรกtaxis framework, maintain accessibility standards, and pass quality checks." + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index 6f5e1d8721..f2d131c5fe 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -1051,13 +1051,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1068,6 +1068,7 @@ jobs: env: WORKFLOW_NAME: "Duplicate Code Detector" WORKFLOW_DESCRIPTION: "Identifies duplicate code patterns across the codebase and suggests refactoring opportunities" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index 370b3f0600..d726a504af 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -887,13 +887,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -904,6 +904,7 @@ jobs: env: WORKFLOW_NAME: "Weekly Workflow Analysis" WORKFLOW_DESCRIPTION: "Analyzes workflow examples to identify patterns, best practices, and potential improvements" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/file-size-reduction-project71.campaign.lock.yml b/.github/workflows/file-size-reduction-project71.campaign.lock.yml index 7858e6a64e..97f828e0c1 100644 --- a/.github/workflows/file-size-reduction-project71.campaign.lock.yml +++ b/.github/workflows/file-size-reduction-project71.campaign.lock.yml @@ -1284,13 +1284,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1301,6 +1301,7 @@ jobs: env: WORKFLOW_NAME: "Campaign: File Size Reduction (Project 71)" WORKFLOW_DESCRIPTION: "Systematically reduce oversized Go files to improve maintainability. Success: all files โ‰ค800 LOC, maintain coverage, no regressions." + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index b113487cb5..f693f09dec 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -1579,13 +1579,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1596,6 +1596,7 @@ jobs: env: WORKFLOW_NAME: "GitHub MCP Structural Analysis" WORKFLOW_DESCRIPTION: "Structural analysis of GitHub MCP tool responses with schema evaluation and usefulness ratings for agentic work" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index 68810685bc..369d49b705 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -1467,13 +1467,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1484,6 +1484,7 @@ jobs: env: WORKFLOW_NAME: "GitHub MCP Remote Server Tools Report Generator" WORKFLOW_DESCRIPTION: "Generates a comprehensive report of available MCP server tools and their capabilities for GitHub integration" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index d42b950445..9df7ff9b6e 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -1532,13 +1532,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1549,6 +1549,7 @@ jobs: env: WORKFLOW_NAME: "Glossary Maintainer" WORKFLOW_DESCRIPTION: "Maintains and updates the documentation glossary based on codebase changes" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index 250900e238..f016af5e5b 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -1248,13 +1248,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1265,6 +1265,7 @@ jobs: env: WORKFLOW_NAME: "Go Fan" WORKFLOW_DESCRIPTION: "Daily Go module usage reviewer - analyzes direct dependencies prioritizing recently updated ones" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 5b0acbdd1f..91a807089f 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -1193,13 +1193,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1210,6 +1210,7 @@ jobs: env: WORKFLOW_NAME: "Go Logger Enhancement" WORKFLOW_DESCRIPTION: "Analyzes and enhances Go logging practices across the codebase for improved debugging and observability" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index 56e13ceb5e..f4c1d9b10d 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -1057,13 +1057,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1074,6 +1074,7 @@ jobs: env: WORKFLOW_NAME: "Go Pattern Detector" WORKFLOW_DESCRIPTION: "Detects common Go code patterns and anti-patterns to maintain code quality and consistency" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index 104e6a0dd7..6074b3b7d4 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -1080,13 +1080,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1097,6 +1097,7 @@ jobs: env: WORKFLOW_NAME: "Grumpy Code Reviewer ๐Ÿ”ฅ" WORKFLOW_DESCRIPTION: "Performs critical code review with a focus on edge cases, potential bugs, and code quality issues" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index 069d9f798d..7b4d72ce0a 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -1236,13 +1236,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1253,6 +1253,7 @@ jobs: env: WORKFLOW_NAME: "CI Cleaner" WORKFLOW_DESCRIPTION: "CI cleaner that fixes format, lint, and test issues when CI fails on main branch. Runs twice daily (6am, 6pm UTC) to optimize token spend. Includes early exit when CI is passing to prevent unnecessary token consumption." + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 60e62c2cf9..c0e099b765 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -1073,13 +1073,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1090,6 +1090,7 @@ jobs: env: WORKFLOW_NAME: "Instructions Janitor" WORKFLOW_DESCRIPTION: "Reviews and cleans up instruction files to ensure clarity, consistency, and adherence to best practices" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/issue-arborist.lock.yml b/.github/workflows/issue-arborist.lock.yml index 081fbec10b..038ecbee9b 100644 --- a/.github/workflows/issue-arborist.lock.yml +++ b/.github/workflows/issue-arborist.lock.yml @@ -1120,13 +1120,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1137,6 +1137,7 @@ jobs: env: WORKFLOW_NAME: "Issue Arborist" WORKFLOW_DESCRIPTION: "Daily workflow that analyzes recent issues and links related issues as sub-issues" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/issue-classifier.lock.yml b/.github/workflows/issue-classifier.lock.yml index 84fc9cd47c..cc8abf0e8a 100644 --- a/.github/workflows/issue-classifier.lock.yml +++ b/.github/workflows/issue-classifier.lock.yml @@ -790,13 +790,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -807,6 +807,7 @@ jobs: env: WORKFLOW_NAME: "Issue Classifier" WORKFLOW_DESCRIPTION: "Automatically classifies and labels issues based on content analysis and predefined categories" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/issue-monster.lock.yml b/.github/workflows/issue-monster.lock.yml index 8550e7d838..731ad349e5 100644 --- a/.github/workflows/issue-monster.lock.yml +++ b/.github/workflows/issue-monster.lock.yml @@ -1028,13 +1028,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1045,6 +1045,7 @@ jobs: env: WORKFLOW_NAME: "Issue Monster" WORKFLOW_DESCRIPTION: "The Cookie Monster of issues - assigns issues to Copilot agents one at a time" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/issue-template-optimizer.lock.yml b/.github/workflows/issue-template-optimizer.lock.yml index 112657fb98..186eb0704a 100644 --- a/.github/workflows/issue-template-optimizer.lock.yml +++ b/.github/workflows/issue-template-optimizer.lock.yml @@ -1126,13 +1126,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1143,6 +1143,7 @@ jobs: env: WORKFLOW_NAME: "Issue Template Optimizer" WORKFLOW_DESCRIPTION: "Maintains GitHub issue templates based on Copilot PR success patterns" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/issue-triage-agent.lock.yml b/.github/workflows/issue-triage-agent.lock.yml index b9c10f84f7..feb649914c 100644 --- a/.github/workflows/issue-triage-agent.lock.yml +++ b/.github/workflows/issue-triage-agent.lock.yml @@ -813,13 +813,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -830,6 +830,7 @@ jobs: env: WORKFLOW_NAME: "Issue Triage Agent" WORKFLOW_DESCRIPTION: "No description provided" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 5bb12b04c3..ea032a5b6f 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -1163,13 +1163,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1180,6 +1180,7 @@ jobs: env: WORKFLOW_NAME: "jsweep - JavaScript Unbloater" WORKFLOW_DESCRIPTION: "Daily JavaScript unbloater that cleans one .cjs file per day, prioritizing files with @ts-nocheck to enable type checking" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index a21fb4087d..826fad6578 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -1103,13 +1103,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1120,6 +1120,7 @@ jobs: env: WORKFLOW_NAME: "Layout Specification Maintainer" WORKFLOW_DESCRIPTION: "Maintains specs/layout.md with patterns of file paths, folder names, and artifact names used in lock.yml files" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 2798865d7d..1789386499 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -1248,13 +1248,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1265,6 +1265,7 @@ jobs: env: WORKFLOW_NAME: "Lockfile Statistics Analysis Agent" WORKFLOW_DESCRIPTION: "Analyzes package lockfiles to track dependency statistics, vulnerabilities, and update patterns" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 38ad635b45..92b938e320 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -1436,13 +1436,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1453,6 +1453,7 @@ jobs: env: WORKFLOW_NAME: "MCP Inspector Agent" WORKFLOW_DESCRIPTION: "Inspects MCP (Model Context Protocol) server configurations and validates their functionality" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/mergefest.lock.yml b/.github/workflows/mergefest.lock.yml index e889ccb363..8a3409a1ca 100644 --- a/.github/workflows/mergefest.lock.yml +++ b/.github/workflows/mergefest.lock.yml @@ -1173,13 +1173,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1190,6 +1190,7 @@ jobs: env: WORKFLOW_NAME: "Mergefest" WORKFLOW_DESCRIPTION: "Automatically merges the main branch into pull request branches when invoked with /mergefest command" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/notion-issue-summary.lock.yml b/.github/workflows/notion-issue-summary.lock.yml index 10fdbce4df..00d2db0e71 100644 --- a/.github/workflows/notion-issue-summary.lock.yml +++ b/.github/workflows/notion-issue-summary.lock.yml @@ -812,13 +812,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -829,6 +829,7 @@ jobs: env: WORKFLOW_NAME: "Issue Summary to Notion" WORKFLOW_DESCRIPTION: "Creates issue summaries and syncs them to Notion for project management and tracking" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index 14ac7f8705..6ae5c96024 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -1687,13 +1687,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1704,6 +1704,7 @@ jobs: env: WORKFLOW_NAME: "Organization Health Report" WORKFLOW_DESCRIPTION: "Generate an organization-wide health report for all public repositories in the GitHub org" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/org-wide-rollout.lock.yml b/.github/workflows/org-wide-rollout.lock.yml index e689c2a671..f5622eacbf 100644 --- a/.github/workflows/org-wide-rollout.lock.yml +++ b/.github/workflows/org-wide-rollout.lock.yml @@ -1491,13 +1491,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1508,6 +1508,7 @@ jobs: env: WORKFLOW_NAME: "Campaign - Org-Wide Rollout" WORKFLOW_DESCRIPTION: "Coordinate changes across 100+ repos with phased rollout, dependency tracking, and rollback" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 25da028c16..b1aa6782c3 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -1071,13 +1071,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1088,6 +1088,7 @@ jobs: env: WORKFLOW_NAME: "Resource Summarizer Agent" WORKFLOW_DESCRIPTION: "Summarizes PDF and other documents by analyzing URLs provided via /summarize command or workflow dispatch" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index 3724eca911..8fd9e9fdd5 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -1110,13 +1110,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1127,6 +1127,7 @@ jobs: env: WORKFLOW_NAME: "Plan Command" WORKFLOW_DESCRIPTION: "Generates project plans and task breakdowns when invoked with /plan command in issues or PRs" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/playground-org-project-update-issue.lock.yml b/.github/workflows/playground-org-project-update-issue.lock.yml index 87a7136ebf..64b43eb690 100644 --- a/.github/workflows/playground-org-project-update-issue.lock.yml +++ b/.github/workflows/playground-org-project-update-issue.lock.yml @@ -827,13 +827,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -844,6 +844,7 @@ jobs: env: WORKFLOW_NAME: "Playground: Org project update issue" WORKFLOW_DESCRIPTION: "Update issues on an org-owned Project Board" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/playground-snapshots-refresh.lock.yml b/.github/workflows/playground-snapshots-refresh.lock.yml index f818b168f7..10eff86a92 100644 --- a/.github/workflows/playground-snapshots-refresh.lock.yml +++ b/.github/workflows/playground-snapshots-refresh.lock.yml @@ -858,13 +858,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -875,6 +875,7 @@ jobs: env: WORKFLOW_NAME: "Refresh playground snapshots" WORKFLOW_DESCRIPTION: "Regenerates docs playground snapshots and adds AI-written job summaries" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index c612470a04..761e740af9 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -1498,13 +1498,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1515,6 +1515,7 @@ jobs: env: WORKFLOW_NAME: "Poem Bot - A Creative Agentic Workflow" WORKFLOW_DESCRIPTION: "Generates creative poems on specified themes when invoked with /poem-bot command" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index cca8b8f7d6..f912538bf0 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -1648,13 +1648,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1665,6 +1665,7 @@ jobs: env: WORKFLOW_NAME: "Automated Portfolio Analyst" WORKFLOW_DESCRIPTION: "Weekly portfolio analyst that identifies cost reduction opportunities (20%+) while improving workflow reliability" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index 424f25d4ba..672da25a62 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -1394,13 +1394,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1411,6 +1411,7 @@ jobs: env: WORKFLOW_NAME: "PR Nitpick Reviewer ๐Ÿ”" WORKFLOW_DESCRIPTION: "Provides detailed nitpicky code review focusing on style, best practices, and minor improvements" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index 2a17848c91..9fc1bb0b02 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -1669,13 +1669,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1686,6 +1686,7 @@ jobs: env: WORKFLOW_NAME: "Copilot Agent Prompt Clustering Analysis" WORKFLOW_DESCRIPTION: "Analyzes and clusters GitHub Copilot agent prompts to identify patterns and usage trends" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index 03fa84993a..a454d09159 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -1936,13 +1936,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1953,6 +1953,7 @@ jobs: env: WORKFLOW_NAME: "Python Data Visualization Generator" WORKFLOW_DESCRIPTION: "Generates high-quality data visualizations and trend charts using Python scientific computing libraries" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index c13a311416..dda4ec4adf 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -1420,13 +1420,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1437,6 +1437,7 @@ jobs: env: WORKFLOW_NAME: "Q" WORKFLOW_DESCRIPTION: "Intelligent assistant that answers questions, analyzes repositories, and can create PRs for workflow optimizations" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/release.lock.yml b/.github/workflows/release.lock.yml index c1c30f584f..3fb2e6ef60 100644 --- a/.github/workflows/release.lock.yml +++ b/.github/workflows/release.lock.yml @@ -949,13 +949,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -966,6 +966,7 @@ jobs: env: WORKFLOW_NAME: "Release" WORKFLOW_DESCRIPTION: "Build, test, and release gh-aw extension, then generate and prepend release highlights" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/repo-tree-map.lock.yml b/.github/workflows/repo-tree-map.lock.yml index f807989f15..6a501b711c 100644 --- a/.github/workflows/repo-tree-map.lock.yml +++ b/.github/workflows/repo-tree-map.lock.yml @@ -917,13 +917,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -934,6 +934,7 @@ jobs: env: WORKFLOW_NAME: "Repository Tree Map Generator" WORKFLOW_DESCRIPTION: "Generates ASCII tree map visualization of repository file structure weekly" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index bcce565bae..28f2a48f07 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -1434,13 +1434,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1451,6 +1451,7 @@ jobs: env: WORKFLOW_NAME: "Repository Quality Improvement Agent" WORKFLOW_DESCRIPTION: "Daily analysis and improvement of repository quality focusing on different software development lifecycle areas" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/research.lock.yml b/.github/workflows/research.lock.yml index 53f94a5e9e..5bad88c788 100644 --- a/.github/workflows/research.lock.yml +++ b/.github/workflows/research.lock.yml @@ -874,13 +874,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -891,6 +891,7 @@ jobs: env: WORKFLOW_NAME: "Basic Research Agent" WORKFLOW_DESCRIPTION: "Performs web research on any topic using Tavily search and creates a discussion with findings" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 2ba404324e..d671861477 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -1374,13 +1374,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1391,6 +1391,7 @@ jobs: env: WORKFLOW_NAME: "Safe Output Health Monitor" WORKFLOW_DESCRIPTION: "Monitors and analyzes the health of safe output operations across all agentic workflows" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 7cca641742..67437c1299 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -1223,13 +1223,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1240,6 +1240,7 @@ jobs: env: WORKFLOW_NAME: "Schema Consistency Checker" WORKFLOW_DESCRIPTION: "Detects inconsistencies between JSON schema, implementation code, and documentation" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index aedde1b546..d3b53139ba 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -1319,13 +1319,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1336,6 +1336,7 @@ jobs: env: WORKFLOW_NAME: "Scout" WORKFLOW_DESCRIPTION: "Performs deep research investigations using web search to gather and synthesize comprehensive information on any topic" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index 5165959be1..b8022a7eec 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -1140,13 +1140,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1157,6 +1157,7 @@ jobs: env: WORKFLOW_NAME: "Security Compliance Campaign" WORKFLOW_DESCRIPTION: "Fix critical vulnerabilities before audit deadline with full tracking and reporting" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/security-fix-pr.lock.yml b/.github/workflows/security-fix-pr.lock.yml index 4e5fe95d19..dd84f32f42 100644 --- a/.github/workflows/security-fix-pr.lock.yml +++ b/.github/workflows/security-fix-pr.lock.yml @@ -1062,13 +1062,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1079,6 +1079,7 @@ jobs: env: WORKFLOW_NAME: "Security Fix PR" WORKFLOW_DESCRIPTION: "Identifies and automatically fixes code security issues by creating pull requests with remediation" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/semantic-function-refactor.lock.yml b/.github/workflows/semantic-function-refactor.lock.yml index f6ee04133f..c0af86e37a 100644 --- a/.github/workflows/semantic-function-refactor.lock.yml +++ b/.github/workflows/semantic-function-refactor.lock.yml @@ -1378,13 +1378,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1395,6 +1395,7 @@ jobs: env: WORKFLOW_NAME: "Semantic Function Refactoring" WORKFLOW_DESCRIPTION: "Analyzes Go codebase daily to identify opportunities for semantic function extraction and refactoring" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index d63998d7e4..8324b54f79 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -1148,13 +1148,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1165,6 +1165,7 @@ jobs: env: WORKFLOW_NAME: "Slide Deck Maintainer" WORKFLOW_DESCRIPTION: "Maintains the gh-aw slide deck by scanning repository content and detecting layout issues using Playwright" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 26d391f907..55ce05666b 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -1229,13 +1229,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1246,6 +1246,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Claude" WORKFLOW_DESCRIPTION: "Smoke test workflow that validates Claude engine functionality by reviewing recent PRs twice daily" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-codex-firewall.lock.yml b/.github/workflows/smoke-codex-firewall.lock.yml index c0001ef5eb..7ee61571b5 100644 --- a/.github/workflows/smoke-codex-firewall.lock.yml +++ b/.github/workflows/smoke-codex-firewall.lock.yml @@ -949,13 +949,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -966,6 +966,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Codex Firewall" WORKFLOW_DESCRIPTION: "Smoke test workflow that validates Codex engine functionality with AWF firewall enabled" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 17ecbd6d71..2e08556d17 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -1043,13 +1043,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1060,6 +1060,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Codex" WORKFLOW_DESCRIPTION: "Smoke test workflow that validates Codex engine functionality by reviewing recent PRs twice daily" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-copilot-no-firewall.lock.yml b/.github/workflows/smoke-copilot-no-firewall.lock.yml index c05008dde0..92858e1e6c 100644 --- a/.github/workflows/smoke-copilot-no-firewall.lock.yml +++ b/.github/workflows/smoke-copilot-no-firewall.lock.yml @@ -1074,13 +1074,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1091,6 +1091,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Copilot No Firewall" WORKFLOW_DESCRIPTION: "Smoke test workflow that validates Copilot engine functionality without firewall by reviewing recent PRs twice daily" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-copilot-playwright.lock.yml b/.github/workflows/smoke-copilot-playwright.lock.yml index 504f7128e6..dd0532b503 100644 --- a/.github/workflows/smoke-copilot-playwright.lock.yml +++ b/.github/workflows/smoke-copilot-playwright.lock.yml @@ -1174,13 +1174,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1191,6 +1191,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Copilot Playwright" WORKFLOW_DESCRIPTION: "Smoke test workflow that validates Copilot engine functionality by reviewing recent PRs every 6 hours" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-copilot-safe-inputs.lock.yml b/.github/workflows/smoke-copilot-safe-inputs.lock.yml index dc5a037d81..4eabe4fea9 100644 --- a/.github/workflows/smoke-copilot-safe-inputs.lock.yml +++ b/.github/workflows/smoke-copilot-safe-inputs.lock.yml @@ -904,13 +904,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -921,6 +921,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Copilot Safe Inputs" WORKFLOW_DESCRIPTION: "Smoke Copilot Safe Inputs" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 8f12ec3257..3c925a0c49 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -997,13 +997,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1014,6 +1014,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Copilot" WORKFLOW_DESCRIPTION: "Smoke Copilot" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-detector.lock.yml b/.github/workflows/smoke-detector.lock.yml index c64241de12..68b7bde18a 100644 --- a/.github/workflows/smoke-detector.lock.yml +++ b/.github/workflows/smoke-detector.lock.yml @@ -1296,13 +1296,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1313,6 +1313,7 @@ jobs: env: WORKFLOW_NAME: "Smoke Detector - Smoke Test Failure Investigator" WORKFLOW_DESCRIPTION: "Reusable workflow that analyzes failed workflow runs and provides diagnostic information" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/smoke-srt.lock.yml b/.github/workflows/smoke-srt.lock.yml index 3517bb0393..78e6191541 100644 --- a/.github/workflows/smoke-srt.lock.yml +++ b/.github/workflows/smoke-srt.lock.yml @@ -956,13 +956,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -973,6 +973,7 @@ jobs: env: WORKFLOW_NAME: "Smoke SRT" WORKFLOW_DESCRIPTION: "Smoke test workflow for Sandbox Runtime (SRT) - validates SRT functionality with Copilot" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/spec-kit-execute.lock.yml b/.github/workflows/spec-kit-execute.lock.yml index f5fa8fd2b4..45351e6e9c 100644 --- a/.github/workflows/spec-kit-execute.lock.yml +++ b/.github/workflows/spec-kit-execute.lock.yml @@ -1293,13 +1293,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1310,6 +1310,7 @@ jobs: env: WORKFLOW_NAME: "Spec-Kit Execute" WORKFLOW_DESCRIPTION: "Execute pending spec-kit specifications" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/spec-kit-executor.lock.yml b/.github/workflows/spec-kit-executor.lock.yml index ab464e39db..3f566365a7 100644 --- a/.github/workflows/spec-kit-executor.lock.yml +++ b/.github/workflows/spec-kit-executor.lock.yml @@ -1140,13 +1140,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1157,6 +1157,7 @@ jobs: env: WORKFLOW_NAME: "Spec Kit Executor" WORKFLOW_DESCRIPTION: "Automatically executes pending spec-kit tasks on a schedule" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/speckit-dispatcher.lock.yml b/.github/workflows/speckit-dispatcher.lock.yml index 9bf4c3b1f8..6fd567e1ef 100644 --- a/.github/workflows/speckit-dispatcher.lock.yml +++ b/.github/workflows/speckit-dispatcher.lock.yml @@ -1349,13 +1349,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1366,6 +1366,7 @@ jobs: env: WORKFLOW_NAME: "Spec-Kit Command Dispatcher" WORKFLOW_DESCRIPTION: "Dispatches user requests to appropriate spec-kit commands for spec-driven development" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 96c0bfdf35..27c61a4a0a 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -1659,13 +1659,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1676,6 +1676,7 @@ jobs: env: WORKFLOW_NAME: "Stale Repository Identifier" WORKFLOW_DESCRIPTION: "Monthly workflow that identifies stale repositories in an organization and creates detailed activity reports" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index cc5277faed..a25078dd3c 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -1282,13 +1282,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1299,6 +1299,7 @@ jobs: env: WORKFLOW_NAME: "Static Analysis Report" WORKFLOW_DESCRIPTION: "Scans agentic workflows daily for security vulnerabilities using zizmor, poutine, and actionlint" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/sub-issue-closer.lock.yml b/.github/workflows/sub-issue-closer.lock.yml index eacc9c003f..78fc3e412d 100644 --- a/.github/workflows/sub-issue-closer.lock.yml +++ b/.github/workflows/sub-issue-closer.lock.yml @@ -959,13 +959,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -976,6 +976,7 @@ jobs: env: WORKFLOW_NAME: "Sub-Issue Closer" WORKFLOW_DESCRIPTION: "Scheduled workflow that recursively closes parent issues when all sub-issues are 100% complete" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index c3acb222b2..df3265b27f 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -1021,13 +1021,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1038,6 +1038,7 @@ jobs: env: WORKFLOW_NAME: "Super Linter Report" WORKFLOW_DESCRIPTION: "Runs Markdown quality checks using Super Linter and creates issues for violations" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 11d0af5be5..6b358690a0 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -1356,13 +1356,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1373,6 +1373,7 @@ jobs: env: WORKFLOW_NAME: "Technical Doc Writer" WORKFLOW_DESCRIPTION: "Reviews and improves technical documentation based on provided topics" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/terminal-stylist.lock.yml b/.github/workflows/terminal-stylist.lock.yml index de0d5db772..c31f7748dc 100644 --- a/.github/workflows/terminal-stylist.lock.yml +++ b/.github/workflows/terminal-stylist.lock.yml @@ -941,13 +941,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -958,6 +958,7 @@ jobs: env: WORKFLOW_NAME: "Terminal Stylist" WORKFLOW_DESCRIPTION: "Analyzes and improves console output styling and formatting in the codebase" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index e18180be62..c28c9b2da3 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -1001,13 +1001,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1018,6 +1018,7 @@ jobs: env: WORKFLOW_NAME: "Tidy" WORKFLOW_DESCRIPTION: "Automatically formats and tidies code files (Go, JS, TypeScript) when code changes are pushed or on command" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/typist.lock.yml b/.github/workflows/typist.lock.yml index 54423a5cdb..e19ce6670b 100644 --- a/.github/workflows/typist.lock.yml +++ b/.github/workflows/typist.lock.yml @@ -1376,13 +1376,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1393,6 +1393,7 @@ jobs: env: WORKFLOW_NAME: "Typist - Go Type Analysis" WORKFLOW_DESCRIPTION: "Analyzes Go type usage patterns and identifies opportunities for better type safety and code improvements" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 5c70fc8b1e..f9140ed71d 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -1363,13 +1363,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1380,6 +1380,7 @@ jobs: env: WORKFLOW_NAME: "Documentation Unbloat" WORKFLOW_DESCRIPTION: "Reviews and simplifies documentation by reducing verbosity while maintaining clarity and completeness" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/video-analyzer.lock.yml b/.github/workflows/video-analyzer.lock.yml index 01a5a54d49..2bc833111a 100644 --- a/.github/workflows/video-analyzer.lock.yml +++ b/.github/workflows/video-analyzer.lock.yml @@ -1124,13 +1124,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1141,6 +1141,7 @@ jobs: env: WORKFLOW_NAME: "Video Analysis Agent" WORKFLOW_DESCRIPTION: "Analyzes video files using ffmpeg to extract metadata, frames, and other technical information" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 9cccbe8093..7f0ae15614 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -1464,13 +1464,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1481,6 +1481,7 @@ jobs: env: WORKFLOW_NAME: "Weekly Issue Summary" WORKFLOW_DESCRIPTION: "Creates weekly summary of issue activity including trends, charts, and insights every Monday" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/workflow-generator.lock.yml b/.github/workflows/workflow-generator.lock.yml index abf39f3827..4cab41eea9 100644 --- a/.github/workflows/workflow-generator.lock.yml +++ b/.github/workflows/workflow-generator.lock.yml @@ -945,13 +945,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -962,6 +962,7 @@ jobs: env: WORKFLOW_NAME: "Workflow Generator" WORKFLOW_DESCRIPTION: "Workflow generator that updates issue status and assigns to Copilot agent for workflow design" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index 7667487c4a..7cfc644234 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -1379,13 +1379,13 @@ jobs: uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-artifacts - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-artifacts - name: Download agent output artifact continue-on-error: true uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: agent-output - path: /tmp/gh-aw/threat-detection/ + path: /tmp/gh-aw/threat-detection/agent-output - name: Echo agent output types env: AGENT_OUTPUT_TYPES: ${{ needs.agent.outputs.output_types }} @@ -1396,6 +1396,7 @@ jobs: env: WORKFLOW_NAME: "Workflow Health Manager - Meta-Orchestrator" WORKFLOW_DESCRIPTION: "Meta-orchestrator for monitoring and managing health of all agentic workflows in the repository" + HAS_PATCH: ${{ needs.agent.outputs.has_patch }} with: script: | const { setupGlobals } = require('/tmp/gh-aw/actions/setup_globals.cjs'); diff --git a/actions/setup/js/file_helpers.cjs b/actions/setup/js/file_helpers.cjs new file mode 100644 index 0000000000..189a710e33 --- /dev/null +++ b/actions/setup/js/file_helpers.cjs @@ -0,0 +1,84 @@ +// @ts-check +/// + +/** + * File Helper Functions + * + * This module provides helper functions for file operations, + * particularly for listing directories and checking file existence + * with helpful error messages. + */ + +const fs = require("fs"); +const path = require("path"); +const { getErrorMessage } = require("./error_helpers.cjs"); + +/** + * List all files recursively in a directory + * @param {string} dirPath - The directory path to list + * @param {string} [relativeTo] - Optional base path to show relative paths + * @returns {string[]} Array of file paths + */ +function listFilesRecursively(dirPath, relativeTo) { + const files = []; + try { + if (!fs.existsSync(dirPath)) { + return files; + } + const entries = fs.readdirSync(dirPath, { withFileTypes: true }); + for (const entry of entries) { + const fullPath = path.join(dirPath, entry.name); + if (entry.isDirectory()) { + files.push(...listFilesRecursively(fullPath, relativeTo)); + } else { + const displayPath = relativeTo ? path.relative(relativeTo, fullPath) : fullPath; + files.push(displayPath); + } + } + } catch (error) { + core.warning("Failed to list files in " + dirPath + ": " + getErrorMessage(error)); + } + return files; +} + +/** + * Check if file exists and provide helpful error message with directory listing + * @param {string} filePath - The file path to check + * @param {string} artifactDir - The artifact directory to list if file not found + * @param {string} fileDescription - Description of the file (e.g., "Prompt file", "Agent output file") + * @param {boolean} required - Whether the file is required + * @returns {boolean} True if file exists (or not required), false otherwise + */ +function checkFileExists(filePath, artifactDir, fileDescription, required) { + if (fs.existsSync(filePath)) { + try { + const stats = fs.statSync(filePath); + const fileInfo = filePath + " (" + stats.size + " bytes)"; + core.info(fileDescription + " found: " + fileInfo); + return true; + } catch (error) { + core.warning("Failed to stat " + fileDescription.toLowerCase() + ": " + getErrorMessage(error)); + return false; + } + } else { + if (required) { + core.error("โŒ " + fileDescription + " not found at: " + filePath); + // List all files in artifact directory for debugging + core.info("๐Ÿ“ Listing all files in artifact directory: " + artifactDir); + const files = listFilesRecursively(artifactDir, artifactDir); + if (files.length === 0) { + core.warning(" No files found in " + artifactDir); + } else { + core.info(" Found " + files.length + " file(s):"); + files.forEach(file => core.info(" - " + file)); + } + core.setFailed("โŒ " + fileDescription + " not found at: " + filePath); + return false; + } else { + core.info("No " + fileDescription.toLowerCase() + " found at: " + filePath); + return true; + } + } +} + +module.exports = { listFilesRecursively, checkFileExists }; diff --git a/actions/setup/js/file_helpers.test.cjs b/actions/setup/js/file_helpers.test.cjs new file mode 100644 index 0000000000..b272e9a453 --- /dev/null +++ b/actions/setup/js/file_helpers.test.cjs @@ -0,0 +1,141 @@ +// @ts-check +/// + +const { describe, it, expect, beforeEach, afterEach } = require("vitest"); +const fs = require("fs"); +const path = require("path"); +const os = require("os"); +const { listFilesRecursively, checkFileExists } = require("./file_helpers.cjs"); + +// Mock core object for testing +global.core = { + info: () => {}, + warning: () => {}, + error: () => {}, + setFailed: () => {}, +}; + +describe("listFilesRecursively", () => { + let tempDir; + + beforeEach(() => { + // Create a temporary directory for testing + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "file-helpers-test-")); + }); + + afterEach(() => { + // Clean up temporary directory + if (fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + }); + + it("should return empty array for non-existent directory", () => { + const result = listFilesRecursively("/non/existent/path"); + expect(result).toEqual([]); + }); + + it("should list files in flat directory", () => { + // Create test files + fs.writeFileSync(path.join(tempDir, "file1.txt"), "content1"); + fs.writeFileSync(path.join(tempDir, "file2.txt"), "content2"); + + const result = listFilesRecursively(tempDir); + expect(result).toHaveLength(2); + expect(result.some(f => f.endsWith("file1.txt"))).toBe(true); + expect(result.some(f => f.endsWith("file2.txt"))).toBe(true); + }); + + it("should list files recursively in nested directories", () => { + // Create nested structure + const subDir = path.join(tempDir, "subdir"); + fs.mkdirSync(subDir); + fs.writeFileSync(path.join(tempDir, "root.txt"), "root"); + fs.writeFileSync(path.join(subDir, "nested.txt"), "nested"); + + const result = listFilesRecursively(tempDir); + expect(result).toHaveLength(2); + expect(result.some(f => f.endsWith("root.txt"))).toBe(true); + expect(result.some(f => f.endsWith("nested.txt"))).toBe(true); + }); + + it("should return relative paths when relativeTo is provided", () => { + fs.writeFileSync(path.join(tempDir, "file.txt"), "content"); + + const result = listFilesRecursively(tempDir, tempDir); + expect(result).toHaveLength(1); + expect(result[0]).toBe("file.txt"); + }); +}); + +describe("checkFileExists", () => { + let tempDir; + let mockCore; + + beforeEach(() => { + tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "file-helpers-test-")); + + // Create mock core with tracking + mockCore = { + infoCalls: [], + warningCalls: [], + errorCalls: [], + setFailedCalls: [], + info: function (msg) { + this.infoCalls.push(msg); + }, + warning: function (msg) { + this.warningCalls.push(msg); + }, + error: function (msg) { + this.errorCalls.push(msg); + }, + setFailed: function (msg) { + this.setFailedCalls.push(msg); + }, + }; + global.core = mockCore; + }); + + afterEach(() => { + if (fs.existsSync(tempDir)) { + fs.rmSync(tempDir, { recursive: true, force: true }); + } + }); + + it("should return true for existing file", () => { + const filePath = path.join(tempDir, "exists.txt"); + fs.writeFileSync(filePath, "content"); + + const result = checkFileExists(filePath, tempDir, "Test file", true); + expect(result).toBe(true); + expect(mockCore.infoCalls.some(msg => msg.includes("Test file found"))).toBe(true); + }); + + it("should return false and call setFailed for missing required file", () => { + const filePath = path.join(tempDir, "missing.txt"); + + const result = checkFileExists(filePath, tempDir, "Test file", true); + expect(result).toBe(false); + expect(mockCore.errorCalls.some(msg => msg.includes("Test file not found"))).toBe(true); + expect(mockCore.setFailedCalls).toHaveLength(1); + }); + + it("should return true for missing non-required file", () => { + const filePath = path.join(tempDir, "missing.txt"); + + const result = checkFileExists(filePath, tempDir, "Test file", false); + expect(result).toBe(true); + expect(mockCore.infoCalls.some(msg => msg.includes("No test file found"))).toBe(true); + }); + + it("should list directory contents when file not found", () => { + const filePath = path.join(tempDir, "missing.txt"); + fs.writeFileSync(path.join(tempDir, "other.txt"), "other"); + + checkFileExists(filePath, tempDir, "Test file", true); + expect(mockCore.infoCalls.some(msg => msg.includes("Listing all files"))).toBe(true); + expect(mockCore.infoCalls.some(msg => msg.includes("Found 1 file(s)"))).toBe(true); + expect(mockCore.infoCalls.some(msg => msg.includes("other.txt"))).toBe(true); + }); +}); diff --git a/actions/setup/js/parse_threat_detection_results.cjs b/actions/setup/js/parse_threat_detection_results.cjs index 61dc30217a..9f0bff91b8 100644 --- a/actions/setup/js/parse_threat_detection_results.cjs +++ b/actions/setup/js/parse_threat_detection_results.cjs @@ -11,7 +11,9 @@ */ const fs = require("fs"); +const path = require("path"); const { getErrorMessage } = require("./error_helpers.cjs"); +const { listFilesRecursively } = require("./file_helpers.cjs"); /** * Main entry point for parsing threat detection results @@ -22,18 +24,32 @@ async function main() { let verdict = { prompt_injection: false, secret_leak: false, malicious_patch: false, reasons: [] }; try { - const outputPath = "/tmp/gh-aw/threat-detection/agent_output.json"; - if (fs.existsSync(outputPath)) { - const outputContent = fs.readFileSync(outputPath, "utf8"); - const lines = outputContent.split("\n"); + // Agent output is downloaded to /tmp/gh-aw/threat-detection/agent-output + const agentOutputDir = "/tmp/gh-aw/threat-detection/agent-output"; + const outputPath = path.join(agentOutputDir, "agent_output.json"); + if (!fs.existsSync(outputPath)) { + core.error("โŒ Agent output file not found at: " + outputPath); + // List all files in artifact directory for debugging + core.info("๐Ÿ“ Listing all files in artifact directory: " + agentOutputDir); + const files = listFilesRecursively(agentOutputDir, agentOutputDir); + if (files.length === 0) { + core.warning(" No files found in " + agentOutputDir); + } else { + core.info(" Found " + files.length + " file(s):"); + files.forEach(file => core.info(" - " + file)); + } + core.setFailed("โŒ Agent output file not found at: " + outputPath); + return; + } + const outputContent = fs.readFileSync(outputPath, "utf8"); + const lines = outputContent.split("\n"); - for (const line of lines) { - const trimmedLine = line.trim(); - if (trimmedLine.startsWith("THREAT_DETECTION_RESULT:")) { - const jsonPart = trimmedLine.substring("THREAT_DETECTION_RESULT:".length); - verdict = { ...verdict, ...JSON.parse(jsonPart) }; - break; - } + for (const line of lines) { + const trimmedLine = line.trim(); + if (trimmedLine.startsWith("THREAT_DETECTION_RESULT:")) { + const jsonPart = trimmedLine.substring("THREAT_DETECTION_RESULT:".length); + verdict = { ...verdict, ...JSON.parse(jsonPart) }; + break; } } } catch (error) { diff --git a/actions/setup/js/setup_threat_detection.cjs b/actions/setup/js/setup_threat_detection.cjs index 06b8cfd427..5306f95150 100644 --- a/actions/setup/js/setup_threat_detection.cjs +++ b/actions/setup/js/setup_threat_detection.cjs @@ -12,7 +12,8 @@ */ const fs = require("fs"); -const { getErrorMessage } = require("./error_helpers.cjs"); +const path = require("path"); +const { checkFileExists } = require("./file_helpers.cjs"); /** * Main entry point for setting up threat detection @@ -21,56 +22,42 @@ const { getErrorMessage } = require("./error_helpers.cjs"); */ async function main(templateContent) { // Check if prompt file exists - // Since agent-artifacts is downloaded to /tmp/gh-aw/threat-detection/, - // and the artifact contains files with full paths like /tmp/gh-aw/aw-prompts/prompt.txt, - // the downloaded file will be at /tmp/gh-aw/threat-detection/tmp/gh-aw/aw-prompts/prompt.txt - const promptPath = "/tmp/gh-aw/threat-detection/tmp/gh-aw/aw-prompts/prompt.txt"; - let promptFileInfo = "No prompt file found"; - if (fs.existsSync(promptPath)) { - try { - const stats = fs.statSync(promptPath); - promptFileInfo = promptPath + " (" + stats.size + " bytes)"; - core.info("Prompt file found: " + promptFileInfo); - } catch (error) { - core.warning("Failed to stat prompt file: " + getErrorMessage(error)); - } - } else { - core.info("No prompt file found at: " + promptPath); + // Since agent-artifacts is downloaded to /tmp/gh-aw/threat-detection/agent-artifacts, + // and the artifact contains files like aw-prompts/prompt.txt (GitHub Actions strips the common /tmp/gh-aw/ parent), + // the downloaded file will be at /tmp/gh-aw/threat-detection/agent-artifacts/aw-prompts/prompt.txt + const artifactsDir = "/tmp/gh-aw/threat-detection/agent-artifacts"; + const promptPath = path.join(artifactsDir, "aw-prompts/prompt.txt"); + if (!checkFileExists(promptPath, artifactsDir, "Prompt file", true)) { + return; } // Check if agent output file exists - // Agent output is still a separate artifact downloaded to /tmp/gh-aw/threat-detection/, - // so it appears directly as /tmp/gh-aw/threat-detection/agent_output.json - const agentOutputPath = "/tmp/gh-aw/threat-detection/agent_output.json"; - let agentOutputFileInfo = "No agent output file found"; - if (fs.existsSync(agentOutputPath)) { - try { - const stats = fs.statSync(agentOutputPath); - agentOutputFileInfo = agentOutputPath + " (" + stats.size + " bytes)"; - core.info("Agent output file found: " + agentOutputFileInfo); - } catch (error) { - core.warning("Failed to stat agent output file: " + getErrorMessage(error)); - } - } else { - core.info("No agent output file found at: " + agentOutputPath); + // Agent output is a separate artifact downloaded to /tmp/gh-aw/threat-detection/agent-output, + // so it appears directly as /tmp/gh-aw/threat-detection/agent-output/agent_output.json + const agentOutputDir = "/tmp/gh-aw/threat-detection/agent-output"; + const agentOutputPath = path.join(agentOutputDir, "agent_output.json"); + if (!checkFileExists(agentOutputPath, agentOutputDir, "Agent output file", true)) { + return; } // Check if patch file exists - // Since agent-artifacts is downloaded to /tmp/gh-aw/threat-detection/, - // and the artifact contains /tmp/gh-aw/aw.patch, - // the downloaded file will be at /tmp/gh-aw/threat-detection/tmp/gh-aw/aw.patch - const patchPath = "/tmp/gh-aw/threat-detection/tmp/gh-aw/aw.patch"; + // Since agent-artifacts is downloaded to /tmp/gh-aw/threat-detection/agent-artifacts, + // and the artifact contains aw.patch (GitHub Actions strips the common /tmp/gh-aw/ parent), + // the downloaded file will be at /tmp/gh-aw/threat-detection/agent-artifacts/aw.patch + const patchPath = path.join(artifactsDir, "aw.patch"); + const hasPatch = process.env.HAS_PATCH === "true"; + if (!checkFileExists(patchPath, artifactsDir, "Patch file", hasPatch)) { + if (hasPatch) { + return; + } + } + + // Get file info for template replacement + const promptFileInfo = promptPath + " (" + fs.statSync(promptPath).size + " bytes)"; + const agentOutputFileInfo = agentOutputPath + " (" + fs.statSync(agentOutputPath).size + " bytes)"; let patchFileInfo = "No patch file found"; if (fs.existsSync(patchPath)) { - try { - const stats = fs.statSync(patchPath); - patchFileInfo = patchPath + " (" + stats.size + " bytes)"; - core.info("Patch file found: " + patchFileInfo); - } catch (error) { - core.warning("Failed to stat patch file: " + getErrorMessage(error)); - } - } else { - core.info("No patch file found at: " + patchPath); + patchFileInfo = patchPath + " (" + fs.statSync(patchPath).size + " bytes)"; } // Create threat detection prompt with embedded template diff --git a/pkg/campaign/schemas/project_update_schema.json b/pkg/campaign/schemas/project_update_schema.json index 4ba26f3c61..efa78a5e2d 100644 --- a/pkg/campaign/schemas/project_update_schema.json +++ b/pkg/campaign/schemas/project_update_schema.json @@ -4,13 +4,7 @@ "type": "object", "$comment": "Governed contract for campaign orchestrator writes. See prompts/project_update_instructions.md (law) and prompts/project_update_contract_checklist.md (enforcement). This schema validates payload shape only; it cannot enforce read/write phase separation or equality to a specific campaign ID value.", "additionalProperties": false, - "required": [ - "project", - "campaign_id", - "content_type", - "content_number", - "fields" - ], + "required": ["project", "campaign_id", "content_type", "content_number", "fields"], "properties": { "project": { "type": "string", @@ -23,10 +17,7 @@ }, "content_type": { "type": "string", - "enum": [ - "issue", - "pull_request" - ] + "enum": ["issue", "pull_request"] }, "content_number": { "type": "integer", @@ -39,11 +30,7 @@ "$defs": { "status": { "type": "string", - "enum": [ - "Todo", - "In Progress", - "Done" - ] + "enum": ["Todo", "In Progress", "Done"] }, "isoDate": { "type": "string", @@ -60,9 +47,7 @@ "$ref": "#/$defs/status" } }, - "required": [ - "status" - ], + "required": ["status"], "maxProperties": 1 }, { @@ -88,19 +73,11 @@ }, "priority": { "type": "string", - "enum": [ - "High", - "Medium", - "Low" - ] + "enum": ["High", "Medium", "Low"] }, "size": { "type": "string", - "enum": [ - "Small", - "Medium", - "Large" - ] + "enum": ["Small", "Medium", "Large"] }, "start_date": { "$ref": "#/$defs/isoDate" @@ -109,16 +86,7 @@ "$ref": "#/$defs/isoDate" } }, - "required": [ - "status", - "campaign_id", - "worker_workflow", - "repository", - "priority", - "size", - "start_date", - "end_date" - ] + "required": ["status", "campaign_id", "worker_workflow", "repository", "priority", "size", "start_date", "end_date"] } ] } diff --git a/pkg/parser/schemas/included_file_schema.json b/pkg/parser/schemas/included_file_schema.json index a6cf976984..44a9cf8caa 100644 --- a/pkg/parser/schemas/included_file_schema.json +++ b/pkg/parser/schemas/included_file_schema.json @@ -9,11 +9,7 @@ "description": { "type": "string", "description": "Optional description for the included file or custom agent configuration. Used for documentation and clarity.", - "examples": [ - "Agent instructions", - "Shared tool configuration", - "Common workflow steps" - ] + "examples": ["Agent instructions", "Shared tool configuration", "Common workflow steps"] }, "metadata": { "type": "object", @@ -66,12 +62,7 @@ }, "type": { "type": "string", - "enum": [ - "string", - "choice", - "boolean", - "number" - ], + "enum": ["string", "choice", "boolean", "number"], "description": "Input type" }, "options": { @@ -99,11 +90,7 @@ { "type": "string", "description": "Single glob pattern for files/directories where these instructions apply (for custom agent instruction files)", - "examples": [ - "**/*.py", - "src/**/*.js", - "pkg/workflow/*.go" - ] + "examples": ["**/*.py", "src/**/*.js", "pkg/workflow/*.go"] }, { "type": "array", @@ -113,14 +100,8 @@ "description": "Glob pattern for file/directory matching" }, "examples": [ - [ - "**/*.py", - "**/*.pyw" - ], - [ - "src/**/*.ts", - "src/**/*.tsx" - ] + ["**/*.py", "**/*.pyw"], + ["src/**/*.ts", "src/**/*.tsx"] ] } ] @@ -461,16 +442,9 @@ "description": "Playwright tool configuration with custom version and domain restrictions", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Optional Playwright container version (e.g., 'v1.41.0', 1.41, 20). Numeric values are automatically converted to strings at runtime.", - "examples": [ - "v1.41.0", - 1.41, - 20 - ] + "examples": ["v1.41.0", 1.41, 20] }, "allowed_domains": { "description": "Domains allowed for Playwright browser network access. Defaults to localhost only for security.", @@ -512,14 +486,7 @@ "description": "Short syntax: array of language identifiers to enable (e.g., [\"go\", \"typescript\"])", "items": { "type": "string", - "enum": [ - "go", - "typescript", - "python", - "java", - "rust", - "csharp" - ] + "enum": ["go", "typescript", "python", "java", "rust", "csharp"] } }, { @@ -527,16 +494,9 @@ "description": "Serena configuration with custom version and language-specific settings", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Optional Serena MCP version. Numeric values are automatically converted to strings at runtime.", - "examples": [ - "latest", - "0.1.0", - 1.0 - ] + "examples": ["latest", "0.1.0", 1.0] }, "args": { "type": "array", @@ -559,10 +519,7 @@ "type": "object", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Go version (e.g., \"1.21\", 1.21)" }, "go-mod-file": { @@ -588,10 +545,7 @@ "type": "object", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Node.js version for TypeScript (e.g., \"22\", 22)" } }, @@ -609,10 +563,7 @@ "type": "object", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Python version (e.g., \"3.12\", 3.12)" } }, @@ -630,10 +581,7 @@ "type": "object", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Java version (e.g., \"21\", 21)" } }, @@ -651,10 +599,7 @@ "type": "object", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Rust version (e.g., \"stable\", \"1.75\")" } }, @@ -672,10 +617,7 @@ "type": "object", "properties": { "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": ".NET version for C# (e.g., \"8.0\", 8.0)" } }, @@ -703,10 +645,7 @@ "description": "Enable agentic-workflows tool with default settings (same as true)" } ], - "examples": [ - true, - null - ] + "examples": [true, null] }, "edit": { "description": "File editing tool for reading, creating, and modifying files in the repository", @@ -758,11 +697,7 @@ "type": "integer", "minimum": 1, "description": "Timeout in seconds for tool/MCP server operations. Applies to all tools and MCP servers if supported by the engine. Default varies by engine (Claude: 60s, Codex: 120s).", - "examples": [ - 60, - 120, - 300 - ] + "examples": [60, 120, 300] }, "startup-timeout": { "type": "integer", @@ -840,13 +775,7 @@ "properties": { "type": { "type": "string", - "enum": [ - "string", - "number", - "boolean", - "array", - "object" - ], + "enum": ["string", "number", "boolean", "array", "object"], "description": "JSON schema type for the input parameter" }, "description": { @@ -888,17 +817,10 @@ "description": "Timeout in seconds for tool execution. Default is 60 seconds. Applies to shell (run) and Python (py) tools.", "default": 60, "minimum": 1, - "examples": [ - 30, - 60, - 120, - 300 - ] + "examples": [30, 60, 120, 300] } }, - "required": [ - "description" - ], + "required": ["description"], "additionalProperties": false } }, @@ -956,9 +878,7 @@ "oneOf": [ { "type": "string", - "enum": [ - "defaults" - ], + "enum": ["defaults"], "description": "Use default network access" }, { @@ -987,9 +907,7 @@ }, { "type": "string", - "enum": [ - "disable" - ], + "enum": ["disable"], "description": "Disable AWF firewall (triggers warning if allowed != *, error in strict mode if allowed is not * or engine does not support firewall)" }, { @@ -1004,27 +922,14 @@ } }, "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "AWF version to use (empty = latest release). Can be a string (e.g., 'v1.0.0', 'latest') or number (e.g., 20, 3.11). Numeric values are automatically converted to strings at runtime.", - "examples": [ - "v1.0.0", - "latest", - 20, - 3.11 - ] + "examples": ["v1.0.0", "latest", 20, 3.11] }, "log-level": { "type": "string", "description": "AWF log level (default: info). Valid values: debug, info, warn, error", - "enum": [ - "debug", - "info", - "warn", - "error" - ] + "enum": ["debug", "info", "warn", "error"] } }, "additionalProperties": false @@ -1041,12 +946,7 @@ "oneOf": [ { "type": "string", - "enum": [ - "read-all", - "write-all", - "read", - "write" - ], + "enum": ["read-all", "write-all", "read", "write"], "description": "Simple permissions string: 'read-all' (all read permissions), 'write-all' (all write permissions), 'read' or 'write' (basic level)" }, { @@ -1055,137 +955,77 @@ "properties": { "actions": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for GitHub Actions" }, "checks": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for checks" }, "contents": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for repository contents" }, "deployments": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for deployments" }, "discussions": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for discussions" }, "id-token": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for ID token" }, "issues": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for issues" }, "metadata": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for metadata" }, "packages": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for packages" }, "pages": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for GitHub Pages" }, "pull-requests": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for pull requests" }, "security-events": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for security events" }, "statuses": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for commit statuses" }, "attestations": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for attestations" }, "models": { "type": "string", - "enum": [ - "read", - "write", - "none" - ], + "enum": ["read", "write", "none"], "description": "Permission for AI models" } }, @@ -1202,10 +1042,7 @@ "properties": { "type": { "type": "string", - "enum": [ - "stdio", - "local" - ], + "enum": ["stdio", "local"], "description": "MCP connection type for stdio (local is an alias for stdio)" }, "registry": { @@ -1225,17 +1062,9 @@ "description": "Container image for stdio MCP connections" }, "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Optional version/tag for the container image (e.g., 'latest', 'v1.0.0', 20, 3.11). Numeric values are automatically converted to strings at runtime.", - "examples": [ - "latest", - "v1.0.0", - 20, - 3.11 - ] + "examples": ["latest", "v1.0.0", 20, 3.11] }, "args": { "type": "array", @@ -1299,70 +1128,49 @@ "$comment": "Validation constraints: (1) Mutual exclusion: 'command' and 'container' cannot both be specified. (2) Requirement: Either 'command' or 'container' must be provided (via 'anyOf'). (3) Dependency: 'network' requires 'container' (validated in 'allOf'). (4) Type constraint: When 'type' is 'stdio' or 'local', either 'command' or 'container' is required.", "anyOf": [ { - "required": [ - "type" - ] + "required": ["type"] }, { - "required": [ - "command" - ] + "required": ["command"] }, { - "required": [ - "container" - ] + "required": ["container"] } ], "not": { "allOf": [ { - "required": [ - "command" - ] + "required": ["command"] }, { - "required": [ - "container" - ] + "required": ["container"] } ] }, "allOf": [ { "if": { - "required": [ - "network" - ] + "required": ["network"] }, "then": { - "required": [ - "container" - ] + "required": ["container"] } }, { "if": { "properties": { "type": { - "enum": [ - "stdio", - "local" - ] + "enum": ["stdio", "local"] } } }, "then": { "anyOf": [ { - "required": [ - "command" - ] + "required": ["command"] }, { - "required": [ - "container" - ] + "required": ["container"] } ] } @@ -1375,9 +1183,7 @@ "properties": { "type": { "type": "string", - "enum": [ - "http" - ], + "enum": ["http"], "description": "MCP connection type for HTTP" }, "registry": { @@ -1407,9 +1213,7 @@ } } }, - "required": [ - "url" - ], + "required": ["url"], "additionalProperties": false }, "safe_job": { @@ -1502,12 +1306,7 @@ }, "type": { "type": "string", - "enum": [ - "string", - "number", - "boolean", - "choice" - ], + "enum": ["string", "number", "boolean", "choice"], "description": "Input type" }, "options": { @@ -1533,9 +1332,7 @@ "description": "Custom output message" } }, - "required": [ - "inputs" - ], + "required": ["inputs"], "additionalProperties": false }, "engine_config": { @@ -1562,12 +1359,7 @@ "oneOf": [ { "type": "string", - "enum": [ - "claude", - "codex", - "copilot", - "custom" - ], + "enum": ["claude", "codex", "copilot", "custom"], "description": "Simple engine name: 'claude' (default, Claude Code), 'copilot' (GitHub Copilot CLI), 'codex' (OpenAI Codex CLI), or 'custom' (user-defined steps)" }, { @@ -1576,26 +1368,13 @@ "properties": { "id": { "type": "string", - "enum": [ - "claude", - "codex", - "custom", - "copilot" - ], + "enum": ["claude", "codex", "custom", "copilot"], "description": "AI engine identifier: 'claude' (Claude Code), 'codex' (OpenAI Codex CLI), 'copilot' (GitHub Copilot CLI), or 'custom' (user-defined GitHub Actions steps)" }, "version": { - "type": [ - "string", - "number" - ], + "type": ["string", "number"], "description": "Optional version of the AI engine action (e.g., 'beta', 'stable', 20). Has sensible defaults and can typically be omitted. Numeric values are automatically converted to strings at runtime.", - "examples": [ - "beta", - "stable", - 20, - 3.11 - ] + "examples": ["beta", "stable", 20, 3.11] }, "model": { "type": "string", @@ -1633,9 +1412,7 @@ "description": "Whether to cancel in-progress runs of the same concurrency group. Defaults to false for agentic workflow runs." } }, - "required": [ - "group" - ], + "required": ["group"], "additionalProperties": false } ], @@ -1690,9 +1467,7 @@ "description": "Human-readable description of what this pattern matches" } }, - "required": [ - "pattern" - ], + "required": ["pattern"], "additionalProperties": false } }, @@ -1708,12 +1483,10 @@ "description": "Optional array of command-line arguments to pass to the AI engine CLI. These arguments are injected after all other args but before the prompt." } }, - "required": [ - "id" - ], + "required": ["id"], "additionalProperties": false } ] } } -} \ No newline at end of file +} diff --git a/pkg/workflow/threat_detection.go b/pkg/workflow/threat_detection.go index 7f95792ea6..9e773812bd 100644 --- a/pkg/workflow/threat_detection.go +++ b/pkg/workflow/threat_detection.go @@ -168,7 +168,7 @@ func (c *Compiler) buildThreatDetectionSteps(data *WorkflowData, mainJobName str steps = append(steps, c.buildEchoAgentOutputsStep(mainJobName)...) // Step 3: Setup and run threat detection - steps = append(steps, c.buildThreatDetectionAnalysisStep(data)...) + steps = append(steps, c.buildThreatDetectionAnalysisStep(data, mainJobName)...) // Step 4: Add custom steps if configured if len(data.SafeOutputs.ThreatDetection.Steps) > 0 { @@ -190,17 +190,19 @@ func (c *Compiler) buildDownloadArtifactStep(mainJobName string) []string { var steps []string // Download unified agent-artifacts (contains prompt, patch, logs, etc.) + // Use separate subdirectory to avoid conflicts with agent-output artifact steps = append(steps, buildArtifactDownloadSteps(ArtifactDownloadConfig{ ArtifactName: "agent-artifacts", - DownloadPath: "/tmp/gh-aw/threat-detection/", + DownloadPath: "/tmp/gh-aw/threat-detection/agent-artifacts", SetupEnvStep: false, StepName: "Download agent artifacts", })...) // Download agent output artifact (still separate) + // Use separate subdirectory to avoid conflicts with agent-artifacts steps = append(steps, buildArtifactDownloadSteps(ArtifactDownloadConfig{ ArtifactName: constants.AgentOutputArtifactName, - DownloadPath: "/tmp/gh-aw/threat-detection/", + DownloadPath: "/tmp/gh-aw/threat-detection/agent-output", SetupEnvStep: false, StepName: "Download agent output artifact", })...) @@ -220,7 +222,7 @@ func (c *Compiler) buildEchoAgentOutputsStep(mainJobName string) []string { } // buildThreatDetectionAnalysisStep creates the main threat analysis step -func (c *Compiler) buildThreatDetectionAnalysisStep(data *WorkflowData) []string { +func (c *Compiler) buildThreatDetectionAnalysisStep(data *WorkflowData, mainJobName string) []string { var steps []string // Setup step @@ -231,6 +233,9 @@ func (c *Compiler) buildThreatDetectionAnalysisStep(data *WorkflowData) []string }...) steps = append(steps, c.buildWorkflowContextEnvVars(data)...) + // Add HAS_PATCH environment variable from agent job output + steps = append(steps, fmt.Sprintf(" HAS_PATCH: ${{ needs.%s.outputs.has_patch }}\n", mainJobName)) + // Add custom prompt instructions if configured customPrompt := "" if data.SafeOutputs != nil && data.SafeOutputs.ThreatDetection != nil { diff --git a/pkg/workflow/threat_detection_test.go b/pkg/workflow/threat_detection_test.go index bb9df9cf70..8ff4457241 100644 --- a/pkg/workflow/threat_detection_test.go +++ b/pkg/workflow/threat_detection_test.go @@ -743,7 +743,7 @@ func TestDownloadArtifactStepIncludesPrompt(t *testing.T) { "continue-on-error: true", "uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53", "name: agent-artifacts", - "path: /tmp/gh-aw/threat-detection/", + "path: /tmp/gh-aw/threat-detection/agent-artifacts", } for _, expected := range expectedComponents { @@ -756,6 +756,11 @@ func TestDownloadArtifactStepIncludesPrompt(t *testing.T) { if !strings.Contains(stepsString, "Download agent output artifact") { t.Error("Expected download steps to include agent output artifact") } + + // Verify agent output uses separate subdirectory to avoid conflicts + if !strings.Contains(stepsString, "path: /tmp/gh-aw/threat-detection/agent-output") { + t.Error("Expected agent output to use separate subdirectory path") + } } func TestDownloadPatchArtifactHasConditional(t *testing.T) {