diff --git a/.changeset/patch-add-aw-context-workflow-dispatch-traceability.md b/.changeset/patch-add-aw-context-workflow-dispatch-traceability.md new file mode 100644 index 00000000000..be96904a22c --- /dev/null +++ b/.changeset/patch-add-aw-context-workflow-dispatch-traceability.md @@ -0,0 +1,5 @@ +--- +"gh-aw": patch +--- + +Add `aw_context` caller metadata propagation for compiled `workflow_dispatch` workflows, so dispatch traceability data is automatically injected at trigger time and surfaced in `aw_info.json`. diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index b79d5774483..064ff3b5284 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -34,6 +34,12 @@ name: "Agent Performance Analyzer - Meta-Orchestrator" - cron: "43 20 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index 78c5a5d2cd6..337c912436c 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -34,6 +34,12 @@ name: "Agent Persona Explorer" - cron: "26 15 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index ff9be19a027..c28ce40364a 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -35,6 +35,12 @@ name: "Artifacts Summary" - cron: "33 5 * * 0" # Friendly format: weekly on sunday around 06:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 19221d499dc..24c6af12e49 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -36,6 +36,12 @@ name: "Agentic Workflow Audit Agent" - cron: "12 16 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/auto-triage-issues.lock.yml b/.github/workflows/auto-triage-issues.lock.yml index 605f0fba71c..f9007d76491 100644 --- a/.github/workflows/auto-triage-issues.lock.yml +++ b/.github/workflows/auto-triage-issues.lock.yml @@ -38,6 +38,12 @@ name: "Auto-Triage Issues" - cron: "27 */6 * * *" # Friendly format: every 6h (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index b3e785921c2..2a1d140e686 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -34,6 +34,12 @@ name: "Blog Auditor" - cron: "26 11 * * 3" # Friendly format: weekly on wednesday around 12:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/bot-detection.lock.yml b/.github/workflows/bot-detection.lock.yml index f0a55a9256e..0184f166467 100644 --- a/.github/workflows/bot-detection.lock.yml +++ b/.github/workflows/bot-detection.lock.yml @@ -29,6 +29,12 @@ name: "Bot Detection" schedule: - cron: "0 */6 * * *" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml index f04134ee43f..a28a11b70c3 100644 --- a/.github/workflows/breaking-change-checker.lock.yml +++ b/.github/workflows/breaking-change-checker.lock.yml @@ -35,6 +35,12 @@ name: "Breaking Change Checker" - cron: "0 14 * * 1-5" # skip-if-match: is:issue is:open in:title "[breaking-change]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/changeset.lock.yml b/.github/workflows/changeset.lock.yml index 7da61a07fcc..de5fae8575e 100644 --- a/.github/workflows/changeset.lock.yml +++ b/.github/workflows/changeset.lock.yml @@ -37,7 +37,13 @@ name: "Changeset Generator" # - smoke # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index a28482834b5..f95b247b6b7 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -36,6 +36,12 @@ name: "CI Optimization Coach" schedule: - cron: "0 13 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index 6dfad8a2dc7..58cda04c3e0 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -35,6 +35,11 @@ name: "CI Failure Doctor" - labeled workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string item_number: default: "" description: The number of the issue, pull request, or discussion diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index bf001ffcd2d..0ac1c1087c9 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -34,6 +34,12 @@ name: "Claude Code User Documentation Review" - cron: "13 17 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/cli-consistency-checker.lock.yml b/.github/workflows/cli-consistency-checker.lock.yml index 7abdc1c4d19..1478f5a9c56 100644 --- a/.github/workflows/cli-consistency-checker.lock.yml +++ b/.github/workflows/cli-consistency-checker.lock.yml @@ -29,6 +29,12 @@ name: "CLI Consistency Checker" schedule: - cron: "0 13 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 138ab11c069..b09592d5436 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -35,6 +35,12 @@ name: "CLI Version Checker" - cron: "45 6 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index b3b7333032c..df2bb6953ac 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -32,6 +32,12 @@ name: "Code Scanning Fixer" "on": # skip-if-match: is:pr is:open in:title "[code-scanning-fix]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index 253e59dfaa2..b4540deaace 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -36,6 +36,12 @@ name: "Code Simplifier" # Friendly format: daily (scattered) # skip-if-match: is:pr is:open in:title "[code-simplifier]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/codex-github-remote-mcp-test.lock.yml b/.github/workflows/codex-github-remote-mcp-test.lock.yml index 7388331a379..50bf25bcd14 100644 --- a/.github/workflows/codex-github-remote-mcp-test.lock.yml +++ b/.github/workflows/codex-github-remote-mcp-test.lock.yml @@ -27,6 +27,12 @@ name: "Codex GitHub Remote MCP Test" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/commit-changes-analyzer.lock.yml b/.github/workflows/commit-changes-analyzer.lock.yml index 1223b4a5b63..20bd5d83d11 100644 --- a/.github/workflows/commit-changes-analyzer.lock.yml +++ b/.github/workflows/commit-changes-analyzer.lock.yml @@ -32,6 +32,11 @@ name: "Commit Changes Analyzer" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string commit_url: description: GitHub commit URL to analyze changes since (e.g., https://github.com/owner/repo/commit/abc123) required: true diff --git a/.github/workflows/constraint-solving-potd.lock.yml b/.github/workflows/constraint-solving-potd.lock.yml index 052c61dc333..782c2f8b087 100644 --- a/.github/workflows/constraint-solving-potd.lock.yml +++ b/.github/workflows/constraint-solving-potd.lock.yml @@ -29,6 +29,12 @@ name: "Constraint Solving — Problem of the Day" - cron: "32 16 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/contribution-check.lock.yml b/.github/workflows/contribution-check.lock.yml index f40da967781..b4cb8be350b 100644 --- a/.github/workflows/contribution-check.lock.yml +++ b/.github/workflows/contribution-check.lock.yml @@ -29,6 +29,12 @@ name: "Contribution Check" - cron: "49 */4 * * *" # Friendly format: every 4 hours (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 66738e140bb..49e254ffbb3 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -37,6 +37,12 @@ name: "Copilot Agent PR Analysis" - cron: "9 10 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index 1b65229cae5..2d7b1e4f3f4 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -34,6 +34,12 @@ name: "Copilot CLI Deep Research Agent" - cron: "50 10 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/copilot-pr-merged-report.lock.yml b/.github/workflows/copilot-pr-merged-report.lock.yml index fdfea1f848e..6d140faf7b5 100644 --- a/.github/workflows/copilot-pr-merged-report.lock.yml +++ b/.github/workflows/copilot-pr-merged-report.lock.yml @@ -37,6 +37,12 @@ name: "Daily Copilot PR Merged Report" schedule: - cron: "0 15 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index 9aca70d0ab0..ea4110658bc 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -38,6 +38,12 @@ name: "Copilot PR Conversation NLP Analysis" schedule: - cron: "0 10 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 01ee1d11a15..ffd704a20f5 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -37,6 +37,12 @@ name: "Copilot PR Prompt Pattern Analysis" - cron: "11 10 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index de7042215b3..04e050002b5 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -39,6 +39,12 @@ name: "Copilot Session Insights" - cron: "47 21 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index bcc70cc3687..009a94f5171 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -34,6 +34,12 @@ name: "Architecture Diagram Generator" - cron: "38 8 * * *" # Friendly format: daily around 08:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-assign-issue-to-user.lock.yml b/.github/workflows/daily-assign-issue-to-user.lock.yml index 4eef912474d..91ad151bc8b 100644 --- a/.github/workflows/daily-assign-issue-to-user.lock.yml +++ b/.github/workflows/daily-assign-issue-to-user.lock.yml @@ -29,6 +29,12 @@ name: "Auto-Assign Issue" - cron: "5 14 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-choice-test.lock.yml b/.github/workflows/daily-choice-test.lock.yml index ffeec0d6859..c41181bf5e9 100644 --- a/.github/workflows/daily-choice-test.lock.yml +++ b/.github/workflows/daily-choice-test.lock.yml @@ -29,6 +29,12 @@ name: "Daily Choice Type Test" schedule: - cron: "0 12 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index 96db6432ff3..e5c3584e2a9 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -58,6 +58,12 @@ name: "Daily CLI Performance Agent" # core.info(`has_changes=${hasChanges}`); # core.setOutput('has_changes', hasChanges ? 'true' : 'false'); workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-cli-tools-tester.lock.yml b/.github/workflows/daily-cli-tools-tester.lock.yml index 47108970880..5d21091b525 100644 --- a/.github/workflows/daily-cli-tools-tester.lock.yml +++ b/.github/workflows/daily-cli-tools-tester.lock.yml @@ -34,6 +34,12 @@ name: "Daily CLI Tools Exploratory Tester" - cron: "24 4 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 31d394f02e9..c13377c57b7 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -36,6 +36,12 @@ name: "Daily Code Metrics and Trend Tracking Agent" - cron: "29 18 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index 2f56317b7f5..5d4a47d2f92 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -34,6 +34,12 @@ name: "Daily Community Attribution Updater" - cron: "37 6 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index 3c2988661a4..739ffc93e53 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -35,6 +35,12 @@ name: "Daily Compiler Quality Check" - cron: "5 0 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-copilot-token-report.lock.yml b/.github/workflows/daily-copilot-token-report.lock.yml index 3a986caa34c..1ff35f7a1fd 100644 --- a/.github/workflows/daily-copilot-token-report.lock.yml +++ b/.github/workflows/daily-copilot-token-report.lock.yml @@ -35,6 +35,12 @@ name: "Daily Copilot Token Consumption Report" schedule: - cron: "0 11 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index eb0cb6ff71e..91ebe1cb6b1 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -35,6 +35,12 @@ name: "Daily Documentation Healer" - cron: "24 8 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 64921c4f073..a746559e427 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -34,6 +34,12 @@ name: "Daily Documentation Updater" - cron: "38 18 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-fact.lock.yml b/.github/workflows/daily-fact.lock.yml index 3aa021f6ff1..068a70fed23 100644 --- a/.github/workflows/daily-fact.lock.yml +++ b/.github/workflows/daily-fact.lock.yml @@ -31,6 +31,12 @@ name: "Daily Fact About gh-aw" schedule: - cron: "0 11 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-file-diet.lock.yml b/.github/workflows/daily-file-diet.lock.yml index 4ddb12bc0c5..1212c418d68 100644 --- a/.github/workflows/daily-file-diet.lock.yml +++ b/.github/workflows/daily-file-diet.lock.yml @@ -37,6 +37,12 @@ name: "Daily File Diet" - cron: "0 13 * * 1-5" # skip-if-match: is:issue is:open in:title "[file-diet]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index ff9685bdd1a..00de46da519 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -35,6 +35,12 @@ name: "Daily Firewall Logs Collector and Reporter" - cron: "37 0 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-function-namer.lock.yml b/.github/workflows/daily-function-namer.lock.yml index e5e916ca420..08ea7b713f6 100644 --- a/.github/workflows/daily-function-namer.lock.yml +++ b/.github/workflows/daily-function-namer.lock.yml @@ -35,6 +35,12 @@ name: "Daily Go Function Namer" - cron: "12 5 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-integrity-analysis.lock.yml b/.github/workflows/daily-integrity-analysis.lock.yml index 39f719ca10a..a661135db26 100644 --- a/.github/workflows/daily-integrity-analysis.lock.yml +++ b/.github/workflows/daily-integrity-analysis.lock.yml @@ -35,6 +35,12 @@ name: "Daily DIFC Integrity-Filtered Events Analyzer" - cron: "54 9 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index d23734cea1f..141cd957213 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -39,6 +39,12 @@ name: "Daily Issues Report Generator" - cron: "45 20 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-malicious-code-scan.lock.yml b/.github/workflows/daily-malicious-code-scan.lock.yml index 281b2a695f9..415e26ae115 100644 --- a/.github/workflows/daily-malicious-code-scan.lock.yml +++ b/.github/workflows/daily-malicious-code-scan.lock.yml @@ -34,6 +34,12 @@ name: "Daily Malicious Code Scan Agent" - cron: "24 9 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index a6a4e6369ba..69fc542a08e 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -34,6 +34,12 @@ name: "Daily MCP Tool Concurrency Analysis" schedule: - cron: "0 9 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-multi-device-docs-tester.lock.yml b/.github/workflows/daily-multi-device-docs-tester.lock.yml index 1e309e11013..cd9d51e0857 100644 --- a/.github/workflows/daily-multi-device-docs-tester.lock.yml +++ b/.github/workflows/daily-multi-device-docs-tester.lock.yml @@ -36,6 +36,11 @@ name: "Multi-Device Docs Tester" # Friendly format: daily (scattered) workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string devices: default: mobile,tablet,desktop description: "Device types to test (comma-separated: mobile,tablet,desktop)" diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 154dff0ab62..a48d6f30b16 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -37,6 +37,12 @@ name: "Daily News" schedule: - cron: "0 9 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-observability-report.lock.yml b/.github/workflows/daily-observability-report.lock.yml index fe98a6c66aa..04e200898b4 100644 --- a/.github/workflows/daily-observability-report.lock.yml +++ b/.github/workflows/daily-observability-report.lock.yml @@ -34,6 +34,12 @@ name: "Daily Observability Report for AWF Firewall and MCP Gateway" - cron: "14 4 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index d4ae04ae8aa..434bb5d0135 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -36,6 +36,12 @@ name: "Daily Project Performance Summary Generator (Using MCP Scripts)" - cron: "51 8 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-regulatory.lock.yml b/.github/workflows/daily-regulatory.lock.yml index b4f6c5f39f5..769637b4d66 100644 --- a/.github/workflows/daily-regulatory.lock.yml +++ b/.github/workflows/daily-regulatory.lock.yml @@ -35,6 +35,12 @@ name: "Daily Regulatory Report Generator" - cron: "52 23 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-rendering-scripts-verifier.lock.yml b/.github/workflows/daily-rendering-scripts-verifier.lock.yml index 49f9cc5b609..64d90454b58 100644 --- a/.github/workflows/daily-rendering-scripts-verifier.lock.yml +++ b/.github/workflows/daily-rendering-scripts-verifier.lock.yml @@ -36,6 +36,12 @@ name: "Daily Rendering Scripts Verifier" # Friendly format: daily (scattered) # skip-if-match: is:pr is:open in:title "[rendering-scripts]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index f3aa53bbd12..89d98a6f099 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -35,6 +35,12 @@ name: "The Daily Repository Chronicle" schedule: - cron: "0 16 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-safe-output-integrator.lock.yml b/.github/workflows/daily-safe-output-integrator.lock.yml index ee8be544a1c..b9cd9bffa5b 100644 --- a/.github/workflows/daily-safe-output-integrator.lock.yml +++ b/.github/workflows/daily-safe-output-integrator.lock.yml @@ -34,6 +34,12 @@ name: "Daily Safe Output Integrator" - cron: "19 5 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index baad4561adf..1b333f16093 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -38,6 +38,12 @@ name: "Daily Safe Output Tool Optimizer" # Friendly format: daily (scattered) # skip-if-match: is:issue is:open in:title "[safeoutputs]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-safe-outputs-conformance.lock.yml b/.github/workflows/daily-safe-outputs-conformance.lock.yml index 710230f2369..015c88f814c 100644 --- a/.github/workflows/daily-safe-outputs-conformance.lock.yml +++ b/.github/workflows/daily-safe-outputs-conformance.lock.yml @@ -34,6 +34,12 @@ name: "Daily Safe Outputs Conformance Checker" - cron: "16 15 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-secrets-analysis.lock.yml b/.github/workflows/daily-secrets-analysis.lock.yml index 4e48cfde4c9..2947ecd2d9e 100644 --- a/.github/workflows/daily-secrets-analysis.lock.yml +++ b/.github/workflows/daily-secrets-analysis.lock.yml @@ -34,6 +34,12 @@ name: "Daily Secrets Analysis Agent" - cron: "38 4 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-security-red-team.lock.yml b/.github/workflows/daily-security-red-team.lock.yml index bd8df10150f..c83593c195b 100644 --- a/.github/workflows/daily-security-red-team.lock.yml +++ b/.github/workflows/daily-security-red-team.lock.yml @@ -34,6 +34,12 @@ name: "Daily Security Red Team Agent" - cron: "34 12 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-semgrep-scan.lock.yml b/.github/workflows/daily-semgrep-scan.lock.yml index 6bfcf7024c1..cc71319136f 100644 --- a/.github/workflows/daily-semgrep-scan.lock.yml +++ b/.github/workflows/daily-semgrep-scan.lock.yml @@ -34,6 +34,12 @@ name: "Daily Semgrep Scan" - cron: "11 18 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-syntax-error-quality.lock.yml b/.github/workflows/daily-syntax-error-quality.lock.yml index 0918708c4a8..aef1d8ded52 100644 --- a/.github/workflows/daily-syntax-error-quality.lock.yml +++ b/.github/workflows/daily-syntax-error-quality.lock.yml @@ -34,6 +34,12 @@ name: "Daily Syntax Error Quality Check" - cron: "38 11 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-team-evolution-insights.lock.yml b/.github/workflows/daily-team-evolution-insights.lock.yml index 0599980ffc5..321180933eb 100644 --- a/.github/workflows/daily-team-evolution-insights.lock.yml +++ b/.github/workflows/daily-team-evolution-insights.lock.yml @@ -34,6 +34,12 @@ name: "Daily Team Evolution Insights" - cron: "31 9 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-team-status.lock.yml b/.github/workflows/daily-team-status.lock.yml index b173f88df3a..48ed2d2446c 100644 --- a/.github/workflows/daily-team-status.lock.yml +++ b/.github/workflows/daily-team-status.lock.yml @@ -40,7 +40,13 @@ name: "Daily Team Status" "on": schedule: - cron: "0 9 * * 1-5" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-testify-uber-super-expert.lock.yml b/.github/workflows/daily-testify-uber-super-expert.lock.yml index d8ba2d98371..2529b41af66 100644 --- a/.github/workflows/daily-testify-uber-super-expert.lock.yml +++ b/.github/workflows/daily-testify-uber-super-expert.lock.yml @@ -38,6 +38,12 @@ name: "Daily Testify Uber Super Expert" # Friendly format: daily (scattered) # skip-if-match: is:issue is:open in:title "[testify-expert]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index ee0be0508eb..3743eed96c5 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -30,6 +30,12 @@ name: "Daily Workflow Updater" - cron: "17 6 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/dead-code-remover.lock.yml b/.github/workflows/dead-code-remover.lock.yml index 266c2795f04..1315e16fc45 100644 --- a/.github/workflows/dead-code-remover.lock.yml +++ b/.github/workflows/dead-code-remover.lock.yml @@ -35,6 +35,12 @@ name: "Dead Code Removal Agent" # Friendly format: daily (scattered) # skip-if-match: is:pr is:open in:title "[dead-code] " # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index 1636717a7dd..95e47c0494c 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -36,6 +36,12 @@ name: "DeepReport - Intelligence Gathering Agent" schedule: - cron: "0 15 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml index 94fce1b65e9..c4da0685165 100644 --- a/.github/workflows/delight.lock.yml +++ b/.github/workflows/delight.lock.yml @@ -35,6 +35,12 @@ name: "Delight" - cron: "25 18 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/dependabot-burner.lock.yml b/.github/workflows/dependabot-burner.lock.yml index cf2b8db260d..6438b2bafed 100644 --- a/.github/workflows/dependabot-burner.lock.yml +++ b/.github/workflows/dependabot-burner.lock.yml @@ -33,6 +33,12 @@ name: "Dependabot Burner" - cron: "27 4 * * 0" # Friendly format: weekly (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/dependabot-go-checker.lock.yml b/.github/workflows/dependabot-go-checker.lock.yml index cd95e8709c1..c8582341f10 100644 --- a/.github/workflows/dependabot-go-checker.lock.yml +++ b/.github/workflows/dependabot-go-checker.lock.yml @@ -33,6 +33,12 @@ name: "Dependabot Dependency Checker" schedule: - cron: "0 9 * * 1,3,5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/dev.lock.yml b/.github/workflows/dev.lock.yml index 07c95499da0..3fc9a3b0d18 100644 --- a/.github/workflows/dev.lock.yml +++ b/.github/workflows/dev.lock.yml @@ -29,6 +29,12 @@ name: "Dev" schedule: - cron: "0 9 * * *" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 9719f821f79..a44ddb93799 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -36,6 +36,12 @@ name: "Developer Documentation Consolidator" - cron: "34 4 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index bcfb37c9208..a04752c126c 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -34,6 +34,12 @@ name: "Dictation Prompt Generator" schedule: - cron: "0 6 * * 0" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml index ad1040efe6a..d6358b80800 100644 --- a/.github/workflows/discussion-task-miner.lock.yml +++ b/.github/workflows/discussion-task-miner.lock.yml @@ -35,6 +35,12 @@ name: "Discussion Task Miner - Code Quality Improvement Agent" - cron: "40 */6 * * *" # Friendly format: every 6h (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/docs-noob-tester.lock.yml b/.github/workflows/docs-noob-tester.lock.yml index ded94733bb4..8e3b8f3513d 100644 --- a/.github/workflows/docs-noob-tester.lock.yml +++ b/.github/workflows/docs-noob-tester.lock.yml @@ -35,6 +35,12 @@ name: "Documentation Noob Tester" - cron: "20 4 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/draft-pr-cleanup.lock.yml b/.github/workflows/draft-pr-cleanup.lock.yml index 35d796975da..ffe4fc14a72 100644 --- a/.github/workflows/draft-pr-cleanup.lock.yml +++ b/.github/workflows/draft-pr-cleanup.lock.yml @@ -30,6 +30,12 @@ name: "Draft PR Cleanup" - cron: "31 19 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index 3920e87ba28..0e65fcab260 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -35,6 +35,12 @@ name: "Duplicate Code Detector" - cron: "44 3 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/example-permissions-warning.lock.yml b/.github/workflows/example-permissions-warning.lock.yml index be7b15ecb79..a3a13e31faa 100644 --- a/.github/workflows/example-permissions-warning.lock.yml +++ b/.github/workflows/example-permissions-warning.lock.yml @@ -27,6 +27,12 @@ name: "Example: Properly Provisioned Permissions" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index d214c0f6568..db5d16639c0 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -34,6 +34,12 @@ name: "Weekly Workflow Analysis" - cron: "12 9 * * 1" # Friendly format: weekly on monday around 09:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index 57614fd35b3..e662c7c7f86 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -35,6 +35,12 @@ name: "The Great Escapi" - cron: "42 15 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/firewall.lock.yml b/.github/workflows/firewall.lock.yml index f53ed556c6c..ca1d938f9f1 100644 --- a/.github/workflows/firewall.lock.yml +++ b/.github/workflows/firewall.lock.yml @@ -27,6 +27,12 @@ name: "Firewall Test Agent" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index 5c289efe541..5f238cb5ea5 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -33,6 +33,12 @@ name: "Functional Pragmatist" schedule: - cron: "0 9 * * 2,4" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index cc6de304be1..e0fa1b16931 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -34,6 +34,12 @@ name: "GitHub MCP Structural Analysis" schedule: - cron: "0 11 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index a9849882d8c..b2050ab4f8f 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -34,6 +34,12 @@ name: "GitHub MCP Remote Server Tools Report Generator" - cron: "20 12 * * 0" # Friendly format: weekly on sunday around 12:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/github-remote-mcp-auth-test.lock.yml b/.github/workflows/github-remote-mcp-auth-test.lock.yml index f37898939f8..1007ef17aa2 100644 --- a/.github/workflows/github-remote-mcp-auth-test.lock.yml +++ b/.github/workflows/github-remote-mcp-auth-test.lock.yml @@ -30,6 +30,12 @@ name: "GitHub Remote MCP Authentication Test" - cron: "5 20 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 4b93531d9b0..2bf4b77af38 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -36,6 +36,12 @@ name: "Glossary Maintainer" schedule: - cron: "0 10 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index 3d200d52dc0..88b68b62d5d 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -34,6 +34,12 @@ name: "Go Fan" schedule: - cron: "0 7 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 072b6bbf5d5..d9006c58744 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -34,6 +34,12 @@ name: "Go Logger Enhancement" - cron: "29 14 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index 138661c9876..92805c30ba0 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -34,6 +34,12 @@ name: "Go Pattern Detector" schedule: - cron: "0 14 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index 49f2d60d775..6f93e2fb019 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -34,6 +34,12 @@ name: "GPL Dependency Cleaner (gpclean)" - cron: "40 6 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index 342cff66c80..2448f7fe60b 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -33,6 +33,12 @@ name: "CI Cleaner" schedule: - cron: "0 6,18 * * *" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 5864ad65b52..e7a24daf273 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -30,6 +30,12 @@ name: "Instructions Janitor" - cron: "29 4 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/issue-arborist.lock.yml b/.github/workflows/issue-arborist.lock.yml index 5694fa08941..b9624a50b21 100644 --- a/.github/workflows/issue-arborist.lock.yml +++ b/.github/workflows/issue-arborist.lock.yml @@ -35,6 +35,12 @@ name: "Issue Arborist" - cron: "54 7 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/issue-monster.lock.yml b/.github/workflows/issue-monster.lock.yml index 27158fb3346..f930ce5945e 100644 --- a/.github/workflows/issue-monster.lock.yml +++ b/.github/workflows/issue-monster.lock.yml @@ -389,6 +389,12 @@ name: "Issue Monster" # core.setOutput('has_issues', 'false'); # } workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/issue-triage-agent.lock.yml b/.github/workflows/issue-triage-agent.lock.yml index 5b6d44b7d8c..93cc59f67f6 100644 --- a/.github/workflows/issue-triage-agent.lock.yml +++ b/.github/workflows/issue-triage-agent.lock.yml @@ -32,6 +32,12 @@ name: "Issue Triage Agent" schedule: - cron: "0 14 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 9c146112454..79d5cf83b96 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -30,6 +30,12 @@ name: "jsweep - JavaScript Unbloater" - cron: "40 21 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index 66d5618c919..37615c2774e 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -29,6 +29,12 @@ name: "Layout Specification Maintainer" schedule: - cron: "0 7 * * 1" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 38ee0d0da5f..1e4a5cc5502 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -34,6 +34,12 @@ name: "Lockfile Statistics Analysis Agent" - cron: "21 5 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 4de3c8765cd..f97bfeb8cb6 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -49,6 +49,12 @@ name: "MCP Inspector Agent" - cron: "35 18 * * 1" # Friendly format: weekly on monday around 18:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/metrics-collector.lock.yml b/.github/workflows/metrics-collector.lock.yml index 492aa8b9d4e..62027ddde1b 100644 --- a/.github/workflows/metrics-collector.lock.yml +++ b/.github/workflows/metrics-collector.lock.yml @@ -30,6 +30,12 @@ name: "Metrics Collector - Infrastructure Agent" - cron: "47 16 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/notion-issue-summary.lock.yml b/.github/workflows/notion-issue-summary.lock.yml index 42fabc73d49..399d2fd550f 100644 --- a/.github/workflows/notion-issue-summary.lock.yml +++ b/.github/workflows/notion-issue-summary.lock.yml @@ -32,6 +32,11 @@ name: "Issue Summary to Notion" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string issue-number: description: Issue number to analyze required: true diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index 1188c32e2c0..208574679de 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -36,6 +36,12 @@ name: "Organization Health Report" - cron: "11 8 * * 1" # Friendly format: weekly on monday around 09:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 4c54c836ba3..cff7d5321be 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -41,6 +41,11 @@ name: "Resource Summarizer Agent" - reopened workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string query: default: summarize in the context of this repository description: Query or question to answer about the resource(s) diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index bb2845db60d..e777e9ba186 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -40,6 +40,11 @@ name: "Poem Bot - A Creative Agentic Workflow" # - maintainer # Roles processed as role check in pre-activation job workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string poem_theme: default: technology and automation description: Theme for the generated poem diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index 26b0dbbc2c5..f997438e4e1 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -36,6 +36,12 @@ name: "Automated Portfolio Analyst" - cron: "50 8 * * 1" # Friendly format: weekly on monday around 09:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/pr-triage-agent.lock.yml b/.github/workflows/pr-triage-agent.lock.yml index 11837662a73..0e98008162d 100644 --- a/.github/workflows/pr-triage-agent.lock.yml +++ b/.github/workflows/pr-triage-agent.lock.yml @@ -29,6 +29,12 @@ name: "PR Triage Agent" schedule: - cron: "0 */6 * * *" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index 228ca4eb3f9..54798a85b3f 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -38,6 +38,12 @@ name: "Copilot Agent Prompt Clustering Analysis" - cron: "40 14 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index cdcc8a6cef6..78bd031e3ca 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -33,6 +33,12 @@ name: "Python Data Visualization Generator" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index 28c3ef86bdb..c9bfd55e062 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -33,6 +33,11 @@ name: "Code Refiner" - labeled workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string item_number: default: "" description: The number of the pull request diff --git a/.github/workflows/release.lock.yml b/.github/workflows/release.lock.yml index 27ca317782b..a4f73ee4372 100644 --- a/.github/workflows/release.lock.yml +++ b/.github/workflows/release.lock.yml @@ -35,6 +35,11 @@ name: "Release" # - maintainer # Roles processed as role check in pre-activation job workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string release_type: default: patch description: Release type (patch, minor, or major) diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index 52ec2f2943c..003b4ceab77 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -32,6 +32,11 @@ name: "Repository Audit & Agentic Workflow Opportunity Analyzer" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string repository: default: FStarLang/FStar description: Target repository to audit (e.g., FStarLang/FStar) diff --git a/.github/workflows/repo-tree-map.lock.yml b/.github/workflows/repo-tree-map.lock.yml index adca8ec1530..549a60464a6 100644 --- a/.github/workflows/repo-tree-map.lock.yml +++ b/.github/workflows/repo-tree-map.lock.yml @@ -34,6 +34,12 @@ name: "Repository Tree Map Generator" - cron: "50 15 * * 1" # Friendly format: weekly on monday around 15:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index 87807e1833a..064e2a03d4c 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -34,6 +34,12 @@ name: "Repository Quality Improvement Agent" schedule: - cron: "0 13 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/research.lock.yml b/.github/workflows/research.lock.yml index bb28c735d81..45c3c58885f 100644 --- a/.github/workflows/research.lock.yml +++ b/.github/workflows/research.lock.yml @@ -33,6 +33,11 @@ name: "Basic Research Agent" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string topic: description: Research topic or question to investigate required: true diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 0f8661ce2b3..7a58068c0c0 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -36,6 +36,12 @@ name: "Safe Output Health Monitor" - cron: "32 23 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 29d3703fd66..73f04f59b38 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -34,6 +34,12 @@ name: "Schema Consistency Checker" - cron: "24 16 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/schema-feature-coverage.lock.yml b/.github/workflows/schema-feature-coverage.lock.yml index 14f156f58e7..b5d48956a87 100644 --- a/.github/workflows/schema-feature-coverage.lock.yml +++ b/.github/workflows/schema-feature-coverage.lock.yml @@ -30,6 +30,12 @@ name: "Schema Feature Coverage Checker" - cron: "24 6 * * 1" # Friendly format: weekly on monday around 07:00 (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index f5b058e8423..cabba8cd901 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -68,6 +68,11 @@ name: "Scout" # - write # Roles processed as role check in pre-activation job workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string history: default: shallow description: "Git history to fetch: shallow (default) or full" diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index 1c52c598f24..6d104d623b4 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -28,6 +28,11 @@ name: "Security Compliance Campaign" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string audit_date: description: Audit deadline (YYYY-MM-DD) required: true diff --git a/.github/workflows/semantic-function-refactor.lock.yml b/.github/workflows/semantic-function-refactor.lock.yml index 61bc5eb5ef0..5d1cd79b1c4 100644 --- a/.github/workflows/semantic-function-refactor.lock.yml +++ b/.github/workflows/semantic-function-refactor.lock.yml @@ -35,6 +35,12 @@ name: "Semantic Function Refactoring" - cron: "44 10 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index 934df595db2..4fc7b9f79fe 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -35,6 +35,12 @@ name: "Sergo - Serena Go Expert" - cron: "8 12 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index 0377b17fd0f..4a8e32f0298 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -35,6 +35,11 @@ name: "Slide Deck Maintainer" # skip-if-match: is:pr is:open in:title "[slides]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string focus: default: global-sweep description: Focus area (feature-deep-dive or global-sweep) diff --git a/.github/workflows/smoke-agent-all-merged.lock.yml b/.github/workflows/smoke-agent-all-merged.lock.yml index ceda8701af7..84de0290448 100644 --- a/.github/workflows/smoke-agent-all-merged.lock.yml +++ b/.github/workflows/smoke-agent-all-merged.lock.yml @@ -31,7 +31,13 @@ name: "Smoke Agent: all/merged" # - metal # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-agent-all-none.lock.yml b/.github/workflows/smoke-agent-all-none.lock.yml index cf1d84ac4e8..a714c6bbfca 100644 --- a/.github/workflows/smoke-agent-all-none.lock.yml +++ b/.github/workflows/smoke-agent-all-none.lock.yml @@ -31,7 +31,13 @@ name: "Smoke Agent: all/none" # - metal # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-agent-public-approved.lock.yml b/.github/workflows/smoke-agent-public-approved.lock.yml index 9fd4fc5017b..189a7bc8ab4 100644 --- a/.github/workflows/smoke-agent-public-approved.lock.yml +++ b/.github/workflows/smoke-agent-public-approved.lock.yml @@ -31,7 +31,13 @@ name: "Smoke Agent: public/approved" # - metal # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-agent-public-none.lock.yml b/.github/workflows/smoke-agent-public-none.lock.yml index 2fe298de080..69756aa1272 100644 --- a/.github/workflows/smoke-agent-public-none.lock.yml +++ b/.github/workflows/smoke-agent-public-none.lock.yml @@ -31,7 +31,13 @@ name: "Smoke Agent: public/none" # - metal # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-agent-scoped-approved.lock.yml b/.github/workflows/smoke-agent-scoped-approved.lock.yml index 5882468c575..e199e4cd8cb 100644 --- a/.github/workflows/smoke-agent-scoped-approved.lock.yml +++ b/.github/workflows/smoke-agent-scoped-approved.lock.yml @@ -31,7 +31,13 @@ name: "Smoke Agent: scoped/approved" # - metal # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-call-workflow.lock.yml b/.github/workflows/smoke-call-workflow.lock.yml index 1129e6f57e5..c9b9431cf1e 100644 --- a/.github/workflows/smoke-call-workflow.lock.yml +++ b/.github/workflows/smoke-call-workflow.lock.yml @@ -32,6 +32,12 @@ name: "Smoke Call Workflow" types: - labeled workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index bae981e3b31..56b2a3dcc8b 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -45,7 +45,13 @@ name: "Smoke Claude" - labeled schedule: - cron: "10 */12 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index a8dd260ed4d..f4262415115 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -38,7 +38,13 @@ name: "Smoke Codex" - labeled schedule: - cron: "45 */12 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-copilot-arm.lock.yml b/.github/workflows/smoke-copilot-arm.lock.yml index 44c03493f06..51cf6ac9c3f 100644 --- a/.github/workflows/smoke-copilot-arm.lock.yml +++ b/.github/workflows/smoke-copilot-arm.lock.yml @@ -37,7 +37,13 @@ name: "Smoke Copilot ARM64" # - water # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index eafb858e01f..e981f0e39c1 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -39,6 +39,11 @@ name: "Smoke Copilot" - cron: "32 */12 * * *" workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string item_number: default: "" description: The number of the issue, pull request, or discussion diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml index 812f75a5401..7cdd7ef98fe 100644 --- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml @@ -33,7 +33,13 @@ name: "Smoke Create Cross-Repo PR" - labeled schedule: - cron: "39 */12 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-gemini.lock.yml b/.github/workflows/smoke-gemini.lock.yml index 26770516bbb..d7475a2d02c 100644 --- a/.github/workflows/smoke-gemini.lock.yml +++ b/.github/workflows/smoke-gemini.lock.yml @@ -38,7 +38,13 @@ name: "Smoke Gemini" - labeled schedule: - cron: "27 */12 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index f297b5367a5..8db682e1e66 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -33,7 +33,13 @@ name: "Smoke Multi PR" - labeled schedule: - cron: "20 */24 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index cc381ec7b2c..10eda1e5100 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -31,7 +31,13 @@ name: "Smoke Project" # - water # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-temporary-id.lock.yml b/.github/workflows/smoke-temporary-id.lock.yml index 348ca072bdf..986c103eb4e 100644 --- a/.github/workflows/smoke-temporary-id.lock.yml +++ b/.github/workflows/smoke-temporary-id.lock.yml @@ -31,7 +31,13 @@ name: "Smoke Temporary ID" # - water # Label filtering applied via job conditions types: - labeled - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 3d27343bc1a..238d9582276 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -33,7 +33,13 @@ name: "Agent Container Smoke Test" - labeled schedule: - cron: "44 */12 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-update-cross-repo-pr.lock.yml b/.github/workflows/smoke-update-cross-repo-pr.lock.yml index 72dda4ec3ee..50d9150d660 100644 --- a/.github/workflows/smoke-update-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-update-cross-repo-pr.lock.yml @@ -33,7 +33,13 @@ name: "Smoke Update Cross-Repo PR" - labeled schedule: - cron: "34 */12 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/smoke-workflow-call-with-inputs.lock.yml b/.github/workflows/smoke-workflow-call-with-inputs.lock.yml index df072929dfe..7591d318cd5 100644 --- a/.github/workflows/smoke-workflow-call-with-inputs.lock.yml +++ b/.github/workflows/smoke-workflow-call-with-inputs.lock.yml @@ -42,6 +42,11 @@ name: "Smoke Workflow Call with Inputs" value: ${{ jobs.safe_outputs.outputs.created_issue_url }} workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string task-description: default: generic task description: Short description of what this invocation should do diff --git a/.github/workflows/smoke-workflow-call.lock.yml b/.github/workflows/smoke-workflow-call.lock.yml index 73efcdcf947..d084e5ce53e 100644 --- a/.github/workflows/smoke-workflow-call.lock.yml +++ b/.github/workflows/smoke-workflow-call.lock.yml @@ -45,6 +45,11 @@ name: "Smoke Workflow Call" value: ${{ jobs.safe_outputs.outputs.comment_url }} workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string task-description: default: validate workflow_call checkout description: Short description of the validation task to include in the output comment diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 249c80f6f27..2a8d8567c72 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -37,6 +37,11 @@ name: "Stale Repository Identifier" - cron: "0 9 1 * *" workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string organization: default: github description: GitHub organization to scan for stale repositories diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index 6714ce122fb..65a691828b2 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -34,6 +34,12 @@ name: "Static Analysis Report" - cron: "32 2 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index 547af30952b..34aef56242f 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -30,6 +30,12 @@ name: "Step Name Alignment" - cron: "30 14 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/sub-issue-closer.lock.yml b/.github/workflows/sub-issue-closer.lock.yml index f784f7a0b7f..32ea195cf96 100644 --- a/.github/workflows/sub-issue-closer.lock.yml +++ b/.github/workflows/sub-issue-closer.lock.yml @@ -30,6 +30,12 @@ name: "Sub-Issue Closer" - cron: "27 1 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index 0883b9806cb..9480f0df768 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -33,6 +33,12 @@ name: "Super Linter Report" schedule: - cron: "0 14 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index feb7de57b50..76c120d7d1f 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -34,6 +34,11 @@ name: "Rebuild the documentation after making changes" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string topic: description: Documentation topic to review required: true diff --git a/.github/workflows/terminal-stylist.lock.yml b/.github/workflows/terminal-stylist.lock.yml index 6e940166cbd..dcdc1148e2a 100644 --- a/.github/workflows/terminal-stylist.lock.yml +++ b/.github/workflows/terminal-stylist.lock.yml @@ -35,6 +35,12 @@ name: "Terminal Stylist" - cron: "9 17 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index d2fcd846a28..2c81c802ba7 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -27,6 +27,12 @@ name: "Test Create PR Error Handling" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/test-dispatcher.lock.yml b/.github/workflows/test-dispatcher.lock.yml index b3bb8b769be..51eb1a4fcd6 100644 --- a/.github/workflows/test-dispatcher.lock.yml +++ b/.github/workflows/test-dispatcher.lock.yml @@ -26,6 +26,12 @@ name: "Test Dispatcher Workflow" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} @@ -344,6 +350,11 @@ jobs: "inputSchema": { "additionalProperties": false, "properties": { + "aw_context": { + "default": "", + "description": "(Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input.", + "type": "string" + }, "test_param": { "description": "Question from the dispatcher workflow", "type": "string" @@ -998,7 +1009,7 @@ jobs: GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com" GITHUB_SERVER_URL: ${{ github.server_url }} GITHUB_API_URL: ${{ github.api_url }} - GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"dispatch_workflow\":{\"max\":1,\"workflow_files\":{\"test-workflow\":\".lock.yml\"},\"workflows\":[\"test-workflow\"]},\"missing_data\":{},\"missing_tool\":{},\"noop\":{\"max\":1,\"report-as-issue\":\"true\"}}" + GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"dispatch_workflow\":{\"aw_context_workflows\":[\"test-workflow\"],\"max\":1,\"workflow_files\":{\"test-workflow\":\".lock.yml\"},\"workflows\":[\"test-workflow\"]},\"missing_data\":{},\"missing_tool\":{},\"noop\":{\"max\":1,\"report-as-issue\":\"true\"}}" with: github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }} script: | diff --git a/.github/workflows/test-project-url-default.lock.yml b/.github/workflows/test-project-url-default.lock.yml index fa9a8e5c2c8..8534db379ee 100644 --- a/.github/workflows/test-project-url-default.lock.yml +++ b/.github/workflows/test-project-url-default.lock.yml @@ -26,6 +26,12 @@ name: "Test Project URL Explicit Requirement" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/test-workflow.lock.yml b/.github/workflows/test-workflow.lock.yml index 00a24d2b914..ce455e6b1f8 100644 --- a/.github/workflows/test-workflow.lock.yml +++ b/.github/workflows/test-workflow.lock.yml @@ -27,6 +27,11 @@ name: "Test Workflow" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string test_param: description: Question from the dispatcher workflow required: true diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index cf5ebd57dc0..fc4ff489afb 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -40,7 +40,13 @@ name: "Tidy" - "**/*.ts" schedule: - cron: "0 7 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/typist.lock.yml b/.github/workflows/typist.lock.yml index 747d2c3a20d..274431be74e 100644 --- a/.github/workflows/typist.lock.yml +++ b/.github/workflows/typist.lock.yml @@ -34,6 +34,12 @@ name: "Typist - Go Type Analysis" schedule: - cron: "0 11 * * 1-5" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 6d8f99bc9f0..feb00282c82 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -35,6 +35,12 @@ name: "Ubuntu Actions Image Analyzer" # Friendly format: weekly (scattered) # skip-if-match: is:pr is:open in:title "[ubuntu-image]" # Skip-if-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 76519cd3ba7..e88dff33b83 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -38,7 +38,13 @@ name: "Documentation Unbloat" - edited schedule: - cron: "7 19 * * *" - workflow_dispatch: null + workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/update-astro.lock.yml b/.github/workflows/update-astro.lock.yml index fa2ecac9f50..491436ff375 100644 --- a/.github/workflows/update-astro.lock.yml +++ b/.github/workflows/update-astro.lock.yml @@ -31,6 +31,12 @@ name: "Update Astro" # Friendly format: daily (scattered) # skip-if-no-match: is:pr is:open author:app/dependabot label:dependencies # Skip-if-no-match processed as search check in pre-activation job workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/video-analyzer.lock.yml b/.github/workflows/video-analyzer.lock.yml index 05bb6290cee..0ebb1063fba 100644 --- a/.github/workflows/video-analyzer.lock.yml +++ b/.github/workflows/video-analyzer.lock.yml @@ -32,6 +32,11 @@ name: "Video Analysis Agent" "on": workflow_dispatch: inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string video_url: description: URL to video file to analyze (must be publicly accessible) required: true diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index 1b45fdab12a..d22489fe6cb 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -34,6 +34,12 @@ name: "Weekly Blog Post Writer" - cron: "25 20 * * 1" # Friendly format: weekly on monday (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/weekly-editors-health-check.lock.yml b/.github/workflows/weekly-editors-health-check.lock.yml index c7fd14ca4f1..83aafa4c911 100644 --- a/.github/workflows/weekly-editors-health-check.lock.yml +++ b/.github/workflows/weekly-editors-health-check.lock.yml @@ -30,6 +30,12 @@ name: "Weekly Editors Health Check" - cron: "8 2 * * 5" # Friendly format: weekly (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index c8086875e5e..91e0bbdd45a 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -35,6 +35,12 @@ name: "Weekly Issue Summary" schedule: - cron: "0 15 * * 1" workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index 2b1849da6df..bb185a732b5 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -30,6 +30,12 @@ name: "Weekly Safe Outputs Specification Review" - cron: "13 3 * * 1" # Friendly format: weekly on monday (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index c7cd76f29b3..2a901ba2dd4 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -34,6 +34,12 @@ name: "Workflow Health Manager - Meta-Orchestrator" - cron: "22 13 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/workflow-normalizer.lock.yml b/.github/workflows/workflow-normalizer.lock.yml index 9bf70df76e6..1cbfd21bb65 100644 --- a/.github/workflows/workflow-normalizer.lock.yml +++ b/.github/workflows/workflow-normalizer.lock.yml @@ -34,6 +34,12 @@ name: "Workflow Normalizer" - cron: "53 15 * * *" # Friendly format: daily (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/.github/workflows/workflow-skill-extractor.lock.yml b/.github/workflows/workflow-skill-extractor.lock.yml index dad3bb2b5e4..dd22952334d 100644 --- a/.github/workflows/workflow-skill-extractor.lock.yml +++ b/.github/workflows/workflow-skill-extractor.lock.yml @@ -34,6 +34,12 @@ name: "Workflow Skill Extractor" - cron: "48 4 * * 2" # Friendly format: weekly (scattered) workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/actions/setup/js/aw_context.cjs b/actions/setup/js/aw_context.cjs new file mode 100644 index 00000000000..9c773c08f70 --- /dev/null +++ b/actions/setup/js/aw_context.cjs @@ -0,0 +1,27 @@ +// @ts-check +/// + +/** + * Builds the aw_context object that identifies the calling workflow run. + * This metadata is injected into dispatched workflows that declare an + * aw_context input, allowing them to trace back to their caller. + * + * @returns {{ repo: string, run_id: string, workflow_id: string, workflow_call_id: string, time: string, actor: string, event_type: string }} + */ +function buildAwContext() { + return { + repo: `${context.repo.owner}/${context.repo.repo}`, + run_id: String(context.runId ?? ""), + // GITHUB_WORKFLOW_REF provides the full workflow file path including the ref, + // e.g. "owner/repo/.github/workflows/dispatcher.yml@refs/heads/main" + workflow_id: process.env.GITHUB_WORKFLOW_REF ?? "", + // workflow_call_id uniquely identifies this specific call attempt: + // combine run_id with run_attempt (GITHUB_RUN_ATTEMPT) so re-runs produce different IDs. + workflow_call_id: `${process.env.GITHUB_RUN_ID ?? context.runId ?? ""}-${process.env.GITHUB_RUN_ATTEMPT ?? "1"}`, + time: new Date().toISOString(), + actor: context.actor ?? "", + event_type: context.eventName ?? "", + }; +} + +module.exports = { buildAwContext }; diff --git a/actions/setup/js/dispatch_repository.cjs b/actions/setup/js/dispatch_repository.cjs index 8848d11ecb6..a59e9132af2 100644 --- a/actions/setup/js/dispatch_repository.cjs +++ b/actions/setup/js/dispatch_repository.cjs @@ -13,6 +13,7 @@ const { createAuthenticatedGitHubClient } = require("./handler_auth.cjs"); const { parseRepoSlug, validateTargetRepo, parseAllowedRepos } = require("./repo_helpers.cjs"); const { logStagedPreviewInfo } = require("./staged_preview.cjs"); const { isStagedMode } = require("./safe_output_helpers.cjs"); +const { buildAwContext } = require("./aw_context.cjs"); /** * Main handler factory for dispatch_repository @@ -125,6 +126,9 @@ async function main(config = {}) { } } + // Inject aw_context so the receiving repository can trace the dispatch back to its caller. + clientPayload["aw_context"] = buildAwContext(); + const eventType = toolConfig.event_type || toolConfig.eventType || ""; if (!eventType) { core.warning(`dispatch_repository: tool "${toolName}" has no event_type configured`); diff --git a/actions/setup/js/dispatch_workflow.cjs b/actions/setup/js/dispatch_workflow.cjs index 4e4137c4f6b..27d54615690 100644 --- a/actions/setup/js/dispatch_workflow.cjs +++ b/actions/setup/js/dispatch_workflow.cjs @@ -13,6 +13,7 @@ const { createAuthenticatedGitHubClient } = require("./handler_auth.cjs"); const { resolveTargetRepoConfig, parseRepoSlug, validateTargetRepo } = require("./repo_helpers.cjs"); const { logStagedPreviewInfo } = require("./staged_preview.cjs"); const { isStagedMode } = require("./safe_output_helpers.cjs"); +const { buildAwContext } = require("./aw_context.cjs"); /** * Main handler factory for dispatch_workflow @@ -24,6 +25,7 @@ async function main(config = {}) { const allowedWorkflows = config.workflows || []; const maxCount = config.max || 1; const workflowFiles = config.workflow_files || {}; // Map of workflow name to file extension + const awContextWorkflows = new Set(config.aw_context_workflows || []); // Workflows that accept aw_context input const githubClient = await createAuthenticatedGitHubClient(config); const { defaultTargetRepo, allowedRepos } = resolveTargetRepoConfig(config); @@ -188,6 +190,12 @@ async function main(config = {}) { } } + // Inject aw_context if the target workflow declares it as an input. + // Only workflows listed in aw_context_workflows (populated at compile time) support this. + if (awContextWorkflows.has(workflowName)) { + inputs["aw_context"] = JSON.stringify(buildAwContext()); + } + // Get the workflow file extension from compile-time resolution const extension = workflowFiles[workflowName]; if (!extension) { diff --git a/actions/setup/js/dispatch_workflow.test.cjs b/actions/setup/js/dispatch_workflow.test.cjs index f0064bdfe36..55d3f555c86 100644 --- a/actions/setup/js/dispatch_workflow.test.cjs +++ b/actions/setup/js/dispatch_workflow.test.cjs @@ -58,6 +58,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "test-workflow": ".lock.yml", }, + aw_context_workflows: ["test-workflow"], max: 5, }; const handler = await main(config); @@ -85,11 +86,54 @@ describe("dispatch_workflow handler factory", () => { inputs: { param1: "value1", param2: "42", + aw_context: expect.any(String), }, return_run_details: true, }); }); + it("should inject aw_context with correct fields", async () => { + process.env.GITHUB_WORKFLOW_REF = "test-owner/test-repo/.github/workflows/dispatcher.yml@refs/heads/main"; + process.env.GITHUB_RUN_ID = "99999"; + process.env.GITHUB_RUN_ATTEMPT = "2"; + global.context.runId = 99999; + global.context.actor = "octocat"; + global.context.eventName = "issues"; + + const config = { + workflows: ["test-workflow"], + workflow_files: { "test-workflow": ".lock.yml" }, + aw_context_workflows: ["test-workflow"], + max: 5, + }; + const handler = await main(config); + + const result = await handler({ type: "dispatch_workflow", workflow_name: "test-workflow", inputs: {} }, {}); + + expect(result.success).toBe(true); + const callArgs = github.rest.actions.createWorkflowDispatch.mock.calls[0][0]; + const awContextRaw = callArgs.inputs["aw_context"]; + expect(awContextRaw).toBeDefined(); + + const awContext = JSON.parse(awContextRaw); + expect(awContext).toHaveProperty("repo"); + expect(awContext).toHaveProperty("run_id"); + expect(awContext).toHaveProperty("workflow_id"); + expect(awContext).toHaveProperty("workflow_call_id"); + expect(awContext).toHaveProperty("time"); + expect(awContext).toHaveProperty("actor"); + expect(awContext).toHaveProperty("event_type"); + // Validate time is a valid ISO 8601 timestamp + expect(() => new Date(awContext.time)).not.toThrow(); + expect(new Date(awContext.time).toISOString()).toBe(awContext.time); + // repo should match mocked context + expect(awContext.repo).toBe("test-owner/test-repo"); + // workflow_id uses GITHUB_WORKFLOW_REF (full workflow file path) + expect(awContext.workflow_id).toBe("test-owner/test-repo/.github/workflows/dispatcher.yml@refs/heads/main"); + // workflow_call_id combines run_id and run_attempt for uniqueness + expect(awContext.workflow_call_id).toBe("99999-2"); + }); + it("should reject workflows not in allowed list", async () => { const config = { workflows: ["allowed-workflow"], @@ -181,6 +225,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "test-workflow": ".lock.yml", }, + aw_context_workflows: ["test-workflow"], }; const handler = await main(config); @@ -201,14 +246,15 @@ describe("dispatch_workflow handler factory", () => { expect(github.rest.actions.createWorkflowDispatch).toHaveBeenCalledWith( expect.objectContaining({ - inputs: { + inputs: expect.objectContaining({ string: "hello", number: "42", boolean: "true", object: '{"key":"value"}', null: "", undefined: "", - }, + aw_context: expect.any(String), + }), }) ); }); @@ -219,6 +265,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "no-inputs-workflow": ".lock.yml", }, + aw_context_workflows: ["no-inputs-workflow"], }; const handler = await main(config); @@ -236,7 +283,9 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "no-inputs-workflow.lock.yml", ref: expect.any(String), - inputs: {}, // Should pass empty object even when inputs property is missing + inputs: expect.objectContaining({ + aw_context: expect.any(String), + }), return_run_details: true, }); }); @@ -292,6 +341,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "test-workflow": ".lock.yml", }, + aw_context_workflows: ["test-workflow"], }; const handler = await main(config); @@ -309,7 +359,7 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "test-workflow.lock.yml", ref: "refs/heads/feature-branch", - inputs: {}, + inputs: expect.objectContaining({ aw_context: expect.any(String) }), return_run_details: true, }); }); @@ -323,6 +373,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "test-workflow": ".lock.yml", }, + aw_context_workflows: ["test-workflow"], }; const handler = await main(config); @@ -340,7 +391,7 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "test-workflow.lock.yml", ref: "refs/heads/main", - inputs: {}, + inputs: expect.objectContaining({ aw_context: expect.any(String) }), return_run_details: true, }); }); @@ -354,6 +405,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "test-workflow": ".lock.yml", }, + aw_context_workflows: ["test-workflow"], }; const handler = await main(config); @@ -371,7 +423,7 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "test-workflow.lock.yml", ref: "refs/heads/feature/add-new-feature", - inputs: {}, + inputs: expect.objectContaining({ aw_context: expect.any(String) }), return_run_details: true, }); }); @@ -387,6 +439,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "test-workflow": ".lock.yml", }, + aw_context_workflows: ["test-workflow"], }; const handler = await main(config); @@ -404,7 +457,7 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "test-workflow.lock.yml", ref: "refs/heads/develop", - inputs: {}, + inputs: expect.objectContaining({ aw_context: expect.any(String) }), return_run_details: true, }); }); @@ -426,6 +479,7 @@ describe("dispatch_workflow handler factory", () => { workflow_files: { "test-workflow": ".lock.yml", }, + aw_context_workflows: ["test-workflow"], }; const handler = await main(config); @@ -448,7 +502,7 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "test-workflow.lock.yml", ref: "refs/heads/staging", - inputs: {}, + inputs: expect.objectContaining({ aw_context: expect.any(String) }), return_run_details: true, }); }); @@ -498,6 +552,7 @@ describe("dispatch_workflow handler factory", () => { const config = { workflows: ["test-workflow"], workflow_files: { "test-workflow": ".lock.yml" }, + aw_context_workflows: ["test-workflow"], }; const handler = await main(config); @@ -512,7 +567,7 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "test-workflow.lock.yml", ref: "refs/heads/main", - inputs: {}, + inputs: expect.objectContaining({ aw_context: expect.any(String) }), return_run_details: true, }); @@ -522,7 +577,7 @@ describe("dispatch_workflow handler factory", () => { repo: "test-repo", workflow_id: "test-workflow.lock.yml", ref: "refs/heads/main", - inputs: {}, + inputs: expect.objectContaining({ aw_context: expect.any(String) }), }); expect(github.rest.actions.createWorkflowDispatch).toHaveBeenCalledTimes(2); diff --git a/actions/setup/js/generate_aw_info.cjs b/actions/setup/js/generate_aw_info.cjs index 961a59b645b..863c8038e0d 100644 --- a/actions/setup/js/generate_aw_info.cjs +++ b/actions/setup/js/generate_aw_info.cjs @@ -92,6 +92,40 @@ async function main(core, ctx) { awInfo.apm_version = apmVersion; } + // Include aw_context when the workflow was triggered via workflow_dispatch with + // the aw_context input set by a calling agentic workflow's dispatch_workflow handler. + // Validates JSON format and structure before populating the context key in aw_info.json. + const awContextRaw = ctx.payload?.inputs?.aw_context; + if (awContextRaw && typeof awContextRaw === "string" && awContextRaw.trim() !== "") { + try { + const parsed = JSON.parse(awContextRaw); + + // Validate: must be a plain non-null object (not an array or primitive) + if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) { + core.warning(`aw_context must be a JSON object, got: ${typeof parsed}`); + } else { + // Validate: no nested objects (all values must be primitives) + const nestedKeys = Object.entries(parsed) + .filter(([, v]) => v !== null && typeof v === "object") + .map(([k]) => k); + if (nestedKeys.length > 0) { + core.warning(`aw_context contains nested objects for keys: ${nestedKeys.join(", ")}. Ignoring aw_context.`); + } else { + // Validate: required fields must be present + const requiredFields = ["run_id", "repo", "workflow_id"]; + const missingFields = requiredFields.filter(f => !(f in parsed)); + if (missingFields.length > 0) { + core.warning(`aw_context is missing required fields: ${missingFields.join(", ")}. Ignoring aw_context.`); + } else { + awInfo.context = parsed; + } + } + } + } catch { + core.warning(`Failed to parse aw_context input as JSON: ${awContextRaw}`); + } + } + // Write to /tmp/gh-aw directory to avoid inclusion in PR fs.mkdirSync(TMP_GH_AW_PATH, { recursive: true }); const tmpPath = TMP_GH_AW_PATH + "/aw_info.json"; diff --git a/actions/setup/js/generate_aw_info.test.cjs b/actions/setup/js/generate_aw_info.test.cjs index 3215001fc9e..920f5024401 100644 --- a/actions/setup/js/generate_aw_info.test.cjs +++ b/actions/setup/js/generate_aw_info.test.cjs @@ -188,4 +188,73 @@ describe("generate_aw_info.cjs", () => { expect(mockCore.summary.addRaw).toHaveBeenCalled(); expect(mockCore.summary.write).toHaveBeenCalled(); }); + + it("should reject aw_context that is not a plain object", async () => { + const contextWithArrayInput = { + ...mockContext, + payload: { inputs: { aw_context: JSON.stringify([1, 2, 3]) } }, + }; + await main(mockCore, contextWithArrayInput); + const awInfo = JSON.parse(fs.readFileSync(awInfoPath, "utf8")); + expect(awInfo.context).toBeUndefined(); + expect(mockCore.warning).toHaveBeenCalledWith(expect.stringContaining("must be a JSON object")); + }); + + it("should reject aw_context with nested objects", async () => { + const contextWithNested = { + ...mockContext, + payload: { + inputs: { + aw_context: JSON.stringify({ + repo: "org/repo", + run_id: "123", + workflow_id: "my-workflow", + nested: { bad: "field" }, + }), + }, + }, + }; + await main(mockCore, contextWithNested); + const awInfo = JSON.parse(fs.readFileSync(awInfoPath, "utf8")); + expect(awInfo.context).toBeUndefined(); + expect(mockCore.warning).toHaveBeenCalledWith(expect.stringContaining("nested objects")); + }); + + it("should reject aw_context missing required fields", async () => { + const contextMissingFields = { + ...mockContext, + payload: { + inputs: { + aw_context: JSON.stringify({ actor: "octocat" }), + }, + }, + }; + await main(mockCore, contextMissingFields); + const awInfo = JSON.parse(fs.readFileSync(awInfoPath, "utf8")); + expect(awInfo.context).toBeUndefined(); + expect(mockCore.warning).toHaveBeenCalledWith(expect.stringContaining("missing required fields")); + expect(mockCore.warning).toHaveBeenCalledWith(expect.stringContaining("run_id")); + expect(mockCore.warning).toHaveBeenCalledWith(expect.stringContaining("repo")); + expect(mockCore.warning).toHaveBeenCalledWith(expect.stringContaining("workflow_id")); + }); + + it("should accept valid aw_context and set awInfo.context", async () => { + const validContext = { + repo: "org/repo", + run_id: "12345", + workflow_id: "org/repo/.github/workflows/dispatcher.yml@refs/heads/main", + workflow_call_id: "12345-1", + time: new Date().toISOString(), + actor: "octocat", + event_type: "issues", + }; + const contextWithValid = { + ...mockContext, + payload: { inputs: { aw_context: JSON.stringify(validContext) } }, + }; + await main(mockCore, contextWithValid); + const awInfo = JSON.parse(fs.readFileSync(awInfoPath, "utf8")); + expect(awInfo.context).toEqual(validContext); + expect(mockCore.warning).not.toHaveBeenCalledWith(expect.stringContaining("aw_context")); + }); }); diff --git a/pkg/workflow/compiler_aw_context.go b/pkg/workflow/compiler_aw_context.go new file mode 100644 index 00000000000..ad775d18aa2 --- /dev/null +++ b/pkg/workflow/compiler_aw_context.go @@ -0,0 +1,107 @@ +package workflow + +import ( + "strings" +) + +// awContextInputDescription is the description for the aw_context workflow_dispatch input. +// It signals to users that this input is managed internally by the agentic workflow system. +const awContextInputDescription = "(Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input." + +// injectAwContextIntoOnYAML adds the aw_context input to the workflow_dispatch trigger +// in the given on-section YAML string, if workflow_dispatch is present. +// +// The injection is string-based to preserve existing YAML comments and formatting. +// It handles two cases: +// - Bare "workflow_dispatch:" (no sub-keys): adds an inputs: block with aw_context +// - "workflow_dispatch:" with an "inputs:" sub-key: adds aw_context inside inputs +// +// The function is idempotent: calling it twice produces the same result. +func injectAwContextIntoOnYAML(onSection string) string { + if !strings.Contains(onSection, "workflow_dispatch") { + return onSection + } + // Idempotency: skip if already injected + if strings.Contains(onSection, "aw_context:") { + return onSection + } + + lines := strings.Split(onSection, "\n") + + // Find the workflow_dispatch: line (bare — no sub-value on same line) + wdLineIdx := -1 + wdIndent := 0 + for i, line := range lines { + stripped := strings.TrimLeft(line, " \t") + rest, found := strings.CutPrefix(stripped, "workflow_dispatch:") + if found { + rest = strings.TrimSpace(rest) + if rest == "" || rest == "null" || rest == "~" { + wdLineIdx = i + wdIndent = len(line) - len(stripped) + break + } + } + } + + if wdLineIdx == -1 { + return onSection + } + + // Look for an "inputs:" key directly inside workflow_dispatch (at wdIndent+2 depth). + // Only the first non-empty, non-comment line after wdLineIdx matters. + inputsLineIdx := -1 + for i := wdLineIdx + 1; i < len(lines); i++ { + stripped := strings.TrimLeft(lines[i], " \t") + if stripped == "" || strings.HasPrefix(stripped, "#") { + continue + } + lineIndent := len(lines[i]) - len(stripped) + if lineIndent <= wdIndent { + break // left workflow_dispatch block entirely + } + if strings.HasPrefix(stripped, "inputs:") { + inputsLineIdx = i + } + break // only inspect the first substantive child key + } + + awContextLines := buildAwContextInputLines(wdIndent) + + result := make([]string, 0, len(lines)+len(awContextLines)+1) + for i, line := range lines { + // When the workflow_dispatch: line contains an explicit null/~ value, + // replace it with a bare workflow_dispatch: so sub-keys can follow. + if i == wdLineIdx && (strings.HasSuffix(strings.TrimSpace(line), " null") || + strings.HasSuffix(strings.TrimSpace(line), " ~")) { + stripped := strings.TrimLeft(line, " \t") + line = strings.Repeat(" ", wdIndent) + strings.SplitN(stripped, ":", 2)[0] + ":" + } + result = append(result, line) + + if inputsLineIdx != -1 && i == inputsLineIdx { + // Insert aw_context as the first entry under existing inputs: + result = append(result, awContextLines...) + } else if inputsLineIdx == -1 && i == wdLineIdx { + // workflow_dispatch is bare — add inputs: + aw_context + result = append(result, strings.Repeat(" ", wdIndent+2)+"inputs:") + result = append(result, awContextLines...) + } + } + + return strings.Join(result, "\n") +} + +// buildAwContextInputLines returns the indented YAML lines for the aw_context input +// definition, sized relative to the workflow_dispatch: line's indentation. +func buildAwContextInputLines(wdIndent int) []string { + awIndent := strings.Repeat(" ", wdIndent+4) // under inputs: + propIndent := strings.Repeat(" ", wdIndent+6) // properties of aw_context + return []string{ + awIndent + "aw_context:", + propIndent + "default: \"\"", + propIndent + "description: " + awContextInputDescription, + propIndent + "required: false", + propIndent + "type: string", + } +} diff --git a/pkg/workflow/compiler_safe_outputs_config.go b/pkg/workflow/compiler_safe_outputs_config.go index 66ab52c0c95..32989c56446 100644 --- a/pkg/workflow/compiler_safe_outputs_config.go +++ b/pkg/workflow/compiler_safe_outputs_config.go @@ -605,6 +605,11 @@ var handlerRegistry = map[string]handlerBuilder{ builder.AddDefault("workflow_files", c.WorkflowFiles) } + // Add aw_context_workflows list if it has entries + if len(c.AwContextWorkflows) > 0 { + builder.AddStringSlice("aw_context_workflows", c.AwContextWorkflows) + } + builder.AddIfNotEmpty("target-ref", c.TargetRef) builder.AddIfNotEmpty("github-token", c.GitHubToken) builder.AddIfTrue("staged", c.Staged) diff --git a/pkg/workflow/compiler_yaml.go b/pkg/workflow/compiler_yaml.go index 8c3d40de68c..1fb5238a0f0 100644 --- a/pkg/workflow/compiler_yaml.go +++ b/pkg/workflow/compiler_yaml.go @@ -199,6 +199,10 @@ func (c *Compiler) generateWorkflowBody(yaml *strings.Builder, data *WorkflowDat if data.SafeOutputs != nil { onSection = c.injectWorkflowCallOutputs(onSection, data.SafeOutputs) } + // Inject aw_context input into workflow_dispatch triggers so dispatched workflows + // can receive caller metadata (repo, run_id, actor, etc.) from dispatch_workflow. + // String-based injection preserves existing YAML comments and formatting. + onSection = injectAwContextIntoOnYAML(onSection) yaml.WriteString(onSection + "\n\n") // Note: GitHub Actions doesn't support workflow-level if conditions diff --git a/pkg/workflow/dispatch_workflow.go b/pkg/workflow/dispatch_workflow.go index b2d4d2711f5..650351bc459 100644 --- a/pkg/workflow/dispatch_workflow.go +++ b/pkg/workflow/dispatch_workflow.go @@ -9,10 +9,11 @@ var dispatchWorkflowLog = logger.New("workflow:dispatch_workflow") // DispatchWorkflowConfig holds configuration for dispatching workflows from agent output type DispatchWorkflowConfig struct { BaseSafeOutputConfig `yaml:",inline"` - Workflows []string `yaml:"workflows,omitempty"` // List of workflow names (without .md extension) to allow dispatching - WorkflowFiles map[string]string `yaml:"workflow_files,omitempty"` // Map of workflow name to file extension (.lock.yml or .yml) - populated at compile time - TargetRepoSlug string `yaml:"target-repo,omitempty"` // Target repository for cross-repo dispatch (owner/repo or GitHub Actions expression) - TargetRef string `yaml:"target-ref,omitempty"` // Target ref for cross-repo dispatch; overrides the caller's GITHUB_REF + Workflows []string `yaml:"workflows,omitempty"` // List of workflow names (without .md extension) to allow dispatching + WorkflowFiles map[string]string `yaml:"workflow_files,omitempty"` // Map of workflow name to file extension (.lock.yml or .yml) - populated at compile time + AwContextWorkflows []string `yaml:"aw_context_workflows,omitempty"` // Workflows that declare aw_context in workflow_dispatch.inputs - populated at compile time + TargetRepoSlug string `yaml:"target-repo,omitempty"` // Target repository for cross-repo dispatch (owner/repo or GitHub Actions expression) + TargetRef string `yaml:"target-ref,omitempty"` // Target ref for cross-repo dispatch; overrides the caller's GITHUB_REF } // parseDispatchWorkflowConfig handles dispatch-workflow configuration diff --git a/pkg/workflow/safe_outputs_dispatch.go b/pkg/workflow/safe_outputs_dispatch.go index b04dfd06f1c..1d19cee1522 100644 --- a/pkg/workflow/safe_outputs_dispatch.go +++ b/pkg/workflow/safe_outputs_dispatch.go @@ -21,6 +21,9 @@ var safeOutputsDispatchWorkflowLog = logger.New("workflow:safe_outputs_dispatch" // populateDispatchWorkflowFiles resolves the file extension for each dispatch // workflow listed in SafeOutputsConfig.DispatchWorkflow.Workflows. The resolved // extension is stored in WorkflowFiles for later use by the runtime handler. +// It also detects which workflows declare aw_context in their workflow_dispatch.inputs +// and stores those names in AwContextWorkflows, so the runtime handler only injects +// aw_context metadata for workflows that explicitly support it. // // Priority order: .lock.yml > .yml > .md (same-batch compilation target) func populateDispatchWorkflowFiles(data *WorkflowData, markdownPath string) { @@ -64,7 +67,39 @@ func populateDispatchWorkflowFiles(data *WorkflowData, markdownPath string) { // Store the file extension for runtime use data.SafeOutputs.DispatchWorkflow.WorkflowFiles[workflowName] = extension safeOutputsConfigLog.Printf("Mapped workflow %s to extension %s", workflowName, extension) + + // Check if the target workflow declares aw_context in its workflow_dispatch.inputs. + // We check the lock file first (compiled YAML), falling back to the markdown frontmatter. + if workflowHasAwContextInput(fileResult, workflowName) { + data.SafeOutputs.DispatchWorkflow.AwContextWorkflows = append( + data.SafeOutputs.DispatchWorkflow.AwContextWorkflows, workflowName, + ) + safeOutputsConfigLog.Printf("Workflow %s declares aw_context input", workflowName) + } + } +} + +// workflowHasAwContextInput reports whether the workflow identified by fileResult +// has aw_context declared in its workflow_dispatch.inputs. +func workflowHasAwContextInput(fileResult *findWorkflowFileResult, workflowName string) bool { + var inputs map[string]any + var err error + + if fileResult.lockExists { + inputs, err = extractWorkflowDispatchInputs(fileResult.lockPath) + } else if fileResult.ymlExists { + inputs, err = extractWorkflowDispatchInputs(fileResult.ymlPath) + } else if fileResult.mdExists { + inputs, err = extractMDWorkflowDispatchInputs(fileResult.mdPath) + } else { + return false + } + if err != nil { + safeOutputsConfigLog.Printf("Warning: error extracting inputs for %s: %v", workflowName, err) + return false } + _, hasAwContext := inputs["aw_context"] + return hasAwContext } // generateDispatchWorkflowTool generates an MCP tool definition for a specific workflow. diff --git a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/basic-copilot.golden b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/basic-copilot.golden index 46d3836d02f..32b369d8867 100644 --- a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/basic-copilot.golden +++ b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/basic-copilot.golden @@ -1,6 +1,12 @@ name: "basic-copilot-test" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden index 7884e80f1a0..6db8cfbe49f 100644 --- a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden +++ b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/smoke-copilot.golden @@ -11,6 +11,12 @@ name: "Smoke Copilot" # Friendly format: every 12h (scattered) status-comment: true workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/with-imports.golden b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/with-imports.golden index 0e154dc6502..76edb51d3b9 100644 --- a/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/with-imports.golden +++ b/pkg/workflow/testdata/wasm_golden/TestWasmGolden_CompileFixtures/with-imports.golden @@ -1,6 +1,12 @@ name: "with-imports-test" "on": workflow_dispatch: + inputs: + aw_context: + default: "" + description: (Internal) JSON context injected by the calling agentic workflow. Not intended for direct user input. + required: false + type: string permissions: {} diff --git a/pkg/workflow/workflow_dispatch_inputs_test.go b/pkg/workflow/workflow_dispatch_inputs_test.go index d4fd594b079..dc7e1c652d0 100644 --- a/pkg/workflow/workflow_dispatch_inputs_test.go +++ b/pkg/workflow/workflow_dispatch_inputs_test.go @@ -141,7 +141,9 @@ Test workflow with choice input`, t.Fatalf("Expected 'inputs' to be a map, got %T", workflowDispatch["inputs"]) } - // Get the first (and only) input + // Get the first (and only) user-defined input + // (aw_context is automatically injected by the compiler and should be filtered out) + delete(inputs, "aw_context") if len(inputs) != 1 { t.Fatalf("Expected 1 input, got %d", len(inputs)) } @@ -414,9 +416,10 @@ Test workflow with all input types` inputs := workflowDispatch["inputs"].(map[string]any) // Verify all inputs exist + // (aw_context is automatically injected by the compiler) expectedInputs := []string{"message", "debug", "count", "environment", "deploy_target"} - if len(inputs) != len(expectedInputs) { - t.Fatalf("Expected %d inputs, got %d", len(expectedInputs), len(inputs)) + if len(inputs) != len(expectedInputs)+1 { + t.Fatalf("Expected %d inputs (including aw_context), got %d", len(expectedInputs)+1, len(inputs)) } for _, inputName := range expectedInputs {