From 6e8084492aef2e3d66049449a7c423dde4ae28ee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 17 Oct 2025 23:52:19 +0000 Subject: [PATCH 1/3] Initial plan From c9cbaead2ed3b0b8f8179575da31f03517a8666d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 18 Oct 2025 00:05:59 +0000 Subject: [PATCH 2/3] Add prompt artifact upload step after prompt generation Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/artifacts-summary.lock.yml | 7 ++ .github/workflows/audit-workflows.lock.yml | 7 ++ .github/workflows/brave.lock.yml | 7 ++ .../workflows/changeset-generator.lock.yml | 7 ++ .github/workflows/ci-doctor.lock.yml | 7 ++ .../workflows/cli-version-checker.lock.yml | 7 ++ .../workflows/copilot-agent-analysis.lock.yml | 7 ++ .github/workflows/daily-doc-updater.lock.yml | 7 ++ .github/workflows/daily-news.lock.yml | 7 ++ .github/workflows/dev.lock.yml | 7 ++ .../duplicate-code-detector.lock.yml | 7 ++ .../example-workflow-analyzer.lock.yml | 7 ++ .../github-mcp-tools-report.lock.yml | 7 ++ .../workflows/go-pattern-detector.lock.yml | 7 ++ .github/workflows/issue-classifier.lock.yml | 7 ++ .github/workflows/lockfile-stats.lock.yml | 7 ++ .github/workflows/mcp-inspector.lock.yml | 7 ++ .../workflows/notion-issue-summary.lock.yml | 7 ++ .github/workflows/pdf-summary.lock.yml | 7 ++ .github/workflows/plan.lock.yml | 7 ++ .github/workflows/poem-bot.lock.yml | 7 ++ .github/workflows/q.lock.yml | 7 ++ .github/workflows/repo-tree-map.lock.yml | 7 ++ .github/workflows/research.lock.yml | 7 ++ .github/workflows/scout.lock.yml | 7 ++ .github/workflows/security-fix-pr.lock.yml | 7 ++ .github/workflows/smoke-claude.lock.yml | 7 ++ .github/workflows/smoke-codex.lock.yml | 7 ++ .github/workflows/smoke-copilot.lock.yml | 7 ++ .github/workflows/smoke-genaiscript.lock.yml | 7 ++ .github/workflows/smoke-opencode.lock.yml | 7 ++ .../workflows/technical-doc-writer.lock.yml | 7 ++ .github/workflows/test-post-steps.lock.yml | 7 ++ .github/workflows/tidy.lock.yml | 7 ++ .github/workflows/unbloat-docs.lock.yml | 7 ++ pkg/workflow/compiler.go | 13 +++ pkg/workflow/compiler_test.go | 87 +++++++++++++++++++ 37 files changed, 345 insertions(+) diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index 2292961148c..13428aeae63 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -1137,6 +1137,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 890a2006cb8..11327fdc2ef 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -1449,6 +1449,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index a42b84b0d7c..8cfc14c7e7b 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -2197,6 +2197,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/changeset-generator.lock.yml b/.github/workflows/changeset-generator.lock.yml index d9d0e02e9d3..7405c7d75fa 100644 --- a/.github/workflows/changeset-generator.lock.yml +++ b/.github/workflows/changeset-generator.lock.yml @@ -1734,6 +1734,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index 709e4fbbb8e..a0f6ba87452 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -1632,6 +1632,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 99a015d9171..8b9850e796d 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -1215,6 +1215,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index d43cec10f5a..07b39fb18b2 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -1699,6 +1699,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 4877ffda743..d16ef6b382e 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -1355,6 +1355,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 955a96a408b..43b1282f610 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -1211,6 +1211,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/dev.lock.yml b/.github/workflows/dev.lock.yml index 676e4b487fb..e6a1caa4907 100644 --- a/.github/workflows/dev.lock.yml +++ b/.github/workflows/dev.lock.yml @@ -392,6 +392,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index 3b2a6db7c25..bf5da098f41 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -1269,6 +1269,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(codex --version 2>&1 || echo "unknown") diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index dd611655db0..8dfc3df4d58 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -1164,6 +1164,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index 8cee050bbe7..cf29903cb6b 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -1552,6 +1552,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index d6a8d2273f4..7890af22511 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -1280,6 +1280,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/issue-classifier.lock.yml b/.github/workflows/issue-classifier.lock.yml index 7b8934e509d..2f5edea714f 100644 --- a/.github/workflows/issue-classifier.lock.yml +++ b/.github/workflows/issue-classifier.lock.yml @@ -1781,6 +1781,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Set agent version (not available) run: echo "AGENT_VERSION=" >> $GITHUB_ENV - name: Generate agentic run info diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index d751dd9d277..2225259ab2e 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -1498,6 +1498,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 39e0cefaeac..cd265b4ef4d 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -1986,6 +1986,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/notion-issue-summary.lock.yml b/.github/workflows/notion-issue-summary.lock.yml index bd4645fb75d..a455546d926 100644 --- a/.github/workflows/notion-issue-summary.lock.yml +++ b/.github/workflows/notion-issue-summary.lock.yml @@ -1109,6 +1109,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index d9780eec11d..2f7a1542177 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -2165,6 +2165,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index e672b29c86d..c2d6cbc4294 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -1724,6 +1724,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index cff36060e48..e0a00a7b775 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -2372,6 +2372,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index b7d4fbe544f..b7573b377e3 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -2438,6 +2438,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/repo-tree-map.lock.yml b/.github/workflows/repo-tree-map.lock.yml index a1c90ed8c09..7585ade6f47 100644 --- a/.github/workflows/repo-tree-map.lock.yml +++ b/.github/workflows/repo-tree-map.lock.yml @@ -1212,6 +1212,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/research.lock.yml b/.github/workflows/research.lock.yml index 541bfc597e5..14b6ea19f71 100644 --- a/.github/workflows/research.lock.yml +++ b/.github/workflows/research.lock.yml @@ -1129,6 +1129,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 14badf1c18f..2fec31e10a2 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -2536,6 +2536,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/security-fix-pr.lock.yml b/.github/workflows/security-fix-pr.lock.yml index 7976d0f7499..8ece0a40137 100644 --- a/.github/workflows/security-fix-pr.lock.yml +++ b/.github/workflows/security-fix-pr.lock.yml @@ -1323,6 +1323,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index fe7c0c40ff4..33c4d091531 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -1122,6 +1122,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 546627594e9..78a55de4ea6 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -1015,6 +1015,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(codex --version 2>&1 || echo "unknown") diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 6e4be97cc95..979a4d0264f 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -1082,6 +1082,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/smoke-genaiscript.lock.yml b/.github/workflows/smoke-genaiscript.lock.yml index 2928b2bf533..909a65feb3e 100644 --- a/.github/workflows/smoke-genaiscript.lock.yml +++ b/.github/workflows/smoke-genaiscript.lock.yml @@ -971,6 +971,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Set agent version (not available) run: echo "AGENT_VERSION=" >> $GITHUB_ENV - name: Generate agentic run info diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index 206955eff71..3089ea36673 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -971,6 +971,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Set agent version (not available) run: echo "AGENT_VERSION=" >> $GITHUB_ENV - name: Generate agentic run info diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index a890fa74c36..774621ae4aa 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -1715,6 +1715,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/.github/workflows/test-post-steps.lock.yml b/.github/workflows/test-post-steps.lock.yml index 3082aad8d41..66cfd47175d 100644 --- a/.github/workflows/test-post-steps.lock.yml +++ b/.github/workflows/test-post-steps.lock.yml @@ -359,6 +359,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index 9b49e54e578..84ac78b5914 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -1582,6 +1582,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(copilot --version 2>&1 || echo "unknown") diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 62013e8f571..498c0191c35 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -2157,6 +2157,13 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY + - name: Upload prompt + if: always() + uses: actions/upload-artifact@v4 + with: + name: prompt.txt + path: /tmp/gh-aw/aw-prompts/prompt.txt + if-no-files-found: warn - name: Capture agent version run: | VERSION_OUTPUT=$(claude --version 2>&1 || echo "unknown") diff --git a/pkg/workflow/compiler.go b/pkg/workflow/compiler.go index 7ef27ec662c..9626cf20ffe 100644 --- a/pkg/workflow/compiler.go +++ b/pkg/workflow/compiler.go @@ -2515,6 +2515,9 @@ func (c *Compiler) generateMainJobSteps(yaml *strings.Builder, data *WorkflowDat // Add prompt creation step c.generatePrompt(yaml, data) + // Upload prompt to artifact + c.generateUploadPrompt(yaml) + logFile := "agent-stdio" logFileFull := "/tmp/gh-aw/agent-stdio.log" @@ -2712,6 +2715,16 @@ func (c *Compiler) generateUploadAwInfo(yaml *strings.Builder) { yaml.WriteString(" if-no-files-found: warn\n") } +func (c *Compiler) generateUploadPrompt(yaml *strings.Builder) { + yaml.WriteString(" - name: Upload prompt\n") + yaml.WriteString(" if: always()\n") + yaml.WriteString(" uses: actions/upload-artifact@v4\n") + yaml.WriteString(" with:\n") + yaml.WriteString(" name: prompt.txt\n") + yaml.WriteString(" path: /tmp/gh-aw/aw-prompts/prompt.txt\n") + yaml.WriteString(" if-no-files-found: warn\n") +} + func (c *Compiler) generateExtractAccessLogs(yaml *strings.Builder, tools map[string]any) { // Check if any tools require proxy setup var proxyTools []string diff --git a/pkg/workflow/compiler_test.go b/pkg/workflow/compiler_test.go index dece53b2201..13149e13ac9 100644 --- a/pkg/workflow/compiler_test.go +++ b/pkg/workflow/compiler_test.go @@ -5784,3 +5784,90 @@ Test post-steps indentation fix. t.Log("Post-steps indentation verified successfully") } + +func TestPromptUploadArtifact(t *testing.T) { + // Create temporary directory for test files + tmpDir, err := os.MkdirTemp("", "prompt-upload-test") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(tmpDir) + + // Create a test markdown file with basic frontmatter + testContent := `--- +on: workflow_dispatch +permissions: + contents: read +engine: copilot +--- + +# Test Prompt Upload + +This workflow should generate a step to upload the prompt as an artifact. +` + + testFile := filepath.Join(tmpDir, "test-workflow.md") + if err := os.WriteFile(testFile, []byte(testContent), 0644); err != nil { + t.Fatal(err) + } + + compiler := NewCompiler(false, "", "test") + err = compiler.CompileWorkflow(testFile) + if err != nil { + t.Fatalf("Failed to compile workflow: %v", err) + } + + // Read the generated lock file + lockFile := strings.TrimSuffix(testFile, ".md") + ".lock.yml" + lockContent, err := os.ReadFile(lockFile) + if err != nil { + t.Fatalf("Failed to read lock file: %v", err) + } + + lockYAML := string(lockContent) + + // Verify that the prompt upload step is present + if !strings.Contains(lockYAML, "- name: Upload prompt") { + t.Error("Expected 'Upload prompt' step to be in generated workflow") + } + + // Verify the upload step uses the correct action + if !strings.Contains(lockYAML, "uses: actions/upload-artifact@v4") { + t.Error("Expected 'actions/upload-artifact@v4' action to be used") + } + + // Verify the upload step has the correct artifact name + if !strings.Contains(lockYAML, "name: prompt.txt") { + t.Error("Expected artifact name to be 'prompt.txt'") + } + + // Verify the upload step has the correct path + if !strings.Contains(lockYAML, "path: /tmp/gh-aw/aw-prompts/prompt.txt") { + t.Error("Expected artifact path to be '/tmp/gh-aw/aw-prompts/prompt.txt'") + } + + // Verify the upload step has the if-no-files-found configuration + if !strings.Contains(lockYAML, "if-no-files-found: warn") { + t.Error("Expected 'if-no-files-found: warn' in upload step") + } + + // Verify the upload step runs always (with if: always()) + uploadStepIndex := strings.Index(lockYAML, "- name: Upload prompt") + if uploadStepIndex == -1 { + t.Fatal("Upload prompt step not found") + } + + // Check for "if: always()" in the section after the upload prompt step name + afterUploadStep := lockYAML[uploadStepIndex:] + nextStepIndex := strings.Index(afterUploadStep[20:], "- name:") + if nextStepIndex == -1 { + nextStepIndex = len(afterUploadStep) - 20 + } + uploadStepSection := afterUploadStep[:20+nextStepIndex] + + if !strings.Contains(uploadStepSection, "if: always()") { + t.Error("Expected 'if: always()' in upload prompt step") + } + + t.Log("Prompt upload artifact step verified successfully") +} From a27f1ec506b56de96e0b6db24446950a0e46ab90 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 18 Oct 2025 00:08:22 +0000 Subject: [PATCH 3/3] Add changeset for prompt artifact upload feature --- .changeset/patch-compiler-prompt-artifact-upload.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/patch-compiler-prompt-artifact-upload.md diff --git a/.changeset/patch-compiler-prompt-artifact-upload.md b/.changeset/patch-compiler-prompt-artifact-upload.md new file mode 100644 index 00000000000..6d07b54592b --- /dev/null +++ b/.changeset/patch-compiler-prompt-artifact-upload.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Updated compiler to upload prompt as an artifact after prompt generation