From 71336ef69d2f9e0cfd6fb65fa2a6be1601466d29 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 22 Jun 2026 17:26:45 +0000 Subject: [PATCH 1/4] Add runtime features env support Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- actions/setup/js/runtime_features.cjs | 66 +++++++++++++++++ actions/setup/js/runtime_features.test.cjs | 35 +++++++++ actions/setup/js/setup_globals.cjs | 5 ++ pkg/workflow/compiler_activation_job.go | 1 + .../compiler_activation_job_builder.go | 18 +++++ pkg/workflow/jobs.go | 51 +++++++++++-- pkg/workflow/runtime_features_env_test.go | 71 +++++++++++++++++++ .../TestWasmGolden_AllEngines/claude.golden | 17 +++++ .../TestWasmGolden_AllEngines/codex.golden | 17 +++++ .../TestWasmGolden_AllEngines/copilot.golden | 17 +++++ .../TestWasmGolden_AllEngines/gemini.golden | 17 +++++ .../TestWasmGolden_AllEngines/pi.golden | 17 +++++ .../basic-copilot.golden | 17 +++++ .../playwright-cli-mode.golden | 17 +++++ .../smoke-copilot.golden | 17 +++++ .../with-imports.golden | 17 +++++ 16 files changed, 396 insertions(+), 4 deletions(-) create mode 100644 actions/setup/js/runtime_features.cjs create mode 100644 actions/setup/js/runtime_features.test.cjs create mode 100644 pkg/workflow/runtime_features_env_test.go diff --git a/actions/setup/js/runtime_features.cjs b/actions/setup/js/runtime_features.cjs new file mode 100644 index 00000000000..e95cc5e59d5 --- /dev/null +++ b/actions/setup/js/runtime_features.cjs @@ -0,0 +1,66 @@ +// @ts-check + +/** + * Parse GH_AW_RUNTIME_FEATURES into a key/value map. + * + * Supported line formats: + * - key + * - key=value + * + * Blank lines are ignored. Flags without an explicit value default to true. + * + * @param {string | undefined | null} raw + * @returns {Record} + */ +function parseRuntimeFeatures(raw) { + if (!raw) { + return {}; + } + + /** @type {Record} */ + const features = {}; + + for (const line of raw.split(/\r?\n/)) { + const trimmed = line.trim(); + if (!trimmed) { + continue; + } + const equalsIndex = trimmed.indexOf("="); + if (equalsIndex === -1) { + features[trimmed] = true; + continue; + } + + const key = trimmed.slice(0, equalsIndex).trim(); + if (!key) { + continue; + } + features[key] = trimmed.slice(equalsIndex + 1).trim(); + } + + return features; +} + +/** + * @param {Record} features + * @param {string} key + * @returns {boolean} + */ +function hasRuntimeFeature(features, key) { + return Object.prototype.hasOwnProperty.call(features, key); +} + +/** + * @param {Record} features + * @param {string} key + * @returns {string | boolean | undefined} + */ +function getRuntimeFeatureValue(features, key) { + return features[key]; +} + +module.exports = { + parseRuntimeFeatures, + hasRuntimeFeature, + getRuntimeFeatureValue, +}; diff --git a/actions/setup/js/runtime_features.test.cjs b/actions/setup/js/runtime_features.test.cjs new file mode 100644 index 00000000000..f3544f307c2 --- /dev/null +++ b/actions/setup/js/runtime_features.test.cjs @@ -0,0 +1,35 @@ +// @ts-check + +import { describe, expect, it } from "vitest"; + +const { parseRuntimeFeatures, hasRuntimeFeature, getRuntimeFeatureValue } = require("./runtime_features.cjs"); + +describe("runtime_features", () => { + it("parses newline-delimited flags and key value pairs", () => { + const features = parseRuntimeFeatures("key\nkey2=value\nkey3 = spaced value"); + + expect(features).toEqual({ + key: true, + key2: "value", + key3: "spaced value", + }); + }); + + it("ignores blank lines and malformed empty keys", () => { + const features = parseRuntimeFeatures("\n \n=value\nvalid=\n"); + + expect(features).toEqual({ + valid: "", + }); + }); + + it("supports feature lookup helpers", () => { + const features = parseRuntimeFeatures("flag\nmode=fast"); + + expect(hasRuntimeFeature(features, "flag")).toBe(true); + expect(hasRuntimeFeature(features, "missing")).toBe(false); + expect(getRuntimeFeatureValue(features, "flag")).toBe(true); + expect(getRuntimeFeatureValue(features, "mode")).toBe("fast"); + expect(getRuntimeFeatureValue(features, "missing")).toBeUndefined(); + }); +}); diff --git a/actions/setup/js/setup_globals.cjs b/actions/setup/js/setup_globals.cjs index ec82c7098fa..1897cdec6ff 100644 --- a/actions/setup/js/setup_globals.cjs +++ b/actions/setup/js/setup_globals.cjs @@ -8,6 +8,7 @@ */ const { createRateLimitAwareGithub } = require("./github_rate_limit_logger.cjs"); +const { parseRuntimeFeatures, hasRuntimeFeature, getRuntimeFeatureValue } = require("./runtime_features.cjs"); /** * Stores GitHub Actions builtin objects (core, github, context, exec, io, getOctokit) in the global scope @@ -26,6 +27,10 @@ const { createRateLimitAwareGithub } = require("./github_rate_limit_logger.cjs") */ function setupGlobals(coreModule, githubModule, contextModule, execModule, ioModule, getOctokitFn) { global.core = coreModule; + const runtimeFeatures = parseRuntimeFeatures(process.env.GH_AW_RUNTIME_FEATURES); + global.runtimeFeatures = runtimeFeatures; + global.hasRuntimeFeature = key => hasRuntimeFeature(runtimeFeatures, key); + global.getRuntimeFeatureValue = key => getRuntimeFeatureValue(runtimeFeatures, key); // Inject X-GitHub-Api-Version header on every request to suppress the // "@octokit/request: endpoint is deprecated" warning that fires when the // unversioned GitHub REST API is used. diff --git a/pkg/workflow/compiler_activation_job.go b/pkg/workflow/compiler_activation_job.go index 6a4cf595478..e336680caa1 100644 --- a/pkg/workflow/compiler_activation_job.go +++ b/pkg/workflow/compiler_activation_job.go @@ -41,6 +41,7 @@ func (c *Compiler) buildActivationJob(data *WorkflowData, preActivationJobCreate if err := c.addActivationCommandAndLabelOutputs(ctx); err != nil { return nil, err } + ctx.steps = append(ctx.steps, buildRuntimeFeaturesSummaryStep()...) // Generate experiment selection steps when experiments are declared in the frontmatter. // These steps run before the prompt is built so that experiments.name expressions diff --git a/pkg/workflow/compiler_activation_job_builder.go b/pkg/workflow/compiler_activation_job_builder.go index 151eca9f93b..f663b784654 100644 --- a/pkg/workflow/compiler_activation_job_builder.go +++ b/pkg/workflow/compiler_activation_job_builder.go @@ -406,6 +406,24 @@ func (c *Compiler) buildActivationDailyAICGuardrailStep(data *WorkflowData) []st return steps } +func buildRuntimeFeaturesSummaryStep() []string { + return []string{ + " - name: Log runtime features\n", + " run: |\n", + " {\n", + " echo \"## Runtime features\"\n", + " echo\n", + " if [[ -n \"${GH_AW_RUNTIME_FEATURES:-}\" ]]; then\n", + " echo '```text'\n", + " printf '%s\\n' \"$GH_AW_RUNTIME_FEATURES\"\n", + " echo '```'\n", + " else\n", + " echo \"_Not set_\"\n", + " fi\n", + " } >> \"$GITHUB_STEP_SUMMARY\"\n", + } +} + // addActivationRepositoryAndOutputSteps appends checkout, validation, sanitization, comment, and lock steps. func (c *Compiler) addActivationRepositoryAndOutputSteps(ctx *activationJobBuildContext) error { data := ctx.data diff --git a/pkg/workflow/jobs.go b/pkg/workflow/jobs.go index 805cd7b78d3..c8b7690aa62 100644 --- a/pkg/workflow/jobs.go +++ b/pkg/workflow/jobs.go @@ -13,6 +13,24 @@ import ( var jobLog = logger.New("workflow:jobs") +const runtimeFeaturesEnvVarName = "GH_AW_RUNTIME_FEATURES" +const runtimeFeaturesEnvVarExpression = "${{ vars.GH_AW_RUNTIME_FEATURES }}" + +var runtimeFeaturesBuiltInJobNames = map[string]struct{}{ + string(constants.AgentJobName): {}, + string(constants.ActivationJobName): {}, + string(constants.PreActivationJobName): {}, + string(constants.DetectionJobName): {}, + string(constants.SafeOutputsJobName): {}, + string(constants.UploadAssetsJobName): {}, + string(constants.UploadCodeScanningJobName): {}, + string(constants.ConclusionJobName): {}, + string(constants.UnlockJobName): {}, + "push_experiments_state": {}, + "push_repo_memory": {}, + "update_cache_memory": {}, +} + // Job represents a GitHub Actions job with all its properties type Job struct { Name string @@ -293,17 +311,18 @@ func (jm *JobManager) renderJobTo(b *strings.Builder, job *Job) { } // Add environment variables section - if len(job.Env) > 0 { + env := buildRenderedJobEnv(job) + if len(env) > 0 { b.WriteString(" env:\n") // Sort environment variable keys for consistent output - envKeys := make([]string, 0, len(job.Env)) - for key := range job.Env { + envKeys := make([]string, 0, len(env)) + for key := range env { envKeys = append(envKeys, key) } sort.Strings(envKeys) for _, key := range envKeys { - fmt.Fprintf(b, " %s: %s\n", key, job.Env[key]) + fmt.Fprintf(b, " %s: %s\n", key, env[key]) } } @@ -384,3 +403,27 @@ func (jm *JobManager) renderJobTo(b *strings.Builder, job *Job) { // Add newline after each job for proper formatting b.WriteString("\n") } + +func buildRenderedJobEnv(job *Job) map[string]string { + if job == nil { + return nil + } + env := maps.Clone(job.Env) + if shouldInjectRuntimeFeaturesEnv(job) { + if env == nil { + env = make(map[string]string) + } + if _, exists := env[runtimeFeaturesEnvVarName]; !exists { + env[runtimeFeaturesEnvVarName] = runtimeFeaturesEnvVarExpression + } + } + return env +} + +func shouldInjectRuntimeFeaturesEnv(job *Job) bool { + if job == nil || job.Uses != "" { + return false + } + _, ok := runtimeFeaturesBuiltInJobNames[job.Name] + return ok +} diff --git a/pkg/workflow/runtime_features_env_test.go b/pkg/workflow/runtime_features_env_test.go new file mode 100644 index 00000000000..7e25380fdc9 --- /dev/null +++ b/pkg/workflow/runtime_features_env_test.go @@ -0,0 +1,71 @@ +//go:build !integration + +package workflow + +import ( + "strings" + "testing" + + "github.com/github/gh-aw/pkg/constants" +) + +func TestBuildRenderedJobEnv_AddsRuntimeFeaturesForBuiltInJobs(t *testing.T) { + job := &Job{Name: string(constants.ActivationJobName)} + + env := buildRenderedJobEnv(job) + + if env[runtimeFeaturesEnvVarName] != runtimeFeaturesEnvVarExpression { + t.Fatalf("%s = %q, want %q", runtimeFeaturesEnvVarName, env[runtimeFeaturesEnvVarName], runtimeFeaturesEnvVarExpression) + } +} + +func TestBuildRenderedJobEnv_DoesNotAddRuntimeFeaturesForCustomJobs(t *testing.T) { + job := &Job{Name: "custom_job"} + + env := buildRenderedJobEnv(job) + + if len(env) != 0 { + t.Fatalf("expected no env vars for custom job, got %v", env) + } +} + +func TestBuildRenderedJobEnv_PreservesExistingRuntimeFeaturesOverride(t *testing.T) { + job := &Job{ + Name: string(constants.AgentJobName), + Env: map[string]string{ + runtimeFeaturesEnvVarName: `"explicit"`, + "KEEP_ME": `"yes"`, + }, + } + + env := buildRenderedJobEnv(job) + + if env[runtimeFeaturesEnvVarName] != `"explicit"` { + t.Fatalf("expected explicit runtime features value to be preserved, got %q", env[runtimeFeaturesEnvVarName]) + } + if env["KEEP_ME"] != `"yes"` { + t.Fatalf("expected KEEP_ME env var to be preserved, got %q", env["KEEP_ME"]) + } +} + +func TestActivationJobIncludesRuntimeFeatureSummaryStep(t *testing.T) { + compiler := NewCompiler() + compiler.repoConfigLoaded = true + compiler.repoConfig = &RepoConfig{} + + job, err := compiler.buildActivationJob(&WorkflowData{}, false, "", "test.lock.yml") + if err != nil { + t.Fatalf("buildActivationJob() error = %v", err) + } + + steps := strings.Join(job.Steps, "\n") + if !strings.Contains(steps, "name: Log runtime features") { + t.Fatal("expected activation job to include runtime feature summary step") + } + if !strings.Contains(steps, "GH_AW_RUNTIME_FEATURES") { + t.Fatal("expected runtime feature summary step to reference GH_AW_RUNTIME_FEATURES") + } + if !strings.Contains(steps, "$GITHUB_STEP_SUMMARY") { + t.Fatal("expected runtime feature summary step to write to GITHUB_STEP_SUMMARY") + } +} diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden index 2def76fde50..5a99c011127 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -171,6 +172,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -313,6 +327,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflow outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -752,6 +767,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden index 1deb1f18909..06ec6c12b4d 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -172,6 +173,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -314,6 +328,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflow outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -719,6 +734,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden index e1f35631e19..44166423d69 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -171,6 +172,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -313,6 +327,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflow outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -692,6 +707,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden index 1b3814036f7..9721b40517c 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -169,6 +170,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -311,6 +325,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflow outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -674,6 +689,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden index 6e95b76d05c..1e98a1deff7 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -171,6 +172,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -313,6 +327,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflow outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -611,6 +626,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden index 03e61528064..7d5ab3d9275 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -171,6 +172,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -313,6 +327,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: basiccopilot outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -692,6 +707,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden index 3f02a40f5ab..215f97bdb3c 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -171,6 +172,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -323,6 +337,7 @@ jobs: runs-on: ubuntu-latest permissions: read-all env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: playwrightclimode outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -712,6 +727,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden index 3d8051213d7..f6294eb69c9 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden @@ -36,6 +36,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -197,6 +198,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -436,6 +450,7 @@ jobs: issues: read pull-requests: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilot outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -949,6 +964,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden index 378add1d527..c6b5e640348 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden @@ -25,6 +25,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -171,6 +172,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -314,6 +328,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: withimports outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -693,6 +708,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' From b3dd76c4ddb7945770cc9a7e26e4cc1d506a4ccf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 17:36:45 +0000 Subject: [PATCH 2/4] Add draft ADR-40824 for runtime feature flag propagation Co-Authored-By: Claude Opus 4.8 (1M context) --- ...e-runtime-features-via-actions-variable.md | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 docs/adr/40824-propagate-runtime-features-via-actions-variable.md diff --git a/docs/adr/40824-propagate-runtime-features-via-actions-variable.md b/docs/adr/40824-propagate-runtime-features-via-actions-variable.md new file mode 100644 index 00000000000..2fc0e98d857 --- /dev/null +++ b/docs/adr/40824-propagate-runtime-features-via-actions-variable.md @@ -0,0 +1,48 @@ +# ADR-40824: Propagate Runtime Feature Flags via a Single GH_AW_RUNTIME_FEATURES Actions Variable + +**Date**: 2026-06-22 +**Status**: Draft + +## Context + +gh-aw compiles agentic workflows into GitHub Actions YAML composed of several framework-managed built-in jobs (`activation`, `agent`, `detection`, `safe_outputs`, `conclusion`, and related follow-on jobs). There was no runtime mechanism to toggle or configure behavior across these jobs without recompiling the workflow or threading a value through each job's `env:` block by hand. A way was needed to surface operator-controlled feature flags at run time, readable both by the generated shell steps and by the shared JS runtime that runs inside the jobs, and to make the effective value inspectable from a workflow run. + +## Decision + +We will propagate a single GitHub Actions repository variable, `GH_AW_RUNTIME_FEATURES`, into the job-level `env:` block of an allowlisted set of built-in jobs at render time (`buildRenderedJobEnv` / `shouldInjectRuntimeFeaturesEnv` in `pkg/workflow/jobs.go`), injecting `${{ vars.GH_AW_RUNTIME_FEATURES }}` only for jobs whose name is in `runtimeFeaturesBuiltInJobNames` and that do not already define the key. The value is a newline-delimited list of `key` or `key=value` entries, parsed by a shared helper (`actions/setup/js/runtime_features.cjs`) and exposed on the global scope through `setup_globals` (`hasRuntimeFeature` / `getRuntimeFeatureValue`) so runtime scripts query features without duplicating parsing logic. The activation job also emits a "Log runtime features" step that writes the raw value to `$GITHUB_STEP_SUMMARY`, rendering an explicit `_Not set_` when absent. + +## Alternatives Considered + +### Alternative 1: Thread a separate Actions variable per feature flag + +Define a distinct `vars.*` entry for each individual feature and wire each into the relevant jobs. Rejected because it does not scale โ€” every new flag requires a compiler change and a new variable โ€” and it offers no single place to inspect "what features are active" at run time. + +### Alternative 2: Resolve features at compile time from frontmatter/config + +Read feature toggles from workflow frontmatter or repo config and bake the resulting behavior into the compiled YAML. Rejected because the goal is *runtime* configurability: operators must be able to change `vars.GH_AW_RUNTIME_FEATURES` and affect existing compiled workflows without recompiling and committing new lock files. + +### Alternative 3: Inject the variable into every job unconditionally + +Add `GH_AW_RUNTIME_FEATURES` to all rendered jobs rather than an allowlist. Rejected to avoid leaking the variable into user-authored and `uses:`-based jobs where it has no meaning; injection is therefore scoped to the known built-in job names and skipped when `job.Uses != ""`. + +## Consequences + +### Positive + +- A single operator-controlled variable becomes the source of truth for runtime features across all built-in jobs, with no recompile required to change it. +- Parsing lives in one shared helper with unit tests, and the parsed map is exposed uniformly via `setup_globals`, so runtime scripts avoid duplicated parsing. +- The activation step summary makes the effective value (including the unset state) directly inspectable from a run. + +### Negative + +- The allowlist `runtimeFeaturesBuiltInJobNames` must be maintained by hand; a newly added built-in job will silently miss the variable until added to the map. +- The variable is emitted into many jobs' `env:` blocks even when no feature is set, adding noise to generated YAML and refreshing numerous golden fixtures. + +### Neutral + +- The feature namespace is global and untyped (string keys, `string | boolean` values); there is no schema or validation of flag names, so callers must agree on conventions. +- Existing explicit overrides of `GH_AW_RUNTIME_FEATURES` in a job's `env:` are preserved rather than replaced. + +--- + +*This is a DRAFT ADR generated by the [Design Decision Gate](https://github.com/github/gh-aw/actions/runs/27971529832) workflow. The PR author must review, complete, and finalize this document before the PR can merge.* From 455f9726661df67acffdcad2fbd7ea5d5f3f9b79 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 22 Jun 2026 18:03:27 +0000 Subject: [PATCH 3/4] Plan PR finishing Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/ab-testing-advisor.lock.yml | 47 +++++++++--- .github/workflows/ace-editor.lock.yml | 48 ++++++++---- .../agent-performance-analyzer.lock.yml | 48 +++++++++--- .../workflows/agent-persona-explorer.lock.yml | 47 +++++++++--- .../workflows/agentic-token-audit.lock.yml | 48 +++++++++--- .../agentic-token-optimizer.lock.yml | 44 ++++++++--- .../agentic-token-trend-audit.lock.yml | 46 +++++++++--- .github/workflows/ai-moderator.lock.yml | 54 ++++++++++---- .../workflows/api-consumption-report.lock.yml | 47 +++++++++--- .github/workflows/approach-validator.lock.yml | 46 +++++++++--- .github/workflows/archie.lock.yml | 46 +++++++++--- .../workflows/architecture-guardian.lock.yml | 48 +++++++++--- .github/workflows/artifacts-summary.lock.yml | 44 ++++++++--- .github/workflows/audit-workflows.lock.yml | 49 ++++++++++--- .github/workflows/auto-triage-issues.lock.yml | 46 +++++++++--- .github/workflows/avenger.lock.yml | 48 ++++++++---- .../aw-failure-investigator.lock.yml | 46 +++++++++--- .github/workflows/blog-auditor.lock.yml | 46 +++++++++--- .github/workflows/bot-detection.lock.yml | 42 ++++++++--- .github/workflows/brave.lock.yml | 46 +++++++++--- .../breaking-change-checker.lock.yml | 46 +++++++++--- .github/workflows/changeset.lock.yml | 58 ++++++++++----- .../workflows/chaos-pr-bundle-fuzzer.lock.yml | 49 +++++++++---- .github/workflows/ci-coach.lock.yml | 51 +++++++++---- .github/workflows/ci-doctor.lock.yml | 47 +++++++++--- .../claude-code-user-docs-review.lock.yml | 45 +++++++++--- .../cli-consistency-checker.lock.yml | 44 ++++++++--- .../workflows/cli-version-checker.lock.yml | 45 +++++++++--- .github/workflows/cloclo.lock.yml | 51 +++++++++---- .../workflows/code-scanning-fixer.lock.yml | 23 ++++++ .github/workflows/code-simplifier.lock.yml | 50 +++++++++---- .../codex-github-remote-mcp-test.lock.yml | 54 +++++++++----- .../commit-changes-analyzer.lock.yml | 44 ++++++++--- .../constraint-solving-potd.lock.yml | 45 +++++++++--- .github/workflows/contribution-check.lock.yml | 44 ++++++++--- .../workflows/copilot-agent-analysis.lock.yml | 49 ++++++++++--- .../copilot-centralization-drilldown.lock.yml | 44 ++++++++--- .../copilot-centralization-optimizer.lock.yml | 22 ++++++ .../copilot-cli-deep-research.lock.yml | 46 +++++++++--- .github/workflows/copilot-opt.lock.yml | 45 +++++++++--- .../copilot-pr-merged-report.lock.yml | 41 ++++++++--- .../copilot-pr-nlp-analysis.lock.yml | 49 ++++++++++--- .../copilot-pr-prompt-analysis.lock.yml | 47 +++++++++--- .../copilot-session-insights.lock.yml | 49 ++++++++++--- .github/workflows/craft.lock.yml | 50 +++++++++---- ...aily-agent-of-the-day-blog-writer.lock.yml | 54 ++++++++++---- .../daily-agentrx-trace-optimizer.lock.yml | 46 +++++++++--- .../daily-ambient-context-optimizer.lock.yml | 44 ++++++++--- .../daily-architecture-diagram.lock.yml | 51 +++++++++---- .../daily-assign-issue-to-user.lock.yml | 44 ++++++++--- ...strostylelite-markdown-spellcheck.lock.yml | 50 +++++++++---- ...daily-aw-cross-repo-compile-check.lock.yml | 45 +++++++++--- ...daily-awf-spec-compiler-surfacing.lock.yml | 46 +++++++++--- .../workflows/daily-byok-ollama-test.lock.yml | 44 ++++++++--- .../daily-cache-strategy-analyzer.lock.yml | 55 ++++++++++---- .../daily-caveman-optimizer.lock.yml | 51 +++++++++---- .github/workflows/daily-choice-test.lock.yml | 44 ++++++++--- .../workflows/daily-cli-performance.lock.yml | 64 +++++++++++----- .../workflows/daily-cli-tools-tester.lock.yml | 44 ++++++++--- .github/workflows/daily-code-metrics.lock.yml | 51 ++++++++++--- .../daily-community-attribution.lock.yml | 52 +++++++++---- .../workflows/daily-compiler-quality.lock.yml | 47 +++++++++--- ...ly-compiler-threat-spec-optimizer.lock.yml | 20 +++++ .../daily-credit-limit-test.lock.yml | 44 ++++++++--- .github/workflows/daily-doc-healer.lock.yml | 51 +++++++++---- .github/workflows/daily-doc-updater.lock.yml | 51 +++++++++---- .../daily-experiment-report.lock.yml | 47 +++++++++--- .github/workflows/daily-fact.lock.yml | 55 ++++++++++---- .github/workflows/daily-file-diet.lock.yml | 46 +++++++++--- .../workflows/daily-firewall-report.lock.yml | 46 +++++++++--- .../daily-formal-spec-verifier.lock.yml | 47 +++++++++--- .../workflows/daily-function-namer.lock.yml | 45 +++++++++--- .../workflows/daily-geo-optimizer.lock.yml | 44 ++++++++--- .github/workflows/daily-hippo-learn.lock.yml | 57 ++++++++++----- .../workflows/daily-issues-report.lock.yml | 49 ++++++++++--- .../daily-malicious-code-scan.lock.yml | 44 ++++++++--- .../daily-max-ai-credits-test.lock.yml | 45 +++++++++--- .../daily-mcp-concurrency-analysis.lock.yml | 45 +++++++++--- .../workflows/daily-model-inventory.lock.yml | 44 ++++++++--- .../daily-multi-device-docs-tester.lock.yml | 44 ++++++++--- .github/workflows/daily-news.lock.yml | 51 ++++++++++--- .../daily-observability-report.lock.yml | 20 +++++ .../daily-performance-summary.lock.yml | 23 ++++++ .github/workflows/daily-regulatory.lock.yml | 20 +++++ .../daily-reliability-review.lock.yml | 44 ++++++++--- .../daily-rendering-scripts-verifier.lock.yml | 51 +++++++++---- .../workflows/daily-repo-chronicle.lock.yml | 47 +++++++++--- .../daily-safe-output-integrator.lock.yml | 48 ++++++++---- .../daily-safe-output-optimizer.lock.yml | 49 ++++++++++--- .../daily-safe-outputs-conformance.lock.yml | 44 ++++++++--- .../daily-safeoutputs-git-simulator.lock.yml | 50 +++++++++---- .../workflows/daily-secrets-analysis.lock.yml | 44 ++++++++--- .../daily-security-observability.lock.yml | 47 +++++++++--- .../daily-security-red-team.lock.yml | 47 +++++++++--- .github/workflows/daily-semgrep-scan.lock.yml | 48 +++++++++--- .../workflows/daily-sentrux-report.lock.yml | 46 +++++++++--- .../workflows/daily-skill-optimizer.lock.yml | 44 ++++++++--- .../daily-spdd-spec-planner.lock.yml | 45 +++++++++--- .../daily-syntax-error-quality.lock.yml | 44 ++++++++--- .../daily-team-evolution-insights.lock.yml | 44 ++++++++--- .github/workflows/daily-team-status.lock.yml | 44 ++++++++--- .../daily-testify-uber-super-expert.lock.yml | 48 +++++++++--- .../daily-token-consumption-report.lock.yml | 44 ++++++++--- ...dows-terminal-integration-builder.lock.yml | 44 ++++++++--- .../workflows/daily-workflow-updater.lock.yml | 48 ++++++++---- .../dataflow-pr-discussion-dataset.lock.yml | 49 ++++++++++--- .github/workflows/dead-code-remover.lock.yml | 51 +++++++++---- .github/workflows/deep-report.lock.yml | 49 ++++++++++--- .github/workflows/delight.lock.yml | 46 +++++++++--- .github/workflows/dependabot-burner.lock.yml | 50 +++++++++---- .../workflows/dependabot-go-checker.lock.yml | 46 +++++++++--- .github/workflows/dependabot-repair.lock.yml | 50 +++++++++---- .../deployment-incident-monitor.lock.yml | 46 +++++++++--- .../workflows/design-decision-gate.lock.yml | 50 +++++++++---- .../workflows/designer-drift-audit.lock.yml | 44 ++++++++--- .github/workflows/dev-hawk.lock.yml | 46 +++++++++--- .github/workflows/dev.lock.yml | 66 +++++++++++------ .../developer-docs-consolidator.lock.yml | 51 +++++++++---- .github/workflows/dictation-prompt.lock.yml | 48 ++++++++---- .../workflows/discussion-task-miner.lock.yml | 46 +++++++++--- .github/workflows/docs-noob-tester.lock.yml | 46 +++++++++--- .github/workflows/draft-pr-cleanup.lock.yml | 44 ++++++++--- .../duplicate-code-detector.lock.yml | 64 ++++++++++------ .../example-failure-category-filter.lock.yml | 44 ++++++++--- .../example-permissions-warning.lock.yml | 46 ++++++++---- .../example-workflow-analyzer.lock.yml | 20 +++++ .github/workflows/firewall-escape.lock.yml | 49 ++++++++++--- .github/workflows/firewall.lock.yml | 46 ++++++++---- .../workflows/functional-pragmatist.lock.yml | 48 ++++++++---- .../github-mcp-structural-analysis.lock.yml | 47 +++++++++--- .../github-mcp-tools-report.lock.yml | 49 +++++++++---- .../github-remote-mcp-auth-test.lock.yml | 44 ++++++++--- .../workflows/glossary-maintainer.lock.yml | 51 +++++++++---- .github/workflows/go-fan.lock.yml | 45 +++++++++--- .github/workflows/go-logger.lock.yml | 49 +++++++++---- .../workflows/go-pattern-detector.lock.yml | 44 ++++++++--- .github/workflows/gpclean.lock.yml | 47 +++++++++--- .github/workflows/grumpy-reviewer.lock.yml | 66 +++++++++++------ .github/workflows/hippo-embed.lock.yml | 58 ++++++++++----- .github/workflows/hourly-ci-cleaner.lock.yml | 48 ++++++++---- .../workflows/instructions-janitor.lock.yml | 49 +++++++++---- .github/workflows/issue-arborist.lock.yml | 66 +++++++++++------ .github/workflows/issue-monster.lock.yml | 22 ++++++ .github/workflows/issue-triage-agent.lock.yml | 44 ++++++++--- .github/workflows/jsweep.lock.yml | 49 +++++++++---- .../workflows/layout-spec-maintainer.lock.yml | 48 ++++++++---- .github/workflows/lint-monster.lock.yml | 44 ++++++++--- .github/workflows/linter-miner.lock.yml | 49 +++++++++---- .github/workflows/lockfile-stats.lock.yml | 45 +++++++++--- .../mattpocock-skills-reviewer.lock.yml | 46 +++++++++--- .github/workflows/mcp-inspector.lock.yml | 45 +++++++++--- .github/workflows/mergefest.lock.yml | 50 +++++++++---- .github/workflows/metrics-collector.lock.yml | 50 +++++++++---- .github/workflows/necromancer.lock.yml | 70 ++++++++++++------ .../workflows/notion-issue-summary.lock.yml | 44 ++++++++--- .../objective-impact-report.lock.yml | 44 ++++++++--- .github/workflows/org-health-report.lock.yml | 47 +++++++++--- .github/workflows/outcome-collector.lock.yml | 45 +++++++++--- .github/workflows/pdf-summary.lock.yml | 47 +++++++++--- .github/workflows/plan.lock.yml | 46 +++++++++--- .github/workflows/poem-bot.lock.yml | 51 +++++++++---- .github/workflows/portfolio-analyst.lock.yml | 47 +++++++++--- .../pr-code-quality-reviewer.lock.yml | 46 +++++++++--- .../workflows/pr-description-caveman.lock.yml | 46 +++++++++--- .../workflows/pr-nitpick-reviewer.lock.yml | 46 +++++++++--- .github/workflows/pr-sous-chef.lock.yml | 50 +++++++++---- .github/workflows/pr-triage-agent.lock.yml | 46 +++++++++--- .../prompt-clustering-analysis.lock.yml | 47 +++++++++--- .github/workflows/python-data-charts.lock.yml | 47 +++++++++--- .github/workflows/q.lock.yml | 50 +++++++++---- .../workflows/refactoring-cadence.lock.yml | 47 +++++++++--- .github/workflows/refiner.lock.yml | 50 +++++++++---- .github/workflows/release.lock.yml | 44 ++++++++--- .../workflows/repo-audit-analyzer.lock.yml | 45 +++++++++--- .github/workflows/repo-tree-map.lock.yml | 44 ++++++++--- .../repository-quality-improver.lock.yml | 45 +++++++++--- .github/workflows/research.lock.yml | 44 ++++++++--- .github/workflows/ruflo-backed-task.lock.yml | 50 +++++++++---- .github/workflows/safe-output-health.lock.yml | 45 +++++++++--- .../schema-consistency-checker.lock.yml | 45 +++++++++--- .../schema-feature-coverage.lock.yml | 68 +++++++++++------ .github/workflows/scout.lock.yml | 47 +++++++++--- .../workflows/security-compliance.lock.yml | 46 +++++++++--- .github/workflows/security-review.lock.yml | 46 +++++++++--- .../semantic-function-refactor.lock.yml | 44 ++++++++--- .github/workflows/sergo.lock.yml | 46 +++++++++--- .github/workflows/skillet.lock.yml | 46 +++++++++--- .../workflows/slide-deck-maintainer.lock.yml | 51 +++++++++---- .../workflows/smoke-agent-all-merged.lock.yml | 46 +++++++++--- .../workflows/smoke-agent-all-none.lock.yml | 46 +++++++++--- .../smoke-agent-public-approved.lock.yml | 46 +++++++++--- .../smoke-agent-public-none.lock.yml | 46 +++++++++--- .../smoke-agent-scoped-approved.lock.yml | 46 +++++++++--- .github/workflows/smoke-antigravity.lock.yml | 49 ++++++++++--- .../workflows/smoke-call-workflow.lock.yml | 54 ++++++++++---- .github/workflows/smoke-ci.lock.yml | 50 +++++++++---- .github/workflows/smoke-claude.lock.yml | 73 +++++++++++++------ .github/workflows/smoke-codex.lock.yml | 59 ++++++++++----- .../smoke-copilot-aoai-apikey.lock.yml | 25 +++++++ .../smoke-copilot-aoai-entra.lock.yml | 25 +++++++ .github/workflows/smoke-copilot-arm.lock.yml | 23 ++++++ .github/workflows/smoke-copilot-sdk.lock.yml | 46 +++++++++--- .github/workflows/smoke-copilot.lock.yml | 25 +++++++ .../smoke-create-cross-repo-pr.lock.yml | 50 +++++++++---- .github/workflows/smoke-crush.lock.yml | 46 +++++++++--- .github/workflows/smoke-gemini.lock.yml | 49 ++++++++++--- .github/workflows/smoke-multi-pr.lock.yml | 50 +++++++++---- .github/workflows/smoke-opencode.lock.yml | 46 +++++++++--- .../workflows/smoke-otel-backends.lock.yml | 46 +++++++++--- .github/workflows/smoke-pi.lock.yml | 47 +++++++++--- .github/workflows/smoke-project.lock.yml | 52 +++++++++---- .../workflows/smoke-service-ports.lock.yml | 46 +++++++++--- .github/workflows/smoke-temporary-id.lock.yml | 48 +++++++++--- .github/workflows/smoke-test-tools.lock.yml | 46 +++++++++--- .../smoke-update-cross-repo-pr.lock.yml | 51 +++++++++---- .../smoke-workflow-call-with-inputs.lock.yml | 50 +++++++++---- .../workflows/smoke-workflow-call.lock.yml | 46 +++++++++--- .github/workflows/spec-enforcer.lock.yml | 49 +++++++++---- .github/workflows/spec-extractor.lock.yml | 49 +++++++++---- .github/workflows/spec-librarian.lock.yml | 46 +++++++++--- .github/workflows/stale-pr-cleanup.lock.yml | 44 ++++++++--- .../workflows/stale-repo-identifier.lock.yml | 47 +++++++++--- .../workflows/static-analysis-report.lock.yml | 45 +++++++++--- .../workflows/step-name-alignment.lock.yml | 45 +++++++++--- .github/workflows/sub-issue-closer.lock.yml | 44 ++++++++--- .github/workflows/super-linter.lock.yml | 45 +++++++++--- .../workflows/technical-doc-writer.lock.yml | 51 +++++++++---- .github/workflows/terminal-stylist.lock.yml | 44 ++++++++--- .../test-create-pr-error-handling.lock.yml | 49 +++++++++---- .github/workflows/test-dispatcher.lock.yml | 44 ++++++++--- .../test-project-url-default.lock.yml | 44 ++++++++--- .../workflows/test-quality-sentinel.lock.yml | 46 +++++++++--- .github/workflows/test-workflow.lock.yml | 46 ++++++++---- .github/workflows/tidy.lock.yml | 50 +++++++++---- .github/workflows/typist.lock.yml | 46 +++++++++--- .../workflows/ubuntu-image-analyzer.lock.yml | 50 +++++++++---- .../uk-ai-operational-resilience.lock.yml | 44 ++++++++--- .github/workflows/unbloat-docs.lock.yml | 51 +++++++++---- .github/workflows/update-astro.lock.yml | 50 +++++++++---- .github/workflows/video-analyzer.lock.yml | 44 ++++++++--- .../visual-regression-checker.lock.yml | 46 +++++++++--- .../weekly-blog-post-writer.lock.yml | 52 +++++++++---- .../weekly-editors-health-check.lock.yml | 50 +++++++++---- .../workflows/weekly-issue-summary.lock.yml | 47 +++++++++--- .../weekly-safe-outputs-spec-review.lock.yml | 48 ++++++++---- .github/workflows/workflow-generator.lock.yml | 48 +++++++++--- .../workflow-health-manager.lock.yml | 46 +++++++++--- .../workflows/workflow-normalizer.lock.yml | 44 ++++++++--- .../workflow-skill-extractor.lock.yml | 44 ++++++++--- 249 files changed, 8520 insertions(+), 3096 deletions(-) diff --git a/.github/workflows/ab-testing-advisor.lock.yml b/.github/workflows/ab-testing-advisor.lock.yml index 71acab20d2d..46356a17af9 100644 --- a/.github/workflows/ab-testing-advisor.lock.yml +++ b/.github/workflows/ab-testing-advisor.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,21 +271,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e4e19df15458c5a5_EOF' + cat << 'GH_AW_PROMPT_e4429c65f62e8690_EOF' - GH_AW_PROMPT_e4e19df15458c5a5_EOF + GH_AW_PROMPT_e4429c65f62e8690_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e4e19df15458c5a5_EOF' + cat << 'GH_AW_PROMPT_e4429c65f62e8690_EOF' Tools: create_issue(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_e4e19df15458c5a5_EOF + GH_AW_PROMPT_e4429c65f62e8690_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e4e19df15458c5a5_EOF' + cat << 'GH_AW_PROMPT_e4429c65f62e8690_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,14 +314,14 @@ jobs: {{/if}} - GH_AW_PROMPT_e4e19df15458c5a5_EOF + GH_AW_PROMPT_e4429c65f62e8690_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e4e19df15458c5a5_EOF' + cat << 'GH_AW_PROMPT_e4429c65f62e8690_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/ab-testing-advisor.md}} - GH_AW_PROMPT_e4e19df15458c5a5_EOF + GH_AW_PROMPT_e4429c65f62e8690_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -412,6 +426,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: abtestingadvisor outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -553,9 +568,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0e214dbd3e7711e6_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5176f80c1901e037_EOF' {"create_issue":{"close_older_issues":true,"close_older_key":"ab-testing-advisor","expires":336,"group":true,"labels":["automation","experiments","ai-generated"],"max":2,"title_prefix":"[ab-advisor] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_0e214dbd3e7711e6_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5176f80c1901e037_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -722,7 +737,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -767,7 +782,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1052,6 +1067,8 @@ jobs: group: "gh-aw-conclusion-ab-testing-advisor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1298,6 +1315,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1506,6 +1525,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1580,6 +1601,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "ab-testing-advisor" GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -1679,6 +1701,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: abtestingadvisor steps: - name: Checkout actions folder diff --git a/.github/workflows/ace-editor.lock.yml b/.github/workflows/ace-editor.lock.yml index 1a01eb5847c..c6c96aa6ae8 100644 --- a/.github/workflows/ace-editor.lock.yml +++ b/.github/workflows/ace-editor.lock.yml @@ -93,6 +93,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -283,6 +284,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -299,23 +313,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_495705da386980f6_EOF' + cat << 'GH_AW_PROMPT_c11433e8d5dc0bd8_EOF' - GH_AW_PROMPT_495705da386980f6_EOF + GH_AW_PROMPT_c11433e8d5dc0bd8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_495705da386980f6_EOF' + cat << 'GH_AW_PROMPT_c11433e8d5dc0bd8_EOF' Tools: create_issue - GH_AW_PROMPT_495705da386980f6_EOF + GH_AW_PROMPT_c11433e8d5dc0bd8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_495705da386980f6_EOF' + cat << 'GH_AW_PROMPT_c11433e8d5dc0bd8_EOF' - GH_AW_PROMPT_495705da386980f6_EOF + GH_AW_PROMPT_c11433e8d5dc0bd8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_495705da386980f6_EOF' + cat << 'GH_AW_PROMPT_c11433e8d5dc0bd8_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -344,13 +358,13 @@ jobs: {{/if}} - GH_AW_PROMPT_495705da386980f6_EOF + GH_AW_PROMPT_c11433e8d5dc0bd8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_495705da386980f6_EOF' + cat << 'GH_AW_PROMPT_c11433e8d5dc0bd8_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/ace-editor.md}} - GH_AW_PROMPT_495705da386980f6_EOF + GH_AW_PROMPT_c11433e8d5dc0bd8_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -448,6 +462,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: aceeditor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -551,9 +566,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_813d685b326fbf82_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d831259960355eaf_EOF' {"create_issue":{"labels":["ace-editor"],"max":1,"title_prefix":"[ace-editor]"}} - GH_AW_SAFE_OUTPUTS_CONFIG_813d685b326fbf82_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d831259960355eaf_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -651,7 +666,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -713,7 +728,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -994,6 +1009,8 @@ jobs: group: "gh-aw-conclusion-ace-editor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1210,6 +1227,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1281,6 +1300,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "โœ๏ธ" GH_AW_WORKFLOW_ID: "ace-editor" GH_AW_WORKFLOW_NAME: "ACE Editor Session" diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index e01f88a0272..e70785a4b8b 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -240,6 +241,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -292,21 +306,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2422f086ac2c6052_EOF' + cat << 'GH_AW_PROMPT_af76823a4b601e69_EOF' - GH_AW_PROMPT_2422f086ac2c6052_EOF + GH_AW_PROMPT_af76823a4b601e69_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2422f086ac2c6052_EOF' + cat << 'GH_AW_PROMPT_af76823a4b601e69_EOF' Tools: add_comment(max:10), create_issue(max:5), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_2422f086ac2c6052_EOF + GH_AW_PROMPT_af76823a4b601e69_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2422f086ac2c6052_EOF' + cat << 'GH_AW_PROMPT_af76823a4b601e69_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -335,16 +349,16 @@ jobs: {{/if}} - GH_AW_PROMPT_2422f086ac2c6052_EOF + GH_AW_PROMPT_af76823a4b601e69_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2422f086ac2c6052_EOF' + cat << 'GH_AW_PROMPT_af76823a4b601e69_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/agent-performance-analyzer.md}} - GH_AW_PROMPT_2422f086ac2c6052_EOF + GH_AW_PROMPT_af76823a4b601e69_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -457,6 +471,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: agentperformanceanalyzer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -655,9 +670,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c6fef4815356071e_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_35fa2b50b67d28c9_EOF' {"add_comment":{"max":10},"create_discussion":{"expires":24,"fallback_to_issue":true,"max":1},"create_issue":{"expires":48,"group":true,"labels":["cookie"],"max":5},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_c6fef4815356071e_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_35fa2b50b67d28c9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -876,7 +891,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7292df9048689c98_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -941,7 +956,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF + GH_AW_MCP_CONFIG_7292df9048689c98_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1257,6 +1272,8 @@ jobs: group: "gh-aw-conclusion-agent-performance-analyzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1506,6 +1523,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1730,6 +1749,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1809,6 +1830,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/meta-orchestrators" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1910,6 +1933,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โšก" GH_AW_WORKFLOW_ID: "agent-performance-analyzer" diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index 419f7e47505..1c058762758 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -298,21 +312,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e07e72685630940d_EOF' + cat << 'GH_AW_PROMPT_9265ef54e4708bcd_EOF' - GH_AW_PROMPT_e07e72685630940d_EOF + GH_AW_PROMPT_9265ef54e4708bcd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e07e72685630940d_EOF' + cat << 'GH_AW_PROMPT_9265ef54e4708bcd_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_e07e72685630940d_EOF + GH_AW_PROMPT_9265ef54e4708bcd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e07e72685630940d_EOF' + cat << 'GH_AW_PROMPT_9265ef54e4708bcd_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -341,14 +355,14 @@ jobs: {{/if}} - GH_AW_PROMPT_e07e72685630940d_EOF + GH_AW_PROMPT_9265ef54e4708bcd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e07e72685630940d_EOF' + cat << 'GH_AW_PROMPT_9265ef54e4708bcd_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/agent-persona-explorer.md}} - GH_AW_PROMPT_e07e72685630940d_EOF + GH_AW_PROMPT_9265ef54e4708bcd_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -453,6 +467,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: agentpersonaexplorer outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -656,9 +671,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8379d24676de3d98_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2c5fc2f7e2b31ad4_EOF' {"create_issue":{"close_older_issues":true,"labels":["agent-research"],"max":1,"title_prefix":"Agent Persona Exploration - "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_8379d24676de3d98_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2c5fc2f7e2b31ad4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -825,7 +840,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -888,7 +903,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF + GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1175,6 +1190,8 @@ jobs: group: "gh-aw-conclusion-agent-persona-explorer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1416,6 +1433,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1632,6 +1651,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1719,6 +1740,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐ŸŽญ" GH_AW_WORKFLOW_ID: "agent-persona-explorer" @@ -1817,6 +1839,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: agentpersonaexplorer steps: - name: Checkout actions folder diff --git a/.github/workflows/agentic-token-audit.lock.yml b/.github/workflows/agentic-token-audit.lock.yml index 7fbd455bf77..6d45fc1db00 100644 --- a/.github/workflows/agentic-token-audit.lock.yml +++ b/.github/workflows/agentic-token-audit.lock.yml @@ -83,6 +83,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -230,6 +231,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -247,23 +261,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d28af6d9e7939095_EOF' + cat << 'GH_AW_PROMPT_165e7cfb4c35110f_EOF' - GH_AW_PROMPT_d28af6d9e7939095_EOF + GH_AW_PROMPT_165e7cfb4c35110f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d28af6d9e7939095_EOF' + cat << 'GH_AW_PROMPT_165e7cfb4c35110f_EOF' Tools: create_issue, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_d28af6d9e7939095_EOF + GH_AW_PROMPT_165e7cfb4c35110f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d28af6d9e7939095_EOF' + cat << 'GH_AW_PROMPT_165e7cfb4c35110f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -292,12 +306,12 @@ jobs: {{/if}} - GH_AW_PROMPT_d28af6d9e7939095_EOF + GH_AW_PROMPT_165e7cfb4c35110f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_d28af6d9e7939095_EOF' + cat << 'GH_AW_PROMPT_165e7cfb4c35110f_EOF' {{#runtime-import .github/workflows/agentic-token-audit.md}} - GH_AW_PROMPT_d28af6d9e7939095_EOF + GH_AW_PROMPT_165e7cfb4c35110f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -406,6 +420,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: agentictokenaudit outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -627,9 +642,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f4ddaa404c874040_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_be9abf48cc381665_EOF' {"create_issue":{"close_older_issues":true,"expires":72,"max":1,"title_prefix":"[agentic-token-audit] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":51200}]},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_f4ddaa404c874040_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_be9abf48cc381665_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -812,7 +827,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_ef5eefc971b0097d_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_071430065b4b6860_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -888,7 +903,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_ef5eefc971b0097d_EOF + GH_AW_MCP_CONFIG_071430065b4b6860_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1188,6 +1203,8 @@ jobs: group: "gh-aw-conclusion-agentic-token-audit" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1441,6 +1458,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1698,6 +1717,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/token-audit" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1798,6 +1819,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "agentic-token-audit" GH_AW_WORKFLOW_ID: "agentic-token-audit" @@ -1894,6 +1916,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/agentic-token-optimizer.lock.yml b/.github/workflows/agentic-token-optimizer.lock.yml index 504557a0e82..ac2da2b3988 100644 --- a/.github/workflows/agentic-token-optimizer.lock.yml +++ b/.github/workflows/agentic-token-optimizer.lock.yml @@ -79,6 +79,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -226,6 +227,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -243,21 +257,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a5e3c571f0eeafbe_EOF' + cat << 'GH_AW_PROMPT_c64267d656d8d735_EOF' - GH_AW_PROMPT_a5e3c571f0eeafbe_EOF + GH_AW_PROMPT_c64267d656d8d735_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a5e3c571f0eeafbe_EOF' + cat << 'GH_AW_PROMPT_c64267d656d8d735_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_a5e3c571f0eeafbe_EOF + GH_AW_PROMPT_c64267d656d8d735_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a5e3c571f0eeafbe_EOF' + cat << 'GH_AW_PROMPT_c64267d656d8d735_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -286,12 +300,12 @@ jobs: {{/if}} - GH_AW_PROMPT_a5e3c571f0eeafbe_EOF + GH_AW_PROMPT_c64267d656d8d735_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_a5e3c571f0eeafbe_EOF' + cat << 'GH_AW_PROMPT_c64267d656d8d735_EOF' {{#runtime-import .github/workflows/agentic-token-optimizer.md}} - GH_AW_PROMPT_a5e3c571f0eeafbe_EOF + GH_AW_PROMPT_c64267d656d8d735_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -400,6 +414,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: agentictokenoptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -550,9 +565,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2acc2562a6f16afc_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_03e1cc3a2fc8e70f_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"max":1,"title_prefix":"[agentic-token-optimizer] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":51200}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_2acc2562a6f16afc_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_03e1cc3a2fc8e70f_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -719,7 +734,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -760,7 +775,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF + GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1055,6 +1070,8 @@ jobs: group: "gh-aw-conclusion-agentic-token-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1290,6 +1307,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/token-audit" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1387,6 +1406,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_TRACKER_ID: "agentic-token-optimizer" GH_AW_WORKFLOW_ID: "agentic-token-optimizer" GH_AW_WORKFLOW_NAME: "Agentic Workflow AIC Usage Optimizer" diff --git a/.github/workflows/agentic-token-trend-audit.lock.yml b/.github/workflows/agentic-token-trend-audit.lock.yml index 3a74b044b71..edb8b48cce7 100644 --- a/.github/workflows/agentic-token-trend-audit.lock.yml +++ b/.github/workflows/agentic-token-trend-audit.lock.yml @@ -83,6 +83,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -227,6 +228,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -244,22 +258,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2a412ec1b6438bca_EOF' + cat << 'GH_AW_PROMPT_285437cbf8d8e627_EOF' - GH_AW_PROMPT_2a412ec1b6438bca_EOF + GH_AW_PROMPT_285437cbf8d8e627_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2a412ec1b6438bca_EOF' + cat << 'GH_AW_PROMPT_285437cbf8d8e627_EOF' Tools: create_issue, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_2a412ec1b6438bca_EOF + GH_AW_PROMPT_285437cbf8d8e627_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2a412ec1b6438bca_EOF' + cat << 'GH_AW_PROMPT_285437cbf8d8e627_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -288,12 +302,12 @@ jobs: {{/if}} - GH_AW_PROMPT_2a412ec1b6438bca_EOF + GH_AW_PROMPT_285437cbf8d8e627_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2a412ec1b6438bca_EOF' + cat << 'GH_AW_PROMPT_285437cbf8d8e627_EOF' {{#runtime-import .github/workflows/agentic-token-trend-audit.md}} - GH_AW_PROMPT_2a412ec1b6438bca_EOF + GH_AW_PROMPT_285437cbf8d8e627_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -390,6 +404,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: agentictokentrendaudit outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -601,9 +616,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a0dc7e466f46c109_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_10d950f14862a53d_EOF' {"create_issue":{"close_older_issues":true,"expires":72,"max":1,"title_prefix":"[agentic-token-trend-audit] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_a0dc7e466f46c109_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_10d950f14862a53d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -786,7 +801,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_ef5eefc971b0097d_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_071430065b4b6860_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -862,7 +877,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_ef5eefc971b0097d_EOF + GH_AW_MCP_CONFIG_071430065b4b6860_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1146,6 +1161,8 @@ jobs: group: "gh-aw-conclusion-agentic-token-trend-audit" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1394,6 +1411,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1659,6 +1678,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "agentic-token-trend-audit" GH_AW_WORKFLOW_ID: "agentic-token-trend-audit" @@ -1754,6 +1774,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/ai-moderator.lock.yml b/.github/workflows/ai-moderator.lock.yml index eac9a8cae75..02ee1baa8f8 100644 --- a/.github/workflows/ai-moderator.lock.yml +++ b/.github/workflows/ai-moderator.lock.yml @@ -125,6 +125,7 @@ jobs: issues: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -300,6 +301,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/lock-issue.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -317,21 +331,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_640b4623e6ae102d_EOF' + cat << 'GH_AW_PROMPT_a0043c02d14bdd7e_EOF' - GH_AW_PROMPT_640b4623e6ae102d_EOF + GH_AW_PROMPT_a0043c02d14bdd7e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_640b4623e6ae102d_EOF' + cat << 'GH_AW_PROMPT_a0043c02d14bdd7e_EOF' Tools: add_labels, hide_comment(max:5), missing_tool, missing_data, noop - GH_AW_PROMPT_640b4623e6ae102d_EOF + GH_AW_PROMPT_a0043c02d14bdd7e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_640b4623e6ae102d_EOF' + cat << 'GH_AW_PROMPT_a0043c02d14bdd7e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -360,14 +374,14 @@ jobs: {{/if}} - GH_AW_PROMPT_640b4623e6ae102d_EOF + GH_AW_PROMPT_a0043c02d14bdd7e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_640b4623e6ae102d_EOF' + cat << 'GH_AW_PROMPT_a0043c02d14bdd7e_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/ai-moderator.md}} - GH_AW_PROMPT_640b4623e6ae102d_EOF + GH_AW_PROMPT_a0043c02d14bdd7e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -471,6 +485,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: aimoderator outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -604,9 +619,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c4cb1a103cabf084_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ba8b68a043ad3958_EOF' {"add_labels":{"allowed":["spam","ai-generated","link-spam","ai-inspected"],"target":"*"},"create_report_incomplete_issue":{},"hide_comment":{"allowed_reasons":["spam"],"max":5},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_c4cb1a103cabf084_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_ba8b68a043ad3958_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -782,7 +797,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_093ebfbb6c4ed9a3_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_013ecfc8a99591f6_EOF [history] persistence = "none" @@ -810,11 +825,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_093ebfbb6c4ed9a3_EOF + GH_AW_MCP_CONFIG_013ecfc8a99591f6_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_242085c2b2e7f489_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_0b07ea5f3463e363_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -877,11 +892,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_242085c2b2e7f489_EOF + GH_AW_MCP_CONFIG_0b07ea5f3463e363_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF model_provider = "openai-proxy" @@ -893,7 +908,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_PERSONAL_ACCESS_TOKEN$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1179,6 +1194,8 @@ jobs: group: "gh-aw-conclusion-ai-moderator" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1406,6 +1423,8 @@ jobs: permissions: actions: read contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_skip_roles.outputs.skip_roles_ok == 'true' && steps.check_skip_bots.outputs.skip_bots_ok == 'true' && steps.check_rate_limit.outputs.rate_limit_ok == 'true' }} matched_command: '' @@ -1495,6 +1514,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "๐Ÿค–" GH_AW_WORKFLOW_ID: "ai-moderator" GH_AW_WORKFLOW_NAME: "AI Moderator" @@ -1590,6 +1610,8 @@ jobs: contents: read issues: write timeout-minutes: 5 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/.github/workflows/api-consumption-report.lock.yml b/.github/workflows/api-consumption-report.lock.yml index 036aa2a90a2..5f8d436f9be 100644 --- a/.github/workflows/api-consumption-report.lock.yml +++ b/.github/workflows/api-consumption-report.lock.yml @@ -104,6 +104,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -251,6 +252,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -268,23 +282,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_527036dcd0850626_EOF' + cat << 'GH_AW_PROMPT_d942d86af1a6df8c_EOF' - GH_AW_PROMPT_527036dcd0850626_EOF + GH_AW_PROMPT_d942d86af1a6df8c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_527036dcd0850626_EOF' + cat << 'GH_AW_PROMPT_d942d86af1a6df8c_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_527036dcd0850626_EOF + GH_AW_PROMPT_d942d86af1a6df8c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_527036dcd0850626_EOF' + cat << 'GH_AW_PROMPT_d942d86af1a6df8c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -313,9 +327,9 @@ jobs: {{/if}} - GH_AW_PROMPT_527036dcd0850626_EOF + GH_AW_PROMPT_d942d86af1a6df8c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_527036dcd0850626_EOF' + cat << 'GH_AW_PROMPT_d942d86af1a6df8c_EOF' ## Cache-Memory Trending โ€” Standard Pattern @@ -559,7 +573,7 @@ jobs: {{#runtime-import .github/workflows/shared/trending-charts-simple.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/api-consumption-report.md}} - GH_AW_PROMPT_527036dcd0850626_EOF + GH_AW_PROMPT_d942d86af1a6df8c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -667,6 +681,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: apiconsumptionreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -894,9 +909,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ef60f63a8fa7d7a9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5637b6c8d41966d8_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[api-consumption] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_ef60f63a8fa7d7a9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5637b6c8d41966d8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -1069,7 +1084,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_fef2217f28f28334_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_467ea9a369748bce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -1147,7 +1162,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_fef2217f28f28334_EOF + GH_AW_MCP_CONFIG_467ea9a369748bce_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1528,6 +1543,8 @@ jobs: group: "gh-aw-conclusion-api-consumption-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1781,6 +1798,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2016,6 +2035,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "api-consumption-report-daily" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -2113,6 +2133,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: apiconsumptionreport steps: - name: Checkout actions folder @@ -2168,6 +2189,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/approach-validator.lock.yml b/.github/workflows/approach-validator.lock.yml index d765e112d2a..6bb634aac3a 100644 --- a/.github/workflows/approach-validator.lock.yml +++ b/.github/workflows/approach-validator.lock.yml @@ -102,6 +102,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -305,6 +306,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -328,20 +342,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_bf68258e8701620d_EOF' + cat << 'GH_AW_PROMPT_7dffe8c3542e5e88_EOF' - GH_AW_PROMPT_bf68258e8701620d_EOF + GH_AW_PROMPT_7dffe8c3542e5e88_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_bf68258e8701620d_EOF' + cat << 'GH_AW_PROMPT_7dffe8c3542e5e88_EOF' Tools: add_comment(max:2), add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_bf68258e8701620d_EOF + GH_AW_PROMPT_7dffe8c3542e5e88_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_bf68258e8701620d_EOF' + cat << 'GH_AW_PROMPT_7dffe8c3542e5e88_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -370,18 +384,18 @@ jobs: {{/if}} - GH_AW_PROMPT_bf68258e8701620d_EOF + GH_AW_PROMPT_7dffe8c3542e5e88_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_bf68258e8701620d_EOF' + cat << 'GH_AW_PROMPT_7dffe8c3542e5e88_EOF' {{#runtime-import .github/workflows/shared/safe-output-upload-artifact.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/approach-validator.md}} - GH_AW_PROMPT_bf68258e8701620d_EOF + GH_AW_PROMPT_7dffe8c3542e5e88_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -500,6 +514,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: approachvalidator outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -628,9 +643,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_774c847b56f731ac_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_90627bd60c68e498_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["awaiting-approach-approval","approach-approved","approach-rejected"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":3,"retention-days":30,"skip-archive":true}} - GH_AW_SAFE_OUTPUTS_CONFIG_774c847b56f731ac_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_90627bd60c68e498_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -802,7 +817,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -847,7 +862,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1232,6 +1247,8 @@ jobs: group: "gh-aw-conclusion-approach-validator" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1497,6 +1514,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1718,6 +1737,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1792,6 +1813,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”ฌ *Approach validated by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ฌ [{workflow_name}]({run_url}) is analyzing the proposed approach on this {event_type}...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed the approach validation. Review the report and react with โœ… or โŒ.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status} during approach validation.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โœ…" diff --git a/.github/workflows/archie.lock.yml b/.github/workflows/archie.lock.yml index 07d74817a39..1355c63a7a0 100644 --- a/.github/workflows/archie.lock.yml +++ b/.github/workflows/archie.lock.yml @@ -96,6 +96,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -281,6 +282,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -300,20 +314,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e9d1bb4806ec1388_EOF' + cat << 'GH_AW_PROMPT_623b44e18004806c_EOF' - GH_AW_PROMPT_e9d1bb4806ec1388_EOF + GH_AW_PROMPT_623b44e18004806c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e9d1bb4806ec1388_EOF' + cat << 'GH_AW_PROMPT_623b44e18004806c_EOF' Tools: add_comment, missing_tool, missing_data, noop - GH_AW_PROMPT_e9d1bb4806ec1388_EOF + GH_AW_PROMPT_623b44e18004806c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e9d1bb4806ec1388_EOF' + cat << 'GH_AW_PROMPT_623b44e18004806c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -342,12 +356,12 @@ jobs: {{/if}} - GH_AW_PROMPT_e9d1bb4806ec1388_EOF + GH_AW_PROMPT_623b44e18004806c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_e9d1bb4806ec1388_EOF' + cat << 'GH_AW_PROMPT_623b44e18004806c_EOF' {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -356,7 +370,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/archie.md}} - GH_AW_PROMPT_e9d1bb4806ec1388_EOF + GH_AW_PROMPT_623b44e18004806c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -465,6 +479,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: archie outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -589,9 +604,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_375b1128cbd884ba_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_049c1935bf1a6a33_EOF' {"add_comment":{"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_375b1128cbd884ba_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_049c1935bf1a6a33_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -744,7 +759,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -819,7 +834,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1116,6 +1131,8 @@ jobs: group: "gh-aw-conclusion-archie" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1381,6 +1398,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1597,6 +1616,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1672,6 +1693,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“Š *Diagram rendered by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"footerWorkflowRecompile\":\"\\u003e ๐Ÿ”ง *Workflow sync report by [{workflow_name}]({run_url}) for {repository}*\",\"footerWorkflowRecompileComment\":\"\\u003e ๐Ÿ”„ *Update from [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"๐Ÿ“ [{workflow_name}]({run_url}) is analyzing the architecture for this {event_type}...\",\"runSuccess\":\"๐ŸŽจ [{workflow_name}]({run_url}) has completed the architecture visualization. โœ…\",\"runFailure\":\"๐Ÿ“ [{workflow_name}]({run_url}) encountered an issue and could not complete the architecture diagram. Check the [run logs]({run_url}) for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ›๏ธ" diff --git a/.github/workflows/architecture-guardian.lock.yml b/.github/workflows/architecture-guardian.lock.yml index 5cee02d7cc2..fe8e0d3d835 100644 --- a/.github/workflows/architecture-guardian.lock.yml +++ b/.github/workflows/architecture-guardian.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -295,20 +309,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2b754e3460a9bdc2_EOF' + cat << 'GH_AW_PROMPT_0718742a80608184_EOF' - GH_AW_PROMPT_2b754e3460a9bdc2_EOF + GH_AW_PROMPT_0718742a80608184_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2b754e3460a9bdc2_EOF' + cat << 'GH_AW_PROMPT_0718742a80608184_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_2b754e3460a9bdc2_EOF + GH_AW_PROMPT_0718742a80608184_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2b754e3460a9bdc2_EOF' + cat << 'GH_AW_PROMPT_0718742a80608184_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -337,16 +351,16 @@ jobs: {{/if}} - GH_AW_PROMPT_2b754e3460a9bdc2_EOF + GH_AW_PROMPT_0718742a80608184_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2b754e3460a9bdc2_EOF' + cat << 'GH_AW_PROMPT_0718742a80608184_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/architecture-guardian.md}} - GH_AW_PROMPT_2b754e3460a9bdc2_EOF + GH_AW_PROMPT_0718742a80608184_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -448,6 +462,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: architectureguardian outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -584,9 +599,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_abde978c40008351_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c1c5256a5d7e7db7_EOF' {"create_issue":{"assignees":["copilot"],"expires":48,"labels":["architecture","automated-analysis","cookie"],"max":1,"title_prefix":"[architecture-guardian] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_abde978c40008351_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c1c5256a5d7e7db7_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -757,7 +772,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -819,7 +834,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1124,6 +1139,8 @@ jobs: group: "gh-aw-conclusion-architecture-guardian" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1373,6 +1390,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1595,6 +1614,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1653,6 +1674,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1741,6 +1764,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ›๏ธ *Architecture report by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"footerWorkflowRecompile\":\"\\u003e ๐Ÿ› ๏ธ *Workflow maintenance by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"๐Ÿ›๏ธ Architecture Guardian online! [{workflow_name}]({run_url}) is scanning code structure on this {event_type}...\",\"runSuccess\":\"โœ… Architecture scan complete! [{workflow_name}]({run_url}) has reviewed code structure. Report delivered! ๐Ÿ“‹\",\"runFailure\":\"๐Ÿ›๏ธ Architecture scan failed! [{workflow_name}]({run_url}) {status}. Structure status unknown...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "architecture-guardian" diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index 220cc488c5e..043b81536c9 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -235,6 +236,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -251,20 +265,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8af66f942fb0e101_EOF' + cat << 'GH_AW_PROMPT_dc4eaf8bfb37b392_EOF' - GH_AW_PROMPT_8af66f942fb0e101_EOF + GH_AW_PROMPT_dc4eaf8bfb37b392_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8af66f942fb0e101_EOF' + cat << 'GH_AW_PROMPT_dc4eaf8bfb37b392_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_8af66f942fb0e101_EOF + GH_AW_PROMPT_dc4eaf8bfb37b392_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8af66f942fb0e101_EOF' + cat << 'GH_AW_PROMPT_dc4eaf8bfb37b392_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -293,16 +307,16 @@ jobs: {{/if}} - GH_AW_PROMPT_8af66f942fb0e101_EOF + GH_AW_PROMPT_dc4eaf8bfb37b392_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_8af66f942fb0e101_EOF' + cat << 'GH_AW_PROMPT_dc4eaf8bfb37b392_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/safe-output-app.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/artifacts-summary.md}} - GH_AW_PROMPT_8af66f942fb0e101_EOF + GH_AW_PROMPT_dc4eaf8bfb37b392_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -398,6 +412,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: artifactssummary outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -524,9 +539,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b5b0915c84b5b943_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b68c6a429d327483_EOF' {"create_discussion":{"category":"artifacts","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b5b0915c84b5b943_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b68c6a429d327483_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -684,7 +699,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -730,7 +745,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1030,6 +1045,8 @@ jobs: group: "gh-aw-conclusion-artifacts-summary" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1275,6 +1292,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1511,6 +1530,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“ฆ" GH_AW_WORKFLOW_ID: "artifacts-summary" diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 739d8e5be63..8282d6e99d9 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -104,6 +104,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -251,6 +252,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -268,24 +282,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_256a9be609ca3c34_EOF' + cat << 'GH_AW_PROMPT_14dfe9a037998326_EOF' - GH_AW_PROMPT_256a9be609ca3c34_EOF + GH_AW_PROMPT_14dfe9a037998326_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_256a9be609ca3c34_EOF' + cat << 'GH_AW_PROMPT_14dfe9a037998326_EOF' Tools: create_discussion, upload_asset(max:3), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_256a9be609ca3c34_EOF + GH_AW_PROMPT_14dfe9a037998326_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_256a9be609ca3c34_EOF' + cat << 'GH_AW_PROMPT_14dfe9a037998326_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -314,9 +328,9 @@ jobs: {{/if}} - GH_AW_PROMPT_256a9be609ca3c34_EOF + GH_AW_PROMPT_14dfe9a037998326_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_256a9be609ca3c34_EOF' + cat << 'GH_AW_PROMPT_14dfe9a037998326_EOF' {{#runtime-import .github/skills/jqschema/SKILL.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -324,7 +338,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/audit-workflows.md}} - GH_AW_PROMPT_256a9be609ca3c34_EOF + GH_AW_PROMPT_14dfe9a037998326_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -439,6 +453,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: auditworkflows outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -676,9 +691,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_35f8abcb90239f80_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_de79c1bea898377b_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[audit-workflows] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":51200}]},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":3,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_35f8abcb90239f80_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_de79c1bea898377b_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -851,7 +866,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_fef2217f28f28334_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_467ea9a369748bce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -929,7 +944,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_fef2217f28f28334_EOF + GH_AW_MCP_CONFIG_467ea9a369748bce_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1325,6 +1340,8 @@ jobs: group: "gh-aw-conclusion-audit-workflows" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1582,6 +1599,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1808,6 +1827,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/audit-workflows" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1907,6 +1928,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "audit-workflows-daily" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" @@ -2004,6 +2026,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: auditworkflows steps: - name: Checkout actions folder @@ -2059,6 +2082,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/auto-triage-issues.lock.yml b/.github/workflows/auto-triage-issues.lock.yml index 2a69b0401bd..a928f88cb53 100644 --- a/.github/workflows/auto-triage-issues.lock.yml +++ b/.github/workflows/auto-triage-issues.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -257,6 +258,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -273,20 +287,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_fe28a19bc524ad58_EOF' + cat << 'GH_AW_PROMPT_ade46d9f1556725b_EOF' - GH_AW_PROMPT_fe28a19bc524ad58_EOF + GH_AW_PROMPT_ade46d9f1556725b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_fe28a19bc524ad58_EOF' + cat << 'GH_AW_PROMPT_ade46d9f1556725b_EOF' Tools: create_discussion, add_labels(max:10), missing_tool, missing_data, noop - GH_AW_PROMPT_fe28a19bc524ad58_EOF + GH_AW_PROMPT_ade46d9f1556725b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_fe28a19bc524ad58_EOF' + cat << 'GH_AW_PROMPT_ade46d9f1556725b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -315,16 +329,16 @@ jobs: {{/if}} - GH_AW_PROMPT_fe28a19bc524ad58_EOF + GH_AW_PROMPT_ade46d9f1556725b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_fe28a19bc524ad58_EOF' + cat << 'GH_AW_PROMPT_ade46d9f1556725b_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/auto-triage-issues.md}} - GH_AW_PROMPT_fe28a19bc524ad58_EOF + GH_AW_PROMPT_ade46d9f1556725b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -418,6 +432,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: autotriageissues outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -565,9 +580,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_673dfcb2459023be_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b802e386e3a021cd_EOF' {"add_labels":{"max":10},"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[Auto-Triage] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_673dfcb2459023be_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b802e386e3a021cd_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -744,7 +759,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -789,7 +804,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1059,6 +1074,8 @@ jobs: group: "gh-aw-conclusion-auto-triage-issues" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1299,6 +1316,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1508,6 +1527,8 @@ jobs: permissions: actions: read contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_rate_limit.outputs.rate_limit_ok == 'true' }} matched_command: '' @@ -1586,6 +1607,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "auto-triage-issues" diff --git a/.github/workflows/avenger.lock.yml b/.github/workflows/avenger.lock.yml index 65f6054c701..a6a3fe848ef 100644 --- a/.github/workflows/avenger.lock.yml +++ b/.github/workflows/avenger.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -264,23 +278,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_c2423bbabbfcc860_EOF' + cat << 'GH_AW_PROMPT_b4059be879409909_EOF' - GH_AW_PROMPT_c2423bbabbfcc860_EOF + GH_AW_PROMPT_b4059be879409909_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_c2423bbabbfcc860_EOF' + cat << 'GH_AW_PROMPT_b4059be879409909_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_c2423bbabbfcc860_EOF + GH_AW_PROMPT_b4059be879409909_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_c2423bbabbfcc860_EOF' + cat << 'GH_AW_PROMPT_b4059be879409909_EOF' - GH_AW_PROMPT_c2423bbabbfcc860_EOF + GH_AW_PROMPT_b4059be879409909_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_c2423bbabbfcc860_EOF' + cat << 'GH_AW_PROMPT_b4059be879409909_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -309,15 +323,15 @@ jobs: {{/if}} - GH_AW_PROMPT_c2423bbabbfcc860_EOF + GH_AW_PROMPT_b4059be879409909_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_c2423bbabbfcc860_EOF' + cat << 'GH_AW_PROMPT_b4059be879409909_EOF' {{#runtime-import .github/agents/ci-cleaner.agent.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/avenger.md}} - GH_AW_PROMPT_c2423bbabbfcc860_EOF + GH_AW_PROMPT_b4059be879409909_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -425,6 +439,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: avenger outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -585,9 +600,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6cec50e9b994b517_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_bcb546f6dd104ab7_EOF' {"create_pull_request":{"excluded_files":[".github/workflows/**"],"expires":48,"labels":["automated","ci-fix"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"fallback-to-issue","title_prefix":"[avenger] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_6cec50e9b994b517_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_bcb546f6dd104ab7_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -758,7 +773,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -803,7 +818,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1215,6 +1230,8 @@ jobs: group: "gh-aw-conclusion-avenger" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1466,6 +1483,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1701,6 +1720,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "avenger-ci" GH_AW_WORKFLOW_EMOJI: "๐Ÿฆธ" diff --git a/.github/workflows/aw-failure-investigator.lock.yml b/.github/workflows/aw-failure-investigator.lock.yml index 3ac30cac4a1..85cab50a127 100644 --- a/.github/workflows/aw-failure-investigator.lock.yml +++ b/.github/workflows/aw-failure-investigator.lock.yml @@ -102,6 +102,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -251,6 +252,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -302,20 +316,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_333a9c6ae6fc7d44_EOF' + cat << 'GH_AW_PROMPT_26d59f22e5b1e74e_EOF' - GH_AW_PROMPT_333a9c6ae6fc7d44_EOF + GH_AW_PROMPT_26d59f22e5b1e74e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_333a9c6ae6fc7d44_EOF' + cat << 'GH_AW_PROMPT_26d59f22e5b1e74e_EOF' Tools: create_issue(max:2), update_issue(max:10), link_sub_issue(max:10), missing_tool, missing_data, noop - GH_AW_PROMPT_333a9c6ae6fc7d44_EOF + GH_AW_PROMPT_26d59f22e5b1e74e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_333a9c6ae6fc7d44_EOF' + cat << 'GH_AW_PROMPT_26d59f22e5b1e74e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -344,15 +358,15 @@ jobs: {{/if}} - GH_AW_PROMPT_333a9c6ae6fc7d44_EOF + GH_AW_PROMPT_26d59f22e5b1e74e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_333a9c6ae6fc7d44_EOF' + cat << 'GH_AW_PROMPT_26d59f22e5b1e74e_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/aw-failure-investigator.md}} - GH_AW_PROMPT_333a9c6ae6fc7d44_EOF + GH_AW_PROMPT_26d59f22e5b1e74e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -452,6 +466,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: awfailureinvestigator outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -653,9 +668,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_644ab3d9716d2491_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9dc24515bc65a67b_EOF' {"create_issue":{"expires":168,"group":true,"labels":["agentic-workflows","automation","cookie"],"max":2,"title_prefix":"[aw-failures] "},"create_report_incomplete_issue":{},"link_sub_issue":{"max":10},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_issue":{"allow_body":true,"max":10,"target":"*"}} - GH_AW_SAFE_OUTPUTS_CONFIG_644ab3d9716d2491_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_9dc24515bc65a67b_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -896,7 +911,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -959,7 +974,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF + GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1316,6 +1331,8 @@ jobs: group: "gh-aw-conclusion-aw-failure-investigator" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1564,6 +1581,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1788,6 +1807,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1875,6 +1896,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "aw-failure-investigator" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index e5e951679c5..d844f11fda7 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -297,21 +311,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_11b5c8afaae0dc01_EOF' + cat << 'GH_AW_PROMPT_ee39378696be58d1_EOF' - GH_AW_PROMPT_11b5c8afaae0dc01_EOF + GH_AW_PROMPT_ee39378696be58d1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_11b5c8afaae0dc01_EOF' + cat << 'GH_AW_PROMPT_ee39378696be58d1_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_11b5c8afaae0dc01_EOF + GH_AW_PROMPT_ee39378696be58d1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_11b5c8afaae0dc01_EOF' + cat << 'GH_AW_PROMPT_ee39378696be58d1_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -340,15 +354,15 @@ jobs: {{/if}} - GH_AW_PROMPT_11b5c8afaae0dc01_EOF + GH_AW_PROMPT_ee39378696be58d1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_11b5c8afaae0dc01_EOF' + cat << 'GH_AW_PROMPT_ee39378696be58d1_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/blog-auditor.md}} - GH_AW_PROMPT_11b5c8afaae0dc01_EOF + GH_AW_PROMPT_ee39378696be58d1_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -451,6 +465,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: blogauditor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -588,9 +603,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8892a5bd7ea6104d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_728fa1768eec76c6_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[audit] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_8892a5bd7ea6104d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_728fa1768eec76c6_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -750,7 +765,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -810,7 +825,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1194,6 +1209,8 @@ jobs: group: "gh-aw-conclusion-blog-auditor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1444,6 +1461,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1668,6 +1687,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1756,6 +1777,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "blog-auditor-weekly" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" diff --git a/.github/workflows/bot-detection.lock.yml b/.github/workflows/bot-detection.lock.yml index 1bc6fca5c5a..d14cc6154a8 100644 --- a/.github/workflows/bot-detection.lock.yml +++ b/.github/workflows/bot-detection.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,20 +275,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2acb415dfd4f33ec_EOF' + cat << 'GH_AW_PROMPT_d4bfda8ba1ade689_EOF' - GH_AW_PROMPT_2acb415dfd4f33ec_EOF + GH_AW_PROMPT_d4bfda8ba1ade689_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2acb415dfd4f33ec_EOF' + cat << 'GH_AW_PROMPT_d4bfda8ba1ade689_EOF' Tools: create_issue, update_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_2acb415dfd4f33ec_EOF + GH_AW_PROMPT_d4bfda8ba1ade689_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2acb415dfd4f33ec_EOF' + cat << 'GH_AW_PROMPT_d4bfda8ba1ade689_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,13 +317,13 @@ jobs: {{/if}} - GH_AW_PROMPT_2acb415dfd4f33ec_EOF + GH_AW_PROMPT_d4bfda8ba1ade689_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2acb415dfd4f33ec_EOF' + cat << 'GH_AW_PROMPT_d4bfda8ba1ade689_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/bot-detection.md}} - GH_AW_PROMPT_2acb415dfd4f33ec_EOF + GH_AW_PROMPT_d4bfda8ba1ade689_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: botdetection outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -544,9 +559,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_47ffe122ca938949_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_766056c7b5543cde_EOF' {"create_issue":{"labels":["security","bot-detection"],"max":1},"create_report_incomplete_issue":{},"mentions":{"allowed":["pelikhan"]},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_issue":{"allow_body":true,"max":1,"target":"*"}} - GH_AW_SAFE_OUTPUTS_CONFIG_47ffe122ca938949_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_766056c7b5543cde_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -777,7 +792,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -839,7 +854,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1119,6 +1134,8 @@ jobs: group: "gh-aw-conclusion-bot-detection" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -2161,6 +2178,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "๐Ÿค–" GH_AW_WORKFLOW_ID: "bot-detection" GH_AW_WORKFLOW_NAME: "Bot Detection" diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index c1ca0c13a17..96ee742019e 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -95,6 +95,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -280,6 +281,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -299,20 +313,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF' + cat << 'GH_AW_PROMPT_87f1e12046ac1e28_EOF' - GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF + GH_AW_PROMPT_87f1e12046ac1e28_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF' + cat << 'GH_AW_PROMPT_87f1e12046ac1e28_EOF' Tools: add_comment, missing_tool, missing_data, noop - GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF + GH_AW_PROMPT_87f1e12046ac1e28_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF' + cat << 'GH_AW_PROMPT_87f1e12046ac1e28_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -341,18 +355,18 @@ jobs: {{/if}} - GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF + GH_AW_PROMPT_87f1e12046ac1e28_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF' + cat << 'GH_AW_PROMPT_87f1e12046ac1e28_EOF' {{#runtime-import .github/workflows/shared/mcp/brave.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/brave.md}} - GH_AW_PROMPT_5b61c3fb0d5b8f18_EOF + GH_AW_PROMPT_87f1e12046ac1e28_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -459,6 +473,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: brave outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -585,9 +600,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_375b1128cbd884ba_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_049c1935bf1a6a33_EOF' {"add_comment":{"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_375b1128cbd884ba_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_049c1935bf1a6a33_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -744,7 +759,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_89175a6220abecbc_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f61436769eb40349_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "brave-search": { @@ -823,7 +838,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_89175a6220abecbc_EOF + GH_AW_MCP_CONFIG_f61436769eb40349_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1112,6 +1127,8 @@ jobs: group: "gh-aw-conclusion-brave" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1377,6 +1394,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1593,6 +1612,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1668,6 +1689,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿฆ *Search results brought to you by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"footerWorkflowRecompile\":\"\\u003e ๐Ÿ”„ *Maintenance report by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) is searching the web on this {event_type}.\",\"runSuccess\":\"โœ… Research complete. [{workflow_name}]({run_url}) has returned with results.\",\"runFailure\":\"โŒ Search failed. [{workflow_name}]({run_url}) {status}. Unable to retrieve web sources.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿฆ" diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml index 1679e18fff5..e079709a9f0 100644 --- a/.github/workflows/breaking-change-checker.lock.yml +++ b/.github/workflows/breaking-change-checker.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,20 +272,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d9db46c198a99599_EOF' + cat << 'GH_AW_PROMPT_1d206ac7b8d577f4_EOF' - GH_AW_PROMPT_d9db46c198a99599_EOF + GH_AW_PROMPT_1d206ac7b8d577f4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d9db46c198a99599_EOF' + cat << 'GH_AW_PROMPT_1d206ac7b8d577f4_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_d9db46c198a99599_EOF + GH_AW_PROMPT_1d206ac7b8d577f4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d9db46c198a99599_EOF' + cat << 'GH_AW_PROMPT_1d206ac7b8d577f4_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,15 +314,15 @@ jobs: {{/if}} - GH_AW_PROMPT_d9db46c198a99599_EOF + GH_AW_PROMPT_1d206ac7b8d577f4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_d9db46c198a99599_EOF' + cat << 'GH_AW_PROMPT_1d206ac7b8d577f4_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/breaking-change-checker.md}} - GH_AW_PROMPT_d9db46c198a99599_EOF + GH_AW_PROMPT_1d206ac7b8d577f4_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: breakingchangechecker outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -534,9 +549,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_eb8737ded6d2634f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8fcbca199339b787_EOF' {"create_issue":{"assignees":["copilot"],"expires":48,"labels":["breaking-change","automated-analysis","cookie"],"max":1,"title_prefix":"[breaking-change] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_eb8737ded6d2634f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_8fcbca199339b787_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -704,7 +719,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -750,7 +765,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1072,6 +1087,8 @@ jobs: group: "gh-aw-conclusion-breaking-change-checker" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1321,6 +1338,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1537,6 +1556,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1612,6 +1633,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e โš ๏ธ *Compatibility report by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"footerWorkflowRecompile\":\"\\u003e ๐Ÿ› ๏ธ *Workflow maintenance by [{workflow_name}]({run_url}) for {repository}*\",\"runStarted\":\"๐Ÿ”ฌ Breaking Change Checker online! [{workflow_name}]({run_url}) is analyzing API compatibility on this {event_type}...\",\"runSuccess\":\"โœ… Analysis complete! [{workflow_name}]({run_url}) has reviewed all changes. Compatibility verdict delivered! ๐Ÿ“‹\",\"runFailure\":\"๐Ÿ”ฌ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Compatibility status unknown...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "breaking-change-checker" diff --git a/.github/workflows/changeset.lock.yml b/.github/workflows/changeset.lock.yml index 3a1e0cc1fa0..d3dc9c2c192 100644 --- a/.github/workflows/changeset.lock.yml +++ b/.github/workflows/changeset.lock.yml @@ -109,6 +109,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -286,6 +287,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -305,23 +319,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8d15866f390415d9_EOF' + cat << 'GH_AW_PROMPT_687d88ade0bb04ab_EOF' - GH_AW_PROMPT_8d15866f390415d9_EOF + GH_AW_PROMPT_687d88ade0bb04ab_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8d15866f390415d9_EOF' + cat << 'GH_AW_PROMPT_687d88ade0bb04ab_EOF' Tools: update_pull_request, push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_8d15866f390415d9_EOF + GH_AW_PROMPT_687d88ade0bb04ab_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_8d15866f390415d9_EOF' + cat << 'GH_AW_PROMPT_687d88ade0bb04ab_EOF' - GH_AW_PROMPT_8d15866f390415d9_EOF + GH_AW_PROMPT_687d88ade0bb04ab_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8d15866f390415d9_EOF' + cat << 'GH_AW_PROMPT_687d88ade0bb04ab_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -350,15 +364,15 @@ jobs: {{/if}} - GH_AW_PROMPT_8d15866f390415d9_EOF + GH_AW_PROMPT_687d88ade0bb04ab_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_8d15866f390415d9_EOF' + cat << 'GH_AW_PROMPT_687d88ade0bb04ab_EOF' {{#runtime-import .github/workflows/shared/changeset-format.md}} {{#runtime-import .github/skills/jqschema/SKILL.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/changeset.md}} - GH_AW_PROMPT_8d15866f390415d9_EOF + GH_AW_PROMPT_687d88ade0bb04ab_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -462,6 +476,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: changeset outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -589,9 +604,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cb353f1bc5473079_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_50c6d2e0a8a3147f_EOF' {"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"allowed_files":[".changeset/**"],"commit_title_suffix":" [skip-ci]","if_no_changes":"warn","max_patch_size":4096,"patch_format":"bundle","protect_top_level_dot_folders":true,"protected_dot_folder_excludes":[".changeset/"],"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"blocked"},"report_incomplete":{},"update_pull_request":{"allow_body":true,"allow_title":false,"default_operation":"append","max":1,"update_branch":false}} - GH_AW_SAFE_OUTPUTS_CONFIG_cb353f1bc5473079_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_50c6d2e0a8a3147f_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -780,7 +795,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_e4ec9dd5bb65b2bd_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_6d3b6d1377b18c9a_EOF [history] persistence = "none" @@ -808,11 +823,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_e4ec9dd5bb65b2bd_EOF + GH_AW_MCP_CONFIG_6d3b6d1377b18c9a_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -872,11 +887,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF model_provider = "openai-proxy" @@ -888,7 +903,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_PERSONAL_ACCESS_TOKEN$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1160,6 +1175,8 @@ jobs: group: "gh-aw-conclusion-changeset" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1405,6 +1422,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1618,6 +1637,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1679,6 +1700,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: "gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“‹" GH_AW_WORKFLOW_ID: "changeset" diff --git a/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml b/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml index 14dd24667b8..ad97450de77 100644 --- a/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml +++ b/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,24 +271,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_cfbedf771b568967_EOF' + cat << 'GH_AW_PROMPT_1c8e52d002a133b3_EOF' - GH_AW_PROMPT_cfbedf771b568967_EOF + GH_AW_PROMPT_1c8e52d002a133b3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_cfbedf771b568967_EOF' + cat << 'GH_AW_PROMPT_1c8e52d002a133b3_EOF' Tools: create_pull_request(max:5), missing_tool, missing_data, noop - GH_AW_PROMPT_cfbedf771b568967_EOF + GH_AW_PROMPT_1c8e52d002a133b3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_cfbedf771b568967_EOF' + cat << 'GH_AW_PROMPT_1c8e52d002a133b3_EOF' - GH_AW_PROMPT_cfbedf771b568967_EOF + GH_AW_PROMPT_1c8e52d002a133b3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_cfbedf771b568967_EOF' + cat << 'GH_AW_PROMPT_1c8e52d002a133b3_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,14 +317,14 @@ jobs: {{/if}} - GH_AW_PROMPT_cfbedf771b568967_EOF + GH_AW_PROMPT_1c8e52d002a133b3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_cfbedf771b568967_EOF' + cat << 'GH_AW_PROMPT_1c8e52d002a133b3_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/chaos-pr-bundle-fuzzer.md}} - GH_AW_PROMPT_cfbedf771b568967_EOF + GH_AW_PROMPT_1c8e52d002a133b3_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -411,6 +425,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: chaosprbundlefuzzer outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -552,9 +567,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_037094becd77c8ef_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_db67ecba950d1e42_EOF' {"create_pull_request":{"allowed_files":["tmp/chaos/**","scratchpad/chaos/**","tests/chaos/**"],"close_older_pull_requests":true,"draft":true,"excluded_files":[".github/workflows/**"],"expires":4,"if_no_changes":"ignore","labels":["test-in-progress"],"max":5,"max_patch_files":100,"max_patch_size":4096,"preserve_branch_name":true,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","PI.md","AGENTS.md"],"protected_files_policy":"blocked","recreate_ref":true,"title_prefix":"[chaos-test] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_037094becd77c8ef_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_db67ecba950d1e42_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -725,7 +740,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -770,7 +785,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1057,6 +1072,8 @@ jobs: group: "gh-aw-conclusion-chaos-pr-bundle-fuzzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1300,6 +1317,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1527,6 +1546,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "chaos-pr-bundle-fuzzer" GH_AW_WORKFLOW_NAME: "Chaos PR Bundle Fuzzer" @@ -1653,6 +1673,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: chaosprbundlefuzzer steps: - name: Checkout actions folder diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index 870d3f1d255..df1949fba48 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -293,24 +307,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d9822b0a3534b6b7_EOF' + cat << 'GH_AW_PROMPT_f2420421fedccfc9_EOF' - GH_AW_PROMPT_d9822b0a3534b6b7_EOF + GH_AW_PROMPT_f2420421fedccfc9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d9822b0a3534b6b7_EOF' + cat << 'GH_AW_PROMPT_f2420421fedccfc9_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_d9822b0a3534b6b7_EOF + GH_AW_PROMPT_f2420421fedccfc9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_d9822b0a3534b6b7_EOF' + cat << 'GH_AW_PROMPT_f2420421fedccfc9_EOF' - GH_AW_PROMPT_d9822b0a3534b6b7_EOF + GH_AW_PROMPT_f2420421fedccfc9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d9822b0a3534b6b7_EOF' + cat << 'GH_AW_PROMPT_f2420421fedccfc9_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -339,9 +353,9 @@ jobs: {{/if}} - GH_AW_PROMPT_d9822b0a3534b6b7_EOF + GH_AW_PROMPT_f2420421fedccfc9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_d9822b0a3534b6b7_EOF' + cat << 'GH_AW_PROMPT_f2420421fedccfc9_EOF' {{#runtime-import .github/workflows/shared/ci-data-analysis.md}} {{#runtime-import .github/workflows/shared/ci-optimization-strategies.md}} @@ -350,7 +364,7 @@ jobs: {{#runtime-import .github/skills/jqschema/SKILL.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/ci-coach.md}} - GH_AW_PROMPT_d9822b0a3534b6b7_EOF + GH_AW_PROMPT_f2420421fedccfc9_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -460,6 +474,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cicoach outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -629,9 +644,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e75d4ec0a32c1d0e_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9df9f766edf4dc2c_EOF' {"create_pull_request":{"expires":48,"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"fallback-to-issue","title_prefix":"[ci-coach] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e75d4ec0a32c1d0e_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_9df9f766edf4dc2c_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -803,7 +818,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -849,7 +864,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1167,6 +1182,8 @@ jobs: group: "gh-aw-conclusion-ci-coach" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1420,6 +1437,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1644,6 +1663,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1733,6 +1754,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "ci-coach-daily" GH_AW_WORKFLOW_ID: "ci-coach" @@ -1860,6 +1882,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cicoach steps: - name: Checkout actions folder diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index b161bc7c4ab..d2b777c1361 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -104,6 +104,7 @@ jobs: issues: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: ${{ steps.add-comment.outputs.comment-id }} comment_repo: ${{ steps.add-comment.outputs.comment-repo }} @@ -295,6 +296,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -320,21 +334,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2de4ad518b19787a_EOF' + cat << 'GH_AW_PROMPT_c96c322ba4c1ab9e_EOF' - GH_AW_PROMPT_2de4ad518b19787a_EOF + GH_AW_PROMPT_c96c322ba4c1ab9e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2de4ad518b19787a_EOF' + cat << 'GH_AW_PROMPT_c96c322ba4c1ab9e_EOF' Tools: add_comment, create_issue, update_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_2de4ad518b19787a_EOF + GH_AW_PROMPT_c96c322ba4c1ab9e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2de4ad518b19787a_EOF' + cat << 'GH_AW_PROMPT_c96c322ba4c1ab9e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -363,13 +377,13 @@ jobs: {{/if}} - GH_AW_PROMPT_2de4ad518b19787a_EOF + GH_AW_PROMPT_c96c322ba4c1ab9e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2de4ad518b19787a_EOF' + cat << 'GH_AW_PROMPT_c96c322ba4c1ab9e_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/ci-doctor.md}} - GH_AW_PROMPT_2de4ad518b19787a_EOF + GH_AW_PROMPT_c96c322ba4c1ab9e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -500,6 +514,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cidoctor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -662,9 +677,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_177d2d993333dc25_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cdcb2b28540733e7_EOF' {"add_comment":{"hide_older_comments":true,"max":1},"create_issue":{"close_older_issues":true,"expires":24,"labels":["cookie"],"max":1,"title_prefix":"[CI Failure Doctor] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_issue":{"allow_body":true,"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_177d2d993333dc25_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cdcb2b28540733e7_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -909,7 +924,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -954,7 +969,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1335,6 +1350,8 @@ jobs: group: "gh-aw-conclusion-ci-doctor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1609,6 +1626,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1829,6 +1848,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1892,6 +1913,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿฉบ *Diagnosis provided by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿฅ CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...\",\"runSuccess\":\"๐Ÿฉบ Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! ๐Ÿ’Š\",\"runFailure\":\"๐Ÿฅ Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿฅ" @@ -1995,6 +2017,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cidoctor steps: - name: Checkout actions folder diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index c102dd38d07..1f84c1bc3ba 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,21 +274,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_afbf5c0d2d52138a_EOF' + cat << 'GH_AW_PROMPT_1766cd37126a0ad7_EOF' - GH_AW_PROMPT_afbf5c0d2d52138a_EOF + GH_AW_PROMPT_1766cd37126a0ad7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_afbf5c0d2d52138a_EOF' + cat << 'GH_AW_PROMPT_1766cd37126a0ad7_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_afbf5c0d2d52138a_EOF + GH_AW_PROMPT_1766cd37126a0ad7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_afbf5c0d2d52138a_EOF' + cat << 'GH_AW_PROMPT_1766cd37126a0ad7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,15 +317,15 @@ jobs: {{/if}} - GH_AW_PROMPT_afbf5c0d2d52138a_EOF + GH_AW_PROMPT_1766cd37126a0ad7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_afbf5c0d2d52138a_EOF' + cat << 'GH_AW_PROMPT_1766cd37126a0ad7_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/claude-code-user-docs-review.md}} - GH_AW_PROMPT_afbf5c0d2d52138a_EOF + GH_AW_PROMPT_1766cd37126a0ad7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -416,6 +430,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: claudecodeuserdocsreview outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -561,9 +576,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_67c1a3187c735614_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_79fe97b82d62d638_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[claude-code-user-docs-review] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_67c1a3187c735614_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_79fe97b82d62d638_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -720,7 +735,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -765,7 +780,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1162,6 +1177,8 @@ jobs: group: "gh-aw-conclusion-claude-code-user-docs-review" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1416,6 +1433,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1651,6 +1670,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "claude-code-user-docs-review" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" @@ -1748,6 +1768,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: claudecodeuserdocsreview steps: - name: Checkout actions folder diff --git a/.github/workflows/cli-consistency-checker.lock.yml b/.github/workflows/cli-consistency-checker.lock.yml index 29fcea7409d..912b607bd55 100644 --- a/.github/workflows/cli-consistency-checker.lock.yml +++ b/.github/workflows/cli-consistency-checker.lock.yml @@ -91,6 +91,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -232,6 +233,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -248,20 +262,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_cfe4589391dd913c_EOF' + cat << 'GH_AW_PROMPT_d4e938165d1ccc7e_EOF' - GH_AW_PROMPT_cfe4589391dd913c_EOF + GH_AW_PROMPT_d4e938165d1ccc7e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_cfe4589391dd913c_EOF' + cat << 'GH_AW_PROMPT_d4e938165d1ccc7e_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_cfe4589391dd913c_EOF + GH_AW_PROMPT_d4e938165d1ccc7e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_cfe4589391dd913c_EOF' + cat << 'GH_AW_PROMPT_d4e938165d1ccc7e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -290,14 +304,14 @@ jobs: {{/if}} - GH_AW_PROMPT_cfe4589391dd913c_EOF + GH_AW_PROMPT_d4e938165d1ccc7e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_cfe4589391dd913c_EOF' + cat << 'GH_AW_PROMPT_d4e938165d1ccc7e_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/cli-consistency-checker.md}} - GH_AW_PROMPT_cfe4589391dd913c_EOF + GH_AW_PROMPT_d4e938165d1ccc7e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -396,6 +410,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cliconsistencychecker outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -525,9 +540,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8c945ff583e8b1a4_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5eca5816279a06dc_EOF' {"create_issue":{"expires":48,"labels":["automation","cli","documentation","cookie"],"max":1,"title_prefix":"[cli-consistency] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_8c945ff583e8b1a4_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5eca5816279a06dc_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -697,7 +712,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -759,7 +774,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1045,6 +1060,8 @@ jobs: group: "gh-aw-conclusion-cli-consistency-checker" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1288,6 +1305,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1523,6 +1542,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โœ…" GH_AW_WORKFLOW_ID: "cli-consistency-checker" diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 28264b8959c..4c4f6ab9a0c 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,21 +272,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_88e2b05217eeeb8a_EOF' + cat << 'GH_AW_PROMPT_90daa5d8a01a274c_EOF' - GH_AW_PROMPT_88e2b05217eeeb8a_EOF + GH_AW_PROMPT_90daa5d8a01a274c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_88e2b05217eeeb8a_EOF' + cat << 'GH_AW_PROMPT_90daa5d8a01a274c_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_88e2b05217eeeb8a_EOF + GH_AW_PROMPT_90daa5d8a01a274c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_88e2b05217eeeb8a_EOF' + cat << 'GH_AW_PROMPT_90daa5d8a01a274c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,16 +315,16 @@ jobs: {{/if}} - GH_AW_PROMPT_88e2b05217eeeb8a_EOF + GH_AW_PROMPT_90daa5d8a01a274c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_88e2b05217eeeb8a_EOF' + cat << 'GH_AW_PROMPT_90daa5d8a01a274c_EOF' {{#runtime-import .github/skills/jqschema/SKILL.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/cli-version-checker.md}} - GH_AW_PROMPT_88e2b05217eeeb8a_EOF + GH_AW_PROMPT_90daa5d8a01a274c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -413,6 +427,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cliversionchecker outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -558,9 +573,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b6b6fdf353836a98_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6415c7e85cbcf7d4_EOF' {"create_issue":{"close_older_issues":true,"expires":48,"labels":["automation","dependencies","cookie"],"max":1,"title_prefix":"[ca] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b6b6fdf353836a98_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_6415c7e85cbcf7d4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -730,7 +745,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -790,7 +805,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1156,6 +1171,8 @@ jobs: group: "gh-aw-conclusion-cli-version-checker" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1402,6 +1419,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1636,6 +1655,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ข" GH_AW_WORKFLOW_ID: "cli-version-checker" @@ -1734,6 +1754,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cliversionchecker steps: - name: Checkout actions folder diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index 4e025fa48b7..c8d6e855d9c 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -109,6 +109,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -312,6 +313,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -337,25 +351,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_24b7d054dcd2622a_EOF' + cat << 'GH_AW_PROMPT_d7acd7fc407d0cea_EOF' - GH_AW_PROMPT_24b7d054dcd2622a_EOF + GH_AW_PROMPT_d7acd7fc407d0cea_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_24b7d054dcd2622a_EOF' + cat << 'GH_AW_PROMPT_d7acd7fc407d0cea_EOF' Tools: add_comment, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_24b7d054dcd2622a_EOF + GH_AW_PROMPT_d7acd7fc407d0cea_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_24b7d054dcd2622a_EOF' + cat << 'GH_AW_PROMPT_d7acd7fc407d0cea_EOF' - GH_AW_PROMPT_24b7d054dcd2622a_EOF + GH_AW_PROMPT_d7acd7fc407d0cea_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_24b7d054dcd2622a_EOF' + cat << 'GH_AW_PROMPT_d7acd7fc407d0cea_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -384,12 +398,12 @@ jobs: {{/if}} - GH_AW_PROMPT_24b7d054dcd2622a_EOF + GH_AW_PROMPT_d7acd7fc407d0cea_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_24b7d054dcd2622a_EOF' + cat << 'GH_AW_PROMPT_d7acd7fc407d0cea_EOF' {{#runtime-import .github/skills/jqschema/SKILL.md}} {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} @@ -400,7 +414,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/cloclo.md}} - GH_AW_PROMPT_24b7d054dcd2622a_EOF + GH_AW_PROMPT_d7acd7fc407d0cea_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -533,6 +547,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cloclo outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -750,9 +765,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1bd1dfdddb06d392_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f00787639e4f6869_EOF' {"add_comment":{"max":1},"create_pull_request":{"excluded_files":[".github/workflows/*.lock.yml"],"expires":48,"labels":["automation","cloclo"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"fallback-to-issue","title_prefix":"[cloclo] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_1bd1dfdddb06d392_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_f00787639e4f6869_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -949,7 +964,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_93a78be24ee62b6d_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_52b85c639f59000c_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -1053,7 +1068,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_93a78be24ee62b6d_EOF + GH_AW_MCP_CONFIG_52b85c639f59000c_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1443,6 +1458,8 @@ jobs: group: "gh-aw-conclusion-cloclo" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1713,6 +1730,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1935,6 +1954,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -2009,6 +2030,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐ŸŽค *Magnifique! Performance by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐ŸŽต Comme d'habitude! [{workflow_name}]({run_url}) takes the stage on this {event_type}...\",\"runSuccess\":\"๐ŸŽค Bravo! [{workflow_name}]({run_url}) has delivered a stunning performance! Standing ovation! ๐ŸŒŸ\",\"runFailure\":\"๐ŸŽต Intermission... [{workflow_name}]({run_url}) {status}. Check the [run logs]({run_url}) for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -2139,6 +2161,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: cloclo steps: - name: Checkout actions folder diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index ce6871955da..8a5ca4a7653 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -419,6 +433,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: codescanningfixer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -1122,6 +1137,8 @@ jobs: group: "gh-aw-conclusion-code-scanning-fixer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1370,6 +1387,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1586,6 +1605,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1662,6 +1683,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" GH_AW_WORKFLOW_ID: "code-scanning-fixer" @@ -1789,6 +1811,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: codescanningfixer steps: - name: Checkout actions folder diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index c9d1e98ef02..2b5dab49cc8 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -102,6 +102,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "5000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -251,6 +252,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -267,23 +281,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9d90c13c730375b9_EOF' + cat << 'GH_AW_PROMPT_84f4919de90ec958_EOF' - GH_AW_PROMPT_9d90c13c730375b9_EOF + GH_AW_PROMPT_84f4919de90ec958_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9d90c13c730375b9_EOF' + cat << 'GH_AW_PROMPT_84f4919de90ec958_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_9d90c13c730375b9_EOF + GH_AW_PROMPT_84f4919de90ec958_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_9d90c13c730375b9_EOF' + cat << 'GH_AW_PROMPT_84f4919de90ec958_EOF' - GH_AW_PROMPT_9d90c13c730375b9_EOF + GH_AW_PROMPT_84f4919de90ec958_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9d90c13c730375b9_EOF' + cat << 'GH_AW_PROMPT_84f4919de90ec958_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -312,16 +326,16 @@ jobs: {{/if}} - GH_AW_PROMPT_9d90c13c730375b9_EOF + GH_AW_PROMPT_84f4919de90ec958_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_9d90c13c730375b9_EOF' + cat << 'GH_AW_PROMPT_84f4919de90ec958_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/code-simplifier.md}} - GH_AW_PROMPT_9d90c13c730375b9_EOF + GH_AW_PROMPT_84f4919de90ec958_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -418,6 +432,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: codesimplifier outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -558,9 +573,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f6b7a893bbae6346_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_de8d943ea5abda58_EOF' {"create_pull_request":{"expires":24,"labels":["refactoring","code-quality","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[code-simplifier] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_f6b7a893bbae6346_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_de8d943ea5abda58_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -732,7 +747,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -778,7 +793,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1110,6 +1125,8 @@ jobs: group: "gh-aw-conclusion-code-simplifier" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1360,6 +1377,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1606,6 +1625,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1682,6 +1703,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "code-simplifier" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" diff --git a/.github/workflows/codex-github-remote-mcp-test.lock.yml b/.github/workflows/codex-github-remote-mcp-test.lock.yml index 1ca2a92551d..e8a9d946d77 100644 --- a/.github/workflows/codex-github-remote-mcp-test.lock.yml +++ b/.github/workflows/codex-github-remote-mcp-test.lock.yml @@ -90,6 +90,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,23 +268,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_746b5ec05eca0dbe_EOF' + cat << 'GH_AW_PROMPT_52c76f6966adff7b_EOF' - GH_AW_PROMPT_746b5ec05eca0dbe_EOF + GH_AW_PROMPT_52c76f6966adff7b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_746b5ec05eca0dbe_EOF' + cat << 'GH_AW_PROMPT_52c76f6966adff7b_EOF' Tools: create_issue - GH_AW_PROMPT_746b5ec05eca0dbe_EOF + GH_AW_PROMPT_52c76f6966adff7b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_746b5ec05eca0dbe_EOF' + cat << 'GH_AW_PROMPT_52c76f6966adff7b_EOF' - GH_AW_PROMPT_746b5ec05eca0dbe_EOF + GH_AW_PROMPT_52c76f6966adff7b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_746b5ec05eca0dbe_EOF' + cat << 'GH_AW_PROMPT_52c76f6966adff7b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,13 +313,13 @@ jobs: {{/if}} - GH_AW_PROMPT_746b5ec05eca0dbe_EOF + GH_AW_PROMPT_52c76f6966adff7b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_746b5ec05eca0dbe_EOF' + cat << 'GH_AW_PROMPT_52c76f6966adff7b_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/codex-github-remote-mcp-test.md}} - GH_AW_PROMPT_746b5ec05eca0dbe_EOF + GH_AW_PROMPT_52c76f6966adff7b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -397,6 +411,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: codexgithubremotemcptest outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -524,9 +539,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_64442751a5c15c6a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d20c490e0f019edb_EOF' {"create_issue":{"labels":["codex-github-remote-mcp-test"],"max":1,"title_prefix":"[codex-github-remote-mcp-test]"}} - GH_AW_SAFE_OUTPUTS_CONFIG_64442751a5c15c6a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d20c490e0f019edb_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -623,7 +638,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_ab84d124bbd5590d_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_de0e9b0cc9870587_EOF [history] persistence = "none" @@ -650,11 +665,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_ab84d124bbd5590d_EOF + GH_AW_MCP_CONFIG_de0e9b0cc9870587_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_44e53be2bef9c2f4_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_e75d15a96a56027b_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -714,11 +729,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_44e53be2bef9c2f4_EOF + GH_AW_MCP_CONFIG_e75d15a96a56027b_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF model_provider = "openai-proxy" @@ -730,7 +745,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_PERSONAL_ACCESS_TOKEN$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -999,6 +1014,8 @@ jobs: group: "gh-aw-conclusion-codex-github-remote-mcp-test" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1177,6 +1194,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "codex-github-remote-mcp-test" GH_AW_WORKFLOW_NAME: "Codex GitHub Remote MCP Test" diff --git a/.github/workflows/commit-changes-analyzer.lock.yml b/.github/workflows/commit-changes-analyzer.lock.yml index 6f7c4999526..a29ff86ed26 100644 --- a/.github/workflows/commit-changes-analyzer.lock.yml +++ b/.github/workflows/commit-changes-analyzer.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,20 +274,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_798c62880ca56300_EOF' + cat << 'GH_AW_PROMPT_47bb988fd11e184c_EOF' - GH_AW_PROMPT_798c62880ca56300_EOF + GH_AW_PROMPT_47bb988fd11e184c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_798c62880ca56300_EOF' + cat << 'GH_AW_PROMPT_47bb988fd11e184c_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_798c62880ca56300_EOF + GH_AW_PROMPT_47bb988fd11e184c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_798c62880ca56300_EOF' + cat << 'GH_AW_PROMPT_47bb988fd11e184c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,15 +316,15 @@ jobs: {{/if}} - GH_AW_PROMPT_798c62880ca56300_EOF + GH_AW_PROMPT_47bb988fd11e184c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_798c62880ca56300_EOF' + cat << 'GH_AW_PROMPT_47bb988fd11e184c_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/commit-changes-analyzer.md}} - GH_AW_PROMPT_798c62880ca56300_EOF + GH_AW_PROMPT_47bb988fd11e184c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -407,6 +421,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: commitchangesanalyzer outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -530,9 +545,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_986ab24877b88c89_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d7fe1a5a3b3a8a30_EOF' {"create_discussion":{"category":"dev","expires":24,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_986ab24877b88c89_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d7fe1a5a3b3a8a30_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -689,7 +704,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -734,7 +749,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1002,6 +1017,8 @@ jobs: group: "gh-aw-conclusion-commit-changes-analyzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1242,6 +1259,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1469,6 +1488,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "commit-changes-analyzer" diff --git a/.github/workflows/constraint-solving-potd.lock.yml b/.github/workflows/constraint-solving-potd.lock.yml index 9781bafd059..ecc56eb6c49 100644 --- a/.github/workflows/constraint-solving-potd.lock.yml +++ b/.github/workflows/constraint-solving-potd.lock.yml @@ -91,6 +91,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,21 +268,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_7f02c8ac18cf3857_EOF' + cat << 'GH_AW_PROMPT_4aecec5e467cdb80_EOF' - GH_AW_PROMPT_7f02c8ac18cf3857_EOF + GH_AW_PROMPT_4aecec5e467cdb80_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_7f02c8ac18cf3857_EOF' + cat << 'GH_AW_PROMPT_4aecec5e467cdb80_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_7f02c8ac18cf3857_EOF + GH_AW_PROMPT_4aecec5e467cdb80_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_7f02c8ac18cf3857_EOF' + cat << 'GH_AW_PROMPT_4aecec5e467cdb80_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -297,13 +311,13 @@ jobs: {{/if}} - GH_AW_PROMPT_7f02c8ac18cf3857_EOF + GH_AW_PROMPT_4aecec5e467cdb80_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_7f02c8ac18cf3857_EOF' + cat << 'GH_AW_PROMPT_4aecec5e467cdb80_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/constraint-solving-potd.md}} - GH_AW_PROMPT_7f02c8ac18cf3857_EOF + GH_AW_PROMPT_4aecec5e467cdb80_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -403,6 +417,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: constraintsolvingpotd outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -524,9 +539,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4a4fd8a3232fecbd_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b6bc71ac1b410240_EOF' {"create_discussion":{"category":"announcements","close_older_discussions":true,"expires":168,"fallback_to_issue":true,"labels":["constraint-solving","problem-of-the-day"],"max":1,"title_prefix":"๐Ÿงฉ Constraint Solving POTD:"},"create_report_incomplete_issue":{},"max_bot_mentions":1,"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_4a4fd8a3232fecbd_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b6bc71ac1b410240_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -690,7 +705,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -752,7 +767,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1055,6 +1070,8 @@ jobs: group: "gh-aw-conclusion-constraint-solving-potd" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1302,6 +1319,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1537,6 +1556,7 @@ jobs: GH_AW_ENGINE_MODEL: "claude-haiku-4.5" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงฉ" GH_AW_WORKFLOW_ID: "constraint-solving-potd" @@ -1633,6 +1653,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: constraintsolvingpotd steps: - name: Checkout actions folder diff --git a/.github/workflows/contribution-check.lock.yml b/.github/workflows/contribution-check.lock.yml index 31eb6bc9ebe..59111998c82 100644 --- a/.github/workflows/contribution-check.lock.yml +++ b/.github/workflows/contribution-check.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,20 +274,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_511cc5fc9c50e3e1_EOF' + cat << 'GH_AW_PROMPT_0e4299ad284ceb0e_EOF' - GH_AW_PROMPT_511cc5fc9c50e3e1_EOF + GH_AW_PROMPT_0e4299ad284ceb0e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_511cc5fc9c50e3e1_EOF' + cat << 'GH_AW_PROMPT_0e4299ad284ceb0e_EOF' Tools: add_comment(max:10), create_issue, add_labels(max:4), missing_tool, missing_data, noop - GH_AW_PROMPT_511cc5fc9c50e3e1_EOF + GH_AW_PROMPT_0e4299ad284ceb0e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_511cc5fc9c50e3e1_EOF' + cat << 'GH_AW_PROMPT_0e4299ad284ceb0e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,13 +316,13 @@ jobs: {{/if}} - GH_AW_PROMPT_511cc5fc9c50e3e1_EOF + GH_AW_PROMPT_0e4299ad284ceb0e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_511cc5fc9c50e3e1_EOF' + cat << 'GH_AW_PROMPT_0e4299ad284ceb0e_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/contribution-check.md}} - GH_AW_PROMPT_511cc5fc9c50e3e1_EOF + GH_AW_PROMPT_0e4299ad284ceb0e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -411,6 +425,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: contributioncheck outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -611,9 +626,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_50f60d7940afd91a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a92d2cee96d2798c_EOF' {"add_comment":{"hide_older_comments":true,"max":10,"target":"*","target-repo":"${{ vars.TARGET_REPOSITORY }}"},"add_labels":{"allowed":["spam","needs-work","outdated","lgtm"],"max":4,"target":"*","target-repo":"${{ vars.TARGET_REPOSITORY }}"},"create_issue":{"close_older_issues":true,"expires":24,"group_by_day":true,"labels":["contribution-report"],"max":1,"title_prefix":"[Contribution Check Report]"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_50f60d7940afd91a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a92d2cee96d2798c_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -824,7 +839,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -870,7 +885,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1168,6 +1183,8 @@ jobs: group: "gh-aw-conclusion-contribution-check" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1411,6 +1428,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1646,6 +1665,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โœ…" GH_AW_WORKFLOW_ID: "contribution-check" diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 86d53779a71..90644bd9e5b 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -250,6 +251,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -302,22 +316,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_c9184d8319385da5_EOF' + cat << 'GH_AW_PROMPT_b6e769305882d969_EOF' - GH_AW_PROMPT_c9184d8319385da5_EOF + GH_AW_PROMPT_b6e769305882d969_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_c9184d8319385da5_EOF' + cat << 'GH_AW_PROMPT_b6e769305882d969_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_c9184d8319385da5_EOF + GH_AW_PROMPT_b6e769305882d969_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_c9184d8319385da5_EOF' + cat << 'GH_AW_PROMPT_b6e769305882d969_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -346,9 +360,9 @@ jobs: {{/if}} - GH_AW_PROMPT_c9184d8319385da5_EOF + GH_AW_PROMPT_b6e769305882d969_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_c9184d8319385da5_EOF' + cat << 'GH_AW_PROMPT_b6e769305882d969_EOF' {{#runtime-import .github/workflows/shared/copilot-pr-analysis-base.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -357,7 +371,7 @@ jobs: {{#runtime-import .github/workflows/shared/copilot-pr-data-fetch.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/copilot-agent-analysis.md}} - GH_AW_PROMPT_c9184d8319385da5_EOF + GH_AW_PROMPT_b6e769305882d969_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -475,6 +489,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotagentanalysis outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -639,9 +654,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_19c4e3058eab96ca_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c19ddf28348db279_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[copilot-agent-analysis] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_19c4e3058eab96ca_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c19ddf28348db279_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -798,7 +813,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -843,7 +858,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1239,6 +1254,8 @@ jobs: group: "gh-aw-conclusion-copilot-agent-analysis" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1491,6 +1508,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1715,6 +1734,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1794,6 +1815,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/copilot-agent-analysis" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1893,6 +1916,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "copilot-agent-analysis" @@ -1989,6 +2013,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotagentanalysis steps: - name: Checkout actions folder diff --git a/.github/workflows/copilot-centralization-drilldown.lock.yml b/.github/workflows/copilot-centralization-drilldown.lock.yml index 1703784d35f..5ea728d59bc 100644 --- a/.github/workflows/copilot-centralization-drilldown.lock.yml +++ b/.github/workflows/copilot-centralization-drilldown.lock.yml @@ -93,6 +93,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "500" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -231,6 +232,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -247,20 +261,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1e6846d020980010_EOF' + cat << 'GH_AW_PROMPT_f7b08684840fa497_EOF' - GH_AW_PROMPT_1e6846d020980010_EOF + GH_AW_PROMPT_f7b08684840fa497_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1e6846d020980010_EOF' + cat << 'GH_AW_PROMPT_f7b08684840fa497_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_1e6846d020980010_EOF + GH_AW_PROMPT_f7b08684840fa497_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1e6846d020980010_EOF' + cat << 'GH_AW_PROMPT_f7b08684840fa497_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -289,12 +303,12 @@ jobs: {{/if}} - GH_AW_PROMPT_1e6846d020980010_EOF + GH_AW_PROMPT_f7b08684840fa497_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1e6846d020980010_EOF' + cat << 'GH_AW_PROMPT_f7b08684840fa497_EOF' {{#runtime-import .github/workflows/copilot-centralization-drilldown.md}} - GH_AW_PROMPT_1e6846d020980010_EOF + GH_AW_PROMPT_f7b08684840fa497_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -385,6 +399,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotcentralizationdrilldown outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -517,9 +532,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c46e95d1131d8695_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c7c4363956785f69_EOF' {"create_issue":{"expires":720,"labels":["report","ai-optimization","workflow-design"],"max":1,"title_prefix":"[copilot-centralization-draft] "},"create_report_incomplete_issue":{},"max_bot_mentions":1,"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_c46e95d1131d8695_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c7c4363956785f69_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -692,7 +707,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -749,7 +764,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF + GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1019,6 +1034,8 @@ jobs: group: "gh-aw-conclusion-copilot-centralization-drilldown" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1262,6 +1279,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1528,6 +1547,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "copilot-centralization-drilldown" GH_AW_WORKFLOW_NAME: "Copilot Centralization Drilldown" diff --git a/.github/workflows/copilot-centralization-optimizer.lock.yml b/.github/workflows/copilot-centralization-optimizer.lock.yml index f9fa1467143..add15b6b5da 100644 --- a/.github/workflows/copilot-centralization-optimizer.lock.yml +++ b/.github/workflows/copilot-centralization-optimizer.lock.yml @@ -77,6 +77,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "1000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -215,6 +216,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -392,6 +406,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotcentralizationoptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -1067,6 +1082,8 @@ jobs: group: "gh-aw-conclusion-copilot-centralization-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1314,6 +1331,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1571,6 +1590,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/copilot-centralization-optimizer" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1670,6 +1691,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "copilot-centralization-optimizer" GH_AW_WORKFLOW_NAME: "Copilot Centralization Optimizer" diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index c732ac6b021..0330bd368fd 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -93,6 +93,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -234,6 +235,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -251,21 +265,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_28643ace6a87f2d4_EOF' + cat << 'GH_AW_PROMPT_3ea66b2ddcc1a922_EOF' - GH_AW_PROMPT_28643ace6a87f2d4_EOF + GH_AW_PROMPT_3ea66b2ddcc1a922_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_28643ace6a87f2d4_EOF' + cat << 'GH_AW_PROMPT_3ea66b2ddcc1a922_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_28643ace6a87f2d4_EOF + GH_AW_PROMPT_3ea66b2ddcc1a922_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_28643ace6a87f2d4_EOF' + cat << 'GH_AW_PROMPT_3ea66b2ddcc1a922_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -294,15 +308,15 @@ jobs: {{/if}} - GH_AW_PROMPT_28643ace6a87f2d4_EOF + GH_AW_PROMPT_3ea66b2ddcc1a922_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_28643ace6a87f2d4_EOF' + cat << 'GH_AW_PROMPT_3ea66b2ddcc1a922_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/copilot-cli-deep-research.md}} - GH_AW_PROMPT_28643ace6a87f2d4_EOF + GH_AW_PROMPT_3ea66b2ddcc1a922_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -415,6 +429,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotclideepresearch outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -551,9 +566,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0d99804bab0377ed_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_37159f883e3213b1_EOF' {"create_discussion":{"category":"research","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[copilot-cli-research] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":204800,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_0d99804bab0377ed_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_37159f883e3213b1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -711,7 +726,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -757,7 +772,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1073,6 +1088,8 @@ jobs: group: "gh-aw-conclusion-copilot-cli-deep-research" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1322,6 +1339,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1548,6 +1567,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/copilot-cli-research" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1648,6 +1669,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ฌ" GH_AW_WORKFLOW_ID: "copilot-cli-deep-research" diff --git a/.github/workflows/copilot-opt.lock.yml b/.github/workflows/copilot-opt.lock.yml index 44083d46d02..66f1d0a581d 100644 --- a/.github/workflows/copilot-opt.lock.yml +++ b/.github/workflows/copilot-opt.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,21 +274,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_50db99a91de955fb_EOF' + cat << 'GH_AW_PROMPT_8323799dad0cf3e0_EOF' - GH_AW_PROMPT_50db99a91de955fb_EOF + GH_AW_PROMPT_8323799dad0cf3e0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_50db99a91de955fb_EOF' + cat << 'GH_AW_PROMPT_8323799dad0cf3e0_EOF' Tools: create_issue(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_50db99a91de955fb_EOF + GH_AW_PROMPT_8323799dad0cf3e0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_50db99a91de955fb_EOF' + cat << 'GH_AW_PROMPT_8323799dad0cf3e0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,9 +317,9 @@ jobs: {{/if}} - GH_AW_PROMPT_50db99a91de955fb_EOF + GH_AW_PROMPT_8323799dad0cf3e0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_50db99a91de955fb_EOF' + cat << 'GH_AW_PROMPT_8323799dad0cf3e0_EOF' {{#runtime-import .github/skills/jqschema/SKILL.md}} {{#runtime-import .github/workflows/shared/copilot-session-data-fetch.md}} @@ -314,7 +328,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/copilot-opt.md}} - GH_AW_PROMPT_50db99a91de955fb_EOF + GH_AW_PROMPT_8323799dad0cf3e0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -416,6 +430,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotopt outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -577,9 +592,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_30c5fc77dd311637_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_38fd4b1abe1a705c_EOF' {"create_issue":{"close_older_issues":true,"labels":["copilot-opt","optimization","cookie"],"max":3,"title_prefix":"[copilot-opt] "},"create_report_incomplete_issue":{},"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_30c5fc77dd311637_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_38fd4b1abe1a705c_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -750,7 +765,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -796,7 +811,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1143,6 +1158,8 @@ jobs: group: "gh-aw-conclusion-copilot-opt" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1389,6 +1406,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1623,6 +1642,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โšก" GH_AW_WORKFLOW_ID: "copilot-opt" @@ -1721,6 +1741,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotopt steps: - name: Checkout actions folder diff --git a/.github/workflows/copilot-pr-merged-report.lock.yml b/.github/workflows/copilot-pr-merged-report.lock.yml index 96a63206387..2ff652659ea 100644 --- a/.github/workflows/copilot-pr-merged-report.lock.yml +++ b/.github/workflows/copilot-pr-merged-report.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -237,6 +238,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -247,21 +261,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_4ce0b77b68483a55_EOF' + cat << 'GH_AW_PROMPT_380a9420830ddf34_EOF' - GH_AW_PROMPT_4ce0b77b68483a55_EOF + GH_AW_PROMPT_380a9420830ddf34_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_4ce0b77b68483a55_EOF' + cat << 'GH_AW_PROMPT_380a9420830ddf34_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_4ce0b77b68483a55_EOF + GH_AW_PROMPT_380a9420830ddf34_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_4ce0b77b68483a55_EOF' + cat << 'GH_AW_PROMPT_380a9420830ddf34_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/gh.md}} @@ -271,7 +285,7 @@ jobs: {{#runtime-import .github/workflows/shared/copilot-pr-data-fetch.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/copilot-pr-merged-report.md}} - GH_AW_PROMPT_4ce0b77b68483a55_EOF + GH_AW_PROMPT_380a9420830ddf34_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -364,6 +378,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotprmergedreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -507,9 +522,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7e5fbfb0b1dcf68b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1a3efbc3313903f2_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[copilot-pr-merged-report] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_7e5fbfb0b1dcf68b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_1a3efbc3313903f2_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -667,7 +682,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_f14ff886ce7f5499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_cce0bafd51422996_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -706,7 +721,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_f14ff886ce7f5499_EOF + GH_AW_MCP_CONFIG_cce0bafd51422996_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1011,6 +1026,8 @@ jobs: group: "gh-aw-conclusion-copilot-pr-merged-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1259,6 +1276,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1495,6 +1514,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "copilot-pr-merged-report" @@ -1591,6 +1611,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotprmergedreport steps: - name: Checkout actions folder diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index 5a24445d423..296ef1a0b2c 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,24 +273,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_4befe4bb4921dc5d_EOF' + cat << 'GH_AW_PROMPT_3eedca19303c1282_EOF' - GH_AW_PROMPT_4befe4bb4921dc5d_EOF + GH_AW_PROMPT_3eedca19303c1282_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_4befe4bb4921dc5d_EOF' + cat << 'GH_AW_PROMPT_3eedca19303c1282_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_4befe4bb4921dc5d_EOF + GH_AW_PROMPT_3eedca19303c1282_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_4befe4bb4921dc5d_EOF' + cat << 'GH_AW_PROMPT_3eedca19303c1282_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -305,9 +319,9 @@ jobs: {{/if}} - GH_AW_PROMPT_4befe4bb4921dc5d_EOF + GH_AW_PROMPT_3eedca19303c1282_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_4befe4bb4921dc5d_EOF' + cat << 'GH_AW_PROMPT_3eedca19303c1282_EOF' {{#runtime-import .github/workflows/shared/copilot-pr-analysis-base.md}} {{#runtime-import .github/workflows/shared/python-dataviz.md}} @@ -318,7 +332,7 @@ jobs: {{#runtime-import .github/workflows/shared/copilot-pr-data-fetch.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/copilot-pr-nlp-analysis.md}} - GH_AW_PROMPT_4befe4bb4921dc5d_EOF + GH_AW_PROMPT_3eedca19303c1282_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -435,6 +449,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotprnlpanalysis outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -626,9 +641,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1702422a16fe9044_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7dfe86573c5fc941_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[nlp-analysis] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_1702422a16fe9044_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_7dfe86573c5fc941_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -802,7 +817,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -864,7 +879,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1199,6 +1214,8 @@ jobs: group: "gh-aw-conclusion-copilot-pr-nlp-analysis" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1451,6 +1468,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1677,6 +1696,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/nlp-analysis" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1777,6 +1798,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ฌ" GH_AW_WORKFLOW_ID: "copilot-pr-nlp-analysis" @@ -1873,6 +1895,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotprnlpanalysis steps: - name: Checkout actions folder @@ -1928,6 +1951,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 66ea6d17f2a..46ad4fbd803 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -239,6 +240,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -256,22 +270,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_281765c82d9c9932_EOF' + cat << 'GH_AW_PROMPT_87405866dd40e3cc_EOF' - GH_AW_PROMPT_281765c82d9c9932_EOF + GH_AW_PROMPT_87405866dd40e3cc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_281765c82d9c9932_EOF' + cat << 'GH_AW_PROMPT_87405866dd40e3cc_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_281765c82d9c9932_EOF + GH_AW_PROMPT_87405866dd40e3cc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_281765c82d9c9932_EOF' + cat << 'GH_AW_PROMPT_87405866dd40e3cc_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,9 +314,9 @@ jobs: {{/if}} - GH_AW_PROMPT_281765c82d9c9932_EOF + GH_AW_PROMPT_87405866dd40e3cc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_281765c82d9c9932_EOF' + cat << 'GH_AW_PROMPT_87405866dd40e3cc_EOF' {{#runtime-import .github/workflows/shared/copilot-pr-analysis-base.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -311,7 +325,7 @@ jobs: {{#runtime-import .github/workflows/shared/copilot-pr-data-fetch.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/copilot-pr-prompt-analysis.md}} - GH_AW_PROMPT_281765c82d9c9932_EOF + GH_AW_PROMPT_87405866dd40e3cc_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -428,6 +442,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotprpromptanalysis outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -591,9 +606,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_146973339bbd03a6_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9780310912de88a5_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[prompt-analysis] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_146973339bbd03a6_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_9780310912de88a5_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -754,7 +769,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -816,7 +831,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1138,6 +1153,8 @@ jobs: group: "gh-aw-conclusion-copilot-pr-prompt-analysis" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1390,6 +1407,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1616,6 +1635,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/prompt-analysis" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1716,6 +1737,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "copilot-pr-prompt-analysis" @@ -1812,6 +1834,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotprpromptanalysis steps: - name: Checkout actions folder diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index 7bdea6694eb..2c47f8de055 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -104,6 +104,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -251,6 +252,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -269,24 +283,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9cc4812bf6819465_EOF' + cat << 'GH_AW_PROMPT_3b8cf7dfb35b0962_EOF' - GH_AW_PROMPT_9cc4812bf6819465_EOF + GH_AW_PROMPT_3b8cf7dfb35b0962_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9cc4812bf6819465_EOF' + cat << 'GH_AW_PROMPT_3b8cf7dfb35b0962_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_9cc4812bf6819465_EOF + GH_AW_PROMPT_3b8cf7dfb35b0962_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9cc4812bf6819465_EOF' + cat << 'GH_AW_PROMPT_3b8cf7dfb35b0962_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -315,9 +329,9 @@ jobs: {{/if}} - GH_AW_PROMPT_9cc4812bf6819465_EOF + GH_AW_PROMPT_3b8cf7dfb35b0962_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_9cc4812bf6819465_EOF' + cat << 'GH_AW_PROMPT_3b8cf7dfb35b0962_EOF' {{#runtime-import .github/skills/jqschema/SKILL.md}} {{#runtime-import .github/workflows/shared/copilot-session-data-fetch.md}} @@ -328,7 +342,7 @@ jobs: {{#runtime-import .github/workflows/shared/python-dataviz.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/copilot-session-insights.md}} - GH_AW_PROMPT_9cc4812bf6819465_EOF + GH_AW_PROMPT_3b8cf7dfb35b0962_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -447,6 +461,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotsessioninsights outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -632,9 +647,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3183de4ebed8ee4a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7276b4c997458137_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[copilot-session-insights] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_3183de4ebed8ee4a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_7276b4c997458137_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -804,7 +819,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -849,7 +864,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1258,6 +1273,8 @@ jobs: group: "gh-aw-conclusion-copilot-session-insights" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1510,6 +1527,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1736,6 +1755,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/session-insights" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1835,6 +1856,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "copilot-session-insights" @@ -1931,6 +1953,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: copilotsessioninsights steps: - name: Checkout actions folder @@ -1986,6 +2009,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/craft.lock.yml b/.github/workflows/craft.lock.yml index 148edbd0906..4a375ba1034 100644 --- a/.github/workflows/craft.lock.yml +++ b/.github/workflows/craft.lock.yml @@ -93,6 +93,7 @@ jobs: issues: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -278,6 +279,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -297,23 +311,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_23b622ca4f5d9db4_EOF' + cat << 'GH_AW_PROMPT_f3a3fc2f32569f33_EOF' - GH_AW_PROMPT_23b622ca4f5d9db4_EOF + GH_AW_PROMPT_f3a3fc2f32569f33_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_23b622ca4f5d9db4_EOF' + cat << 'GH_AW_PROMPT_f3a3fc2f32569f33_EOF' Tools: add_comment, push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_23b622ca4f5d9db4_EOF + GH_AW_PROMPT_f3a3fc2f32569f33_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_23b622ca4f5d9db4_EOF' + cat << 'GH_AW_PROMPT_f3a3fc2f32569f33_EOF' - GH_AW_PROMPT_23b622ca4f5d9db4_EOF + GH_AW_PROMPT_f3a3fc2f32569f33_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_23b622ca4f5d9db4_EOF' + cat << 'GH_AW_PROMPT_f3a3fc2f32569f33_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -342,7 +356,7 @@ jobs: {{/if}} - GH_AW_PROMPT_23b622ca4f5d9db4_EOF + GH_AW_PROMPT_f3a3fc2f32569f33_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" @@ -350,12 +364,12 @@ jobs: if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md" fi - cat << 'GH_AW_PROMPT_23b622ca4f5d9db4_EOF' + cat << 'GH_AW_PROMPT_f3a3fc2f32569f33_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/craft.md}} - GH_AW_PROMPT_23b622ca4f5d9db4_EOF + GH_AW_PROMPT_f3a3fc2f32569f33_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -461,6 +475,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: craft outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -592,9 +607,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_32d2f4d48646691c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f22d12bdf8bebff4_EOF' {"add_comment":{"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"if_no_changes":"warn","max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_32d2f4d48646691c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_f22d12bdf8bebff4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -766,7 +781,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -812,7 +827,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1113,6 +1128,8 @@ jobs: group: "gh-aw-conclusion-craft" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1380,6 +1397,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1596,6 +1615,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1671,6 +1692,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e โš’๏ธ *Crafted with care by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ› ๏ธ Master Crafter at work! [{workflow_name}]({run_url}) is forging a new workflow on this {event_type}...\",\"runSuccess\":\"โš’๏ธ Masterpiece complete! [{workflow_name}]({run_url}) has crafted your workflow. May it serve you well! ๐ŸŽ–๏ธ\",\"runFailure\":\"๐Ÿ› ๏ธ Forge cooling down! [{workflow_name}]({run_url}) {status}. The anvil awaits another attempt...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โœ๏ธ" diff --git a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml index 52a9d633c71..8d49e065976 100644 --- a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml +++ b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -250,6 +251,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -266,26 +280,26 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_862be43aaeedb37e_EOF' + cat << 'GH_AW_PROMPT_4623740807105d95_EOF' - GH_AW_PROMPT_862be43aaeedb37e_EOF + GH_AW_PROMPT_4623740807105d95_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_862be43aaeedb37e_EOF' + cat << 'GH_AW_PROMPT_4623740807105d95_EOF' Tools: create_pull_request, upload_asset(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_862be43aaeedb37e_EOF + GH_AW_PROMPT_4623740807105d95_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_862be43aaeedb37e_EOF' + cat << 'GH_AW_PROMPT_4623740807105d95_EOF' upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_862be43aaeedb37e_EOF + GH_AW_PROMPT_4623740807105d95_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_862be43aaeedb37e_EOF' + cat << 'GH_AW_PROMPT_4623740807105d95_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -314,15 +328,15 @@ jobs: {{/if}} - GH_AW_PROMPT_862be43aaeedb37e_EOF + GH_AW_PROMPT_4623740807105d95_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_862be43aaeedb37e_EOF' + cat << 'GH_AW_PROMPT_4623740807105d95_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-agent-of-the-day-blog-writer.md}} - GH_AW_PROMPT_862be43aaeedb37e_EOF + GH_AW_PROMPT_4623740807105d95_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -433,6 +447,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyagentofthedayblogwriter outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -632,9 +647,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_da639e526f02aa6c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f528af5ea45a4a83_EOF' {"create_pull_request":{"allowed_files":["docs/src/content/docs/**"],"draft":false,"expires":168,"labels":["blog"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[blog] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":3,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_da639e526f02aa6c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_f528af5ea45a4a83_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -819,7 +834,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_3e846bbfc2bb0378_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_bc1e8afd57ffb1f8_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -884,7 +899,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_3e846bbfc2bb0378_EOF + GH_AW_MCP_CONFIG_bc1e8afd57ffb1f8_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1247,6 +1262,8 @@ jobs: group: "gh-aw-conclusion-daily-agent-of-the-day-blog-writer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1501,6 +1518,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1716,6 +1735,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1782,6 +1803,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|master" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1882,6 +1905,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-agent-of-the-day-blog-writer" GH_AW_WORKFLOW_EMOJI: "โœ๏ธ" @@ -2009,6 +2033,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-agentrx-trace-optimizer.lock.yml b/.github/workflows/daily-agentrx-trace-optimizer.lock.yml index 19afe7e6d72..2725f3574b8 100644 --- a/.github/workflows/daily-agentrx-trace-optimizer.lock.yml +++ b/.github/workflows/daily-agentrx-trace-optimizer.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -299,20 +313,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b75347a4f56dfcc7_EOF' + cat << 'GH_AW_PROMPT_e97429333bc2354e_EOF' - GH_AW_PROMPT_b75347a4f56dfcc7_EOF + GH_AW_PROMPT_e97429333bc2354e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b75347a4f56dfcc7_EOF' + cat << 'GH_AW_PROMPT_e97429333bc2354e_EOF' Tools: create_issue, create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_b75347a4f56dfcc7_EOF + GH_AW_PROMPT_e97429333bc2354e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b75347a4f56dfcc7_EOF' + cat << 'GH_AW_PROMPT_e97429333bc2354e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -341,15 +355,15 @@ jobs: {{/if}} - GH_AW_PROMPT_b75347a4f56dfcc7_EOF + GH_AW_PROMPT_e97429333bc2354e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b75347a4f56dfcc7_EOF' + cat << 'GH_AW_PROMPT_e97429333bc2354e_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-agentrx-trace-optimizer.md}} - GH_AW_PROMPT_b75347a4f56dfcc7_EOF + GH_AW_PROMPT_e97429333bc2354e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -448,6 +462,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyagentrxtraceoptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -637,9 +652,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2cae98bcaea34f05_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d72cf93d4f6ef276_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":168,"fallback_to_issue":true,"max":1,"title_prefix":"[agentrx-optimizer] "},"create_issue":{"close_older_issues":true,"expires":168,"labels":["automation","observability","optimization","traces"],"max":1,"title_prefix":"[agentrx-optimizer] "},"create_report_incomplete_issue":{},"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_2cae98bcaea34f05_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d72cf93d4f6ef276_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -839,7 +854,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_fef2217f28f28334_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_467ea9a369748bce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -917,7 +932,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_fef2217f28f28334_EOF + GH_AW_MCP_CONFIG_467ea9a369748bce_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1263,6 +1278,8 @@ jobs: group: "gh-aw-conclusion-daily-agentrx-trace-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1513,6 +1530,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1737,6 +1756,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1825,6 +1846,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-agentrx-trace-optimizer" GH_AW_WORKFLOW_EMOJI: "โšก" diff --git a/.github/workflows/daily-ambient-context-optimizer.lock.yml b/.github/workflows/daily-ambient-context-optimizer.lock.yml index d2981b4d227..c1880000170 100644 --- a/.github/workflows/daily-ambient-context-optimizer.lock.yml +++ b/.github/workflows/daily-ambient-context-optimizer.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,20 +274,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_3dd4443cd406a122_EOF' + cat << 'GH_AW_PROMPT_0a16226707a95764_EOF' - GH_AW_PROMPT_3dd4443cd406a122_EOF + GH_AW_PROMPT_0a16226707a95764_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_3dd4443cd406a122_EOF' + cat << 'GH_AW_PROMPT_0a16226707a95764_EOF' Tools: create_issue(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_3dd4443cd406a122_EOF + GH_AW_PROMPT_0a16226707a95764_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_3dd4443cd406a122_EOF' + cat << 'GH_AW_PROMPT_0a16226707a95764_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,13 +316,13 @@ jobs: {{/if}} - GH_AW_PROMPT_3dd4443cd406a122_EOF + GH_AW_PROMPT_0a16226707a95764_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_3dd4443cd406a122_EOF' + cat << 'GH_AW_PROMPT_0a16226707a95764_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/daily-ambient-context-optimizer.md}} - GH_AW_PROMPT_3dd4443cd406a122_EOF + GH_AW_PROMPT_0a16226707a95764_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -405,6 +419,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyambientcontextoptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -598,9 +613,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b1a139b3c689444d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8f0c53491324ad40_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"labels":["automation","report","workflow-optimization","analysis"],"max":3,"title_prefix":"[ambient-context] "},"create_report_incomplete_issue":{},"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b1a139b3c689444d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_8f0c53491324ad40_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -771,7 +786,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7292df9048689c98_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -836,7 +851,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF + GH_AW_MCP_CONFIG_7292df9048689c98_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1132,6 +1147,8 @@ jobs: group: "gh-aw-conclusion-daily-ambient-context-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1380,6 +1397,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1614,6 +1633,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-ambient-context-optimizer" GH_AW_WORKFLOW_EMOJI: "๐ŸŒซ๏ธ" diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index f066cc6929d..774f85295b3 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -289,24 +303,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_dfe64f799acf88d7_EOF' + cat << 'GH_AW_PROMPT_e3a5b33243a25a76_EOF' - GH_AW_PROMPT_dfe64f799acf88d7_EOF + GH_AW_PROMPT_e3a5b33243a25a76_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_dfe64f799acf88d7_EOF' + cat << 'GH_AW_PROMPT_e3a5b33243a25a76_EOF' Tools: create_issue, create_discussion, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_dfe64f799acf88d7_EOF + GH_AW_PROMPT_e3a5b33243a25a76_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_dfe64f799acf88d7_EOF' + cat << 'GH_AW_PROMPT_e3a5b33243a25a76_EOF' - GH_AW_PROMPT_dfe64f799acf88d7_EOF + GH_AW_PROMPT_e3a5b33243a25a76_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_dfe64f799acf88d7_EOF' + cat << 'GH_AW_PROMPT_e3a5b33243a25a76_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -335,14 +349,14 @@ jobs: {{/if}} - GH_AW_PROMPT_dfe64f799acf88d7_EOF + GH_AW_PROMPT_e3a5b33243a25a76_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_dfe64f799acf88d7_EOF' + cat << 'GH_AW_PROMPT_e3a5b33243a25a76_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-architecture-diagram.md}} - GH_AW_PROMPT_dfe64f799acf88d7_EOF + GH_AW_PROMPT_e3a5b33243a25a76_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -447,6 +461,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyarchitecturediagram outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -591,9 +606,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_186c43f98af52dea_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3a7cd9156cfaadd1_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[architecture-diagram] "},"create_issue":{"close_older_issues":true,"expires":168,"labels":["architecture","diagram"],"max":1,"title_prefix":"๐Ÿ—๏ธ Architecture Diagram:"},"create_pull_request":{"expires":168,"labels":["architecture","diagram","documentation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[architecture] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_186c43f98af52dea_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3a7cd9156cfaadd1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -834,7 +849,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -896,7 +911,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1204,6 +1219,8 @@ jobs: group: "gh-aw-conclusion-daily-architecture-diagram" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1454,6 +1471,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1678,6 +1697,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1768,6 +1789,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ—๏ธ" GH_AW_WORKFLOW_ID: "daily-architecture-diagram" @@ -1897,6 +1919,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyarchitecturediagram steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-assign-issue-to-user.lock.yml b/.github/workflows/daily-assign-issue-to-user.lock.yml index c7131482f4e..3e29b41160b 100644 --- a/.github/workflows/daily-assign-issue-to-user.lock.yml +++ b/.github/workflows/daily-assign-issue-to-user.lock.yml @@ -91,6 +91,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -232,6 +233,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -248,20 +262,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b513bb7ca2c3d79c_EOF' + cat << 'GH_AW_PROMPT_609e17cde05c4aff_EOF' - GH_AW_PROMPT_b513bb7ca2c3d79c_EOF + GH_AW_PROMPT_609e17cde05c4aff_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b513bb7ca2c3d79c_EOF' + cat << 'GH_AW_PROMPT_609e17cde05c4aff_EOF' Tools: add_comment, assign_to_user, missing_tool, missing_data, noop - GH_AW_PROMPT_b513bb7ca2c3d79c_EOF + GH_AW_PROMPT_609e17cde05c4aff_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b513bb7ca2c3d79c_EOF' + cat << 'GH_AW_PROMPT_609e17cde05c4aff_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -290,14 +304,14 @@ jobs: {{/if}} - GH_AW_PROMPT_b513bb7ca2c3d79c_EOF + GH_AW_PROMPT_609e17cde05c4aff_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b513bb7ca2c3d79c_EOF' + cat << 'GH_AW_PROMPT_609e17cde05c4aff_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-assign-issue-to-user.md}} - GH_AW_PROMPT_b513bb7ca2c3d79c_EOF + GH_AW_PROMPT_609e17cde05c4aff_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -393,6 +407,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyassignissuetouser outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -519,9 +534,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_549cc6b0ad722c84_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_158938f36535f055_EOF' {"add_comment":{"max":1,"target":"*"},"assign_to_user":{"max":1,"target":"*"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_549cc6b0ad722c84_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_158938f36535f055_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -696,7 +711,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -742,7 +757,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1042,6 +1057,8 @@ jobs: group: "gh-aw-conclusion-daily-assign-issue-to-user" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1285,6 +1302,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1521,6 +1540,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "daily-assign-issue-to-user" diff --git a/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml b/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml index b058b573802..62da06ee484 100644 --- a/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml +++ b/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -294,23 +308,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b71ec04c0df65c7e_EOF' + cat << 'GH_AW_PROMPT_5b36f7bb15192d54_EOF' - GH_AW_PROMPT_b71ec04c0df65c7e_EOF + GH_AW_PROMPT_5b36f7bb15192d54_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b71ec04c0df65c7e_EOF' + cat << 'GH_AW_PROMPT_5b36f7bb15192d54_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_b71ec04c0df65c7e_EOF + GH_AW_PROMPT_5b36f7bb15192d54_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_b71ec04c0df65c7e_EOF' + cat << 'GH_AW_PROMPT_5b36f7bb15192d54_EOF' - GH_AW_PROMPT_b71ec04c0df65c7e_EOF + GH_AW_PROMPT_5b36f7bb15192d54_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b71ec04c0df65c7e_EOF' + cat << 'GH_AW_PROMPT_5b36f7bb15192d54_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -339,13 +353,13 @@ jobs: {{/if}} - GH_AW_PROMPT_b71ec04c0df65c7e_EOF + GH_AW_PROMPT_5b36f7bb15192d54_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b71ec04c0df65c7e_EOF' + cat << 'GH_AW_PROMPT_5b36f7bb15192d54_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/daily-astrostylelite-markdown-spellcheck.md}} - GH_AW_PROMPT_b71ec04c0df65c7e_EOF + GH_AW_PROMPT_5b36f7bb15192d54_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -444,6 +458,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyastrostylelitemarkdownspellcheck outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -577,9 +592,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6bd82b83ff731c73_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_142a5a8329d68436_EOF' {"create_pull_request":{"allowed_files":["docs/src/content/**/*.md","docs/src/content/**/*.mdx"],"draft":false,"expires":72,"fallback_as_issue":false,"labels":["documentation","spellcheck","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"preserve_branch_name":true,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review","title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_6bd82b83ff731c73_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_142a5a8329d68436_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -753,7 +768,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -813,7 +828,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1157,6 +1172,8 @@ jobs: group: "gh-aw-conclusion-daily-astrostylelite-markdown-spellcheck" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1407,6 +1424,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1631,6 +1650,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1718,6 +1739,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-astrostylelite-markdown-spellcheck" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" diff --git a/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml b/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml index d4e3f2c1071..b954c0bed62 100644 --- a/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml +++ b/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,21 +272,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_443de9886870a75d_EOF' + cat << 'GH_AW_PROMPT_731797e26fbd9fdf_EOF' - GH_AW_PROMPT_443de9886870a75d_EOF + GH_AW_PROMPT_731797e26fbd9fdf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_443de9886870a75d_EOF' + cat << 'GH_AW_PROMPT_731797e26fbd9fdf_EOF' Tools: create_issue(max:6), missing_tool, missing_data, noop - GH_AW_PROMPT_443de9886870a75d_EOF + GH_AW_PROMPT_731797e26fbd9fdf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_443de9886870a75d_EOF' + cat << 'GH_AW_PROMPT_731797e26fbd9fdf_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,14 +315,14 @@ jobs: {{/if}} - GH_AW_PROMPT_443de9886870a75d_EOF + GH_AW_PROMPT_731797e26fbd9fdf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_443de9886870a75d_EOF' + cat << 'GH_AW_PROMPT_731797e26fbd9fdf_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/daily-aw-cross-repo-compile-check.md}} - GH_AW_PROMPT_443de9886870a75d_EOF + GH_AW_PROMPT_731797e26fbd9fdf_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -411,6 +425,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyawcrossrepocompilecheck outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -556,9 +571,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e4c6e06db352dd26_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c06bdfc0f9760e33_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"labels":["automation","compatibility","gh-aw"],"max":6,"title_prefix":"[aw-compat] "},"create_report_incomplete_issue":{},"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e4c6e06db352dd26_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c06bdfc0f9760e33_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -728,7 +743,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -773,7 +788,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1152,6 +1167,8 @@ jobs: group: "gh-aw-conclusion-daily-aw-cross-repo-compile-check" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1404,6 +1421,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1638,6 +1657,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-aw-cross-repo-compile-check" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" @@ -1737,6 +1757,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyawcrossrepocompilecheck steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml b/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml index e12e1471113..baba26cc978 100644 --- a/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml +++ b/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,21 +272,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b217a96e1d307084_EOF' + cat << 'GH_AW_PROMPT_1f5e11bb79869d63_EOF' - GH_AW_PROMPT_b217a96e1d307084_EOF + GH_AW_PROMPT_1f5e11bb79869d63_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b217a96e1d307084_EOF' + cat << 'GH_AW_PROMPT_1f5e11bb79869d63_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_b217a96e1d307084_EOF + GH_AW_PROMPT_1f5e11bb79869d63_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b217a96e1d307084_EOF' + cat << 'GH_AW_PROMPT_1f5e11bb79869d63_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,14 +315,14 @@ jobs: {{/if}} - GH_AW_PROMPT_b217a96e1d307084_EOF + GH_AW_PROMPT_1f5e11bb79869d63_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b217a96e1d307084_EOF' + cat << 'GH_AW_PROMPT_1f5e11bb79869d63_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-awf-spec-compiler-surfacing.md}} - GH_AW_PROMPT_b217a96e1d307084_EOF + GH_AW_PROMPT_1f5e11bb79869d63_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -415,6 +429,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyawfspeccompilersurfacing outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -548,9 +563,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e436c3dccb346fd0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_93a27a3f8cbce836_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"labels":["automation","awf","compiler","specifications"],"max":1,"title_prefix":"[awf-feature-surfacing] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":65536,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e436c3dccb346fd0_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_93a27a3f8cbce836_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -717,7 +732,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -762,7 +777,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1045,6 +1060,8 @@ jobs: group: "gh-aw-conclusion-daily-awf-spec-compiler-surfacing" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1292,6 +1309,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1510,6 +1529,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/awf-feature-surfacing" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1608,6 +1629,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-awf-spec-compiler-surfacing" GH_AW_WORKFLOW_EMOJI: "๐Ÿงญ" diff --git a/.github/workflows/daily-byok-ollama-test.lock.yml b/.github/workflows/daily-byok-ollama-test.lock.yml index 9c271419ec9..049000f6118 100644 --- a/.github/workflows/daily-byok-ollama-test.lock.yml +++ b/.github/workflows/daily-byok-ollama-test.lock.yml @@ -76,6 +76,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -215,6 +216,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -232,20 +246,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_84dccfc8508bdb90_EOF' + cat << 'GH_AW_PROMPT_091a48b177f67b28_EOF' - GH_AW_PROMPT_84dccfc8508bdb90_EOF + GH_AW_PROMPT_091a48b177f67b28_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_84dccfc8508bdb90_EOF' + cat << 'GH_AW_PROMPT_091a48b177f67b28_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_84dccfc8508bdb90_EOF + GH_AW_PROMPT_091a48b177f67b28_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_84dccfc8508bdb90_EOF' + cat << 'GH_AW_PROMPT_091a48b177f67b28_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -274,13 +288,13 @@ jobs: {{/if}} - GH_AW_PROMPT_84dccfc8508bdb90_EOF + GH_AW_PROMPT_091a48b177f67b28_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_84dccfc8508bdb90_EOF' + cat << 'GH_AW_PROMPT_091a48b177f67b28_EOF' {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-byok-ollama-test.md}} - GH_AW_PROMPT_84dccfc8508bdb90_EOF + GH_AW_PROMPT_091a48b177f67b28_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -379,6 +393,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailybyokollamatest outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -522,9 +537,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ed342075acd21654_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_255cb20eb58bc26e_EOF' {"create_issue":{"close_older_issues":true,"close_older_key":"daily-byok-ollama-test","expires":24,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_ed342075acd21654_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_255cb20eb58bc26e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -694,7 +709,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -751,7 +766,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF + GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1022,6 +1037,8 @@ jobs: group: "gh-aw-conclusion-daily-byok-ollama-test" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1265,6 +1282,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1499,6 +1518,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿฆ™ *BYOK test via [{workflow_name}]({run_url})*{ai_credits_suffix}\",\"runStarted\":\"๐Ÿฆ™ BYOK Ollama test starting... [{workflow_name}]({run_url})\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) โ€” BYOK endpoint responded.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) โ€” BYOK endpoint test failed: {status}\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿฆ™" diff --git a/.github/workflows/daily-cache-strategy-analyzer.lock.yml b/.github/workflows/daily-cache-strategy-analyzer.lock.yml index a0fd358f598..25f3ed2f657 100644 --- a/.github/workflows/daily-cache-strategy-analyzer.lock.yml +++ b/.github/workflows/daily-cache-strategy-analyzer.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -251,6 +252,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -303,21 +317,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ab0dae479b833fc8_EOF' + cat << 'GH_AW_PROMPT_5e4048335e803dce_EOF' - GH_AW_PROMPT_ab0dae479b833fc8_EOF + GH_AW_PROMPT_5e4048335e803dce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ab0dae479b833fc8_EOF' + cat << 'GH_AW_PROMPT_5e4048335e803dce_EOF' Tools: create_issue(max:5), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_ab0dae479b833fc8_EOF + GH_AW_PROMPT_5e4048335e803dce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ab0dae479b833fc8_EOF' + cat << 'GH_AW_PROMPT_5e4048335e803dce_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -346,9 +360,9 @@ jobs: {{/if}} - GH_AW_PROMPT_ab0dae479b833fc8_EOF + GH_AW_PROMPT_5e4048335e803dce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ab0dae479b833fc8_EOF' + cat << 'GH_AW_PROMPT_5e4048335e803dce_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/reporting.md}} @@ -356,7 +370,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-cache-strategy-analyzer.md}} - GH_AW_PROMPT_ab0dae479b833fc8_EOF + GH_AW_PROMPT_5e4048335e803dce_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -467,6 +481,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycachestrategyanalyzer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -674,9 +689,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b6af89ac5881cb07_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f115cecef70aeab1_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[cache-strategy] "},"create_issue":{"expires":168,"group":true,"labels":["automation","improvement"],"max":5,"title_prefix":"[cache-strategy] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b6af89ac5881cb07_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_f115cecef70aeab1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -871,7 +886,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_67577b14f8445200_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_3857891c818453d4_EOF [history] persistence = "none" @@ -901,11 +916,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_67577b14f8445200_EOF + GH_AW_MCP_CONFIG_3857891c818453d4_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -968,11 +983,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF + GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_1b411577ffd687e9_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_c096be1fb1ba2c43_EOF model_provider = "openai-proxy" @@ -984,7 +999,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^GITHUB_TOKEN$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_1b411577ffd687e9_EOF + GH_AW_CODEX_SHELL_POLICY_c096be1fb1ba2c43_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1290,6 +1305,8 @@ jobs: group: "gh-aw-conclusion-daily-cache-strategy-analyzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1543,6 +1560,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1760,6 +1779,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1848,6 +1869,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: "${{ needs.activation.outputs.model_size }}" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-cache-strategy-analyzer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -1947,6 +1969,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycachestrategyanalyzer steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-caveman-optimizer.lock.yml b/.github/workflows/daily-caveman-optimizer.lock.yml index fa7caa90611..3e8643c9a93 100644 --- a/.github/workflows/daily-caveman-optimizer.lock.yml +++ b/.github/workflows/daily-caveman-optimizer.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -295,24 +309,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8a50efd984b24b79_EOF' + cat << 'GH_AW_PROMPT_cb394fcc49f34119_EOF' - GH_AW_PROMPT_8a50efd984b24b79_EOF + GH_AW_PROMPT_cb394fcc49f34119_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8a50efd984b24b79_EOF' + cat << 'GH_AW_PROMPT_cb394fcc49f34119_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_8a50efd984b24b79_EOF + GH_AW_PROMPT_cb394fcc49f34119_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_8a50efd984b24b79_EOF' + cat << 'GH_AW_PROMPT_cb394fcc49f34119_EOF' - GH_AW_PROMPT_8a50efd984b24b79_EOF + GH_AW_PROMPT_cb394fcc49f34119_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8a50efd984b24b79_EOF' + cat << 'GH_AW_PROMPT_cb394fcc49f34119_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -341,14 +355,14 @@ jobs: {{/if}} - GH_AW_PROMPT_8a50efd984b24b79_EOF + GH_AW_PROMPT_cb394fcc49f34119_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_8a50efd984b24b79_EOF' + cat << 'GH_AW_PROMPT_cb394fcc49f34119_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-caveman-optimizer.md}} - GH_AW_PROMPT_8a50efd984b24b79_EOF + GH_AW_PROMPT_cb394fcc49f34119_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -452,6 +466,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycavemanoptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -597,9 +612,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_06f293dbc5372780_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6810385d64788eaf_EOF' {"create_pull_request":{"allowed_files":[".github/aw/**",".github/agents/**"],"draft":false,"expires":72,"labels":["documentation","automation","prompt-quality"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"allowed","title_prefix":"[caveman] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_06f293dbc5372780_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_6810385d64788eaf_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -770,7 +785,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -815,7 +830,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1195,6 +1210,8 @@ jobs: group: "gh-aw-conclusion-daily-caveman-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1448,6 +1465,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1672,6 +1691,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1760,6 +1781,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: "${{ needs.activation.outputs.model_size }}" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-caveman-optimizer" GH_AW_WORKFLOW_EMOJI: "โšก" @@ -1888,6 +1910,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycavemanoptimizer steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-choice-test.lock.yml b/.github/workflows/daily-choice-test.lock.yml index a7fa0cdaf63..0c88cce4b0f 100644 --- a/.github/workflows/daily-choice-test.lock.yml +++ b/.github/workflows/daily-choice-test.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,20 +271,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_7bb2b44b166ad51d_EOF' + cat << 'GH_AW_PROMPT_6d3633ccc9152d02_EOF' - GH_AW_PROMPT_7bb2b44b166ad51d_EOF + GH_AW_PROMPT_6d3633ccc9152d02_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_7bb2b44b166ad51d_EOF' + cat << 'GH_AW_PROMPT_6d3633ccc9152d02_EOF' Tools: missing_tool, missing_data, noop, test_environment - GH_AW_PROMPT_7bb2b44b166ad51d_EOF + GH_AW_PROMPT_6d3633ccc9152d02_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_7bb2b44b166ad51d_EOF' + cat << 'GH_AW_PROMPT_6d3633ccc9152d02_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,14 +313,14 @@ jobs: {{/if}} - GH_AW_PROMPT_7bb2b44b166ad51d_EOF + GH_AW_PROMPT_6d3633ccc9152d02_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_7bb2b44b166ad51d_EOF' + cat << 'GH_AW_PROMPT_6d3633ccc9152d02_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-choice-test.md}} - GH_AW_PROMPT_7bb2b44b166ad51d_EOF + GH_AW_PROMPT_6d3633ccc9152d02_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -401,6 +415,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailychoicetest outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -528,9 +543,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d0b4770e028b3f06_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3017de24ec4e8ae1_EOF' {"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"test_environment":{"description":"A test job with choice input","inputs":{"environment":{"default":null,"description":"Target environment","options":["staging","production"],"required":true,"type":"choice"},"test_type":{"default":null,"description":"Type of test to run","options":["smoke","integration","e2e"],"required":true,"type":"choice"}},"output":"Environment test completed successfully"}} - GH_AW_SAFE_OUTPUTS_CONFIG_d0b4770e028b3f06_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3017de24ec4e8ae1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -690,7 +705,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -735,7 +750,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1090,6 +1105,8 @@ jobs: group: "gh-aw-conclusion-daily-choice-test" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1338,6 +1355,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1570,6 +1589,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUTS_STAGED: "true" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-choice-test" diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index 9f2924737f3..534b6a2599b 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -123,6 +123,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -266,6 +267,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -284,21 +298,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8813618104d1e7fd_EOF' + cat << 'GH_AW_PROMPT_a48953d0deb9ea2a_EOF' - GH_AW_PROMPT_8813618104d1e7fd_EOF + GH_AW_PROMPT_a48953d0deb9ea2a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8813618104d1e7fd_EOF' + cat << 'GH_AW_PROMPT_a48953d0deb9ea2a_EOF' Tools: add_comment(max:5), create_issue(max:3), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_8813618104d1e7fd_EOF + GH_AW_PROMPT_a48953d0deb9ea2a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8813618104d1e7fd_EOF' + cat << 'GH_AW_PROMPT_a48953d0deb9ea2a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -327,16 +341,16 @@ jobs: {{/if}} - GH_AW_PROMPT_8813618104d1e7fd_EOF + GH_AW_PROMPT_a48953d0deb9ea2a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_8813618104d1e7fd_EOF' + cat << 'GH_AW_PROMPT_a48953d0deb9ea2a_EOF' {{#runtime-import .github/workflows/shared/go-make.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-cli-performance.md}} - GH_AW_PROMPT_8813618104d1e7fd_EOF + GH_AW_PROMPT_a48953d0deb9ea2a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -451,6 +465,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycliperformance outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -587,9 +602,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d8c9a9a0779992f5_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_005903c74aa99c48_EOF' {"add_comment":{"max":5},"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[daily-cli-performance] "},"create_issue":{"expires":48,"group":true,"labels":["performance","automation","cookie"],"max":3,"title_prefix":"[performance] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":131072,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_d8c9a9a0779992f5_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_005903c74aa99c48_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -774,7 +789,7 @@ jobs: - name: Write MCP Scripts Config run: | mkdir -p "${RUNNER_TEMP}/gh-aw/mcp-scripts/logs" - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_469f1a852a85f36b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_bab178232d2c40e3_EOF' { "serverName": "mcpscripts", "version": "1.0.0", @@ -818,8 +833,8 @@ jobs: } ] } - GH_AW_MCP_SCRIPTS_TOOLS_469f1a852a85f36b_EOF - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF' + GH_AW_MCP_SCRIPTS_TOOLS_bab178232d2c40e3_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF' const path = require("path"); const { startHttpServer } = require("./mcp_scripts_mcp_server_http.cjs"); const configPath = path.join(__dirname, "tools.json"); @@ -833,12 +848,12 @@ jobs: console.error("Failed to start mcp-scripts HTTP server:", error); process.exit(1); }); - GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF + GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" - name: Write MCP Scripts Tool Files run: | - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/go.sh" << 'GH_AW_MCP_SCRIPTS_SH_GO_0c369cdb9541bbbc_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/go.sh" << 'GH_AW_MCP_SCRIPTS_SH_GO_7b45399736bf1900_EOF' #!/bin/bash # Auto-generated mcp-script tool: go # Execute any Go command. This tool is accessible as 'mcpscripts-go'. Provide the full command after 'go' (e.g., args: 'test ./...'). The tool will run: go . Use single quotes ' for complex args to avoid shell interpretation issues. @@ -850,9 +865,9 @@ jobs: go $INPUT_ARGS - GH_AW_MCP_SCRIPTS_SH_GO_0c369cdb9541bbbc_EOF + GH_AW_MCP_SCRIPTS_SH_GO_7b45399736bf1900_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/go.sh" - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/make.sh" << 'GH_AW_MCP_SCRIPTS_SH_MAKE_2f7cc0abd4078475_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/make.sh" << 'GH_AW_MCP_SCRIPTS_SH_MAKE_7e3f3e7ed66106db_EOF' #!/bin/bash # Auto-generated mcp-script tool: make # Execute any Make target. This tool is accessible as 'mcpscripts-make'. Provide the target name(s) (e.g., args: 'build'). The tool will run: make . Use single quotes ' for complex args to avoid shell interpretation issues. @@ -864,7 +879,7 @@ jobs: make $INPUT_ARGS - GH_AW_MCP_SCRIPTS_SH_MAKE_2f7cc0abd4078475_EOF + GH_AW_MCP_SCRIPTS_SH_MAKE_7e3f3e7ed66106db_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/make.sh" - name: Generate MCP Scripts Server Config @@ -938,7 +953,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_cdec53df44627bcd_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c702096acf3e6706_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "mcpscripts": { @@ -998,7 +1013,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_cdec53df44627bcd_EOF + GH_AW_MCP_CONFIG_c702096acf3e6706_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1325,6 +1340,8 @@ jobs: group: "gh-aw-conclusion-daily-cli-performance" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1579,6 +1596,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1795,6 +1814,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} changes_result: ${{ steps.changes.outcome }} @@ -1870,6 +1891,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/cli-performance" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1971,6 +1994,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-cli-performance" GH_AW_WORKFLOW_EMOJI: "โšก" diff --git a/.github/workflows/daily-cli-tools-tester.lock.yml b/.github/workflows/daily-cli-tools-tester.lock.yml index 4080009c261..0fbf96c8cec 100644 --- a/.github/workflows/daily-cli-tools-tester.lock.yml +++ b/.github/workflows/daily-cli-tools-tester.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,20 +275,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1affd240e02a3d82_EOF' + cat << 'GH_AW_PROMPT_b59e119b4752f547_EOF' - GH_AW_PROMPT_1affd240e02a3d82_EOF + GH_AW_PROMPT_b59e119b4752f547_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1affd240e02a3d82_EOF' + cat << 'GH_AW_PROMPT_b59e119b4752f547_EOF' Tools: create_issue, create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_1affd240e02a3d82_EOF + GH_AW_PROMPT_b59e119b4752f547_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1affd240e02a3d82_EOF' + cat << 'GH_AW_PROMPT_b59e119b4752f547_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,14 +317,14 @@ jobs: {{/if}} - GH_AW_PROMPT_1affd240e02a3d82_EOF + GH_AW_PROMPT_b59e119b4752f547_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1affd240e02a3d82_EOF' + cat << 'GH_AW_PROMPT_b59e119b4752f547_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-cli-tools-tester.md}} - GH_AW_PROMPT_1affd240e02a3d82_EOF + GH_AW_PROMPT_b59e119b4752f547_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyclitoolstester outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -594,9 +609,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f1ee550a9a0fe5f9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_47278c8dd51bc4af_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[cli-tools-test] "},"create_issue":{"expires":168,"labels":["testing","automation","cli-tools"],"max":1,"title_prefix":"[cli-tools-test] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_f1ee550a9a0fe5f9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_47278c8dd51bc4af_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -795,7 +810,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e39ef0e5c25dae7b_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_439bd56e98e9d691_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -876,7 +891,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e39ef0e5c25dae7b_EOF + GH_AW_MCP_CONFIG_439bd56e98e9d691_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1157,6 +1172,8 @@ jobs: group: "gh-aw-conclusion-daily-cli-tools-tester" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1402,6 +1419,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1637,6 +1656,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "daily-cli-tools-tester" diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index e54f156db93..9430a2c1a1e 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -249,6 +250,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -301,24 +315,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_5bd4627860d7f4b3_EOF' + cat << 'GH_AW_PROMPT_f235813cec844a4a_EOF' - GH_AW_PROMPT_5bd4627860d7f4b3_EOF + GH_AW_PROMPT_f235813cec844a4a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_5bd4627860d7f4b3_EOF' + cat << 'GH_AW_PROMPT_f235813cec844a4a_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_5bd4627860d7f4b3_EOF + GH_AW_PROMPT_f235813cec844a4a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_5bd4627860d7f4b3_EOF' + cat << 'GH_AW_PROMPT_f235813cec844a4a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -347,9 +361,9 @@ jobs: {{/if}} - GH_AW_PROMPT_5bd4627860d7f4b3_EOF + GH_AW_PROMPT_f235813cec844a4a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_5bd4627860d7f4b3_EOF' + cat << 'GH_AW_PROMPT_f235813cec844a4a_EOF' {{#runtime-import .github/workflows/shared/python-dataviz.md}} {{#runtime-import .github/workflows/shared/trends.md}} @@ -357,7 +371,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-code-metrics.md}} - GH_AW_PROMPT_5bd4627860d7f4b3_EOF + GH_AW_PROMPT_f235813cec844a4a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -473,6 +487,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycodemetrics outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -650,9 +665,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2d7c66e2c4793e7d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2c6d711eaf0406d7_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[daily-code-metrics] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":131072}]},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_2d7c66e2c4793e7d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2c6d711eaf0406d7_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -822,7 +837,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -867,7 +882,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1276,6 +1291,8 @@ jobs: group: "gh-aw-conclusion-daily-code-metrics" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1533,6 +1550,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1757,6 +1776,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1836,6 +1857,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|daily/daily-code-metrics" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1935,6 +1958,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-code-metrics" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -2032,6 +2056,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycodemetrics steps: - name: Checkout actions folder @@ -2087,6 +2112,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index 8cc63d50b45..5951ec10962 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -296,24 +310,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_30ced3cb4e233b7c_EOF' + cat << 'GH_AW_PROMPT_b808648e958075a0_EOF' - GH_AW_PROMPT_30ced3cb4e233b7c_EOF + GH_AW_PROMPT_b808648e958075a0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_30ced3cb4e233b7c_EOF' + cat << 'GH_AW_PROMPT_b808648e958075a0_EOF' Tools: create_issue, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_30ced3cb4e233b7c_EOF + GH_AW_PROMPT_b808648e958075a0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_30ced3cb4e233b7c_EOF' + cat << 'GH_AW_PROMPT_b808648e958075a0_EOF' - GH_AW_PROMPT_30ced3cb4e233b7c_EOF + GH_AW_PROMPT_b808648e958075a0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_30ced3cb4e233b7c_EOF' + cat << 'GH_AW_PROMPT_b808648e958075a0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -342,15 +356,15 @@ jobs: {{/if}} - GH_AW_PROMPT_30ced3cb4e233b7c_EOF + GH_AW_PROMPT_b808648e958075a0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_30ced3cb4e233b7c_EOF' + cat << 'GH_AW_PROMPT_b808648e958075a0_EOF' {{#runtime-import .github/workflows/shared/community-attribution.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/issue-dedup.md}} {{#runtime-import .github/workflows/daily-community-attribution.md}} - GH_AW_PROMPT_30ced3cb4e233b7c_EOF + GH_AW_PROMPT_b808648e958075a0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -460,6 +474,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycommunityattribution outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -612,9 +627,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_284fe9e5a1019f65_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2a2b60a4745244b9_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"group_by_day":true,"labels":["community","automation"],"max":1,"title_prefix":"[community-attribution] "},"create_pull_request":{"draft":true,"expires":24,"labels":["community","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[community] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":102400}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_284fe9e5a1019f65_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2a2b60a4745244b9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -824,7 +839,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -870,7 +885,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1215,6 +1230,8 @@ jobs: group: "gh-aw-conclusion-daily-community-attribution" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1464,6 +1481,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1687,6 +1706,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1766,6 +1787,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|master" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1866,6 +1889,7 @@ jobs: GH_AW_ENGINE_MODEL: "claude-haiku-4.5" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ†" GH_AW_WORKFLOW_ID: "daily-community-attribution" diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index e9801b25532..d731c8eb38a 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -293,21 +307,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ae3c96677dd2b5bb_EOF' + cat << 'GH_AW_PROMPT_aba2755163d177d0_EOF' - GH_AW_PROMPT_ae3c96677dd2b5bb_EOF + GH_AW_PROMPT_aba2755163d177d0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ae3c96677dd2b5bb_EOF' + cat << 'GH_AW_PROMPT_aba2755163d177d0_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_ae3c96677dd2b5bb_EOF + GH_AW_PROMPT_aba2755163d177d0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ae3c96677dd2b5bb_EOF' + cat << 'GH_AW_PROMPT_aba2755163d177d0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -336,9 +350,9 @@ jobs: {{/if}} - GH_AW_PROMPT_ae3c96677dd2b5bb_EOF + GH_AW_PROMPT_aba2755163d177d0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ae3c96677dd2b5bb_EOF' + cat << 'GH_AW_PROMPT_aba2755163d177d0_EOF' {{#runtime-import .github/workflows/shared/go-source-analysis.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -349,7 +363,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-compiler-quality.md}} - GH_AW_PROMPT_ae3c96677dd2b5bb_EOF + GH_AW_PROMPT_aba2755163d177d0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -457,6 +471,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycompilerquality outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -601,9 +616,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ce519c6d59920a67_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4ec57b7c5750ccd8_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"min_body_length":200,"title_prefix":"[daily-compiler-quality] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_ce519c6d59920a67_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_4ec57b7c5750ccd8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -761,7 +776,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -836,7 +851,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1191,6 +1206,8 @@ jobs: group: "gh-aw-conclusion-daily-compiler-quality" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1444,6 +1461,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1668,6 +1687,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1757,6 +1778,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-compiler-quality" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -1854,6 +1876,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycompilerquality steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml b/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml index 0f43bf699e3..3aa7c66bae2 100644 --- a/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml +++ b/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -409,6 +423,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycompilerthreatspecoptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -1115,6 +1130,8 @@ jobs: group: "gh-aw-conclusion-daily-compiler-threat-spec-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1367,6 +1384,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1603,6 +1622,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-compiler-threat-spec-optimizer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" diff --git a/.github/workflows/daily-credit-limit-test.lock.yml b/.github/workflows/daily-credit-limit-test.lock.yml index 89105a82b75..56691e5d785 100644 --- a/.github/workflows/daily-credit-limit-test.lock.yml +++ b/.github/workflows/daily-credit-limit-test.lock.yml @@ -76,6 +76,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "1" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -221,6 +222,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -237,20 +251,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f901934ad3505199_EOF' + cat << 'GH_AW_PROMPT_72bd39af46d4ccd1_EOF' - GH_AW_PROMPT_f901934ad3505199_EOF + GH_AW_PROMPT_72bd39af46d4ccd1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f901934ad3505199_EOF' + cat << 'GH_AW_PROMPT_72bd39af46d4ccd1_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_f901934ad3505199_EOF + GH_AW_PROMPT_72bd39af46d4ccd1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f901934ad3505199_EOF' + cat << 'GH_AW_PROMPT_72bd39af46d4ccd1_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -279,12 +293,12 @@ jobs: {{/if}} - GH_AW_PROMPT_f901934ad3505199_EOF + GH_AW_PROMPT_72bd39af46d4ccd1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_f901934ad3505199_EOF' + cat << 'GH_AW_PROMPT_72bd39af46d4ccd1_EOF' {{#runtime-import .github/workflows/daily-credit-limit-test.md}} - GH_AW_PROMPT_f901934ad3505199_EOF + GH_AW_PROMPT_72bd39af46d4ccd1_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -378,6 +392,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailycreditlimittest outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -500,9 +515,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_12e6c1096ed455a0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1243120d6d6959b3_EOF' {"create_issue":{"close_older_issues":true,"close_older_key":"daily-credit-limit-test","expires":24,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_12e6c1096ed455a0_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_1243120d6d6959b3_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -672,7 +687,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -729,7 +744,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF + GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1000,6 +1015,8 @@ jobs: group: "gh-aw-conclusion-daily-credit-limit-test" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1244,6 +1261,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1478,6 +1497,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"๐Ÿงช [{workflow_name}]({run_url}) โ€” credit limit test running (intentionally broken, limit: 1 AI credit/day).\",\"runSuccess\":\"โš ๏ธ [{workflow_name}]({run_url}) completed without hitting the daily limit of 1 AI credit โ€” verify that credit accounting is working.\",\"runFailure\":\"๐Ÿšซ [{workflow_name}]({run_url}) {status} โ€” expected: the daily AI credit limit of 1 was reached and this run was blocked.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index 1adba8c2173..f586932dfe1 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -299,24 +313,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_144c989bf3234729_EOF' + cat << 'GH_AW_PROMPT_b44c664d620a0e84_EOF' - GH_AW_PROMPT_144c989bf3234729_EOF + GH_AW_PROMPT_b44c664d620a0e84_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_144c989bf3234729_EOF' + cat << 'GH_AW_PROMPT_b44c664d620a0e84_EOF' Tools: create_issue, create_discussion, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_144c989bf3234729_EOF + GH_AW_PROMPT_b44c664d620a0e84_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_144c989bf3234729_EOF' + cat << 'GH_AW_PROMPT_b44c664d620a0e84_EOF' - GH_AW_PROMPT_144c989bf3234729_EOF + GH_AW_PROMPT_b44c664d620a0e84_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_144c989bf3234729_EOF' + cat << 'GH_AW_PROMPT_b44c664d620a0e84_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -345,14 +359,14 @@ jobs: {{/if}} - GH_AW_PROMPT_144c989bf3234729_EOF + GH_AW_PROMPT_b44c664d620a0e84_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_144c989bf3234729_EOF' + cat << 'GH_AW_PROMPT_b44c664d620a0e84_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-doc-healer.md}} - GH_AW_PROMPT_144c989bf3234729_EOF + GH_AW_PROMPT_b44c664d620a0e84_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -457,6 +471,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailydochealer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -602,9 +617,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_34982086d8425378_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2103410bf31015af_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[doc-healer] "},"create_issue":{"assignees":["copilot"],"expires":72,"labels":["documentation","automation"],"max":1,"title_prefix":"[doc-healer] "},"create_pull_request":{"expires":72,"labels":["documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review","title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_34982086d8425378_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2103410bf31015af_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -841,7 +856,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -886,7 +901,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1299,6 +1314,8 @@ jobs: group: "gh-aw-conclusion-daily-doc-healer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1554,6 +1571,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1778,6 +1797,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1867,6 +1888,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: "${{ needs.activation.outputs.model_size }}" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-doc-healer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" @@ -1999,6 +2021,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailydochealer steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 5cdd7dedd94..735c22a53d1 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -295,24 +309,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a04dbf5c666fbcfa_EOF' + cat << 'GH_AW_PROMPT_cb5755ecc3ef13cd_EOF' - GH_AW_PROMPT_a04dbf5c666fbcfa_EOF + GH_AW_PROMPT_cb5755ecc3ef13cd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a04dbf5c666fbcfa_EOF' + cat << 'GH_AW_PROMPT_cb5755ecc3ef13cd_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_a04dbf5c666fbcfa_EOF + GH_AW_PROMPT_cb5755ecc3ef13cd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_a04dbf5c666fbcfa_EOF' + cat << 'GH_AW_PROMPT_cb5755ecc3ef13cd_EOF' - GH_AW_PROMPT_a04dbf5c666fbcfa_EOF + GH_AW_PROMPT_cb5755ecc3ef13cd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a04dbf5c666fbcfa_EOF' + cat << 'GH_AW_PROMPT_cb5755ecc3ef13cd_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -341,15 +355,15 @@ jobs: {{/if}} - GH_AW_PROMPT_a04dbf5c666fbcfa_EOF + GH_AW_PROMPT_cb5755ecc3ef13cd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_a04dbf5c666fbcfa_EOF' + cat << 'GH_AW_PROMPT_cb5755ecc3ef13cd_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-doc-updater.md}} - GH_AW_PROMPT_a04dbf5c666fbcfa_EOF + GH_AW_PROMPT_cb5755ecc3ef13cd_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -454,6 +468,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailydocupdater outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -593,9 +608,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_29c67ab0123d93dd_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_095fce7ddc2ae743_EOF' {"create_pull_request":{"auto_merge":true,"draft":false,"expires":24,"labels":["documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","PI.md","AGENTS.md"],"protected_files_policy":"fallback-to-issue","reviewers":["copilot"],"title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_29c67ab0123d93dd_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_095fce7ddc2ae743_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -766,7 +781,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -811,7 +826,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1101,6 +1116,8 @@ jobs: group: "gh-aw-conclusion-daily-doc-updater" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1349,6 +1366,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1565,6 +1584,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1653,6 +1674,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-doc-updater" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" @@ -1781,6 +1803,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailydocupdater steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-experiment-report.lock.yml b/.github/workflows/daily-experiment-report.lock.yml index 5f785980e7b..e2ed32b8ea7 100644 --- a/.github/workflows/daily-experiment-report.lock.yml +++ b/.github/workflows/daily-experiment-report.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,23 +268,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1d3e2237ad9f9dad_EOF' + cat << 'GH_AW_PROMPT_bd65a478f2a4216d_EOF' - GH_AW_PROMPT_1d3e2237ad9f9dad_EOF + GH_AW_PROMPT_bd65a478f2a4216d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1d3e2237ad9f9dad_EOF' + cat << 'GH_AW_PROMPT_bd65a478f2a4216d_EOF' Tools: add_comment(max:10), create_discussion, add_labels(max:10), upload_asset(max:10), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_1d3e2237ad9f9dad_EOF + GH_AW_PROMPT_bd65a478f2a4216d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1d3e2237ad9f9dad_EOF' + cat << 'GH_AW_PROMPT_bd65a478f2a4216d_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,15 +313,15 @@ jobs: {{/if}} - GH_AW_PROMPT_1d3e2237ad9f9dad_EOF + GH_AW_PROMPT_bd65a478f2a4216d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1d3e2237ad9f9dad_EOF' + cat << 'GH_AW_PROMPT_bd65a478f2a4216d_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/trending-charts-simple.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-experiment-report.md}} - GH_AW_PROMPT_1d3e2237ad9f9dad_EOF + GH_AW_PROMPT_bd65a478f2a4216d_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -413,6 +427,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyexperimentreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -582,9 +597,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ea34d22e572d01af_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_797b754970457f1e_EOF' {"add_comment":{"max":10},"add_labels":{"max":10},"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[experiments] "},"create_report_incomplete_issue":{},"max_bot_mentions":1,"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":10,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_ea34d22e572d01af_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_797b754970457f1e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -804,7 +819,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_9bf1d210d407ffb0_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_0d6bd934854678c9_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -866,7 +881,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_9bf1d210d407ffb0_EOF + GH_AW_MCP_CONFIG_0d6bd934854678c9_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1187,6 +1202,8 @@ jobs: group: "gh-aw-conclusion-daily-experiment-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1435,6 +1452,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1672,6 +1691,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "daily-experiment-report" @@ -1770,6 +1790,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyexperimentreport steps: - name: Checkout actions folder @@ -1825,6 +1846,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-fact.lock.yml b/.github/workflows/daily-fact.lock.yml index 005831ba112..78dd5ab5e8a 100644 --- a/.github/workflows/daily-fact.lock.yml +++ b/.github/workflows/daily-fact.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -249,6 +250,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -301,21 +315,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF' + cat << 'GH_AW_PROMPT_4b38b30de5af622b_EOF' - GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF + GH_AW_PROMPT_4b38b30de5af622b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF' + cat << 'GH_AW_PROMPT_4b38b30de5af622b_EOF' Tools: add_comment, missing_tool, missing_data, noop - GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF + GH_AW_PROMPT_4b38b30de5af622b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF' + cat << 'GH_AW_PROMPT_4b38b30de5af622b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -344,9 +358,9 @@ jobs: {{/if}} - GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF + GH_AW_PROMPT_4b38b30de5af622b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF' + cat << 'GH_AW_PROMPT_4b38b30de5af622b_EOF' @@ -449,7 +463,7 @@ jobs: {{#runtime-import shared/noop-reminder.md}} - GH_AW_PROMPT_58ce1aa3d3b6eeac_EOF + GH_AW_PROMPT_4b38b30de5af622b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -559,6 +573,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyfact outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -718,9 +733,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_46dfeb84b15fd4ae_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3fafdd59e475ac82_EOF' {"add_comment":{"max":1,"target":"4750"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_46dfeb84b15fd4ae_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3fafdd59e475ac82_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -872,7 +887,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_b8243ad53e8669d4_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_5b21aab0f7e243ea_EOF [history] persistence = "none" @@ -900,11 +915,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_b8243ad53e8669d4_EOF + GH_AW_MCP_CONFIG_5b21aab0f7e243ea_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_160ac705eb0f6ff9_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f89a417861d65cce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "mempalace": { @@ -981,11 +996,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_160ac705eb0f6ff9_EOF + GH_AW_MCP_CONFIG_f89a417861d65cce_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF model_provider = "openai-proxy" @@ -997,7 +1012,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1303,6 +1318,8 @@ jobs: group: "gh-aw-conclusion-daily-fact" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1555,6 +1572,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1772,6 +1791,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1860,6 +1881,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: "gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿชถ *Penned with care by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ“œ Hark! The muse awakens โ€” [{workflow_name}]({run_url}) begins its verse upon this {event_type}...\",\"runSuccess\":\"โœจ Lo! [{workflow_name}]({run_url}) hath woven its tale to completion, like a sonnet finding its final rhyme. ๐ŸŒŸ\",\"runFailure\":\"๐ŸŒง๏ธ Alas! [{workflow_name}]({run_url}) {status}, its quill fallen mid-verse. The poem remains unfinished...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-fact-thread" @@ -1960,6 +1982,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyfact steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-file-diet.lock.yml b/.github/workflows/daily-file-diet.lock.yml index 78bd01eac36..d9f723d17f0 100644 --- a/.github/workflows/daily-file-diet.lock.yml +++ b/.github/workflows/daily-file-diet.lock.yml @@ -103,6 +103,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -246,6 +247,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -262,20 +276,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e5ac9a27400e003b_EOF' + cat << 'GH_AW_PROMPT_54f5f93c7f46699a_EOF' - GH_AW_PROMPT_e5ac9a27400e003b_EOF + GH_AW_PROMPT_54f5f93c7f46699a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e5ac9a27400e003b_EOF' + cat << 'GH_AW_PROMPT_54f5f93c7f46699a_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_e5ac9a27400e003b_EOF + GH_AW_PROMPT_54f5f93c7f46699a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e5ac9a27400e003b_EOF' + cat << 'GH_AW_PROMPT_54f5f93c7f46699a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -304,9 +318,9 @@ jobs: {{/if}} - GH_AW_PROMPT_e5ac9a27400e003b_EOF + GH_AW_PROMPT_54f5f93c7f46699a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e5ac9a27400e003b_EOF' + cat << 'GH_AW_PROMPT_54f5f93c7f46699a_EOF' {{#runtime-import .github/workflows/shared/go-source-analysis.md}} {{#runtime-import .github/workflows/shared/safe-output-app.md}} @@ -319,7 +333,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-file-diet.md}} - GH_AW_PROMPT_e5ac9a27400e003b_EOF + GH_AW_PROMPT_54f5f93c7f46699a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -419,6 +433,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyfilediet outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -543,9 +558,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_478518fa6b7cedb3_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e26cfb140a289f90_EOF' {"create_issue":{"expires":48,"labels":["refactoring","code-health","automated-analysis","cookie"],"max":1,"title_prefix":"[file-diet] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_478518fa6b7cedb3_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_e26cfb140a289f90_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -713,7 +728,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -788,7 +803,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1113,6 +1128,8 @@ jobs: group: "gh-aw-conclusion-daily-file-diet" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1361,6 +1378,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1577,6 +1596,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1652,6 +1673,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-file-diet" GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index cf136b348e2..c3605ece29a 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,22 +274,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_5c1625bdc2bb1674_EOF' + cat << 'GH_AW_PROMPT_d882ec4c9ddd54d5_EOF' - GH_AW_PROMPT_5c1625bdc2bb1674_EOF + GH_AW_PROMPT_d882ec4c9ddd54d5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_5c1625bdc2bb1674_EOF' + cat << 'GH_AW_PROMPT_d882ec4c9ddd54d5_EOF' Tools: upload_asset(max:3), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_5c1625bdc2bb1674_EOF + GH_AW_PROMPT_d882ec4c9ddd54d5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_5c1625bdc2bb1674_EOF' + cat << 'GH_AW_PROMPT_d882ec4c9ddd54d5_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -304,15 +318,15 @@ jobs: {{/if}} - GH_AW_PROMPT_5c1625bdc2bb1674_EOF + GH_AW_PROMPT_d882ec4c9ddd54d5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_5c1625bdc2bb1674_EOF' + cat << 'GH_AW_PROMPT_d882ec4c9ddd54d5_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/firewall-policy-rule-attribution.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-firewall-report.md}} - GH_AW_PROMPT_5c1625bdc2bb1674_EOF + GH_AW_PROMPT_d882ec4c9ddd54d5_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -410,6 +424,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyfirewallreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -599,9 +614,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a6cdd27b462c7d6f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5b2c903ad343c971_EOF' {"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":3,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_a6cdd27b462c7d6f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5b2c903ad343c971_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -744,7 +759,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7292df9048689c98_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -809,7 +824,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF + GH_AW_MCP_CONFIG_7292df9048689c98_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1116,6 +1131,8 @@ jobs: group: "gh-aw-conclusion-daily-firewall-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1364,6 +1381,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1628,6 +1647,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-firewall-report" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" @@ -1724,6 +1744,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-formal-spec-verifier.lock.yml b/.github/workflows/daily-formal-spec-verifier.lock.yml index e74b1a170a3..9be72d1a90f 100644 --- a/.github/workflows/daily-formal-spec-verifier.lock.yml +++ b/.github/workflows/daily-formal-spec-verifier.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -237,6 +238,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -255,22 +269,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_3b11ec1dfe7963c8_EOF' + cat << 'GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF' - GH_AW_PROMPT_3b11ec1dfe7963c8_EOF + GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_3b11ec1dfe7963c8_EOF' + cat << 'GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_3b11ec1dfe7963c8_EOF + GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_3b11ec1dfe7963c8_EOF' + cat << 'GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,16 +313,16 @@ jobs: {{/if}} - GH_AW_PROMPT_3b11ec1dfe7963c8_EOF + GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_3b11ec1dfe7963c8_EOF' + cat << 'GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-formal-spec-verifier.md}} - GH_AW_PROMPT_3b11ec1dfe7963c8_EOF + GH_AW_PROMPT_3ee8ad2d98d2ce52_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -427,6 +441,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyformalspecverifier outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -581,9 +596,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_85b303066ae18973_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a73f0d132c5e5aeb_EOF' {"create_issue":{"assignees":["copilot"],"expires":168,"labels":["automation","formal-verification","testing","specifications"],"max":1,"title_prefix":"[formal-spec] "},"create_report_incomplete_issue":{},"max_bot_mentions":1,"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":65536,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_85b303066ae18973_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a73f0d132c5e5aeb_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -754,7 +769,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -800,7 +815,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1159,6 +1174,8 @@ jobs: group: "gh-aw-conclusion-daily-formal-spec-verifier" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1414,6 +1431,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1640,6 +1659,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/formal-spec-verifier" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1739,6 +1760,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-formal-spec-verifier" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ฌ" @@ -1840,6 +1862,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyformalspecverifier steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-function-namer.lock.yml b/.github/workflows/daily-function-namer.lock.yml index 8b3498d208e..38710a668b0 100644 --- a/.github/workflows/daily-function-namer.lock.yml +++ b/.github/workflows/daily-function-namer.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -263,21 +277,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2ff0f3fca457b7b0_EOF' + cat << 'GH_AW_PROMPT_91c52166b60c4a11_EOF' - GH_AW_PROMPT_2ff0f3fca457b7b0_EOF + GH_AW_PROMPT_91c52166b60c4a11_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2ff0f3fca457b7b0_EOF' + cat << 'GH_AW_PROMPT_91c52166b60c4a11_EOF' Tools: create_issue, create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_2ff0f3fca457b7b0_EOF + GH_AW_PROMPT_91c52166b60c4a11_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2ff0f3fca457b7b0_EOF' + cat << 'GH_AW_PROMPT_91c52166b60c4a11_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -306,9 +320,9 @@ jobs: {{/if}} - GH_AW_PROMPT_2ff0f3fca457b7b0_EOF + GH_AW_PROMPT_91c52166b60c4a11_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2ff0f3fca457b7b0_EOF' + cat << 'GH_AW_PROMPT_91c52166b60c4a11_EOF' {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -317,7 +331,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/daily-function-namer.md}} - GH_AW_PROMPT_2ff0f3fca457b7b0_EOF + GH_AW_PROMPT_91c52166b60c4a11_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -421,6 +435,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyfunctionnamer outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -562,9 +577,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8a8fa24e4891e2b7_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_73e3613e1ac93adc_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[function-namer] "},"create_issue":{"close_older_issues":true,"expires":168,"labels":["refactoring","code-quality","automated-analysis","cookie"],"max":1,"title_prefix":"[function-namer] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_8a8fa24e4891e2b7_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_73e3613e1ac93adc_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -759,7 +774,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_77337373ac920130_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -830,7 +845,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_77337373ac920130_EOF + GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1117,6 +1132,8 @@ jobs: group: "gh-aw-conclusion-daily-function-namer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1365,6 +1382,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1592,6 +1611,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-function-namer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" @@ -1691,6 +1711,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyfunctionnamer steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-geo-optimizer.lock.yml b/.github/workflows/daily-geo-optimizer.lock.yml index f44e2cc8c93..bb743f6a4d8 100644 --- a/.github/workflows/daily-geo-optimizer.lock.yml +++ b/.github/workflows/daily-geo-optimizer.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -237,6 +238,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,20 +268,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_0ac9c0dc07191c94_EOF' + cat << 'GH_AW_PROMPT_f59502997453c6e7_EOF' - GH_AW_PROMPT_0ac9c0dc07191c94_EOF + GH_AW_PROMPT_f59502997453c6e7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_0ac9c0dc07191c94_EOF' + cat << 'GH_AW_PROMPT_f59502997453c6e7_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_0ac9c0dc07191c94_EOF + GH_AW_PROMPT_f59502997453c6e7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_0ac9c0dc07191c94_EOF' + cat << 'GH_AW_PROMPT_f59502997453c6e7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -296,15 +310,15 @@ jobs: {{/if}} - GH_AW_PROMPT_0ac9c0dc07191c94_EOF + GH_AW_PROMPT_f59502997453c6e7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_0ac9c0dc07191c94_EOF' + cat << 'GH_AW_PROMPT_f59502997453c6e7_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-geo-optimizer.md}} - GH_AW_PROMPT_0ac9c0dc07191c94_EOF + GH_AW_PROMPT_f59502997453c6e7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailygeooptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -540,9 +555,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d41db2492edb2792_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_be3dab0ac0f4a695_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[geo-optimizer] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_d41db2492edb2792_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_be3dab0ac0f4a695_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -700,7 +715,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -746,7 +761,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1067,6 +1082,8 @@ jobs: group: "gh-aw-conclusion-daily-geo-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1317,6 +1334,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1619,6 +1638,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-geo-optimizer" GH_AW_WORKFLOW_EMOJI: "๐ŸŒ" diff --git a/.github/workflows/daily-hippo-learn.lock.yml b/.github/workflows/daily-hippo-learn.lock.yml index 5de92ba3b39..85d609eaa38 100644 --- a/.github/workflows/daily-hippo-learn.lock.yml +++ b/.github/workflows/daily-hippo-learn.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -236,6 +237,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -252,21 +266,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f9197b2bcb4dc826_EOF' + cat << 'GH_AW_PROMPT_fda463f56dd5e1aa_EOF' - GH_AW_PROMPT_f9197b2bcb4dc826_EOF + GH_AW_PROMPT_fda463f56dd5e1aa_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f9197b2bcb4dc826_EOF' + cat << 'GH_AW_PROMPT_fda463f56dd5e1aa_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_f9197b2bcb4dc826_EOF + GH_AW_PROMPT_fda463f56dd5e1aa_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f9197b2bcb4dc826_EOF' + cat << 'GH_AW_PROMPT_fda463f56dd5e1aa_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -295,15 +309,15 @@ jobs: {{/if}} - GH_AW_PROMPT_f9197b2bcb4dc826_EOF + GH_AW_PROMPT_fda463f56dd5e1aa_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_f9197b2bcb4dc826_EOF' + cat << 'GH_AW_PROMPT_fda463f56dd5e1aa_EOF' {{#runtime-import .github/workflows/shared/hippo-memory.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/daily-hippo-learn.md}} - GH_AW_PROMPT_f9197b2bcb4dc826_EOF + GH_AW_PROMPT_fda463f56dd5e1aa_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyhippolearn outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -560,9 +575,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_530317e4e1ab717c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c01d3d75780502e2_EOF' {"create_discussion":{"category":"announcements","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"๐Ÿฆ› "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_530317e4e1ab717c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c01d3d75780502e2_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -686,7 +701,7 @@ jobs: - name: Write MCP Scripts Config run: | mkdir -p "${RUNNER_TEMP}/gh-aw/mcp-scripts/logs" - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_4889e6be9281302c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_fc4e82710f873b80_EOF' { "serverName": "mcpscripts", "version": "1.0.0", @@ -712,8 +727,8 @@ jobs: } ] } - GH_AW_MCP_SCRIPTS_TOOLS_4889e6be9281302c_EOF - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF' + GH_AW_MCP_SCRIPTS_TOOLS_fc4e82710f873b80_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF' const path = require("path"); const { startHttpServer } = require("./mcp_scripts_mcp_server_http.cjs"); const configPath = path.join(__dirname, "tools.json"); @@ -727,12 +742,12 @@ jobs: console.error("Failed to start mcp-scripts HTTP server:", error); process.exit(1); }); - GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF + GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" - name: Write MCP Scripts Tool Files run: | - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/hippo.sh" << 'GH_AW_MCP_SCRIPTS_SH_HIPPO_dc7ef224a6ce1896_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/hippo.sh" << 'GH_AW_MCP_SCRIPTS_SH_HIPPO_7760bc8e35f18b70_EOF' #!/bin/bash # Auto-generated mcp-script tool: hippo # Execute any hippo-memory CLI command. Accessible as 'mcpscripts-hippo'. Provide arguments after 'hippo'. Examples: args 'learn --git' to extract lessons from git commits, 'sleep' for full consolidation, 'recall "api errors" --budget 2000' to retrieve relevant memories. @@ -744,7 +759,7 @@ jobs: hippo $INPUT_ARGS - GH_AW_MCP_SCRIPTS_SH_HIPPO_dc7ef224a6ce1896_EOF + GH_AW_MCP_SCRIPTS_SH_HIPPO_7760bc8e35f18b70_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/hippo.sh" - name: Generate MCP Scripts Server Config @@ -817,7 +832,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GH_AW_MCP_SCRIPTS_PORT -e GH_AW_MCP_SCRIPTS_API_KEY -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e59d92019bc773f1_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c990023b9e228369_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "mcpscripts": { @@ -876,7 +891,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e59d92019bc773f1_EOF + GH_AW_MCP_CONFIG_c990023b9e228369_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1172,6 +1187,8 @@ jobs: group: "gh-aw-conclusion-daily-hippo-learn" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1420,6 +1437,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1647,6 +1666,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-hippo-learn" GH_AW_WORKFLOW_EMOJI: "๐Ÿฆ›" @@ -1744,6 +1764,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyhippolearn steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index b01a708103f..4138c476b27 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -103,6 +103,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -252,6 +253,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -303,23 +317,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1e6f7985f3cf8201_EOF' + cat << 'GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF' - GH_AW_PROMPT_1e6f7985f3cf8201_EOF + GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1e6f7985f3cf8201_EOF' + cat << 'GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_1e6f7985f3cf8201_EOF + GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1e6f7985f3cf8201_EOF' + cat << 'GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -348,9 +362,9 @@ jobs: {{/if}} - GH_AW_PROMPT_1e6f7985f3cf8201_EOF + GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1e6f7985f3cf8201_EOF' + cat << 'GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/skills/jqschema/SKILL.md}} @@ -363,7 +377,7 @@ jobs: {{#runtime-import .github/shared/editorial.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-issues-report.md}} - GH_AW_PROMPT_1e6f7985f3cf8201_EOF + GH_AW_PROMPT_3878fdeb5e3a1a6a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -471,6 +485,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyissuesreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -789,9 +804,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_048304b008757363_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b9f65d6d5d8ba367_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[daily issues] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_048304b008757363_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b9f65d6d5d8ba367_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -962,7 +977,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -1008,7 +1023,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1343,6 +1358,8 @@ jobs: group: "gh-aw-conclusion-daily-issues-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1596,6 +1613,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1819,6 +1838,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1908,6 +1929,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-issues-report" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“…" @@ -2005,6 +2027,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyissuesreport steps: - name: Checkout actions folder @@ -2060,6 +2083,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-malicious-code-scan.lock.yml b/.github/workflows/daily-malicious-code-scan.lock.yml index b81eba4d148..2a7d5df8a7d 100644 --- a/.github/workflows/daily-malicious-code-scan.lock.yml +++ b/.github/workflows/daily-malicious-code-scan.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -237,6 +238,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -253,20 +267,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ac56977ecb995265_EOF' + cat << 'GH_AW_PROMPT_0924837add30c316_EOF' - GH_AW_PROMPT_ac56977ecb995265_EOF + GH_AW_PROMPT_0924837add30c316_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ac56977ecb995265_EOF' + cat << 'GH_AW_PROMPT_0924837add30c316_EOF' Tools: create_discussion, create_code_scanning_alert, missing_tool, missing_data, noop - GH_AW_PROMPT_ac56977ecb995265_EOF + GH_AW_PROMPT_0924837add30c316_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ac56977ecb995265_EOF' + cat << 'GH_AW_PROMPT_0924837add30c316_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -295,15 +309,15 @@ jobs: {{/if}} - GH_AW_PROMPT_ac56977ecb995265_EOF + GH_AW_PROMPT_0924837add30c316_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ac56977ecb995265_EOF' + cat << 'GH_AW_PROMPT_0924837add30c316_EOF' {{#runtime-import .github/workflows/shared/security-analysis-base.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-malicious-code-scan.md}} - GH_AW_PROMPT_ac56977ecb995265_EOF + GH_AW_PROMPT_0924837add30c316_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -400,6 +414,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailymaliciouscodescan outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -526,9 +541,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e11b1670f34faf7c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4847968394827cfe_EOF' {"create_code_scanning_alert":{"driver":"Malicious Code Scanner"},"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[malicious-code-scan] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e11b1670f34faf7c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_4847968394827cfe_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -730,7 +745,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_1751d95cb2f087f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_69006b47180b42bd_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -792,7 +807,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_1751d95cb2f087f6_EOF + GH_AW_MCP_CONFIG_69006b47180b42bd_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1078,6 +1093,8 @@ jobs: group: "gh-aw-conclusion-daily-malicious-code-scan" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1320,6 +1337,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_TRACKER_ID: "malicious-code-scan" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" GH_AW_WORKFLOW_ID: "daily-malicious-code-scan" @@ -1424,6 +1442,8 @@ jobs: contents: read security-events: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Restore checkout to triggering commit uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/.github/workflows/daily-max-ai-credits-test.lock.yml b/.github/workflows/daily-max-ai-credits-test.lock.yml index f76cde183e9..1db797ddae4 100644 --- a/.github/workflows/daily-max-ai-credits-test.lock.yml +++ b/.github/workflows/daily-max-ai-credits-test.lock.yml @@ -71,6 +71,8 @@ jobs: permissions: actions: read contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -162,6 +164,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -178,20 +193,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2872f1d8904aa2b4_EOF' + cat << 'GH_AW_PROMPT_823d987221e37f8e_EOF' - GH_AW_PROMPT_2872f1d8904aa2b4_EOF + GH_AW_PROMPT_823d987221e37f8e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2872f1d8904aa2b4_EOF' + cat << 'GH_AW_PROMPT_823d987221e37f8e_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_2872f1d8904aa2b4_EOF + GH_AW_PROMPT_823d987221e37f8e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2872f1d8904aa2b4_EOF' + cat << 'GH_AW_PROMPT_823d987221e37f8e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -220,12 +235,12 @@ jobs: {{/if}} - GH_AW_PROMPT_2872f1d8904aa2b4_EOF + GH_AW_PROMPT_823d987221e37f8e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2872f1d8904aa2b4_EOF' + cat << 'GH_AW_PROMPT_823d987221e37f8e_EOF' {{#runtime-import .github/workflows/daily-max-ai-credits-test.md}} - GH_AW_PROMPT_2872f1d8904aa2b4_EOF + GH_AW_PROMPT_823d987221e37f8e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -319,6 +334,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailymaxaicreditstest outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -441,9 +457,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7ed570227fcafe45_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_be70b275c8ccf8a8_EOF' {"create_issue":{"close_older_issues":true,"close_older_key":"daily-max-ai-credits-test","expires":24,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_7ed570227fcafe45_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_be70b275c8ccf8a8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -613,7 +629,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -670,7 +686,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF + GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -939,6 +955,8 @@ jobs: group: "gh-aw-conclusion-daily-max-ai-credits-test" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1141,6 +1159,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1376,6 +1396,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"๐Ÿงช [{workflow_name}]({run_url}) โ€” per-run AI credit limit test running (intentionally fails, limit: 1 AI credit/run).\",\"runSuccess\":\"โš ๏ธ [{workflow_name}]({run_url}) completed without hitting the per-run limit of 1 AI credit โ€” verify that max-ai-credits enforcement is working.\",\"runFailure\":\"๐Ÿšซ [{workflow_name}]({run_url}) {status} โ€” expected: the per-run AI credit limit of 1 was reached and the AWF firewall cut off the agent.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index bd9da25692d..bde02a02857 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -240,6 +241,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -256,21 +270,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2a210bbe72ee5094_EOF' + cat << 'GH_AW_PROMPT_8f4b0152a4102653_EOF' - GH_AW_PROMPT_2a210bbe72ee5094_EOF + GH_AW_PROMPT_8f4b0152a4102653_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2a210bbe72ee5094_EOF' + cat << 'GH_AW_PROMPT_8f4b0152a4102653_EOF' Tools: create_issue(max:5), create_discussion, create_agent_session(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_2a210bbe72ee5094_EOF + GH_AW_PROMPT_8f4b0152a4102653_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2a210bbe72ee5094_EOF' + cat << 'GH_AW_PROMPT_8f4b0152a4102653_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,9 +313,9 @@ jobs: {{/if}} - GH_AW_PROMPT_2a210bbe72ee5094_EOF + GH_AW_PROMPT_8f4b0152a4102653_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2a210bbe72ee5094_EOF' + cat << 'GH_AW_PROMPT_8f4b0152a4102653_EOF' {{#runtime-import .github/workflows/shared/safe-output-app.md}} ## Serena Code Analysis @@ -310,7 +324,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-mcp-concurrency-analysis.md}} - GH_AW_PROMPT_2a210bbe72ee5094_EOF + GH_AW_PROMPT_8f4b0152a4102653_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -414,6 +428,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailymcpconcurrencyanalysis outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -558,9 +573,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_33597c1ba030a0d1_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9072efe910708a86_EOF' {"create_agent_session":{"max":3},"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[mcp-concurrency] "},"create_issue":{"expires":168,"labels":["bug","concurrency","thread-safety","automated-analysis","cookie"],"max":5,"title_prefix":"[concurrency] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_33597c1ba030a0d1_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_9072efe910708a86_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -772,7 +787,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -847,7 +862,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1195,6 +1210,8 @@ jobs: group: "gh-aw-conclusion-daily-mcp-concurrency-analysis" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1448,6 +1465,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1684,6 +1703,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "mcp-concurrency-analysis" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -1786,6 +1806,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailymcpconcurrencyanalysis steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-model-inventory.lock.yml b/.github/workflows/daily-model-inventory.lock.yml index dd97c889a73..e1c38b2c520 100644 --- a/.github/workflows/daily-model-inventory.lock.yml +++ b/.github/workflows/daily-model-inventory.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,21 +272,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f5bdc1591961f22f_EOF' + cat << 'GH_AW_PROMPT_81391abda2f614e2_EOF' - GH_AW_PROMPT_f5bdc1591961f22f_EOF + GH_AW_PROMPT_81391abda2f614e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f5bdc1591961f22f_EOF' + cat << 'GH_AW_PROMPT_81391abda2f614e2_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_f5bdc1591961f22f_EOF + GH_AW_PROMPT_81391abda2f614e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f5bdc1591961f22f_EOF' + cat << 'GH_AW_PROMPT_81391abda2f614e2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,14 +315,14 @@ jobs: {{/if}} - GH_AW_PROMPT_f5bdc1591961f22f_EOF + GH_AW_PROMPT_81391abda2f614e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_f5bdc1591961f22f_EOF' + cat << 'GH_AW_PROMPT_81391abda2f614e2_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-model-inventory.md}} - GH_AW_PROMPT_f5bdc1591961f22f_EOF + GH_AW_PROMPT_81391abda2f614e2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -409,6 +423,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailymodelinventory outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -565,9 +580,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_49c7e8c70bc21ddf_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e15989a3b45b31a6_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"labels":["automation","models"],"max":1,"title_prefix":"[model-inventory] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_49c7e8c70bc21ddf_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_e15989a3b45b31a6_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -738,7 +753,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -800,7 +815,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1385,6 +1400,8 @@ jobs: group: "gh-aw-conclusion-daily-model-inventory" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1633,6 +1650,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1867,6 +1886,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-model-inventory" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“ฆ" diff --git a/.github/workflows/daily-multi-device-docs-tester.lock.yml b/.github/workflows/daily-multi-device-docs-tester.lock.yml index 4f1b7f0afd0..92941126b15 100644 --- a/.github/workflows/daily-multi-device-docs-tester.lock.yml +++ b/.github/workflows/daily-multi-device-docs-tester.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -265,21 +279,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_da2032ee43a9cd36_EOF' + cat << 'GH_AW_PROMPT_79ce937bd27a64ff_EOF' - GH_AW_PROMPT_da2032ee43a9cd36_EOF + GH_AW_PROMPT_79ce937bd27a64ff_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_da2032ee43a9cd36_EOF' + cat << 'GH_AW_PROMPT_79ce937bd27a64ff_EOF' Tools: create_issue, create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_da2032ee43a9cd36_EOF + GH_AW_PROMPT_79ce937bd27a64ff_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_da2032ee43a9cd36_EOF' + cat << 'GH_AW_PROMPT_79ce937bd27a64ff_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -308,14 +322,14 @@ jobs: {{/if}} - GH_AW_PROMPT_da2032ee43a9cd36_EOF + GH_AW_PROMPT_79ce937bd27a64ff_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_da2032ee43a9cd36_EOF' + cat << 'GH_AW_PROMPT_79ce937bd27a64ff_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-multi-device-docs-tester.md}} - GH_AW_PROMPT_da2032ee43a9cd36_EOF + GH_AW_PROMPT_79ce937bd27a64ff_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -417,6 +431,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailymultidevicedocstester outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -572,9 +587,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2a166ca47956a3ad_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3b3f1a9eb2d40a49_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[multi-device-docs] "},"create_issue":{"expires":48,"labels":["cookie"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_artifact":{"default-if-no-files":"ignore","max-size-bytes":104857600,"max-uploads":3,"retention-days":30,"skip-archive":true}} - GH_AW_SAFE_OUTPUTS_CONFIG_2a166ca47956a3ad_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3b3f1a9eb2d40a49_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -769,7 +784,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -814,7 +829,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1091,6 +1106,8 @@ jobs: group: "gh-aw-conclusion-daily-multi-device-docs-tester" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1336,6 +1353,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1563,6 +1582,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-multi-device-docs-tester" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 24692a542d6..8548dede997 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -105,6 +105,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -300,24 +314,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_c14873f0c7ee4919_EOF' + cat << 'GH_AW_PROMPT_8354a22407166a78_EOF' - GH_AW_PROMPT_c14873f0c7ee4919_EOF + GH_AW_PROMPT_8354a22407166a78_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_c14873f0c7ee4919_EOF' + cat << 'GH_AW_PROMPT_8354a22407166a78_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_c14873f0c7ee4919_EOF + GH_AW_PROMPT_8354a22407166a78_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_c14873f0c7ee4919_EOF' + cat << 'GH_AW_PROMPT_8354a22407166a78_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -346,9 +360,9 @@ jobs: {{/if}} - GH_AW_PROMPT_c14873f0c7ee4919_EOF + GH_AW_PROMPT_8354a22407166a78_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_c14873f0c7ee4919_EOF' + cat << 'GH_AW_PROMPT_8354a22407166a78_EOF' {{#runtime-import .github/workflows/shared/mcp/headroom.md}} {{#runtime-import .github/workflows/shared/mcp/tavily.md}} @@ -360,7 +374,7 @@ jobs: {{#runtime-import .github/shared/editorial.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-news.md}} - GH_AW_PROMPT_c14873f0c7ee4919_EOF + GH_AW_PROMPT_8354a22407166a78_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -479,6 +493,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailynews outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -727,9 +742,9 @@ jobs: mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c4797408a9b89dec_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a008ad830eb0f73d_EOF' {"create_discussion":{"category":"daily-news","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":3,"retention-days":30,"skip-archive":true},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_c4797408a9b89dec_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a008ad830eb0f73d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -900,7 +915,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e TAVILY_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_f700b0e07eee1d06_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b489bef9e2c61b49_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "headroom": { @@ -986,7 +1001,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_f700b0e07eee1d06_EOF + GH_AW_MCP_CONFIG_b489bef9e2c61b49_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1312,6 +1327,8 @@ jobs: group: "gh-aw-conclusion-daily-news" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1564,6 +1581,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1780,6 +1799,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1859,6 +1880,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/daily-news" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1958,6 +1981,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-news-weekday" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“ฐ" @@ -2066,6 +2090,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailynews steps: - name: Checkout actions folder @@ -2121,6 +2146,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-observability-report.lock.yml b/.github/workflows/daily-observability-report.lock.yml index 5ae60650a98..fd2e3185f8d 100644 --- a/.github/workflows/daily-observability-report.lock.yml +++ b/.github/workflows/daily-observability-report.lock.yml @@ -102,6 +102,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -250,6 +251,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -416,6 +430,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyobservabilityreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -1162,6 +1177,8 @@ jobs: group: "gh-aw-conclusion-daily-observability-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1412,6 +1429,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1640,6 +1659,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: "gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-observability-report" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index 4c8f9aa7b5a..0df7289e506 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -423,6 +437,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyperformancesummary outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -1652,6 +1667,8 @@ jobs: group: "gh-aw-conclusion-daily-performance-summary" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1905,6 +1922,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2140,6 +2159,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-performance-summary" GH_AW_WORKFLOW_EMOJI: "โšก" @@ -2237,6 +2257,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyperformancesummary steps: - name: Checkout actions folder @@ -2292,6 +2313,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-regulatory.lock.yml b/.github/workflows/daily-regulatory.lock.yml index f7782ca5eaa..b66e39c66e5 100644 --- a/.github/workflows/daily-regulatory.lock.yml +++ b/.github/workflows/daily-regulatory.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -410,6 +424,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyregulatory outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -1555,6 +1570,8 @@ jobs: group: "gh-aw-conclusion-daily-regulatory" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1805,6 +1822,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2071,6 +2090,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-regulatory" GH_AW_WORKFLOW_EMOJI: "โš–๏ธ" diff --git a/.github/workflows/daily-reliability-review.lock.yml b/.github/workflows/daily-reliability-review.lock.yml index 192f92f9327..5b9d1252586 100644 --- a/.github/workflows/daily-reliability-review.lock.yml +++ b/.github/workflows/daily-reliability-review.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,20 +275,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2c3d1589df692fcb_EOF' + cat << 'GH_AW_PROMPT_bc5feff24446a260_EOF' - GH_AW_PROMPT_2c3d1589df692fcb_EOF + GH_AW_PROMPT_bc5feff24446a260_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2c3d1589df692fcb_EOF' + cat << 'GH_AW_PROMPT_bc5feff24446a260_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_2c3d1589df692fcb_EOF + GH_AW_PROMPT_bc5feff24446a260_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2c3d1589df692fcb_EOF' + cat << 'GH_AW_PROMPT_bc5feff24446a260_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,9 +317,9 @@ jobs: {{/if}} - GH_AW_PROMPT_2c3d1589df692fcb_EOF + GH_AW_PROMPT_bc5feff24446a260_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2c3d1589df692fcb_EOF' + cat << 'GH_AW_PROMPT_bc5feff24446a260_EOF' {{#runtime-import .github/workflows/shared/sentry.md}} {{#runtime-import .github/workflows/shared/mcp/sentry.md}} @@ -313,7 +327,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-reliability-review.md}} - GH_AW_PROMPT_2c3d1589df692fcb_EOF + GH_AW_PROMPT_bc5feff24446a260_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -410,6 +424,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyreliabilityreview outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -542,9 +557,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c5d96daf8a07084c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d4c6b4dc1bcfde3d_EOF' {"create_issue":{"close_older_issues":true,"expires":48,"labels":["observability","automated-analysis"],"max":1,"title_prefix":"[reliability] "},"create_report_incomplete_issue":{},"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_c5d96daf8a07084c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d4c6b4dc1bcfde3d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -717,7 +732,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e SENTRY_ACCESS_TOKEN -e SENTRY_HOST -e SENTRY_OPENAI_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_1cf97f55b6525acf_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_685d3b68d6185999_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -800,7 +815,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_1cf97f55b6525acf_EOF + GH_AW_MCP_CONFIG_685d3b68d6185999_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1174,6 +1189,8 @@ jobs: group: "gh-aw-conclusion-daily-reliability-review" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1422,6 +1439,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1656,6 +1675,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-reliability-review" GH_AW_WORKFLOW_EMOJI: "๐Ÿšจ" diff --git a/.github/workflows/daily-rendering-scripts-verifier.lock.yml b/.github/workflows/daily-rendering-scripts-verifier.lock.yml index 31428f43423..38addae29ac 100644 --- a/.github/workflows/daily-rendering-scripts-verifier.lock.yml +++ b/.github/workflows/daily-rendering-scripts-verifier.lock.yml @@ -107,6 +107,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -256,6 +257,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -272,24 +286,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6fcb4bd90f659b71_EOF' + cat << 'GH_AW_PROMPT_7fedc6e163fca9ba_EOF' - GH_AW_PROMPT_6fcb4bd90f659b71_EOF + GH_AW_PROMPT_7fedc6e163fca9ba_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6fcb4bd90f659b71_EOF' + cat << 'GH_AW_PROMPT_7fedc6e163fca9ba_EOF' Tools: create_discussion, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_6fcb4bd90f659b71_EOF + GH_AW_PROMPT_7fedc6e163fca9ba_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_6fcb4bd90f659b71_EOF' + cat << 'GH_AW_PROMPT_7fedc6e163fca9ba_EOF' - GH_AW_PROMPT_6fcb4bd90f659b71_EOF + GH_AW_PROMPT_7fedc6e163fca9ba_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6fcb4bd90f659b71_EOF' + cat << 'GH_AW_PROMPT_7fedc6e163fca9ba_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -318,9 +332,9 @@ jobs: {{/if}} - GH_AW_PROMPT_6fcb4bd90f659b71_EOF + GH_AW_PROMPT_7fedc6e163fca9ba_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_6fcb4bd90f659b71_EOF' + cat << 'GH_AW_PROMPT_7fedc6e163fca9ba_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/otlp.md}} @@ -328,7 +342,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-rendering-scripts-verifier.md}} - GH_AW_PROMPT_6fcb4bd90f659b71_EOF + GH_AW_PROMPT_7fedc6e163fca9ba_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -434,6 +448,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyrenderingscriptsverifier outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -641,9 +656,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9678c63b8cf87a2b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3a3e6da3e91c6b3b_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[rendering-scripts] "},"create_pull_request":{"expires":72,"labels":["rendering","javascript","automated-fix"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[rendering-scripts] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_9678c63b8cf87a2b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3a3e6da3e91c6b3b_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -842,7 +857,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -905,7 +920,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF + GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1327,6 +1342,8 @@ jobs: group: "gh-aw-conclusion-daily-rendering-scripts-verifier" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1582,6 +1599,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1798,6 +1817,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1874,6 +1895,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-rendering-scripts-verifier" GH_AW_WORKFLOW_EMOJI: "โœ…" @@ -2002,6 +2024,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyrenderingscriptsverifier steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index 84090cae944..36212b40b1b 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -239,6 +240,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -255,23 +269,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8f3c23991b8bdc60_EOF' + cat << 'GH_AW_PROMPT_d9a70238dc8437b3_EOF' - GH_AW_PROMPT_8f3c23991b8bdc60_EOF + GH_AW_PROMPT_d9a70238dc8437b3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8f3c23991b8bdc60_EOF' + cat << 'GH_AW_PROMPT_d9a70238dc8437b3_EOF' Tools: create_discussion, upload_asset(max:3), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_8f3c23991b8bdc60_EOF + GH_AW_PROMPT_d9a70238dc8437b3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8f3c23991b8bdc60_EOF' + cat << 'GH_AW_PROMPT_d9a70238dc8437b3_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,9 +314,9 @@ jobs: {{/if}} - GH_AW_PROMPT_8f3c23991b8bdc60_EOF + GH_AW_PROMPT_d9a70238dc8437b3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_8f3c23991b8bdc60_EOF' + cat << 'GH_AW_PROMPT_d9a70238dc8437b3_EOF' {{#runtime-import .github/workflows/shared/trends.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -310,7 +324,7 @@ jobs: {{#runtime-import .github/workflows/shared/python-dataviz.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-repo-chronicle.md}} - GH_AW_PROMPT_8f3c23991b8bdc60_EOF + GH_AW_PROMPT_d9a70238dc8437b3_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -414,6 +428,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyrepochronicle outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -580,9 +595,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d9018b31780ce04d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_88740b7f54c06b6c_EOF' {"create_discussion":{"category":"announcements","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"๐Ÿ“ฐ "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":3,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_d9018b31780ce04d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_88740b7f54c06b6c_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -753,7 +768,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -799,7 +814,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1131,6 +1146,8 @@ jobs: group: "gh-aw-conclusion-daily-repo-chronicle" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1384,6 +1401,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1620,6 +1639,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-repo-chronicle" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“…" @@ -1717,6 +1737,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyrepochronicle steps: - name: Checkout actions folder @@ -1772,6 +1793,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-safe-output-integrator.lock.yml b/.github/workflows/daily-safe-output-integrator.lock.yml index c8f320f9756..b81cc664860 100644 --- a/.github/workflows/daily-safe-output-integrator.lock.yml +++ b/.github/workflows/daily-safe-output-integrator.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,23 +268,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a6fbc26468dd8d61_EOF' + cat << 'GH_AW_PROMPT_1f88cf7573089af5_EOF' - GH_AW_PROMPT_a6fbc26468dd8d61_EOF + GH_AW_PROMPT_1f88cf7573089af5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a6fbc26468dd8d61_EOF' + cat << 'GH_AW_PROMPT_1f88cf7573089af5_EOF' Tools: create_discussion, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_a6fbc26468dd8d61_EOF + GH_AW_PROMPT_1f88cf7573089af5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_a6fbc26468dd8d61_EOF' + cat << 'GH_AW_PROMPT_1f88cf7573089af5_EOF' - GH_AW_PROMPT_a6fbc26468dd8d61_EOF + GH_AW_PROMPT_1f88cf7573089af5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a6fbc26468dd8d61_EOF' + cat << 'GH_AW_PROMPT_1f88cf7573089af5_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,14 +313,14 @@ jobs: {{/if}} - GH_AW_PROMPT_a6fbc26468dd8d61_EOF + GH_AW_PROMPT_1f88cf7573089af5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_a6fbc26468dd8d61_EOF' + cat << 'GH_AW_PROMPT_1f88cf7573089af5_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-safe-output-integrator.md}} - GH_AW_PROMPT_a6fbc26468dd8d61_EOF + GH_AW_PROMPT_1f88cf7573089af5_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -404,6 +418,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysafeoutputintegrator outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -530,9 +545,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3b3391328d99a328_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a5befebb4fe6623d_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[safe-output-integrator] "},"create_pull_request":{"draft":false,"expires":72,"labels":["safe-outputs","testing","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[safe-output-integrator] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_3b3391328d99a328_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a5befebb4fe6623d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -732,7 +747,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -778,7 +793,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1119,6 +1134,8 @@ jobs: group: "gh-aw-conclusion-daily-safe-output-integrator" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1371,6 +1388,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1639,6 +1658,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-safe-output-integrator" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index 2b75512d12c..212963d0f58 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -105,6 +105,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -256,6 +257,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -307,21 +321,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_898c9a323aeb6ae5_EOF' + cat << 'GH_AW_PROMPT_4d5f8c38dc70355d_EOF' - GH_AW_PROMPT_898c9a323aeb6ae5_EOF + GH_AW_PROMPT_4d5f8c38dc70355d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_898c9a323aeb6ae5_EOF' + cat << 'GH_AW_PROMPT_4d5f8c38dc70355d_EOF' Tools: create_issue, create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_898c9a323aeb6ae5_EOF + GH_AW_PROMPT_4d5f8c38dc70355d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_898c9a323aeb6ae5_EOF' + cat << 'GH_AW_PROMPT_4d5f8c38dc70355d_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -350,9 +364,9 @@ jobs: {{/if}} - GH_AW_PROMPT_898c9a323aeb6ae5_EOF + GH_AW_PROMPT_4d5f8c38dc70355d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_898c9a323aeb6ae5_EOF' + cat << 'GH_AW_PROMPT_4d5f8c38dc70355d_EOF' {{#runtime-import .github/workflows/shared/aw-logs-24h-fetch-setup.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} @@ -361,7 +375,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-safe-output-optimizer.md}} - GH_AW_PROMPT_898c9a323aeb6ae5_EOF + GH_AW_PROMPT_4d5f8c38dc70355d_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -469,6 +483,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysafeoutputoptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -681,9 +696,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_66f581fc5bd7ac3b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_85e93e49876393cb_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[safe-output-optimizer] "},"create_issue":{"expires":48,"labels":["bug","safe-outputs","tool-improvement","automated-analysis","cookie"],"max":1,"title_prefix":"[safeoutputs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_66f581fc5bd7ac3b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_85e93e49876393cb_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -881,7 +896,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_fef2217f28f28334_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_467ea9a369748bce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -959,7 +974,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_fef2217f28f28334_EOF + GH_AW_MCP_CONFIG_467ea9a369748bce_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1348,6 +1363,8 @@ jobs: group: "gh-aw-conclusion-daily-safe-output-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1596,6 +1613,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1852,6 +1871,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1910,6 +1931,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1998,6 +2021,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โšก" GH_AW_WORKFLOW_ID: "daily-safe-output-optimizer" @@ -2096,6 +2120,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysafeoutputoptimizer steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-safe-outputs-conformance.lock.yml b/.github/workflows/daily-safe-outputs-conformance.lock.yml index d163e42da94..aa4f77bd606 100644 --- a/.github/workflows/daily-safe-outputs-conformance.lock.yml +++ b/.github/workflows/daily-safe-outputs-conformance.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,20 +274,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_281a03fad59620dc_EOF' + cat << 'GH_AW_PROMPT_8c1e1b91fadb69ce_EOF' - GH_AW_PROMPT_281a03fad59620dc_EOF + GH_AW_PROMPT_8c1e1b91fadb69ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_281a03fad59620dc_EOF' + cat << 'GH_AW_PROMPT_8c1e1b91fadb69ce_EOF' Tools: create_issue(max:10), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_281a03fad59620dc_EOF + GH_AW_PROMPT_8c1e1b91fadb69ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_281a03fad59620dc_EOF' + cat << 'GH_AW_PROMPT_8c1e1b91fadb69ce_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,14 +316,14 @@ jobs: {{/if}} - GH_AW_PROMPT_281a03fad59620dc_EOF + GH_AW_PROMPT_8c1e1b91fadb69ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_281a03fad59620dc_EOF' + cat << 'GH_AW_PROMPT_8c1e1b91fadb69ce_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-safe-outputs-conformance.md}} - GH_AW_PROMPT_281a03fad59620dc_EOF + GH_AW_PROMPT_8c1e1b91fadb69ce_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -405,6 +419,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysafeoutputsconformance outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -532,9 +547,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_07c559fa5506383b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_bafd0b2aefb44471_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[safe-outputs-conformance] "},"create_issue":{"close_older_issues":true,"expires":24,"labels":["safe-outputs","conformance","automated"],"max":10,"title_prefix":"[Safe Outputs Conformance] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_07c559fa5506383b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_bafd0b2aefb44471_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -729,7 +744,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -774,7 +789,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1130,6 +1145,8 @@ jobs: group: "gh-aw-conclusion-daily-safe-outputs-conformance" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1380,6 +1397,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1649,6 +1668,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "safe-outputs-conformance" GH_AW_WORKFLOW_EMOJI: "โœ…" diff --git a/.github/workflows/daily-safeoutputs-git-simulator.lock.yml b/.github/workflows/daily-safeoutputs-git-simulator.lock.yml index 2b0f131c6d3..86d85002f5f 100644 --- a/.github/workflows/daily-safeoutputs-git-simulator.lock.yml +++ b/.github/workflows/daily-safeoutputs-git-simulator.lock.yml @@ -79,6 +79,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -224,6 +225,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -241,25 +255,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_085920ff1cccd167_EOF' + cat << 'GH_AW_PROMPT_ec82b637db8de129_EOF' - GH_AW_PROMPT_085920ff1cccd167_EOF + GH_AW_PROMPT_ec82b637db8de129_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_085920ff1cccd167_EOF' + cat << 'GH_AW_PROMPT_ec82b637db8de129_EOF' Tools: create_issue(max:10), create_pull_request, push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_085920ff1cccd167_EOF + GH_AW_PROMPT_ec82b637db8de129_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_085920ff1cccd167_EOF' + cat << 'GH_AW_PROMPT_ec82b637db8de129_EOF' - GH_AW_PROMPT_085920ff1cccd167_EOF + GH_AW_PROMPT_ec82b637db8de129_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_085920ff1cccd167_EOF' + cat << 'GH_AW_PROMPT_ec82b637db8de129_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,12 +315,12 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_085920ff1cccd167_EOF + GH_AW_PROMPT_ec82b637db8de129_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_085920ff1cccd167_EOF' + cat << 'GH_AW_PROMPT_ec82b637db8de129_EOF' {{#runtime-import .github/workflows/daily-safeoutputs-git-simulator.md}} - GH_AW_PROMPT_085920ff1cccd167_EOF + GH_AW_PROMPT_ec82b637db8de129_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -415,6 +429,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysafeoutputsgitsimulator outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -557,9 +572,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fd108f0ab681fa01_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9c3c17705862fa10_EOF' {"create_issue":{"close_older_issues":false,"deduplicate_by_title":3,"labels":["git-simulator","safe-outputs","automated"],"max":10,"title_prefix":"[git-sim] "},"create_pull_request":{"allowed_files":["sim/**","stuff.md","history.md"],"draft":true,"expires":24,"if_no_changes":"warn","labels":["git-sim-probe","automated"],"max":1,"max_patch_files":200,"max_patch_size":5120,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review","title_prefix":"[git-sim] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":204800,"max_patch_size":10240}]},"push_to_pull_request_branch":{"allowed_files":["sim/**","stuff.md","history.md"],"if_no_changes":"ignore","max_patch_size":5120,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"required_labels":["git-sim-probe","automated"],"target":"*","title_prefix":"[git-sim] "},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_fd108f0ab681fa01_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_9c3c17705862fa10_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -788,7 +803,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_5c011d4aff43d4a7_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_0c515bcdf6a5abdd_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -828,7 +843,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_5c011d4aff43d4a7_EOF + GH_AW_MCP_CONFIG_0c515bcdf6a5abdd_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1189,6 +1204,8 @@ jobs: group: "gh-aw-conclusion-daily-safeoutputs-git-simulator" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1438,6 +1455,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1698,6 +1717,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/git-simulator" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1796,6 +1817,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "daily-safeoutputs-git-simulator" diff --git a/.github/workflows/daily-secrets-analysis.lock.yml b/.github/workflows/daily-secrets-analysis.lock.yml index 7008baa7dbc..4353a917805 100644 --- a/.github/workflows/daily-secrets-analysis.lock.yml +++ b/.github/workflows/daily-secrets-analysis.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -237,6 +238,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -253,20 +267,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_932382132c1ccf37_EOF' + cat << 'GH_AW_PROMPT_c34ec11f05d7bd42_EOF' - GH_AW_PROMPT_932382132c1ccf37_EOF + GH_AW_PROMPT_c34ec11f05d7bd42_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_932382132c1ccf37_EOF' + cat << 'GH_AW_PROMPT_c34ec11f05d7bd42_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_932382132c1ccf37_EOF + GH_AW_PROMPT_c34ec11f05d7bd42_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_932382132c1ccf37_EOF' + cat << 'GH_AW_PROMPT_c34ec11f05d7bd42_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -295,15 +309,15 @@ jobs: {{/if}} - GH_AW_PROMPT_932382132c1ccf37_EOF + GH_AW_PROMPT_c34ec11f05d7bd42_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_932382132c1ccf37_EOF' + cat << 'GH_AW_PROMPT_c34ec11f05d7bd42_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-secrets-analysis.md}} - GH_AW_PROMPT_932382132c1ccf37_EOF + GH_AW_PROMPT_c34ec11f05d7bd42_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -402,6 +416,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysecretsanalysis outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -528,9 +543,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cbb084865af1edbf_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d832d3dc7e0eb76a_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[daily secrets] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_cbb084865af1edbf_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d832d3dc7e0eb76a_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -688,7 +703,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -734,7 +749,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1034,6 +1049,8 @@ jobs: group: "gh-aw-conclusion-daily-secrets-analysis" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1284,6 +1301,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1551,6 +1570,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-secrets-analysis" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" diff --git a/.github/workflows/daily-security-observability.lock.yml b/.github/workflows/daily-security-observability.lock.yml index bed68cff73c..5cadf92a071 100644 --- a/.github/workflows/daily-security-observability.lock.yml +++ b/.github/workflows/daily-security-observability.lock.yml @@ -109,6 +109,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -256,6 +257,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -272,23 +286,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b446720990606d52_EOF' + cat << 'GH_AW_PROMPT_727c1a09c5391fe0_EOF' - GH_AW_PROMPT_b446720990606d52_EOF + GH_AW_PROMPT_727c1a09c5391fe0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b446720990606d52_EOF' + cat << 'GH_AW_PROMPT_727c1a09c5391fe0_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_b446720990606d52_EOF + GH_AW_PROMPT_727c1a09c5391fe0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b446720990606d52_EOF' + cat << 'GH_AW_PROMPT_727c1a09c5391fe0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -317,9 +331,9 @@ jobs: {{/if}} - GH_AW_PROMPT_b446720990606d52_EOF + GH_AW_PROMPT_727c1a09c5391fe0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b446720990606d52_EOF' + cat << 'GH_AW_PROMPT_727c1a09c5391fe0_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/python-dataviz.md}} @@ -328,7 +342,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-security-observability.md}} - GH_AW_PROMPT_b446720990606d52_EOF + GH_AW_PROMPT_727c1a09c5391fe0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -434,6 +448,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysecurityobservability outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -688,9 +703,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_dd0ba15ce6ea8770_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_bcb23f621822d7c8_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[security-observability] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_dd0ba15ce6ea8770_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_bcb23f621822d7c8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -861,7 +876,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7292df9048689c98_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -926,7 +941,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF + GH_AW_MCP_CONFIG_7292df9048689c98_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1258,6 +1273,8 @@ jobs: group: "gh-aw-conclusion-daily-security-observability" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1511,6 +1528,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1777,6 +1796,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-security-observability" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" @@ -1874,6 +1894,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysecurityobservability steps: - name: Checkout actions folder @@ -1929,6 +1950,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/daily-security-red-team.lock.yml b/.github/workflows/daily-security-red-team.lock.yml index c268f701ca5..503a63c5e3e 100644 --- a/.github/workflows/daily-security-red-team.lock.yml +++ b/.github/workflows/daily-security-red-team.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -299,21 +313,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f7df474f217b3402_EOF' + cat << 'GH_AW_PROMPT_c980a0ba3c5b38b6_EOF' - GH_AW_PROMPT_f7df474f217b3402_EOF + GH_AW_PROMPT_c980a0ba3c5b38b6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f7df474f217b3402_EOF' + cat << 'GH_AW_PROMPT_c980a0ba3c5b38b6_EOF' Tools: create_issue(max:5), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_f7df474f217b3402_EOF + GH_AW_PROMPT_c980a0ba3c5b38b6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f7df474f217b3402_EOF' + cat << 'GH_AW_PROMPT_c980a0ba3c5b38b6_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -342,15 +356,15 @@ jobs: {{/if}} - GH_AW_PROMPT_f7df474f217b3402_EOF + GH_AW_PROMPT_c980a0ba3c5b38b6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_f7df474f217b3402_EOF' + cat << 'GH_AW_PROMPT_c980a0ba3c5b38b6_EOF' {{#runtime-import .github/workflows/shared/security-analysis-base.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/daily-security-red-team.md}} - GH_AW_PROMPT_f7df474f217b3402_EOF + GH_AW_PROMPT_c980a0ba3c5b38b6_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -460,6 +474,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysecurityredteam outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -605,9 +620,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6b589db6f5cbe6c9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3983d6d998042e45_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[security-red-team] "},"create_issue":{"labels":["security","red-team"],"max":5,"title_prefix":"๐Ÿšจ [SECURITY]"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_6b589db6f5cbe6c9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3983d6d998042e45_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -802,7 +817,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -847,7 +862,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1227,6 +1242,8 @@ jobs: group: "gh-aw-conclusion-daily-security-red-team" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1481,6 +1498,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1739,6 +1758,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1827,6 +1848,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "security-red-team" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" @@ -1926,6 +1948,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysecurityredteam steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-semgrep-scan.lock.yml b/.github/workflows/daily-semgrep-scan.lock.yml index c669525a807..faf4c06f11e 100644 --- a/.github/workflows/daily-semgrep-scan.lock.yml +++ b/.github/workflows/daily-semgrep-scan.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -239,6 +240,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -290,20 +304,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b75655ad07c57487_EOF' + cat << 'GH_AW_PROMPT_e8980956141057c2_EOF' - GH_AW_PROMPT_b75655ad07c57487_EOF + GH_AW_PROMPT_e8980956141057c2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b75655ad07c57487_EOF' + cat << 'GH_AW_PROMPT_e8980956141057c2_EOF' Tools: create_code_scanning_alert, missing_tool, missing_data, noop - GH_AW_PROMPT_b75655ad07c57487_EOF + GH_AW_PROMPT_e8980956141057c2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b75655ad07c57487_EOF' + cat << 'GH_AW_PROMPT_e8980956141057c2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -332,16 +346,16 @@ jobs: {{/if}} - GH_AW_PROMPT_b75655ad07c57487_EOF + GH_AW_PROMPT_e8980956141057c2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b75655ad07c57487_EOF' + cat << 'GH_AW_PROMPT_e8980956141057c2_EOF' {{#runtime-import .github/workflows/shared/security-analysis-base.md}} {{#runtime-import .github/workflows/shared/mcp/semgrep.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-semgrep-scan.md}} - GH_AW_PROMPT_b75655ad07c57487_EOF + GH_AW_PROMPT_e8980956141057c2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -441,6 +455,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysemgrepscan outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -565,9 +580,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1d80b931d0704570_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3447cd6f5b8cfe13_EOF' {"create_code_scanning_alert":{"driver":"Semgrep Security Scanner"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_1d80b931d0704570_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3447cd6f5b8cfe13_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -740,7 +755,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_00fc30021aedcd37_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_938ab1cfbf3551b6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -830,7 +845,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_00fc30021aedcd37_EOF + GH_AW_MCP_CONFIG_938ab1cfbf3551b6_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1114,6 +1129,8 @@ jobs: group: "gh-aw-conclusion-daily-semgrep-scan" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1357,6 +1374,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1612,6 +1631,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1700,6 +1721,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" GH_AW_WORKFLOW_ID: "daily-semgrep-scan" @@ -1804,6 +1826,8 @@ jobs: contents: read security-events: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Restore checkout to triggering commit uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/.github/workflows/daily-sentrux-report.lock.yml b/.github/workflows/daily-sentrux-report.lock.yml index a8353e2c74b..bc16b730844 100644 --- a/.github/workflows/daily-sentrux-report.lock.yml +++ b/.github/workflows/daily-sentrux-report.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,21 +275,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_803629d374b02700_EOF' + cat << 'GH_AW_PROMPT_bafb5f1f70aa43a6_EOF' - GH_AW_PROMPT_803629d374b02700_EOF + GH_AW_PROMPT_bafb5f1f70aa43a6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_803629d374b02700_EOF' + cat << 'GH_AW_PROMPT_bafb5f1f70aa43a6_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_803629d374b02700_EOF + GH_AW_PROMPT_bafb5f1f70aa43a6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_803629d374b02700_EOF' + cat << 'GH_AW_PROMPT_bafb5f1f70aa43a6_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -304,16 +318,16 @@ jobs: {{/if}} - GH_AW_PROMPT_803629d374b02700_EOF + GH_AW_PROMPT_bafb5f1f70aa43a6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_803629d374b02700_EOF' + cat << 'GH_AW_PROMPT_bafb5f1f70aa43a6_EOF' {{#runtime-import .github/workflows/shared/mcp/sentrux.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-sentrux-report.md}} - GH_AW_PROMPT_803629d374b02700_EOF + GH_AW_PROMPT_bafb5f1f70aa43a6_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -419,6 +433,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysentruxreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -563,9 +578,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e9765f1a2f4e5a8f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_14b6778de23a2fc9_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[daily-sentrux] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":51200,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e9765f1a2f4e5a8f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_14b6778de23a2fc9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -726,7 +741,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -788,7 +803,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1091,6 +1106,8 @@ jobs: group: "gh-aw-conclusion-daily-sentrux-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1340,6 +1357,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1596,6 +1615,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|daily/daily-sentrux-report" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1696,6 +1717,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "daily-sentrux-report" diff --git a/.github/workflows/daily-skill-optimizer.lock.yml b/.github/workflows/daily-skill-optimizer.lock.yml index 3c39e648986..11102cacc4b 100644 --- a/.github/workflows/daily-skill-optimizer.lock.yml +++ b/.github/workflows/daily-skill-optimizer.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,20 +271,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_97262ab40647a810_EOF' + cat << 'GH_AW_PROMPT_98d4292f970efb1e_EOF' - GH_AW_PROMPT_97262ab40647a810_EOF + GH_AW_PROMPT_98d4292f970efb1e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_97262ab40647a810_EOF' + cat << 'GH_AW_PROMPT_98d4292f970efb1e_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_97262ab40647a810_EOF + GH_AW_PROMPT_98d4292f970efb1e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_97262ab40647a810_EOF' + cat << 'GH_AW_PROMPT_98d4292f970efb1e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,13 +313,13 @@ jobs: {{/if}} - GH_AW_PROMPT_97262ab40647a810_EOF + GH_AW_PROMPT_98d4292f970efb1e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_97262ab40647a810_EOF' + cat << 'GH_AW_PROMPT_98d4292f970efb1e_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/daily-skill-optimizer.md}} - GH_AW_PROMPT_97262ab40647a810_EOF + GH_AW_PROMPT_98d4292f970efb1e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -403,6 +417,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyskilloptimizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -535,9 +550,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a46c6174b843dba5_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a84933429c0bfcd7_EOF' {"create_issue":{"expires":168,"labels":["automation","documentation","prompt-quality"],"max":1,"title_prefix":"[skill-optimizer] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_a46c6174b843dba5_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a84933429c0bfcd7_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -708,7 +723,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -770,7 +785,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1057,6 +1072,8 @@ jobs: group: "gh-aw-conclusion-daily-skill-optimizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1305,6 +1322,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1570,6 +1589,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-skill-optimizer" GH_AW_WORKFLOW_EMOJI: "โšก" diff --git a/.github/workflows/daily-spdd-spec-planner.lock.yml b/.github/workflows/daily-spdd-spec-planner.lock.yml index bd2c59a3f7b..ec258a1f997 100644 --- a/.github/workflows/daily-spdd-spec-planner.lock.yml +++ b/.github/workflows/daily-spdd-spec-planner.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,21 +268,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_3643dd85ed0a1ddc_EOF' + cat << 'GH_AW_PROMPT_9b959b89874d9150_EOF' - GH_AW_PROMPT_3643dd85ed0a1ddc_EOF + GH_AW_PROMPT_9b959b89874d9150_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_3643dd85ed0a1ddc_EOF' + cat << 'GH_AW_PROMPT_9b959b89874d9150_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_3643dd85ed0a1ddc_EOF + GH_AW_PROMPT_9b959b89874d9150_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_3643dd85ed0a1ddc_EOF' + cat << 'GH_AW_PROMPT_9b959b89874d9150_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -297,16 +311,16 @@ jobs: {{/if}} - GH_AW_PROMPT_3643dd85ed0a1ddc_EOF + GH_AW_PROMPT_9b959b89874d9150_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_3643dd85ed0a1ddc_EOF' + cat << 'GH_AW_PROMPT_9b959b89874d9150_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-spdd-spec-planner.md}} - GH_AW_PROMPT_3643dd85ed0a1ddc_EOF + GH_AW_PROMPT_9b959b89874d9150_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyspddspecplanner outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -557,9 +572,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d433889b64381c92_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_69517d0e5e93d04b_EOF' {"create_issue":{"assignees":["copilot"],"expires":72,"labels":["spdd","specifications","planning","automation"],"max":1,"title_prefix":"[spdd] "},"create_report_incomplete_issue":{},"max_bot_mentions":1,"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_d433889b64381c92_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_69517d0e5e93d04b_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -730,7 +745,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -776,7 +791,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1119,6 +1134,8 @@ jobs: group: "gh-aw-conclusion-daily-spdd-spec-planner" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1370,6 +1387,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1636,6 +1655,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-spdd-spec-planner" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“‹" @@ -1737,6 +1757,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyspddspecplanner steps: - name: Checkout actions folder diff --git a/.github/workflows/daily-syntax-error-quality.lock.yml b/.github/workflows/daily-syntax-error-quality.lock.yml index 363807024ea..5e1c14b80e5 100644 --- a/.github/workflows/daily-syntax-error-quality.lock.yml +++ b/.github/workflows/daily-syntax-error-quality.lock.yml @@ -93,6 +93,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -234,6 +235,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -250,20 +264,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_743512b7ac934e36_EOF' + cat << 'GH_AW_PROMPT_ae13a0e2709254ba_EOF' - GH_AW_PROMPT_743512b7ac934e36_EOF + GH_AW_PROMPT_ae13a0e2709254ba_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_743512b7ac934e36_EOF' + cat << 'GH_AW_PROMPT_ae13a0e2709254ba_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_743512b7ac934e36_EOF + GH_AW_PROMPT_ae13a0e2709254ba_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_743512b7ac934e36_EOF' + cat << 'GH_AW_PROMPT_ae13a0e2709254ba_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -292,15 +306,15 @@ jobs: {{/if}} - GH_AW_PROMPT_743512b7ac934e36_EOF + GH_AW_PROMPT_ae13a0e2709254ba_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_743512b7ac934e36_EOF' + cat << 'GH_AW_PROMPT_ae13a0e2709254ba_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-syntax-error-quality.md}} - GH_AW_PROMPT_743512b7ac934e36_EOF + GH_AW_PROMPT_ae13a0e2709254ba_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -398,6 +412,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailysyntaxerrorquality outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -537,9 +552,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1120685ca51c17a2_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c068c6e5700af03b_EOF' {"create_issue":{"close_older_issues":true,"expires":72,"labels":["dx","error-messages","automated-analysis"],"max":1,"title_prefix":"[syntax-error-quality] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_1120685ca51c17a2_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c068c6e5700af03b_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -710,7 +725,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -772,7 +787,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1058,6 +1073,8 @@ jobs: group: "gh-aw-conclusion-daily-syntax-error-quality" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1306,6 +1323,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1572,6 +1591,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-syntax-error-quality" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" diff --git a/.github/workflows/daily-team-evolution-insights.lock.yml b/.github/workflows/daily-team-evolution-insights.lock.yml index 342a9a68365..105b83f5ed5 100644 --- a/.github/workflows/daily-team-evolution-insights.lock.yml +++ b/.github/workflows/daily-team-evolution-insights.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,20 +273,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e67f15bcde60b35d_EOF' + cat << 'GH_AW_PROMPT_f51f8417b4e7ae26_EOF' - GH_AW_PROMPT_e67f15bcde60b35d_EOF + GH_AW_PROMPT_f51f8417b4e7ae26_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e67f15bcde60b35d_EOF' + cat << 'GH_AW_PROMPT_f51f8417b4e7ae26_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_e67f15bcde60b35d_EOF + GH_AW_PROMPT_f51f8417b4e7ae26_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e67f15bcde60b35d_EOF' + cat << 'GH_AW_PROMPT_f51f8417b4e7ae26_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,15 +315,15 @@ jobs: {{/if}} - GH_AW_PROMPT_e67f15bcde60b35d_EOF + GH_AW_PROMPT_f51f8417b4e7ae26_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e67f15bcde60b35d_EOF' + cat << 'GH_AW_PROMPT_f51f8417b4e7ae26_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-team-evolution-insights.md}} - GH_AW_PROMPT_e67f15bcde60b35d_EOF + GH_AW_PROMPT_f51f8417b4e7ae26_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyteamevolutioninsights outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -535,9 +550,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6dc71867b1af248c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_14b0bab048201ada_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[daily-team-evolution] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_6dc71867b1af248c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_14b0bab048201ada_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -697,7 +712,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4d1a02955fd2862e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1a98cbd6c85cf944_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -757,7 +772,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4d1a02955fd2862e_EOF + GH_AW_MCP_CONFIG_1a98cbd6c85cf944_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1099,6 +1114,8 @@ jobs: group: "gh-aw-conclusion-daily-team-evolution-insights" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1349,6 +1366,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1618,6 +1637,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-team-evolution-insights" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" diff --git a/.github/workflows/daily-team-status.lock.yml b/.github/workflows/daily-team-status.lock.yml index ad07a734251..adca0350a36 100644 --- a/.github/workflows/daily-team-status.lock.yml +++ b/.github/workflows/daily-team-status.lock.yml @@ -82,6 +82,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -229,6 +230,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -245,20 +259,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9a25fe0264c2fe92_EOF' + cat << 'GH_AW_PROMPT_84ddb7501c8fae29_EOF' - GH_AW_PROMPT_9a25fe0264c2fe92_EOF + GH_AW_PROMPT_84ddb7501c8fae29_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9a25fe0264c2fe92_EOF' + cat << 'GH_AW_PROMPT_84ddb7501c8fae29_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_9a25fe0264c2fe92_EOF + GH_AW_PROMPT_84ddb7501c8fae29_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9a25fe0264c2fe92_EOF' + cat << 'GH_AW_PROMPT_84ddb7501c8fae29_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -287,12 +301,12 @@ jobs: {{/if}} - GH_AW_PROMPT_9a25fe0264c2fe92_EOF + GH_AW_PROMPT_84ddb7501c8fae29_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_9a25fe0264c2fe92_EOF' + cat << 'GH_AW_PROMPT_84ddb7501c8fae29_EOF' {{#runtime-import .github/workflows/daily-team-status.md}} - GH_AW_PROMPT_9a25fe0264c2fe92_EOF + GH_AW_PROMPT_84ddb7501c8fae29_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -387,6 +401,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyteamstatus outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -507,9 +522,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3385073f16158031_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a090ee65e3b5a421_EOF' {"create_issue":{"close_older_issues":true,"labels":["report","daily-status"],"max":1,"title_prefix":"[team-status] "},"create_report_incomplete_issue":{},"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_3385073f16158031_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a090ee65e3b5a421_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -680,7 +695,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6b07340b353f1f2f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_4b806ec8e0233008_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -740,7 +755,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_6b07340b353f1f2f_EOF + GH_AW_MCP_CONFIG_4b806ec8e0233008_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1014,6 +1029,8 @@ jobs: group: "gh-aw-conclusion-daily-team-status" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1263,6 +1280,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1529,6 +1548,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "daily-team-status" GH_AW_WORKFLOW_NAME: "Team Status" diff --git a/.github/workflows/daily-testify-uber-super-expert.lock.yml b/.github/workflows/daily-testify-uber-super-expert.lock.yml index 13694afa730..61d0ec400aa 100644 --- a/.github/workflows/daily-testify-uber-super-expert.lock.yml +++ b/.github/workflows/daily-testify-uber-super-expert.lock.yml @@ -103,6 +103,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -246,6 +247,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -263,21 +277,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6ca4f81e357701d1_EOF' + cat << 'GH_AW_PROMPT_55b2136eb012d0c3_EOF' - GH_AW_PROMPT_6ca4f81e357701d1_EOF + GH_AW_PROMPT_55b2136eb012d0c3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6ca4f81e357701d1_EOF' + cat << 'GH_AW_PROMPT_55b2136eb012d0c3_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_6ca4f81e357701d1_EOF + GH_AW_PROMPT_55b2136eb012d0c3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6ca4f81e357701d1_EOF' + cat << 'GH_AW_PROMPT_55b2136eb012d0c3_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -306,9 +320,9 @@ jobs: {{/if}} - GH_AW_PROMPT_6ca4f81e357701d1_EOF + GH_AW_PROMPT_55b2136eb012d0c3_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_6ca4f81e357701d1_EOF' + cat << 'GH_AW_PROMPT_55b2136eb012d0c3_EOF' {{#runtime-import .github/workflows/shared/go-source-analysis.md}} {{#runtime-import .github/workflows/shared/safe-output-app.md}} @@ -321,7 +335,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-testify-uber-super-expert.md}} - GH_AW_PROMPT_6ca4f81e357701d1_EOF + GH_AW_PROMPT_55b2136eb012d0c3_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -433,6 +447,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailytestifyubersuperexpert outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -569,9 +584,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8bf2df27d7481d13_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4d1f4d035e30a487_EOF' {"create_issue":{"expires":48,"labels":["testing","code-quality","automated-analysis","cookie"],"max":1,"title_prefix":"[testify-expert] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":51200,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_8bf2df27d7481d13_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_4d1f4d035e30a487_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -739,7 +754,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -814,7 +829,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1163,6 +1178,8 @@ jobs: group: "gh-aw-conclusion-daily-testify-uber-super-expert" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1415,6 +1432,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1631,6 +1650,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1697,6 +1718,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/testify-expert" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1796,6 +1819,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-testify-uber-super-expert" GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/daily-token-consumption-report.lock.yml b/.github/workflows/daily-token-consumption-report.lock.yml index 9451a0b6551..f45132164fc 100644 --- a/.github/workflows/daily-token-consumption-report.lock.yml +++ b/.github/workflows/daily-token-consumption-report.lock.yml @@ -104,6 +104,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -251,6 +252,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -267,20 +281,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_61f47e5133e2c363_EOF' + cat << 'GH_AW_PROMPT_e47d26d3e9efef68_EOF' - GH_AW_PROMPT_61f47e5133e2c363_EOF + GH_AW_PROMPT_e47d26d3e9efef68_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_61f47e5133e2c363_EOF' + cat << 'GH_AW_PROMPT_e47d26d3e9efef68_EOF' Tools: create_issue, create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_61f47e5133e2c363_EOF + GH_AW_PROMPT_e47d26d3e9efef68_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_61f47e5133e2c363_EOF' + cat << 'GH_AW_PROMPT_e47d26d3e9efef68_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -309,9 +323,9 @@ jobs: {{/if}} - GH_AW_PROMPT_61f47e5133e2c363_EOF + GH_AW_PROMPT_e47d26d3e9efef68_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_61f47e5133e2c363_EOF' + cat << 'GH_AW_PROMPT_e47d26d3e9efef68_EOF' {{#runtime-import .github/workflows/shared/mcp/sentry.md}} {{#runtime-import .github/workflows/shared/mcp/grafana.md}} @@ -319,7 +333,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-token-consumption-report.md}} - GH_AW_PROMPT_61f47e5133e2c363_EOF + GH_AW_PROMPT_e47d26d3e9efef68_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -416,6 +430,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailytokenconsumptionreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -548,9 +563,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4bbb0bb705a46000_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_05ba304f0cee54c2_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[token-consumption] "},"create_issue":{"close_older_issues":true,"expires":24,"labels":["automation","observability","telemetry"],"max":1,"title_prefix":"[token-consumption] "},"create_report_incomplete_issue":{},"mentions":{"enabled":false},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_4bbb0bb705a46000_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_05ba304f0cee54c2_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -755,7 +770,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e GRAFANA_SERVICE_ACCOUNT_TOKEN -e GRAFANA_URL -e SENTRY_ACCESS_TOKEN -e SENTRY_HOST -e SENTRY_OPENAI_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_f0edbc40b4f6d8ce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_6420f6a713b869cd_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -882,7 +897,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_f0edbc40b4f6d8ce_EOF + GH_AW_MCP_CONFIG_6420f6a713b869cd_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1253,6 +1268,8 @@ jobs: group: "gh-aw-conclusion-daily-token-consumption-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1503,6 +1520,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1772,6 +1791,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-token-consumption-report" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" diff --git a/.github/workflows/daily-windows-terminal-integration-builder.lock.yml b/.github/workflows/daily-windows-terminal-integration-builder.lock.yml index bf0b5bae2cc..48e2e9676b0 100644 --- a/.github/workflows/daily-windows-terminal-integration-builder.lock.yml +++ b/.github/workflows/daily-windows-terminal-integration-builder.lock.yml @@ -78,6 +78,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -223,6 +224,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -239,20 +253,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_0be30e3a80e82435_EOF' + cat << 'GH_AW_PROMPT_ef637123c6725d3f_EOF' - GH_AW_PROMPT_0be30e3a80e82435_EOF + GH_AW_PROMPT_ef637123c6725d3f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_0be30e3a80e82435_EOF' + cat << 'GH_AW_PROMPT_ef637123c6725d3f_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_0be30e3a80e82435_EOF + GH_AW_PROMPT_ef637123c6725d3f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_0be30e3a80e82435_EOF' + cat << 'GH_AW_PROMPT_ef637123c6725d3f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -281,12 +295,12 @@ jobs: {{/if}} - GH_AW_PROMPT_0be30e3a80e82435_EOF + GH_AW_PROMPT_ef637123c6725d3f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_0be30e3a80e82435_EOF' + cat << 'GH_AW_PROMPT_ef637123c6725d3f_EOF' {{#runtime-import .github/workflows/daily-windows-terminal-integration-builder.md}} - GH_AW_PROMPT_0be30e3a80e82435_EOF + GH_AW_PROMPT_ef637123c6725d3f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -382,6 +396,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailywindowsterminalintegrationbuilder outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -504,9 +519,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c49ee2161db54de8_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7a8dda839bf70d3e_EOF' {"create_issue":{"labels":["workflow","windows"],"max":1,"title_prefix":"[windows-integration] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_c49ee2161db54de8_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_7a8dda839bf70d3e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -673,7 +688,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -714,7 +729,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF + GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -998,6 +1013,8 @@ jobs: group: "gh-aw-conclusion-daily-windows-terminal-integration-builder" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1241,6 +1258,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1506,6 +1525,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐ŸชŸ" GH_AW_WORKFLOW_ID: "daily-windows-terminal-integration-builder" diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index facd74858ab..fc9ad136aee 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -235,6 +236,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -251,23 +265,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_63323876512a0bd8_EOF' + cat << 'GH_AW_PROMPT_3d6dc452f0530c21_EOF' - GH_AW_PROMPT_63323876512a0bd8_EOF + GH_AW_PROMPT_3d6dc452f0530c21_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_63323876512a0bd8_EOF' + cat << 'GH_AW_PROMPT_3d6dc452f0530c21_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_63323876512a0bd8_EOF + GH_AW_PROMPT_3d6dc452f0530c21_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_63323876512a0bd8_EOF' + cat << 'GH_AW_PROMPT_3d6dc452f0530c21_EOF' - GH_AW_PROMPT_63323876512a0bd8_EOF + GH_AW_PROMPT_3d6dc452f0530c21_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_63323876512a0bd8_EOF' + cat << 'GH_AW_PROMPT_3d6dc452f0530c21_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -296,14 +310,14 @@ jobs: {{/if}} - GH_AW_PROMPT_63323876512a0bd8_EOF + GH_AW_PROMPT_3d6dc452f0530c21_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_63323876512a0bd8_EOF' + cat << 'GH_AW_PROMPT_3d6dc452f0530c21_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/daily-workflow-updater.md}} - GH_AW_PROMPT_63323876512a0bd8_EOF + GH_AW_PROMPT_3d6dc452f0530c21_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -399,6 +413,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dailyworkflowupdater outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -525,9 +540,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f379a97c17f06de0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cfa6799cdbe52923_EOF' {"create_pull_request":{"draft":false,"expires":24,"labels":["dependencies","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"allowed","title_prefix":"[actions] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_f379a97c17f06de0_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cfa6799cdbe52923_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -699,7 +714,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -745,7 +760,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1045,6 +1060,8 @@ jobs: group: "gh-aw-conclusion-daily-workflow-updater" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1295,6 +1312,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1562,6 +1581,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "daily-workflow-updater" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" diff --git a/.github/workflows/dataflow-pr-discussion-dataset.lock.yml b/.github/workflows/dataflow-pr-discussion-dataset.lock.yml index 7b6908590d5..3e8563d82ce 100644 --- a/.github/workflows/dataflow-pr-discussion-dataset.lock.yml +++ b/.github/workflows/dataflow-pr-discussion-dataset.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: caveman_mode: ${{ steps.pick-experiment.outputs.caveman_mode }} comment_id: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -300,22 +314,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF' + cat << 'GH_AW_PROMPT_32de4aa84b690eea_EOF' - GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF + GH_AW_PROMPT_32de4aa84b690eea_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF' + cat << 'GH_AW_PROMPT_32de4aa84b690eea_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF + GH_AW_PROMPT_32de4aa84b690eea_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF' + cat << 'GH_AW_PROMPT_32de4aa84b690eea_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -344,9 +358,9 @@ jobs: {{/if}} - GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF + GH_AW_PROMPT_32de4aa84b690eea_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF' + cat << 'GH_AW_PROMPT_32de4aa84b690eea_EOF' {{#runtime-import .github/workflows/shared/pmg.md}} {{#runtime-import .github/workflows/shared/discussions-data-fetch.md}} @@ -354,7 +368,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/dataflow-pr-discussion-dataset.md}} - GH_AW_PROMPT_ae08d9ac3cd9b4a5_EOF + GH_AW_PROMPT_32de4aa84b690eea_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -476,6 +490,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dataflowprdiscussiondataset outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -834,9 +849,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5cb6c69c928441b9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_876d0458ede3765c_EOF' {"create_discussion":{"category":"reports","close_older_discussions":true,"expires":168,"fallback_to_issue":true,"max":1,"title_prefix":"[dataflow-dataset] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":3,"retention-days":30,"skip-archive":false}} - GH_AW_SAFE_OUTPUTS_CONFIG_5cb6c69c928441b9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_876d0458ede3765c_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -994,7 +1009,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -1040,7 +1055,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1407,6 +1422,8 @@ jobs: group: "gh-aw-conclusion-dataflow-pr-discussion-dataset" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1665,6 +1682,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1919,6 +1938,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1998,6 +2019,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/dataflow-dataset" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -2098,6 +2121,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐ŸŒŠ *Dataset built by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐ŸŒŠ DataFlow Dataset Builder starting! [{workflow_name}]({run_url}) is processing discussions and PRs with OpenDCAI/DataFlow...\",\"runSuccess\":\"โœ… DataFlow dataset ready! [{workflow_name}]({run_url}) produced a cleaned, deduplicated dataset. Artifacts uploaded. ๐Ÿ“Š\",\"runFailure\":\"โš ๏ธ DataFlow pipeline failed! [{workflow_name}]({run_url}) {status}. Check the run logs.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "dataflow-pr-discussion-dataset" @@ -2207,6 +2231,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dataflowprdiscussiondataset steps: - name: Checkout actions folder diff --git a/.github/workflows/dead-code-remover.lock.yml b/.github/workflows/dead-code-remover.lock.yml index a3e1433e252..3934ea83303 100644 --- a/.github/workflows/dead-code-remover.lock.yml +++ b/.github/workflows/dead-code-remover.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,24 +275,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b851b37109d43cb0_EOF' + cat << 'GH_AW_PROMPT_85e68e0aed25545b_EOF' - GH_AW_PROMPT_b851b37109d43cb0_EOF + GH_AW_PROMPT_85e68e0aed25545b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b851b37109d43cb0_EOF' + cat << 'GH_AW_PROMPT_85e68e0aed25545b_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_b851b37109d43cb0_EOF + GH_AW_PROMPT_85e68e0aed25545b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_b851b37109d43cb0_EOF' + cat << 'GH_AW_PROMPT_85e68e0aed25545b_EOF' - GH_AW_PROMPT_b851b37109d43cb0_EOF + GH_AW_PROMPT_85e68e0aed25545b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b851b37109d43cb0_EOF' + cat << 'GH_AW_PROMPT_85e68e0aed25545b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -307,15 +321,15 @@ jobs: {{/if}} - GH_AW_PROMPT_b851b37109d43cb0_EOF + GH_AW_PROMPT_85e68e0aed25545b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b851b37109d43cb0_EOF' + cat << 'GH_AW_PROMPT_85e68e0aed25545b_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/dead-code-remover.md}} - GH_AW_PROMPT_b851b37109d43cb0_EOF + GH_AW_PROMPT_85e68e0aed25545b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -424,6 +438,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: deadcoderemover outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -578,9 +593,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_abe2506a7588f9c0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a2cf7378344dcbfe_EOF' {"create_pull_request":{"expires":72,"labels":["chore","dead-code"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[dead-code] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_abe2506a7588f9c0_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a2cf7378344dcbfe_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -752,7 +767,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -798,7 +813,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1117,6 +1132,8 @@ jobs: group: "gh-aw-conclusion-dead-code-remover" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1365,6 +1382,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1612,6 +1631,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1688,6 +1709,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" GH_AW_WORKFLOW_ID: "dead-code-remover" @@ -1815,6 +1837,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: deadcoderemover steps: - name: Checkout actions folder diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index f9297bf5961..df62f1c1b31 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -104,6 +104,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -253,6 +254,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -305,22 +319,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_78d5dda105e4316a_EOF' + cat << 'GH_AW_PROMPT_b2d037e90d07bbc9_EOF' - GH_AW_PROMPT_78d5dda105e4316a_EOF + GH_AW_PROMPT_b2d037e90d07bbc9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_78d5dda105e4316a_EOF' + cat << 'GH_AW_PROMPT_b2d037e90d07bbc9_EOF' Tools: create_issue(max:7), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_78d5dda105e4316a_EOF + GH_AW_PROMPT_b2d037e90d07bbc9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_78d5dda105e4316a_EOF' + cat << 'GH_AW_PROMPT_b2d037e90d07bbc9_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -349,9 +363,9 @@ jobs: {{/if}} - GH_AW_PROMPT_78d5dda105e4316a_EOF + GH_AW_PROMPT_b2d037e90d07bbc9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_78d5dda105e4316a_EOF' + cat << 'GH_AW_PROMPT_b2d037e90d07bbc9_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/skills/jqschema/SKILL.md}} @@ -362,7 +376,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/deep-report.md}} - GH_AW_PROMPT_78d5dda105e4316a_EOF + GH_AW_PROMPT_b2d037e90d07bbc9_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -481,6 +495,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: deepreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -908,9 +923,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_61d485d7fca74f37_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_faff770d74b77ecd_EOF' {"create_discussion":{"category":"reports","close_older_discussions":true,"expires":168,"fallback_to_issue":true,"max":1},"create_issue":{"expires":48,"group":true,"labels":["automation","improvement","quick-win","cookie"],"max":7,"title_prefix":"[deep-report] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":1048576,"max_patch_size":10240}]},"report_incomplete":{},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":1,"retention-days":30}} - GH_AW_SAFE_OUTPUTS_CONFIG_61d485d7fca74f37_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_faff770d74b77ecd_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -1106,7 +1121,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e GH_AW_WORKFLOW_ID_SANITIZED -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_199a3445e3bc163e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f751a8f0cc5dbaf6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agentdb": { @@ -1192,7 +1207,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_199a3445e3bc163e_EOF + GH_AW_MCP_CONFIG_f751a8f0cc5dbaf6_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1599,6 +1614,8 @@ jobs: group: "gh-aw-conclusion-deep-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1856,6 +1873,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2114,6 +2133,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -2193,6 +2214,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/deep-report" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -2292,6 +2315,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "deep-report-intel-agent" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ฌ" @@ -2400,6 +2424,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: deepreport steps: - name: Checkout actions folder diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml index e08e1b68e76..75eeb3d8466 100644 --- a/.github/workflows/delight.lock.yml +++ b/.github/workflows/delight.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -255,21 +269,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_24350f69d6eb4d29_EOF' + cat << 'GH_AW_PROMPT_18136076aacb71ce_EOF' - GH_AW_PROMPT_24350f69d6eb4d29_EOF + GH_AW_PROMPT_18136076aacb71ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_24350f69d6eb4d29_EOF' + cat << 'GH_AW_PROMPT_18136076aacb71ce_EOF' Tools: create_issue(max:2), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_24350f69d6eb4d29_EOF + GH_AW_PROMPT_18136076aacb71ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_24350f69d6eb4d29_EOF' + cat << 'GH_AW_PROMPT_18136076aacb71ce_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -298,15 +312,15 @@ jobs: {{/if}} - GH_AW_PROMPT_24350f69d6eb4d29_EOF + GH_AW_PROMPT_18136076aacb71ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_24350f69d6eb4d29_EOF' + cat << 'GH_AW_PROMPT_18136076aacb71ce_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/delight.md}} - GH_AW_PROMPT_24350f69d6eb4d29_EOF + GH_AW_PROMPT_18136076aacb71ce_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -417,6 +431,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: delight outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -556,9 +571,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_775c076e556a2dfd_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e295b9f18bc22361_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[delight] "},"create_issue":{"expires":48,"group":true,"labels":["delight","cookie"],"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_775c076e556a2dfd_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_e295b9f18bc22361_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -754,7 +769,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -800,7 +815,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1149,6 +1164,8 @@ jobs: group: "gh-aw-conclusion-delight" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1404,6 +1421,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1661,6 +1680,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/delight" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1761,6 +1782,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“Š *User experience analysis by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ“Š Delight Agent starting! [{workflow_name}]({run_url}) is analyzing user-facing aspects for improvement opportunities...\",\"runSuccess\":\"โœ… Analysis complete! [{workflow_name}]({run_url}) has identified targeted improvements for user experience.\",\"runFailure\":\"โš ๏ธ Analysis interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "delight-daily" diff --git a/.github/workflows/dependabot-burner.lock.yml b/.github/workflows/dependabot-burner.lock.yml index 480569cbc7f..f9ba32e722f 100644 --- a/.github/workflows/dependabot-burner.lock.yml +++ b/.github/workflows/dependabot-burner.lock.yml @@ -114,6 +114,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -304,6 +305,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -321,23 +335,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e99be2fec3048f33_EOF' + cat << 'GH_AW_PROMPT_f3d5008a2e8f25d0_EOF' - GH_AW_PROMPT_e99be2fec3048f33_EOF + GH_AW_PROMPT_f3d5008a2e8f25d0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e99be2fec3048f33_EOF' + cat << 'GH_AW_PROMPT_f3d5008a2e8f25d0_EOF' Tools: add_comment, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_e99be2fec3048f33_EOF + GH_AW_PROMPT_f3d5008a2e8f25d0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_e99be2fec3048f33_EOF' + cat << 'GH_AW_PROMPT_f3d5008a2e8f25d0_EOF' - GH_AW_PROMPT_e99be2fec3048f33_EOF + GH_AW_PROMPT_f3d5008a2e8f25d0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e99be2fec3048f33_EOF' + cat << 'GH_AW_PROMPT_f3d5008a2e8f25d0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -366,18 +380,18 @@ jobs: {{/if}} - GH_AW_PROMPT_e99be2fec3048f33_EOF + GH_AW_PROMPT_f3d5008a2e8f25d0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_e99be2fec3048f33_EOF' + cat << 'GH_AW_PROMPT_f3d5008a2e8f25d0_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/dependabot-burner.md}} - GH_AW_PROMPT_e99be2fec3048f33_EOF + GH_AW_PROMPT_f3d5008a2e8f25d0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -478,6 +492,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dependabotburner outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -615,9 +630,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_35e469b32dcb1516_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_05e24b6de89f1758_EOF' {"add_comment":{"max":1},"create_pull_request":{"expires":72,"labels":["automation","dependencies","dependabot"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[dependabot-burner] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_35e469b32dcb1516_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_05e24b6de89f1758_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -812,7 +827,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -858,7 +873,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1189,6 +1204,8 @@ jobs: group: "gh-aw-conclusion-dependabot-burner" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1454,6 +1471,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1700,6 +1719,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1775,6 +1796,7 @@ jobs: GH_AW_ENGINE_MODEL: "gpt-5.4-mini" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ฅ" GH_AW_WORKFLOW_ID: "dependabot-burner" diff --git a/.github/workflows/dependabot-go-checker.lock.yml b/.github/workflows/dependabot-go-checker.lock.yml index 677b03b59a1..98290c74052 100644 --- a/.github/workflows/dependabot-go-checker.lock.yml +++ b/.github/workflows/dependabot-go-checker.lock.yml @@ -93,6 +93,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -293,20 +307,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF' + cat << 'GH_AW_PROMPT_5ec375992455e566_EOF' - GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF + GH_AW_PROMPT_5ec375992455e566_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF' + cat << 'GH_AW_PROMPT_5ec375992455e566_EOF' Tools: create_issue(max:10), close_issue(max:20), missing_tool, missing_data, noop - GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF + GH_AW_PROMPT_5ec375992455e566_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF' + cat << 'GH_AW_PROMPT_5ec375992455e566_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -335,15 +349,15 @@ jobs: {{/if}} - GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF + GH_AW_PROMPT_5ec375992455e566_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF' + cat << 'GH_AW_PROMPT_5ec375992455e566_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/dependabot-go-checker.md}} - GH_AW_PROMPT_d89a7caf7b3c3ed2_EOF + GH_AW_PROMPT_5ec375992455e566_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -445,6 +459,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dependabotgochecker outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -569,9 +584,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6bf3e85693d86a09_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_61305528c935c900_EOF' {"close_issue":{"max":20,"required_title_prefix":"[deps]","target":"*"},"create_issue":{"expires":48,"group":true,"labels":["dependencies","go","cookie"],"max":10,"title_prefix":"[deps]"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_6bf3e85693d86a09_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_61305528c935c900_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -760,7 +775,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_c981d0b864a47adf_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_62e0e53d369cbcce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -822,7 +837,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_c981d0b864a47adf_EOF + GH_AW_MCP_CONFIG_62e0e53d369cbcce_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1105,6 +1120,8 @@ jobs: group: "gh-aw-conclusion-dependabot-go-checker" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1348,6 +1365,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1602,6 +1621,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1690,6 +1711,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "dependabot-go-checker" diff --git a/.github/workflows/dependabot-repair.lock.yml b/.github/workflows/dependabot-repair.lock.yml index 2efae731d3a..6686b92ffea 100644 --- a/.github/workflows/dependabot-repair.lock.yml +++ b/.github/workflows/dependabot-repair.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -262,6 +263,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -278,23 +292,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF' + cat << 'GH_AW_PROMPT_0d079597dbc5c921_EOF' - GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF + GH_AW_PROMPT_0d079597dbc5c921_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF' + cat << 'GH_AW_PROMPT_0d079597dbc5c921_EOF' Tools: add_comment(max:5), update_issue(max:5), create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF + GH_AW_PROMPT_0d079597dbc5c921_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF' + cat << 'GH_AW_PROMPT_0d079597dbc5c921_EOF' - GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF + GH_AW_PROMPT_0d079597dbc5c921_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF' + cat << 'GH_AW_PROMPT_0d079597dbc5c921_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -323,13 +337,13 @@ jobs: {{/if}} - GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF + GH_AW_PROMPT_0d079597dbc5c921_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF' + cat << 'GH_AW_PROMPT_0d079597dbc5c921_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/dependabot-repair.md}} - GH_AW_PROMPT_3b3e2b5ec3ec47b3_EOF + GH_AW_PROMPT_0d079597dbc5c921_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dependabotrepair outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -545,9 +560,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d163470736bc889c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3828c4b98c6126ea_EOF' {"add_comment":{"max":5},"create_pull_request":{"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_issue":{"allow_body":true,"max":5}} - GH_AW_SAFE_OUTPUTS_CONFIG_d163470736bc889c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3828c4b98c6126ea_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -799,7 +814,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -861,7 +876,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1144,6 +1159,8 @@ jobs: group: "gh-aw-conclusion-dependabot-repair" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1395,6 +1412,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1645,6 +1664,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1709,6 +1730,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "dependabot-repair" diff --git a/.github/workflows/deployment-incident-monitor.lock.yml b/.github/workflows/deployment-incident-monitor.lock.yml index c9222c2c1a3..0a23e00f316 100644 --- a/.github/workflows/deployment-incident-monitor.lock.yml +++ b/.github/workflows/deployment-incident-monitor.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,20 +275,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9231dbcc8a3aadc3_EOF' + cat << 'GH_AW_PROMPT_a0853e7181521216_EOF' - GH_AW_PROMPT_9231dbcc8a3aadc3_EOF + GH_AW_PROMPT_a0853e7181521216_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9231dbcc8a3aadc3_EOF' + cat << 'GH_AW_PROMPT_a0853e7181521216_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_9231dbcc8a3aadc3_EOF + GH_AW_PROMPT_a0853e7181521216_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9231dbcc8a3aadc3_EOF' + cat << 'GH_AW_PROMPT_a0853e7181521216_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,14 +317,14 @@ jobs: {{/if}} - GH_AW_PROMPT_9231dbcc8a3aadc3_EOF + GH_AW_PROMPT_a0853e7181521216_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_9231dbcc8a3aadc3_EOF' + cat << 'GH_AW_PROMPT_a0853e7181521216_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/deployment-incident-monitor.md}} - GH_AW_PROMPT_9231dbcc8a3aadc3_EOF + GH_AW_PROMPT_a0853e7181521216_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -414,6 +428,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: deploymentincidentmonitor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -540,9 +555,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d8d4b9130eb430c0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c5b5680e9beeb975_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"labels":["incident","deployment-failure"],"max":1,"title_prefix":"[Incident] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_d8d4b9130eb430c0_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c5b5680e9beeb975_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -710,7 +725,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -756,7 +771,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1055,6 +1070,8 @@ jobs: group: "gh-aw-conclusion-deployment-incident-monitor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1298,6 +1315,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1546,6 +1565,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1621,6 +1642,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿšจ" GH_AW_WORKFLOW_ID: "deployment-incident-monitor" diff --git a/.github/workflows/design-decision-gate.lock.yml b/.github/workflows/design-decision-gate.lock.yml index b58242db540..26e8f34e50b 100644 --- a/.github/workflows/design-decision-gate.lock.yml +++ b/.github/workflows/design-decision-gate.lock.yml @@ -109,6 +109,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -300,6 +301,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -319,23 +333,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8eafd64f368cc39c_EOF' + cat << 'GH_AW_PROMPT_178c3b028293c775_EOF' - GH_AW_PROMPT_8eafd64f368cc39c_EOF + GH_AW_PROMPT_178c3b028293c775_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8eafd64f368cc39c_EOF' + cat << 'GH_AW_PROMPT_178c3b028293c775_EOF' Tools: add_comment(max:2), push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_8eafd64f368cc39c_EOF + GH_AW_PROMPT_178c3b028293c775_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_8eafd64f368cc39c_EOF' + cat << 'GH_AW_PROMPT_178c3b028293c775_EOF' - GH_AW_PROMPT_8eafd64f368cc39c_EOF + GH_AW_PROMPT_178c3b028293c775_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8eafd64f368cc39c_EOF' + cat << 'GH_AW_PROMPT_178c3b028293c775_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -364,7 +378,7 @@ jobs: {{/if}} - GH_AW_PROMPT_8eafd64f368cc39c_EOF + GH_AW_PROMPT_178c3b028293c775_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" @@ -372,13 +386,13 @@ jobs: if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md" fi - cat << 'GH_AW_PROMPT_8eafd64f368cc39c_EOF' + cat << 'GH_AW_PROMPT_178c3b028293c775_EOF' {{#runtime-import .github/agents/adr-writer.agent.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/design-decision-gate.md}} - GH_AW_PROMPT_8eafd64f368cc39c_EOF + GH_AW_PROMPT_178c3b028293c775_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -485,6 +499,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: designdecisiongate outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -632,9 +647,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c07badac470b5c7c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e032e2de93c26f57_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"allowed_files":["docs/adr/**"],"commit_title_suffix":" [design-decision-gate]","if_no_changes":"warn","ignore_missing_branch_failure":true,"max_patch_size":4096,"patch_format":"bundle","protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_c07badac470b5c7c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_e032e2de93c26f57_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -805,7 +820,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e4f1259b75d9dc27_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_2d3496f424a03667_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -851,7 +866,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e4f1259b75d9dc27_EOF + GH_AW_MCP_CONFIG_2d3496f424a03667_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1240,6 +1255,8 @@ jobs: group: "gh-aw-conclusion-design-decision-gate" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1507,6 +1524,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1760,6 +1779,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1834,6 +1855,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ—๏ธ *ADR gate enforced by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) is checking for design decision records on this {event_type}...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed the design decision gate check.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status} during design decision gate check.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ—๏ธ" diff --git a/.github/workflows/designer-drift-audit.lock.yml b/.github/workflows/designer-drift-audit.lock.yml index 6c5bfb768b9..7c7f92ae2cf 100644 --- a/.github/workflows/designer-drift-audit.lock.yml +++ b/.github/workflows/designer-drift-audit.lock.yml @@ -78,6 +78,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -223,6 +224,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -239,20 +253,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6cd9d1db3acc1dff_EOF' + cat << 'GH_AW_PROMPT_8c02059830b0cd9b_EOF' - GH_AW_PROMPT_6cd9d1db3acc1dff_EOF + GH_AW_PROMPT_8c02059830b0cd9b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6cd9d1db3acc1dff_EOF' + cat << 'GH_AW_PROMPT_8c02059830b0cd9b_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_6cd9d1db3acc1dff_EOF + GH_AW_PROMPT_8c02059830b0cd9b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6cd9d1db3acc1dff_EOF' + cat << 'GH_AW_PROMPT_8c02059830b0cd9b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -281,12 +295,12 @@ jobs: {{/if}} - GH_AW_PROMPT_6cd9d1db3acc1dff_EOF + GH_AW_PROMPT_8c02059830b0cd9b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_6cd9d1db3acc1dff_EOF' + cat << 'GH_AW_PROMPT_8c02059830b0cd9b_EOF' {{#runtime-import .github/workflows/designer-drift-audit.md}} - GH_AW_PROMPT_6cd9d1db3acc1dff_EOF + GH_AW_PROMPT_8c02059830b0cd9b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -381,6 +395,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: designerdriftaudit outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -510,9 +525,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5da26df363b35fc4_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b796f13b78837eb1_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"labels":["drift-audit","automated"],"max":1,"title_prefix":"Designer Drift Audit"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_5da26df363b35fc4_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b796f13b78837eb1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -679,7 +694,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -720,7 +735,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF + GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1004,6 +1019,8 @@ jobs: group: "gh-aw-conclusion-designer-drift-audit" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1247,6 +1264,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1512,6 +1531,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "designer-drift-audit" diff --git a/.github/workflows/dev-hawk.lock.yml b/.github/workflows/dev-hawk.lock.yml index ad9ce0036e0..4561865fcd5 100644 --- a/.github/workflows/dev-hawk.lock.yml +++ b/.github/workflows/dev-hawk.lock.yml @@ -102,6 +102,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -267,20 +281,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1f303c422abeb13c_EOF' + cat << 'GH_AW_PROMPT_467037e2b521151c_EOF' - GH_AW_PROMPT_1f303c422abeb13c_EOF + GH_AW_PROMPT_467037e2b521151c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1f303c422abeb13c_EOF' + cat << 'GH_AW_PROMPT_467037e2b521151c_EOF' Tools: add_comment, missing_tool, missing_data, noop - GH_AW_PROMPT_1f303c422abeb13c_EOF + GH_AW_PROMPT_467037e2b521151c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1f303c422abeb13c_EOF' + cat << 'GH_AW_PROMPT_467037e2b521151c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -309,16 +323,16 @@ jobs: {{/if}} - GH_AW_PROMPT_1f303c422abeb13c_EOF + GH_AW_PROMPT_467037e2b521151c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1f303c422abeb13c_EOF' + cat << 'GH_AW_PROMPT_467037e2b521151c_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/dev-hawk.md}} - GH_AW_PROMPT_1f303c422abeb13c_EOF + GH_AW_PROMPT_467037e2b521151c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -435,6 +449,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: devhawk outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -623,9 +638,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9dea1e0ee546eecb_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a380bd99153d454e_EOF' {"add_comment":{"max":1,"target":"*"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_9dea1e0ee546eecb_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a380bd99153d454e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -778,7 +793,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7292df9048689c98_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -843,7 +858,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF + GH_AW_MCP_CONFIG_7292df9048689c98_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1163,6 +1178,8 @@ jobs: group: "gh-aw-conclusion-dev-hawk" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1407,6 +1424,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1655,6 +1674,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1718,6 +1739,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿฆ… *Observed from above by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿฆ… Dev Hawk circles the sky! [{workflow_name}]({run_url}) is monitoring this {event_type} from above...\",\"runSuccess\":\"๐Ÿฆ… Hawk eyes report! [{workflow_name}]({run_url}) has completed reconnaissance. Intel delivered! ๐ŸŽฏ\",\"runFailure\":\"๐Ÿฆ… Hawk down! [{workflow_name}]({run_url}) {status}. The skies grow quiet...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿฆ…" diff --git a/.github/workflows/dev.lock.yml b/.github/workflows/dev.lock.yml index 16d76e81f9c..722ae3b17ed 100644 --- a/.github/workflows/dev.lock.yml +++ b/.github/workflows/dev.lock.yml @@ -109,6 +109,7 @@ jobs: issues: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: ${{ steps.add-comment.outputs.comment-id }} comment_repo: ${{ steps.add-comment.outputs.comment-repo }} @@ -297,6 +298,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -313,20 +327,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_3b449d460bbf16c3_EOF' + cat << 'GH_AW_PROMPT_b0e066a156e5f9f0_EOF' - GH_AW_PROMPT_3b449d460bbf16c3_EOF + GH_AW_PROMPT_b0e066a156e5f9f0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_3b449d460bbf16c3_EOF' + cat << 'GH_AW_PROMPT_b0e066a156e5f9f0_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_3b449d460bbf16c3_EOF + GH_AW_PROMPT_b0e066a156e5f9f0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_3b449d460bbf16c3_EOF' + cat << 'GH_AW_PROMPT_b0e066a156e5f9f0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -355,15 +369,15 @@ jobs: {{/if}} - GH_AW_PROMPT_3b449d460bbf16c3_EOF + GH_AW_PROMPT_b0e066a156e5f9f0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_3b449d460bbf16c3_EOF' + cat << 'GH_AW_PROMPT_b0e066a156e5f9f0_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/dev.md}} - GH_AW_PROMPT_3b449d460bbf16c3_EOF + GH_AW_PROMPT_b0e066a156e5f9f0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -457,6 +471,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dev outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -584,9 +599,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_efd4d5c96a3d44fd_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3fc551f2342c3a77_EOF' {"create_issue":{"expires":168,"max":1,"title_prefix":"[Daily Report] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_efd4d5c96a3d44fd_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3fc551f2342c3a77_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -753,7 +768,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_a8bd541a147368d4_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_6b595a071763b638_EOF [history] persistence = "none" @@ -773,11 +788,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_a8bd541a147368d4_EOF + GH_AW_MCP_CONFIG_6b595a071763b638_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -822,11 +837,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF model_provider = "openai-proxy" @@ -838,7 +853,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1123,6 +1138,8 @@ jobs: group: "gh-aw-conclusion-dev" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1386,6 +1403,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1535,18 +1554,18 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF [history] persistence = "none" [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_37834a58b4c29838_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { }, @@ -1557,11 +1576,11 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_37834a58b4c29838_EOF + GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF model_provider = "openai-proxy" [model_providers.openai-proxy] name = "OpenAI AWF proxy" @@ -1571,7 +1590,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1699,6 +1718,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1760,6 +1781,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: "gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ’ป" GH_AW_WORKFLOW_ID: "dev" diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 5a8ef849990..06359148025 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -264,25 +278,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_19d69eedac17a876_EOF' + cat << 'GH_AW_PROMPT_5ae261991fd4d7d7_EOF' - GH_AW_PROMPT_19d69eedac17a876_EOF + GH_AW_PROMPT_5ae261991fd4d7d7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_19d69eedac17a876_EOF' + cat << 'GH_AW_PROMPT_5ae261991fd4d7d7_EOF' Tools: create_discussion, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_19d69eedac17a876_EOF + GH_AW_PROMPT_5ae261991fd4d7d7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_19d69eedac17a876_EOF' + cat << 'GH_AW_PROMPT_5ae261991fd4d7d7_EOF' - GH_AW_PROMPT_19d69eedac17a876_EOF + GH_AW_PROMPT_5ae261991fd4d7d7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_19d69eedac17a876_EOF' + cat << 'GH_AW_PROMPT_5ae261991fd4d7d7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -311,9 +325,9 @@ jobs: {{/if}} - GH_AW_PROMPT_19d69eedac17a876_EOF + GH_AW_PROMPT_5ae261991fd4d7d7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_19d69eedac17a876_EOF' + cat << 'GH_AW_PROMPT_5ae261991fd4d7d7_EOF' {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -323,7 +337,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/developer-docs-consolidator.md}} - GH_AW_PROMPT_19d69eedac17a876_EOF + GH_AW_PROMPT_5ae261991fd4d7d7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -439,6 +453,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: developerdocsconsolidator outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -594,9 +609,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5d049beac73d7d33_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_86a128c8292ccbd0_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[developer-docs] "},"create_pull_request":{"draft":false,"expires":48,"labels":["documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review","title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_5d049beac73d7d33_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_86a128c8292ccbd0_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -795,7 +810,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_77337373ac920130_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -866,7 +881,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_77337373ac920130_EOF + GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1296,6 +1311,8 @@ jobs: group: "gh-aw-conclusion-developer-docs-consolidator" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1550,6 +1567,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1810,6 +1829,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|master" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1910,6 +1931,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" GH_AW_WORKFLOW_ID: "developer-docs-consolidator" @@ -2037,6 +2059,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: developerdocsconsolidator steps: - name: Checkout actions folder diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index 2ca91b7c115..023d3741ed1 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -236,6 +237,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -252,23 +266,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_0e15b47b3acc2fdb_EOF' + cat << 'GH_AW_PROMPT_3c531bd67d432dad_EOF' - GH_AW_PROMPT_0e15b47b3acc2fdb_EOF + GH_AW_PROMPT_3c531bd67d432dad_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_0e15b47b3acc2fdb_EOF' + cat << 'GH_AW_PROMPT_3c531bd67d432dad_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_0e15b47b3acc2fdb_EOF + GH_AW_PROMPT_3c531bd67d432dad_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_0e15b47b3acc2fdb_EOF' + cat << 'GH_AW_PROMPT_3c531bd67d432dad_EOF' - GH_AW_PROMPT_0e15b47b3acc2fdb_EOF + GH_AW_PROMPT_3c531bd67d432dad_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_0e15b47b3acc2fdb_EOF' + cat << 'GH_AW_PROMPT_3c531bd67d432dad_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -297,15 +311,15 @@ jobs: {{/if}} - GH_AW_PROMPT_0e15b47b3acc2fdb_EOF + GH_AW_PROMPT_3c531bd67d432dad_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_0e15b47b3acc2fdb_EOF' + cat << 'GH_AW_PROMPT_3c531bd67d432dad_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/dictation-prompt.md}} - GH_AW_PROMPT_0e15b47b3acc2fdb_EOF + GH_AW_PROMPT_3c531bd67d432dad_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -401,6 +415,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: dictationprompt outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -527,9 +542,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_90c455ec1c0f358e_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f0253c4ca3b47424_EOF' {"create_pull_request":{"auto_merge":true,"draft":false,"expires":48,"labels":["documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_90c455ec1c0f358e_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_f0253c4ca3b47424_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -701,7 +716,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -747,7 +762,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1047,6 +1062,8 @@ jobs: group: "gh-aw-conclusion-dictation-prompt" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1292,6 +1309,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1559,6 +1578,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐ŸŽ™๏ธ" GH_AW_WORKFLOW_ID: "dictation-prompt" diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml index 848afb6fbce..284613a6f2f 100644 --- a/.github/workflows/discussion-task-miner.lock.yml +++ b/.github/workflows/discussion-task-miner.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -237,6 +238,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,21 +268,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_0fb4f17142ba0e98_EOF' + cat << 'GH_AW_PROMPT_7eb92f8772c0cade_EOF' - GH_AW_PROMPT_0fb4f17142ba0e98_EOF + GH_AW_PROMPT_7eb92f8772c0cade_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_0fb4f17142ba0e98_EOF' + cat << 'GH_AW_PROMPT_7eb92f8772c0cade_EOF' Tools: add_comment(max:3), create_issue(max:5), missing_tool, missing_data, noop - GH_AW_PROMPT_0fb4f17142ba0e98_EOF + GH_AW_PROMPT_7eb92f8772c0cade_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_0fb4f17142ba0e98_EOF' + cat << 'GH_AW_PROMPT_7eb92f8772c0cade_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -297,9 +311,9 @@ jobs: {{/if}} - GH_AW_PROMPT_0fb4f17142ba0e98_EOF + GH_AW_PROMPT_7eb92f8772c0cade_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_0fb4f17142ba0e98_EOF' + cat << 'GH_AW_PROMPT_7eb92f8772c0cade_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/skills/jqschema/SKILL.md}} @@ -307,7 +321,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/discussion-task-miner.md}} - GH_AW_PROMPT_0fb4f17142ba0e98_EOF + GH_AW_PROMPT_7eb92f8772c0cade_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -416,6 +430,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: discussiontaskminer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -550,9 +565,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_893c997e1d52204b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_383a4e4d07c6306a_EOF' {"add_comment":{"max":3},"create_issue":{"expires":24,"group":true,"labels":["code-quality","automation","task-mining"],"max":5,"title_prefix":"[Code Quality] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_893c997e1d52204b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_383a4e4d07c6306a_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -743,7 +758,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -789,7 +804,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1129,6 +1144,8 @@ jobs: group: "gh-aw-conclusion-discussion-task-miner" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1382,6 +1399,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1639,6 +1658,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/discussion-task-miner" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1739,6 +1760,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ” *Task mining by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” Discussion Task Miner starting! [{workflow_name}]({run_url}) is scanning discussions for code quality improvements...\",\"runSuccess\":\"โœ… Task mining complete! [{workflow_name}]({run_url}) has identified actionable code quality tasks. ๐Ÿ“Š\",\"runFailure\":\"โš ๏ธ Task mining interrupted! [{workflow_name}]({run_url}) {status}. Please review the logs...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "discussion-task-miner" diff --git a/.github/workflows/docs-noob-tester.lock.yml b/.github/workflows/docs-noob-tester.lock.yml index b7c51157910..c42b89b9ecf 100644 --- a/.github/workflows/docs-noob-tester.lock.yml +++ b/.github/workflows/docs-noob-tester.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,23 +268,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF' + cat << 'GH_AW_PROMPT_4c23cb6a38b62095_EOF' - GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF + GH_AW_PROMPT_4c23cb6a38b62095_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF' + cat << 'GH_AW_PROMPT_4c23cb6a38b62095_EOF' Tools: create_discussion, upload_asset(max:10), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF + GH_AW_PROMPT_4c23cb6a38b62095_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF' + cat << 'GH_AW_PROMPT_4c23cb6a38b62095_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,9 +313,9 @@ jobs: {{/if}} - GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF + GH_AW_PROMPT_4c23cb6a38b62095_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF' + cat << 'GH_AW_PROMPT_4c23cb6a38b62095_EOF' {{#runtime-import .github/workflows/shared/docs-server-lifecycle.md}} {{#runtime-import .github/workflows/shared/keep-it-short.md}} @@ -309,7 +323,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/docs-noob-tester.md}} - GH_AW_PROMPT_91bcaaaf7efdf6a4_EOF + GH_AW_PROMPT_4c23cb6a38b62095_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -407,6 +421,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: docsnoobtester outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -560,9 +575,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_018cf9478f5da242_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_46f9002ce820cde9_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[docs-noob-tester] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":10,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_018cf9478f5da242_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_46f9002ce820cde9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -736,7 +751,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -798,7 +813,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1099,6 +1114,8 @@ jobs: group: "gh-aw-conclusion-docs-noob-tester" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1344,6 +1361,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1580,6 +1599,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" GH_AW_WORKFLOW_ID: "docs-noob-tester" @@ -1675,6 +1695,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/draft-pr-cleanup.lock.yml b/.github/workflows/draft-pr-cleanup.lock.yml index 3288c1d221a..96dc85ac6a4 100644 --- a/.github/workflows/draft-pr-cleanup.lock.yml +++ b/.github/workflows/draft-pr-cleanup.lock.yml @@ -93,6 +93,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -234,6 +235,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -250,20 +264,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9cf4d3881bf7e661_EOF' + cat << 'GH_AW_PROMPT_76b326aa27f5b4e7_EOF' - GH_AW_PROMPT_9cf4d3881bf7e661_EOF + GH_AW_PROMPT_76b326aa27f5b4e7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9cf4d3881bf7e661_EOF' + cat << 'GH_AW_PROMPT_76b326aa27f5b4e7_EOF' Tools: add_comment(max:20), close_pull_request(max:10), add_labels(max:20), missing_tool, missing_data, noop - GH_AW_PROMPT_9cf4d3881bf7e661_EOF + GH_AW_PROMPT_76b326aa27f5b4e7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9cf4d3881bf7e661_EOF' + cat << 'GH_AW_PROMPT_76b326aa27f5b4e7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -292,14 +306,14 @@ jobs: {{/if}} - GH_AW_PROMPT_9cf4d3881bf7e661_EOF + GH_AW_PROMPT_76b326aa27f5b4e7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_9cf4d3881bf7e661_EOF' + cat << 'GH_AW_PROMPT_76b326aa27f5b4e7_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/draft-pr-cleanup.md}} - GH_AW_PROMPT_9cf4d3881bf7e661_EOF + GH_AW_PROMPT_76b326aa27f5b4e7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -396,6 +410,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: draftprcleanup outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -522,9 +537,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_21619228d4273d6b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_11aee4227233a2bf_EOF' {"add_comment":{"max":20},"add_labels":{"max":20},"close_pull_request":{"max":10,"target":"*"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_21619228d4273d6b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_11aee4227233a2bf_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -716,7 +731,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -762,7 +777,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1081,6 +1096,8 @@ jobs: group: "gh-aw-conclusion-draft-pr-cleanup" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1325,6 +1342,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1592,6 +1611,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"๐Ÿงน Starting draft PR cleanup... [{workflow_name}]({run_url}) is reviewing draft PRs for staleness\",\"runSuccess\":\"โœ… Draft PR cleanup complete! [{workflow_name}]({run_url}) has reviewed and processed stale drafts.\",\"runFailure\":\"โŒ Draft PR cleanup failed! [{workflow_name}]({run_url}) {status}. Some draft PRs may not be processed.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index 5b237c1d534..2bd0491a142 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -265,20 +279,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e8b3c53e7ce8427b_EOF' + cat << 'GH_AW_PROMPT_16bbab4c0666dbfd_EOF' - GH_AW_PROMPT_e8b3c53e7ce8427b_EOF + GH_AW_PROMPT_16bbab4c0666dbfd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e8b3c53e7ce8427b_EOF' + cat << 'GH_AW_PROMPT_16bbab4c0666dbfd_EOF' Tools: create_issue(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_e8b3c53e7ce8427b_EOF + GH_AW_PROMPT_16bbab4c0666dbfd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e8b3c53e7ce8427b_EOF' + cat << 'GH_AW_PROMPT_16bbab4c0666dbfd_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -307,9 +321,9 @@ jobs: {{/if}} - GH_AW_PROMPT_e8b3c53e7ce8427b_EOF + GH_AW_PROMPT_16bbab4c0666dbfd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e8b3c53e7ce8427b_EOF' + cat << 'GH_AW_PROMPT_16bbab4c0666dbfd_EOF' {{#runtime-import .github/workflows/shared/go-source-analysis.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -319,7 +333,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/duplicate-code-detector.md}} - GH_AW_PROMPT_e8b3c53e7ce8427b_EOF + GH_AW_PROMPT_16bbab4c0666dbfd_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: duplicatecodedetector outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -547,9 +562,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ffd53e41b3309a6b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4faf4759a6d78e92_EOF' {"create_issue":{"assignees":["copilot"],"expires":48,"group":true,"labels":["code-quality","automated-analysis","cookie"],"max":3,"title_prefix":"[duplicate-code] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_ffd53e41b3309a6b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_4faf4759a6d78e92_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -719,7 +734,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_9a7643261e1f63cd_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_f396d34e595823d6_EOF [history] persistence = "none" @@ -762,11 +777,11 @@ jobs: [mcp_servers.serena."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_9a7643261e1f63cd_EOF + GH_AW_MCP_CONFIG_f396d34e595823d6_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_98d3412280232686_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81f940a70f7383ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -852,11 +867,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_98d3412280232686_EOF + GH_AW_MCP_CONFIG_81f940a70f7383ee_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF model_provider = "openai-proxy" @@ -868,7 +883,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_PERSONAL_ACCESS_TOKEN$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1140,6 +1155,8 @@ jobs: group: "gh-aw-conclusion-duplicate-code-detector" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1383,6 +1400,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1532,18 +1551,18 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF [history] persistence = "none" [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_37834a58b4c29838_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { }, @@ -1554,11 +1573,11 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_37834a58b4c29838_EOF + GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF model_provider = "openai-proxy" [model_providers.openai-proxy] name = "OpenAI AWF proxy" @@ -1568,7 +1587,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1708,6 +1727,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "duplicate-code-detector" diff --git a/.github/workflows/example-failure-category-filter.lock.yml b/.github/workflows/example-failure-category-filter.lock.yml index bafc51e37e1..c5352e1de3a 100644 --- a/.github/workflows/example-failure-category-filter.lock.yml +++ b/.github/workflows/example-failure-category-filter.lock.yml @@ -73,6 +73,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -217,6 +218,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -233,20 +247,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_fc6ae6592f216c40_EOF' + cat << 'GH_AW_PROMPT_d1806da253a75af4_EOF' - GH_AW_PROMPT_fc6ae6592f216c40_EOF + GH_AW_PROMPT_d1806da253a75af4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_fc6ae6592f216c40_EOF' + cat << 'GH_AW_PROMPT_d1806da253a75af4_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_fc6ae6592f216c40_EOF + GH_AW_PROMPT_d1806da253a75af4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_fc6ae6592f216c40_EOF' + cat << 'GH_AW_PROMPT_d1806da253a75af4_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -275,12 +289,12 @@ jobs: {{/if}} - GH_AW_PROMPT_fc6ae6592f216c40_EOF + GH_AW_PROMPT_d1806da253a75af4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_fc6ae6592f216c40_EOF' + cat << 'GH_AW_PROMPT_d1806da253a75af4_EOF' {{#runtime-import .github/workflows/example-failure-category-filter.md}} - GH_AW_PROMPT_fc6ae6592f216c40_EOF + GH_AW_PROMPT_d1806da253a75af4_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -370,6 +384,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: examplefailurecategoryfilter outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -492,9 +507,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_225e6cf166622973_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa129741e84aa60e_EOF' {"create_issue":{"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_225e6cf166622973_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_fa129741e84aa60e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -664,7 +679,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -721,7 +736,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF + GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -992,6 +1007,8 @@ jobs: group: "gh-aw-conclusion-example-failure-category-filter" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1236,6 +1253,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1501,6 +1520,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "example-failure-category-filter" GH_AW_WORKFLOW_NAME: "Example Failure Category Filter" diff --git a/.github/workflows/example-permissions-warning.lock.yml b/.github/workflows/example-permissions-warning.lock.yml index 93bcf8e284a..4d54bd86fea 100644 --- a/.github/workflows/example-permissions-warning.lock.yml +++ b/.github/workflows/example-permissions-warning.lock.yml @@ -89,6 +89,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -236,6 +237,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -252,23 +266,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF' + cat << 'GH_AW_PROMPT_6c3804704d8b6927_EOF' - GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF + GH_AW_PROMPT_6c3804704d8b6927_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF' + cat << 'GH_AW_PROMPT_6c3804704d8b6927_EOF' Tools: create_issue - GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF + GH_AW_PROMPT_6c3804704d8b6927_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF' + cat << 'GH_AW_PROMPT_6c3804704d8b6927_EOF' - GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF + GH_AW_PROMPT_6c3804704d8b6927_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF' + cat << 'GH_AW_PROMPT_6c3804704d8b6927_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -297,13 +311,13 @@ jobs: {{/if}} - GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF + GH_AW_PROMPT_6c3804704d8b6927_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF' + cat << 'GH_AW_PROMPT_6c3804704d8b6927_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/example-permissions-warning.md}} - GH_AW_PROMPT_51c7a5c3bdf4b1c7_EOF + GH_AW_PROMPT_6c3804704d8b6927_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -395,6 +409,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: examplepermissionswarning outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -519,9 +534,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_29bf22768be40725_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a362ed52f3da48ab_EOF' {"create_issue":{"labels":["example-permissions-warning"],"max":1,"title_prefix":"[example-permissions-warning]"}} - GH_AW_SAFE_OUTPUTS_CONFIG_29bf22768be40725_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a362ed52f3da48ab_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -619,7 +634,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6cab68b7559990ab_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f7473f2347354ecf_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -681,7 +696,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6cab68b7559990ab_EOF + GH_AW_MCP_CONFIG_f7473f2347354ecf_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -960,6 +975,8 @@ jobs: group: "gh-aw-conclusion-example-permissions-warning" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1139,6 +1156,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "โš ๏ธ" GH_AW_WORKFLOW_ID: "example-permissions-warning" GH_AW_WORKFLOW_NAME: "Example: Properly Provisioned Permissions" diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index 8d94c93ca75..b679f75ead7 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -411,6 +425,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: exampleworkflowanalyzer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -1179,6 +1194,8 @@ jobs: group: "gh-aw-conclusion-example-workflow-analyzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1424,6 +1441,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1693,6 +1712,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "example-workflow-analyzer" diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index fa9c1ec5485..1951371f8df 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -103,6 +103,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -260,6 +261,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -277,22 +291,22 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_4423079ae89680f6_EOF' + cat << 'GH_AW_PROMPT_cedcd7bd636c25bf_EOF' - GH_AW_PROMPT_4423079ae89680f6_EOF + GH_AW_PROMPT_cedcd7bd636c25bf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_4423079ae89680f6_EOF' + cat << 'GH_AW_PROMPT_cedcd7bd636c25bf_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_4423079ae89680f6_EOF + GH_AW_PROMPT_cedcd7bd636c25bf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_4423079ae89680f6_EOF' + cat << 'GH_AW_PROMPT_cedcd7bd636c25bf_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -321,14 +335,14 @@ jobs: {{/if}} - GH_AW_PROMPT_4423079ae89680f6_EOF + GH_AW_PROMPT_cedcd7bd636c25bf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_4423079ae89680f6_EOF' + cat << 'GH_AW_PROMPT_cedcd7bd636c25bf_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/firewall-escape.md}} - GH_AW_PROMPT_4423079ae89680f6_EOF + GH_AW_PROMPT_cedcd7bd636c25bf_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -444,6 +458,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: firewallescape outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -598,9 +613,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4294ecafe3f234b9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cd39853cde39537e_EOF' {"create_discussion":{"category":"audits","expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[Firewall Escape] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":50,"max_file_size":524288,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_4294ecafe3f234b9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cd39853cde39537e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -758,7 +773,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -804,7 +819,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1140,6 +1155,8 @@ jobs: group: "gh-aw-conclusion-firewall-escape" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1397,6 +1414,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1685,6 +1704,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1738,6 +1759,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/firewall-escape" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1837,6 +1860,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "firewall-escape" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" @@ -1934,6 +1958,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: firewallescape steps: - name: Checkout actions folder diff --git a/.github/workflows/firewall.lock.yml b/.github/workflows/firewall.lock.yml index 7f73049d4f2..a248e095b2f 100644 --- a/.github/workflows/firewall.lock.yml +++ b/.github/workflows/firewall.lock.yml @@ -89,6 +89,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -236,6 +237,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -252,23 +266,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ed3b9052ebb20559_EOF' + cat << 'GH_AW_PROMPT_6388fdb4a0d6deed_EOF' - GH_AW_PROMPT_ed3b9052ebb20559_EOF + GH_AW_PROMPT_6388fdb4a0d6deed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ed3b9052ebb20559_EOF' + cat << 'GH_AW_PROMPT_6388fdb4a0d6deed_EOF' Tools: create_issue - GH_AW_PROMPT_ed3b9052ebb20559_EOF + GH_AW_PROMPT_6388fdb4a0d6deed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_ed3b9052ebb20559_EOF' + cat << 'GH_AW_PROMPT_6388fdb4a0d6deed_EOF' - GH_AW_PROMPT_ed3b9052ebb20559_EOF + GH_AW_PROMPT_6388fdb4a0d6deed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ed3b9052ebb20559_EOF' + cat << 'GH_AW_PROMPT_6388fdb4a0d6deed_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -297,13 +311,13 @@ jobs: {{/if}} - GH_AW_PROMPT_ed3b9052ebb20559_EOF + GH_AW_PROMPT_6388fdb4a0d6deed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ed3b9052ebb20559_EOF' + cat << 'GH_AW_PROMPT_6388fdb4a0d6deed_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/firewall.md}} - GH_AW_PROMPT_ed3b9052ebb20559_EOF + GH_AW_PROMPT_6388fdb4a0d6deed_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -397,6 +411,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: firewall outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -523,9 +538,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2a7c5fee0fa48c74_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_07c6f3bd3b8a38af_EOF' {"create_issue":{"labels":["firewall"],"max":1,"title_prefix":"[firewall]"}} - GH_AW_SAFE_OUTPUTS_CONFIG_2a7c5fee0fa48c74_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_07c6f3bd3b8a38af_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -623,7 +638,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -685,7 +700,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -968,6 +983,8 @@ jobs: group: "gh-aw-conclusion-firewall" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1147,6 +1164,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" GH_AW_WORKFLOW_ID: "firewall" GH_AW_WORKFLOW_NAME: "Firewall Test Agent" diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index 2fc4283628d..97fe8841981 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,23 +271,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_129dbff871cec165_EOF' + cat << 'GH_AW_PROMPT_c0cd8f705caac0e2_EOF' - GH_AW_PROMPT_129dbff871cec165_EOF + GH_AW_PROMPT_c0cd8f705caac0e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_129dbff871cec165_EOF' + cat << 'GH_AW_PROMPT_c0cd8f705caac0e2_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_129dbff871cec165_EOF + GH_AW_PROMPT_c0cd8f705caac0e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_129dbff871cec165_EOF' + cat << 'GH_AW_PROMPT_c0cd8f705caac0e2_EOF' - GH_AW_PROMPT_129dbff871cec165_EOF + GH_AW_PROMPT_c0cd8f705caac0e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_129dbff871cec165_EOF' + cat << 'GH_AW_PROMPT_c0cd8f705caac0e2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,15 +316,15 @@ jobs: {{/if}} - GH_AW_PROMPT_129dbff871cec165_EOF + GH_AW_PROMPT_c0cd8f705caac0e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_129dbff871cec165_EOF' + cat << 'GH_AW_PROMPT_c0cd8f705caac0e2_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/functional-pragmatist.md}} - GH_AW_PROMPT_129dbff871cec165_EOF + GH_AW_PROMPT_c0cd8f705caac0e2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -407,6 +421,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: functionalpragmatist outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -531,9 +546,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_bee455c8728e2c3b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8e4e967a42f96d37_EOF' {"create_pull_request":{"expires":24,"labels":["refactoring","functional","immutability","code-quality"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[fp-enhancer] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_bee455c8728e2c3b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_8e4e967a42f96d37_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -708,7 +723,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -770,7 +785,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1053,6 +1068,8 @@ jobs: group: "gh-aw-conclusion-functional-pragmatist" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1303,6 +1320,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1569,6 +1588,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "functional-pragmatist" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index afa51882922..8b2ade72b8c 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,23 +275,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_06ccdc3efbd2ac06_EOF' + cat << 'GH_AW_PROMPT_9dafd69b490c98fa_EOF' - GH_AW_PROMPT_06ccdc3efbd2ac06_EOF + GH_AW_PROMPT_9dafd69b490c98fa_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_06ccdc3efbd2ac06_EOF' + cat << 'GH_AW_PROMPT_9dafd69b490c98fa_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_06ccdc3efbd2ac06_EOF + GH_AW_PROMPT_9dafd69b490c98fa_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_06ccdc3efbd2ac06_EOF' + cat << 'GH_AW_PROMPT_9dafd69b490c98fa_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -306,16 +320,16 @@ jobs: {{/if}} - GH_AW_PROMPT_06ccdc3efbd2ac06_EOF + GH_AW_PROMPT_9dafd69b490c98fa_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_06ccdc3efbd2ac06_EOF' + cat << 'GH_AW_PROMPT_9dafd69b490c98fa_EOF' {{#runtime-import .github/workflows/shared/python-dataviz.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/github-mcp-structural-analysis.md}} - GH_AW_PROMPT_06ccdc3efbd2ac06_EOF + GH_AW_PROMPT_9dafd69b490c98fa_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -421,6 +435,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: githubmcpstructuralanalysis outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -588,9 +603,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8ee979f9ea0ea9a4_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5f3d4517dcca196e_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[mcp-analysis] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_8ee979f9ea0ea9a4_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5f3d4517dcca196e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -763,7 +778,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_a4ba58f2947ced4d_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7bc5b909a509de8d_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -823,7 +838,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_a4ba58f2947ced4d_EOF + GH_AW_MCP_CONFIG_7bc5b909a509de8d_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1202,6 +1217,8 @@ jobs: group: "gh-aw-conclusion-github-mcp-structural-analysis" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1450,6 +1467,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1719,6 +1738,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "github-mcp-structural-analysis" @@ -1815,6 +1835,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: githubmcpstructuralanalysis steps: - name: Checkout actions folder @@ -1870,6 +1891,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index 99542233924..c028bf891ed 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,24 +273,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1322cbe855b57a9f_EOF' + cat << 'GH_AW_PROMPT_ee72dd36a2cb8380_EOF' - GH_AW_PROMPT_1322cbe855b57a9f_EOF + GH_AW_PROMPT_ee72dd36a2cb8380_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1322cbe855b57a9f_EOF' + cat << 'GH_AW_PROMPT_ee72dd36a2cb8380_EOF' Tools: create_discussion, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_1322cbe855b57a9f_EOF + GH_AW_PROMPT_ee72dd36a2cb8380_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_1322cbe855b57a9f_EOF' + cat << 'GH_AW_PROMPT_ee72dd36a2cb8380_EOF' - GH_AW_PROMPT_1322cbe855b57a9f_EOF + GH_AW_PROMPT_ee72dd36a2cb8380_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1322cbe855b57a9f_EOF' + cat << 'GH_AW_PROMPT_ee72dd36a2cb8380_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -305,14 +319,14 @@ jobs: {{/if}} - GH_AW_PROMPT_1322cbe855b57a9f_EOF + GH_AW_PROMPT_ee72dd36a2cb8380_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1322cbe855b57a9f_EOF' + cat << 'GH_AW_PROMPT_ee72dd36a2cb8380_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/github-mcp-tools-report.md}} - GH_AW_PROMPT_1322cbe855b57a9f_EOF + GH_AW_PROMPT_ee72dd36a2cb8380_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -417,6 +431,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: githubmcptoolsreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -562,9 +577,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b40461520598be8f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b37028e7c3bc2dd9_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[mcp-tools-report] "},"create_pull_request":{"draft":false,"expires":48,"labels":["documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"fallback-to-issue","reviewers":["copilot"],"title_prefix":"[mcp-tools] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b40461520598be8f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b37028e7c3bc2dd9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -766,7 +781,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_743b4fd18b1606a9_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c19b45ddaf45a037_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -826,7 +841,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_743b4fd18b1606a9_EOF + GH_AW_MCP_CONFIG_c19b45ddaf45a037_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1193,6 +1208,8 @@ jobs: group: "gh-aw-conclusion-github-mcp-tools-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1443,6 +1460,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1713,6 +1732,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "github-mcp-tools-report" @@ -1840,6 +1860,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: githubmcptoolsreport steps: - name: Checkout actions folder diff --git a/.github/workflows/github-remote-mcp-auth-test.lock.yml b/.github/workflows/github-remote-mcp-auth-test.lock.yml index 3a8776d628b..330ca17936d 100644 --- a/.github/workflows/github-remote-mcp-auth-test.lock.yml +++ b/.github/workflows/github-remote-mcp-auth-test.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,20 +272,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d415574d5aa32b44_EOF' + cat << 'GH_AW_PROMPT_6294c8db404abe0a_EOF' - GH_AW_PROMPT_d415574d5aa32b44_EOF + GH_AW_PROMPT_6294c8db404abe0a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d415574d5aa32b44_EOF' + cat << 'GH_AW_PROMPT_6294c8db404abe0a_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_d415574d5aa32b44_EOF + GH_AW_PROMPT_6294c8db404abe0a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d415574d5aa32b44_EOF' + cat << 'GH_AW_PROMPT_6294c8db404abe0a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,15 +314,15 @@ jobs: {{/if}} - GH_AW_PROMPT_d415574d5aa32b44_EOF + GH_AW_PROMPT_6294c8db404abe0a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_d415574d5aa32b44_EOF' + cat << 'GH_AW_PROMPT_6294c8db404abe0a_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/github-remote-mcp-auth-test.md}} - GH_AW_PROMPT_d415574d5aa32b44_EOF + GH_AW_PROMPT_6294c8db404abe0a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: githubremotemcpauthtest outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -532,9 +547,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f49567b74760eec5_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5e531cc32b2efdc0_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[auth-test] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_f49567b74760eec5_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5e531cc32b2efdc0_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -696,7 +711,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_8905bc3930404b6b_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b46a4eac2d64d7dc_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -766,7 +781,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_8905bc3930404b6b_EOF + GH_AW_MCP_CONFIG_b46a4eac2d64d7dc_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1049,6 +1064,8 @@ jobs: group: "gh-aw-conclusion-github-remote-mcp-auth-test" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1294,6 +1311,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1529,6 +1548,7 @@ jobs: GH_AW_ENGINE_MODEL: "gpt-4.1" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "github-remote-mcp-auth-test" diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index 0f01fc0a88f..e223d4003f6 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -263,25 +277,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_5e07a8b4a363f4b9_EOF' + cat << 'GH_AW_PROMPT_c3da2118f2c0b97c_EOF' - GH_AW_PROMPT_5e07a8b4a363f4b9_EOF + GH_AW_PROMPT_c3da2118f2c0b97c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_5e07a8b4a363f4b9_EOF' + cat << 'GH_AW_PROMPT_c3da2118f2c0b97c_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_5e07a8b4a363f4b9_EOF + GH_AW_PROMPT_c3da2118f2c0b97c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_5e07a8b4a363f4b9_EOF' + cat << 'GH_AW_PROMPT_c3da2118f2c0b97c_EOF' - GH_AW_PROMPT_5e07a8b4a363f4b9_EOF + GH_AW_PROMPT_c3da2118f2c0b97c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_5e07a8b4a363f4b9_EOF' + cat << 'GH_AW_PROMPT_c3da2118f2c0b97c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -323,9 +337,9 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_5e07a8b4a363f4b9_EOF + GH_AW_PROMPT_c3da2118f2c0b97c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_5e07a8b4a363f4b9_EOF' + cat << 'GH_AW_PROMPT_c3da2118f2c0b97c_EOF' {{#runtime-import .github/skills/documentation/SKILL.md}} {{#runtime-import .github/agents/technical-doc-writer.agent.md}} @@ -336,7 +350,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/glossary-maintainer.md}} - GH_AW_PROMPT_5e07a8b4a363f4b9_EOF + GH_AW_PROMPT_c3da2118f2c0b97c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -450,6 +464,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: glossarymaintainer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -617,9 +632,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_02786ee84b680b58_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5ef0d81994eef374_EOF' {"create_pull_request":{"draft":false,"expires":48,"labels":["documentation","glossary"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_02786ee84b680b58_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5ef0d81994eef374_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -791,7 +806,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -866,7 +881,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1197,6 +1212,8 @@ jobs: group: "gh-aw-conclusion-glossary-maintainer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1449,6 +1466,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1705,6 +1724,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|master" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1805,6 +1826,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" GH_AW_WORKFLOW_ID: "glossary-maintainer" @@ -1933,6 +1955,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: glossarymaintainer steps: - name: Checkout actions folder diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index 6de32c48d1c..54695c62316 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -264,21 +278,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ae2aca19a1e1704f_EOF' + cat << 'GH_AW_PROMPT_6f124905a8e1623d_EOF' - GH_AW_PROMPT_ae2aca19a1e1704f_EOF + GH_AW_PROMPT_6f124905a8e1623d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ae2aca19a1e1704f_EOF' + cat << 'GH_AW_PROMPT_6f124905a8e1623d_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_ae2aca19a1e1704f_EOF + GH_AW_PROMPT_6f124905a8e1623d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ae2aca19a1e1704f_EOF' + cat << 'GH_AW_PROMPT_6f124905a8e1623d_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -307,9 +321,9 @@ jobs: {{/if}} - GH_AW_PROMPT_ae2aca19a1e1704f_EOF + GH_AW_PROMPT_6f124905a8e1623d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ae2aca19a1e1704f_EOF' + cat << 'GH_AW_PROMPT_6f124905a8e1623d_EOF' {{#runtime-import .github/workflows/shared/go-source-analysis.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -321,7 +335,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/go-fan.md}} - GH_AW_PROMPT_ae2aca19a1e1704f_EOF + GH_AW_PROMPT_6f124905a8e1623d_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -426,6 +440,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: gofan outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -571,9 +586,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_57ddd7b919ed5ec3_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8b0b61079e590d31_EOF' {"create_issue":{"expires":24,"labels":["automation","cookie"],"max":1,"title_prefix":"[go-fan] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_57ddd7b919ed5ec3_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_8b0b61079e590d31_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -740,7 +755,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_77337373ac920130_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -811,7 +826,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_77337373ac920130_EOF + GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1225,6 +1240,8 @@ jobs: group: "gh-aw-conclusion-go-fan" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1476,6 +1493,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1744,6 +1763,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "go-fan-daily" GH_AW_WORKFLOW_EMOJI: "๐Ÿน" @@ -1843,6 +1863,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: gofan steps: - name: Checkout actions folder diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 00eac8e66a6..0eb777fb494 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,24 +274,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_56ec72bba500e7a0_EOF' + cat << 'GH_AW_PROMPT_b55328db54e21c51_EOF' - GH_AW_PROMPT_56ec72bba500e7a0_EOF + GH_AW_PROMPT_b55328db54e21c51_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_56ec72bba500e7a0_EOF' + cat << 'GH_AW_PROMPT_b55328db54e21c51_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_56ec72bba500e7a0_EOF + GH_AW_PROMPT_b55328db54e21c51_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_56ec72bba500e7a0_EOF' + cat << 'GH_AW_PROMPT_b55328db54e21c51_EOF' - GH_AW_PROMPT_56ec72bba500e7a0_EOF + GH_AW_PROMPT_b55328db54e21c51_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_56ec72bba500e7a0_EOF' + cat << 'GH_AW_PROMPT_b55328db54e21c51_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -306,14 +320,14 @@ jobs: {{/if}} - GH_AW_PROMPT_56ec72bba500e7a0_EOF + GH_AW_PROMPT_b55328db54e21c51_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_56ec72bba500e7a0_EOF' + cat << 'GH_AW_PROMPT_b55328db54e21c51_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/go-logger.md}} - GH_AW_PROMPT_56ec72bba500e7a0_EOF + GH_AW_PROMPT_b55328db54e21c51_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -414,6 +428,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: gologger outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -578,9 +593,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d2dcf8af7134f7ca_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2ae27597e3b96c73_EOF' {"create_pull_request":{"draft":false,"expires":48,"labels":["enhancement","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review","title_prefix":"[log] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_d2dcf8af7134f7ca_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2ae27597e3b96c73_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -751,7 +766,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -796,7 +811,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1209,6 +1224,8 @@ jobs: group: "gh-aw-conclusion-go-logger" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1457,6 +1474,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1726,6 +1745,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" GH_AW_WORKFLOW_ID: "go-logger" @@ -1853,6 +1873,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: gologger steps: - name: Checkout actions folder diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index 5a7fde33185..4a53c52a431 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,20 +274,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_da93b25a2e2e5130_EOF' + cat << 'GH_AW_PROMPT_4617ec5abb1430bd_EOF' - GH_AW_PROMPT_da93b25a2e2e5130_EOF + GH_AW_PROMPT_4617ec5abb1430bd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_da93b25a2e2e5130_EOF' + cat << 'GH_AW_PROMPT_4617ec5abb1430bd_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_da93b25a2e2e5130_EOF + GH_AW_PROMPT_4617ec5abb1430bd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_da93b25a2e2e5130_EOF' + cat << 'GH_AW_PROMPT_4617ec5abb1430bd_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,16 +316,16 @@ jobs: {{/if}} - GH_AW_PROMPT_da93b25a2e2e5130_EOF + GH_AW_PROMPT_4617ec5abb1430bd_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_da93b25a2e2e5130_EOF' + cat << 'GH_AW_PROMPT_4617ec5abb1430bd_EOF' {{#runtime-import .github/workflows/shared/mcp/ast-grep.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/go-pattern-detector.md}} - GH_AW_PROMPT_da93b25a2e2e5130_EOF + GH_AW_PROMPT_4617ec5abb1430bd_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -413,6 +427,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: gopatterndetector outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -540,9 +555,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_31fdb029c7a88340_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_15b20272cac57d83_EOF' {"create_issue":{"expires":48,"labels":["code-quality","ast-grep","cookie"],"max":1,"title_prefix":"[ast-grep] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_31fdb029c7a88340_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_15b20272cac57d83_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -712,7 +727,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_0378cb0346c727c2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_9b929b6f155a8796_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "ast-grep": { @@ -786,7 +801,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_0378cb0346c727c2_EOF + GH_AW_MCP_CONFIG_9b929b6f155a8796_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1173,6 +1188,8 @@ jobs: group: "gh-aw-conclusion-go-pattern-detector" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1416,6 +1433,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1684,6 +1703,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "go-pattern-detector" diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index dcd36454352..e32429a5253 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -294,21 +308,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8537d254c57041f0_EOF' + cat << 'GH_AW_PROMPT_81d15558abb0f16a_EOF' - GH_AW_PROMPT_8537d254c57041f0_EOF + GH_AW_PROMPT_81d15558abb0f16a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8537d254c57041f0_EOF' + cat << 'GH_AW_PROMPT_81d15558abb0f16a_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_8537d254c57041f0_EOF + GH_AW_PROMPT_81d15558abb0f16a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8537d254c57041f0_EOF' + cat << 'GH_AW_PROMPT_81d15558abb0f16a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -337,15 +351,15 @@ jobs: {{/if}} - GH_AW_PROMPT_8537d254c57041f0_EOF + GH_AW_PROMPT_81d15558abb0f16a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_8537d254c57041f0_EOF' + cat << 'GH_AW_PROMPT_81d15558abb0f16a_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/gpclean.md}} - GH_AW_PROMPT_8537d254c57041f0_EOF + GH_AW_PROMPT_81d15558abb0f16a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -449,6 +463,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: gpclean outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -597,9 +612,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3ee0631b20ae0a9e_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5b77713824b4ff51_EOF' {"create_issue":{"expires":48,"labels":["dependency-cleaner"],"max":1,"title_prefix":"[gpl-dependency]"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_3ee0631b20ae0a9e_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5b77713824b4ff51_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -770,7 +785,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -832,7 +847,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1134,6 +1149,8 @@ jobs: group: "gh-aw-conclusion-gpclean" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1380,6 +1397,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1634,6 +1653,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1722,6 +1743,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" GH_AW_WORKFLOW_ID: "gpclean" @@ -1820,6 +1842,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: gpclean steps: - name: Checkout actions folder diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index f198f3ffd00..0ded4073b7c 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -97,6 +97,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -289,6 +290,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -308,20 +322,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_516d971ca286d6df_EOF' + cat << 'GH_AW_PROMPT_496fa9eeae995f62_EOF' - GH_AW_PROMPT_516d971ca286d6df_EOF + GH_AW_PROMPT_496fa9eeae995f62_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_516d971ca286d6df_EOF' + cat << 'GH_AW_PROMPT_496fa9eeae995f62_EOF' Tools: create_pull_request_review_comment(max:5), submit_pull_request_review, create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_516d971ca286d6df_EOF + GH_AW_PROMPT_496fa9eeae995f62_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_516d971ca286d6df_EOF' + cat << 'GH_AW_PROMPT_496fa9eeae995f62_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -350,19 +364,19 @@ jobs: {{/if}} - GH_AW_PROMPT_516d971ca286d6df_EOF + GH_AW_PROMPT_496fa9eeae995f62_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_516d971ca286d6df_EOF' + cat << 'GH_AW_PROMPT_496fa9eeae995f62_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/pr-code-review-config.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/grumpy-reviewer.md}} - GH_AW_PROMPT_516d971ca286d6df_EOF + GH_AW_PROMPT_496fa9eeae995f62_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -466,6 +480,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: grumpyreviewer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -591,9 +606,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3eacf7562c832810_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0ae95965191146c4_EOF' {"create_check_run":{"max":1},"create_pull_request_review_comment":{"max":5,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_3eacf7562c832810_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_0ae95965191146c4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -788,7 +803,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_4bef54413d1fd615_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_05c10db872ce76d7_EOF [history] persistence = "none" @@ -816,11 +831,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_4bef54413d1fd615_EOF + GH_AW_MCP_CONFIG_05c10db872ce76d7_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_676044e0105bfcda_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1122108a70ea628b_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -883,11 +898,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_676044e0105bfcda_EOF + GH_AW_MCP_CONFIG_1122108a70ea628b_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF model_provider = "openai-proxy" @@ -899,7 +914,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_PERSONAL_ACCESS_TOKEN$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1175,6 +1190,8 @@ jobs: group: "gh-aw-conclusion-grumpy-reviewer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1440,6 +1457,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1589,18 +1608,18 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF [history] persistence = "none" [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_37834a58b4c29838_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { }, @@ -1611,11 +1630,11 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_37834a58b4c29838_EOF + GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF model_provider = "openai-proxy" [model_providers.openai-proxy] name = "OpenAI AWF proxy" @@ -1625,7 +1644,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1747,6 +1766,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1821,6 +1842,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ˜ค *Reluctantly reviewed by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ˜ค *sigh* [{workflow_name}]({run_url}) is begrudgingly looking at this {event_type}... This better be worth my time.\",\"runSuccess\":\"๐Ÿ˜ค Fine. [{workflow_name}]({run_url}) finished the review. It wasn't completely terrible. I guess. ๐Ÿ™„\",\"runFailure\":\"๐Ÿ˜ค Great. [{workflow_name}]({run_url}) {status}. As if my day couldn't get any worse...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" diff --git a/.github/workflows/hippo-embed.lock.yml b/.github/workflows/hippo-embed.lock.yml index 08658c75631..dd4837a75c0 100644 --- a/.github/workflows/hippo-embed.lock.yml +++ b/.github/workflows/hippo-embed.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -235,6 +236,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -251,24 +265,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d52bcdbc8879f020_EOF' + cat << 'GH_AW_PROMPT_9df1c1d55f9be658_EOF' - GH_AW_PROMPT_d52bcdbc8879f020_EOF + GH_AW_PROMPT_9df1c1d55f9be658_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d52bcdbc8879f020_EOF' + cat << 'GH_AW_PROMPT_9df1c1d55f9be658_EOF' Tools: create_issue - GH_AW_PROMPT_d52bcdbc8879f020_EOF + GH_AW_PROMPT_9df1c1d55f9be658_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_d52bcdbc8879f020_EOF' + cat << 'GH_AW_PROMPT_9df1c1d55f9be658_EOF' - GH_AW_PROMPT_d52bcdbc8879f020_EOF + GH_AW_PROMPT_9df1c1d55f9be658_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d52bcdbc8879f020_EOF' + cat << 'GH_AW_PROMPT_9df1c1d55f9be658_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -297,15 +311,15 @@ jobs: {{/if}} - GH_AW_PROMPT_d52bcdbc8879f020_EOF + GH_AW_PROMPT_9df1c1d55f9be658_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_d52bcdbc8879f020_EOF' + cat << 'GH_AW_PROMPT_9df1c1d55f9be658_EOF' {{#runtime-import .github/workflows/shared/pmg.md}} {{#runtime-import .github/workflows/shared/hippo-memory.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/hippo-embed.md}} - GH_AW_PROMPT_d52bcdbc8879f020_EOF + GH_AW_PROMPT_9df1c1d55f9be658_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -403,6 +417,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: hippoembed outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -560,9 +575,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4c1f0c7fa2211534_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1f93ae3c720f4917_EOF' {"create_issue":{"labels":["hippo-embed"],"max":1,"title_prefix":"[hippo-embed]"}} - GH_AW_SAFE_OUTPUTS_CONFIG_4c1f0c7fa2211534_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_1f93ae3c720f4917_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -623,7 +638,7 @@ jobs: - name: Write MCP Scripts Config run: | mkdir -p "${RUNNER_TEMP}/gh-aw/mcp-scripts/logs" - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_4889e6be9281302c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_fc4e82710f873b80_EOF' { "serverName": "mcpscripts", "version": "1.0.0", @@ -649,8 +664,8 @@ jobs: } ] } - GH_AW_MCP_SCRIPTS_TOOLS_4889e6be9281302c_EOF - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF' + GH_AW_MCP_SCRIPTS_TOOLS_fc4e82710f873b80_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF' const path = require("path"); const { startHttpServer } = require("./mcp_scripts_mcp_server_http.cjs"); const configPath = path.join(__dirname, "tools.json"); @@ -664,12 +679,12 @@ jobs: console.error("Failed to start mcp-scripts HTTP server:", error); process.exit(1); }); - GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF + GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" - name: Write MCP Scripts Tool Files run: | - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/hippo.sh" << 'GH_AW_MCP_SCRIPTS_SH_HIPPO_dc7ef224a6ce1896_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/hippo.sh" << 'GH_AW_MCP_SCRIPTS_SH_HIPPO_7760bc8e35f18b70_EOF' #!/bin/bash # Auto-generated mcp-script tool: hippo # Execute any hippo-memory CLI command. Accessible as 'mcpscripts-hippo'. Provide arguments after 'hippo'. Examples: args 'learn --git' to extract lessons from git commits, 'sleep' for full consolidation, 'recall "api errors" --budget 2000' to retrieve relevant memories. @@ -681,7 +696,7 @@ jobs: hippo $INPUT_ARGS - GH_AW_MCP_SCRIPTS_SH_HIPPO_dc7ef224a6ce1896_EOF + GH_AW_MCP_SCRIPTS_SH_HIPPO_7760bc8e35f18b70_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/hippo.sh" - name: Generate MCP Scripts Server Config @@ -754,7 +769,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GH_AW_MCP_SCRIPTS_PORT -e GH_AW_MCP_SCRIPTS_API_KEY -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e59d92019bc773f1_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c990023b9e228369_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "mcpscripts": { @@ -813,7 +828,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e59d92019bc773f1_EOF + GH_AW_MCP_CONFIG_c990023b9e228369_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1091,6 +1106,8 @@ jobs: group: "gh-aw-conclusion-hippo-embed" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1267,6 +1284,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_TRACKER_ID: "hippo-embed" GH_AW_WORKFLOW_EMOJI: "๐Ÿฆ›" GH_AW_WORKFLOW_ID: "hippo-embed" diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index dc40032eb2f..f3bc5bd4110 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -262,23 +276,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a889c5f364be48ca_EOF' + cat << 'GH_AW_PROMPT_ada8bd5a626e6b40_EOF' - GH_AW_PROMPT_a889c5f364be48ca_EOF + GH_AW_PROMPT_ada8bd5a626e6b40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a889c5f364be48ca_EOF' + cat << 'GH_AW_PROMPT_ada8bd5a626e6b40_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_a889c5f364be48ca_EOF + GH_AW_PROMPT_ada8bd5a626e6b40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_a889c5f364be48ca_EOF' + cat << 'GH_AW_PROMPT_ada8bd5a626e6b40_EOF' - GH_AW_PROMPT_a889c5f364be48ca_EOF + GH_AW_PROMPT_ada8bd5a626e6b40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a889c5f364be48ca_EOF' + cat << 'GH_AW_PROMPT_ada8bd5a626e6b40_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -307,14 +321,14 @@ jobs: {{/if}} - GH_AW_PROMPT_a889c5f364be48ca_EOF + GH_AW_PROMPT_ada8bd5a626e6b40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_a889c5f364be48ca_EOF' + cat << 'GH_AW_PROMPT_ada8bd5a626e6b40_EOF' {{#runtime-import .github/agents/ci-cleaner.agent.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/hourly-ci-cleaner.md}} - GH_AW_PROMPT_a889c5f364be48ca_EOF + GH_AW_PROMPT_ada8bd5a626e6b40_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -419,6 +433,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: hourlycicleaner outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -579,9 +594,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ceb560bf331b4dba_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2e1f4f61044b18b5_EOF' {"create_pull_request":{"expires":48,"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"fallback-to-issue","title_prefix":"[ca] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_ceb560bf331b4dba_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2e1f4f61044b18b5_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -752,7 +767,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -797,7 +812,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1210,6 +1225,8 @@ jobs: group: "gh-aw-conclusion-hourly-ci-cleaner" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1461,6 +1478,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1730,6 +1749,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "hourly-ci-cleaner" GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 67e8ba5d170..4b36f7d3a0d 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,24 +272,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_7f1e0adf851260b8_EOF' + cat << 'GH_AW_PROMPT_f76fc864ce1d2f47_EOF' - GH_AW_PROMPT_7f1e0adf851260b8_EOF + GH_AW_PROMPT_f76fc864ce1d2f47_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_7f1e0adf851260b8_EOF' + cat << 'GH_AW_PROMPT_f76fc864ce1d2f47_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_7f1e0adf851260b8_EOF + GH_AW_PROMPT_f76fc864ce1d2f47_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_7f1e0adf851260b8_EOF' + cat << 'GH_AW_PROMPT_f76fc864ce1d2f47_EOF' - GH_AW_PROMPT_7f1e0adf851260b8_EOF + GH_AW_PROMPT_f76fc864ce1d2f47_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_7f1e0adf851260b8_EOF' + cat << 'GH_AW_PROMPT_f76fc864ce1d2f47_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -304,14 +318,14 @@ jobs: {{/if}} - GH_AW_PROMPT_7f1e0adf851260b8_EOF + GH_AW_PROMPT_f76fc864ce1d2f47_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_7f1e0adf851260b8_EOF' + cat << 'GH_AW_PROMPT_f76fc864ce1d2f47_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/instructions-janitor.md}} - GH_AW_PROMPT_7f1e0adf851260b8_EOF + GH_AW_PROMPT_f76fc864ce1d2f47_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -412,6 +426,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: instructionsjanitor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -557,9 +572,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_34f897c3bd44af83_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_80a356595ef39586_EOF' {"create_pull_request":{"allowed_files":[".github/aw/**"],"draft":false,"expires":48,"labels":["documentation","automation","instructions"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"allowed","title_prefix":"[instructions] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_34f897c3bd44af83_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_80a356595ef39586_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -730,7 +745,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -775,7 +790,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1184,6 +1199,8 @@ jobs: group: "gh-aw-conclusion-instructions-janitor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1432,6 +1449,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1701,6 +1720,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" GH_AW_WORKFLOW_ID: "instructions-janitor" @@ -1828,6 +1848,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: instructionsjanitor steps: - name: Checkout actions folder diff --git a/.github/workflows/issue-arborist.lock.yml b/.github/workflows/issue-arborist.lock.yml index 5e6d8dc9518..93ce344fe1f 100644 --- a/.github/workflows/issue-arborist.lock.yml +++ b/.github/workflows/issue-arborist.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -246,6 +247,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -297,20 +311,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_cb2071243a13d2d1_EOF' + cat << 'GH_AW_PROMPT_1e16cbce9403bb81_EOF' - GH_AW_PROMPT_cb2071243a13d2d1_EOF + GH_AW_PROMPT_1e16cbce9403bb81_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_cb2071243a13d2d1_EOF' + cat << 'GH_AW_PROMPT_1e16cbce9403bb81_EOF' Tools: create_issue(max:5), create_discussion, link_sub_issue(max:50), missing_tool, missing_data, noop - GH_AW_PROMPT_cb2071243a13d2d1_EOF + GH_AW_PROMPT_1e16cbce9403bb81_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_cb2071243a13d2d1_EOF' + cat << 'GH_AW_PROMPT_1e16cbce9403bb81_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -339,9 +353,9 @@ jobs: {{/if}} - GH_AW_PROMPT_cb2071243a13d2d1_EOF + GH_AW_PROMPT_1e16cbce9403bb81_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_cb2071243a13d2d1_EOF' + cat << 'GH_AW_PROMPT_1e16cbce9403bb81_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/skills/jqschema/SKILL.md}} @@ -349,7 +363,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/issue-arborist.md}} - GH_AW_PROMPT_cb2071243a13d2d1_EOF + GH_AW_PROMPT_1e16cbce9403bb81_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -446,6 +460,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: issuearborist outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -616,9 +631,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1c2c37e29f7b31c1_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0c2e0b600555ad3b_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[Issue Arborist] "},"create_issue":{"expires":48,"group":true,"max":5,"title_prefix":"[Parent] "},"create_report_incomplete_issue":{},"link_sub_issue":{"max":50},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_1c2c37e29f7b31c1_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_0c2e0b600555ad3b_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -832,7 +847,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_a8bd541a147368d4_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_6b595a071763b638_EOF [history] persistence = "none" @@ -852,11 +867,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_a8bd541a147368d4_EOF + GH_AW_MCP_CONFIG_6b595a071763b638_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -901,11 +916,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF model_provider = "openai-proxy" @@ -917,7 +932,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1206,6 +1221,8 @@ jobs: group: "gh-aw-conclusion-issue-arborist" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1451,6 +1468,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1606,18 +1625,18 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF [history] persistence = "none" [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_37834a58b4c29838_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { }, @@ -1628,11 +1647,11 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_37834a58b4c29838_EOF + GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF model_provider = "openai-proxy" [model_providers.openai-proxy] name = "OpenAI AWF proxy" @@ -1642,7 +1661,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1766,6 +1785,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1854,6 +1875,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "issue-arborist" GH_AW_WORKFLOW_NAME: "Issue Arborist" diff --git a/.github/workflows/issue-monster.lock.yml b/.github/workflows/issue-monster.lock.yml index 4b700a3346e..3a2c50c302c 100644 --- a/.github/workflows/issue-monster.lock.yml +++ b/.github/workflows/issue-monster.lock.yml @@ -481,6 +481,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -630,6 +631,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -807,6 +821,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: issuemonster outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -1423,6 +1438,8 @@ jobs: group: "gh-aw-conclusion-issue-monster" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1664,6 +1681,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1893,6 +1912,8 @@ jobs: contents: read issues: read pull-requests: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' && steps.check_skip_if_no_match.outputs.skip_no_match_check_ok == 'true' && steps.check_skip_if_check_failing.outputs.skip_if_check_failing_ok == 'true' }} has_issues: ${{ steps.search.outputs.has_issues }} @@ -2367,6 +2388,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿช *Om nom nom by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿช ISSUE! ISSUE! [{workflow_name}]({run_url}) hungry for issues on this {event_type}! Om nom nom...\",\"runSuccess\":\"๐Ÿช YUMMY! [{workflow_name}]({run_url}) ate the issues! That was DELICIOUS! Me want MORE! ๐Ÿ˜‹\",\"runFailure\":\"๐Ÿช Aww... [{workflow_name}]({run_url}) {status}. No cookie for monster today... ๐Ÿ˜ข\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ‘พ" diff --git a/.github/workflows/issue-triage-agent.lock.yml b/.github/workflows/issue-triage-agent.lock.yml index b9cebca8ecc..d65e1f292e6 100644 --- a/.github/workflows/issue-triage-agent.lock.yml +++ b/.github/workflows/issue-triage-agent.lock.yml @@ -93,6 +93,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -240,6 +241,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -256,20 +270,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF' + cat << 'GH_AW_PROMPT_fd9a28fbd048a25b_EOF' - GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF + GH_AW_PROMPT_fd9a28fbd048a25b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF' + cat << 'GH_AW_PROMPT_fd9a28fbd048a25b_EOF' Tools: add_comment, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF + GH_AW_PROMPT_fd9a28fbd048a25b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF' + cat << 'GH_AW_PROMPT_fd9a28fbd048a25b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -298,16 +312,16 @@ jobs: {{/if}} - GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF + GH_AW_PROMPT_fd9a28fbd048a25b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF' + cat << 'GH_AW_PROMPT_fd9a28fbd048a25b_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/issue-triage-agent.md}} - GH_AW_PROMPT_7dfc072fb7b9a9d9_EOF + GH_AW_PROMPT_fd9a28fbd048a25b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -402,6 +416,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: issuetriageagent outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -503,9 +518,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_383c5c9a28ae46b0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c355593fe003befd_EOF' {"add_comment":{"max":1},"add_labels":{"allowed":["bug","feature","enhancement","documentation","question","help-wanted","good-first-issue"]},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_383c5c9a28ae46b0_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c355593fe003befd_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -679,7 +694,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_eaad49fcf9d4a033_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_9d3be4372d0efdd7_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -744,7 +759,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_eaad49fcf9d4a033_EOF + GH_AW_MCP_CONFIG_9d3be4372d0efdd7_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1029,6 +1044,8 @@ jobs: group: "gh-aw-conclusion-issue-triage-agent" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1271,6 +1288,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1537,6 +1556,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "issue-triage-agent" diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index 92f8d5ee5d0..b3723fbf10e 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,24 +272,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2fd04357104a1107_EOF' + cat << 'GH_AW_PROMPT_dc37442ccf9fc1e2_EOF' - GH_AW_PROMPT_2fd04357104a1107_EOF + GH_AW_PROMPT_dc37442ccf9fc1e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2fd04357104a1107_EOF' + cat << 'GH_AW_PROMPT_dc37442ccf9fc1e2_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_2fd04357104a1107_EOF + GH_AW_PROMPT_dc37442ccf9fc1e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_2fd04357104a1107_EOF' + cat << 'GH_AW_PROMPT_dc37442ccf9fc1e2_EOF' - GH_AW_PROMPT_2fd04357104a1107_EOF + GH_AW_PROMPT_dc37442ccf9fc1e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2fd04357104a1107_EOF' + cat << 'GH_AW_PROMPT_dc37442ccf9fc1e2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -304,14 +318,14 @@ jobs: {{/if}} - GH_AW_PROMPT_2fd04357104a1107_EOF + GH_AW_PROMPT_dc37442ccf9fc1e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2fd04357104a1107_EOF' + cat << 'GH_AW_PROMPT_dc37442ccf9fc1e2_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/jsweep.md}} - GH_AW_PROMPT_2fd04357104a1107_EOF + GH_AW_PROMPT_dc37442ccf9fc1e2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -413,6 +427,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: jsweep outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -566,9 +581,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9ace34d9007e9bd4_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fb1974ba81ad8bc6_EOF' {"create_pull_request":{"branch_prefix":"signed/","draft":true,"expires":48,"if_no_changes":"ignore","labels":["unbloat","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[jsweep] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_9ace34d9007e9bd4_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_fb1974ba81ad8bc6_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -740,7 +755,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -786,7 +801,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1105,6 +1120,8 @@ jobs: group: "gh-aw-conclusion-jsweep" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1358,6 +1375,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1624,6 +1643,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "jsweep-daily" GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" @@ -1752,6 +1772,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: jsweep steps: - name: Checkout actions folder diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index 94597135ea8..f59f42778b5 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,23 +275,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2b81b528c4ff6b4b_EOF' + cat << 'GH_AW_PROMPT_eae74d838ceb1da7_EOF' - GH_AW_PROMPT_2b81b528c4ff6b4b_EOF + GH_AW_PROMPT_eae74d838ceb1da7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2b81b528c4ff6b4b_EOF' + cat << 'GH_AW_PROMPT_eae74d838ceb1da7_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_2b81b528c4ff6b4b_EOF + GH_AW_PROMPT_eae74d838ceb1da7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_2b81b528c4ff6b4b_EOF' + cat << 'GH_AW_PROMPT_eae74d838ceb1da7_EOF' - GH_AW_PROMPT_2b81b528c4ff6b4b_EOF + GH_AW_PROMPT_eae74d838ceb1da7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2b81b528c4ff6b4b_EOF' + cat << 'GH_AW_PROMPT_eae74d838ceb1da7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -306,14 +320,14 @@ jobs: {{/if}} - GH_AW_PROMPT_2b81b528c4ff6b4b_EOF + GH_AW_PROMPT_eae74d838ceb1da7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_2b81b528c4ff6b4b_EOF' + cat << 'GH_AW_PROMPT_eae74d838ceb1da7_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/layout-spec-maintainer.md}} - GH_AW_PROMPT_2b81b528c4ff6b4b_EOF + GH_AW_PROMPT_eae74d838ceb1da7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: layoutspecmaintainer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -541,9 +556,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_aa63579a23cc3700_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0da14483c0d821cb_EOF' {"create_pull_request":{"draft":false,"expires":48,"labels":["documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[specs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_aa63579a23cc3700_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_0da14483c0d821cb_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -715,7 +730,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -761,7 +776,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1093,6 +1108,8 @@ jobs: group: "gh-aw-conclusion-layout-spec-maintainer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1343,6 +1360,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1609,6 +1628,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "layout-spec-maintainer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" diff --git a/.github/workflows/lint-monster.lock.yml b/.github/workflows/lint-monster.lock.yml index db5b086f96c..f8f66f4ee3a 100644 --- a/.github/workflows/lint-monster.lock.yml +++ b/.github/workflows/lint-monster.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,20 +272,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_090781a0e4a30826_EOF' + cat << 'GH_AW_PROMPT_f4ecc289d428becb_EOF' - GH_AW_PROMPT_090781a0e4a30826_EOF + GH_AW_PROMPT_f4ecc289d428becb_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_090781a0e4a30826_EOF' + cat << 'GH_AW_PROMPT_f4ecc289d428becb_EOF' Tools: create_issue(max:3), close_issue(max:10), update_issue(max:10), create_discussion, assign_to_agent(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_090781a0e4a30826_EOF + GH_AW_PROMPT_f4ecc289d428becb_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_090781a0e4a30826_EOF' + cat << 'GH_AW_PROMPT_f4ecc289d428becb_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,13 +314,13 @@ jobs: {{/if}} - GH_AW_PROMPT_090781a0e4a30826_EOF + GH_AW_PROMPT_f4ecc289d428becb_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_090781a0e4a30826_EOF' + cat << 'GH_AW_PROMPT_f4ecc289d428becb_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/lint-monster.md}} - GH_AW_PROMPT_090781a0e4a30826_EOF + GH_AW_PROMPT_f4ecc289d428becb_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -402,6 +416,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: lintmonster outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -529,9 +544,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_52152027a8af7d89_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b4cc2428d989a1e1_EOF' {"assign_to_agent":{"allowed":["copilot"],"max":3,"target":"*"},"close_issue":{"max":10,"required_title_prefix":"[lint-monster] ","state_reason":"duplicate"},"create_discussion":{"category":"reports","close_older_discussions":true,"expires":48,"fallback_to_issue":true,"max":1,"title_prefix":"[lint-monster] "},"create_issue":{"expires":168,"labels":["automation","lint","cookie"],"max":3,"title_prefix":"[lint-monster] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_issue":{"allow_body":true,"max":10,"title_prefix":"[lint-monster] "}} - GH_AW_SAFE_OUTPUTS_CONFIG_52152027a8af7d89_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b4cc2428d989a1e1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -825,7 +840,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -870,7 +885,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1138,6 +1153,8 @@ jobs: group: "gh-aw-conclusion-lint-monster" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1385,6 +1402,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1631,6 +1650,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "lint-monster" GH_AW_WORKFLOW_EMOJI: "๐ŸงŒ" diff --git a/.github/workflows/linter-miner.lock.yml b/.github/workflows/linter-miner.lock.yml index 31c2faf095f..a13e20709ef 100644 --- a/.github/workflows/linter-miner.lock.yml +++ b/.github/workflows/linter-miner.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -237,6 +238,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,24 +268,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_5a39532c5dce1d2c_EOF' + cat << 'GH_AW_PROMPT_8b125ec7fc811551_EOF' - GH_AW_PROMPT_5a39532c5dce1d2c_EOF + GH_AW_PROMPT_8b125ec7fc811551_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_5a39532c5dce1d2c_EOF' + cat << 'GH_AW_PROMPT_8b125ec7fc811551_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_5a39532c5dce1d2c_EOF + GH_AW_PROMPT_8b125ec7fc811551_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_5a39532c5dce1d2c_EOF' + cat << 'GH_AW_PROMPT_8b125ec7fc811551_EOF' - GH_AW_PROMPT_5a39532c5dce1d2c_EOF + GH_AW_PROMPT_8b125ec7fc811551_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_5a39532c5dce1d2c_EOF' + cat << 'GH_AW_PROMPT_8b125ec7fc811551_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,9 +314,9 @@ jobs: {{/if}} - GH_AW_PROMPT_5a39532c5dce1d2c_EOF + GH_AW_PROMPT_8b125ec7fc811551_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_5a39532c5dce1d2c_EOF' + cat << 'GH_AW_PROMPT_8b125ec7fc811551_EOF' {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -310,7 +324,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/linter-miner.md}} - GH_AW_PROMPT_5a39532c5dce1d2c_EOF + GH_AW_PROMPT_8b125ec7fc811551_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: linterminer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -567,9 +582,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_798f35d2561b4a72_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c6bfc69bb8f33889_EOF' {"create_pull_request":{"allowed_files":["pkg/linters/**","cmd/linters/main.go"],"draft":true,"expires":168,"if_no_changes":"warn","labels":["automation","go-linters","cookie"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"fallback-to-issue","reviewers":["copilot"],"title_prefix":"[linter-miner] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_798f35d2561b4a72_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c6bfc69bb8f33889_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -741,7 +756,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -816,7 +831,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1135,6 +1150,8 @@ jobs: group: "gh-aw-conclusion-linter-miner" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1388,6 +1405,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1655,6 +1674,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "linter-miner" GH_AW_WORKFLOW_ID: "linter-miner" @@ -1782,6 +1802,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: linterminer steps: - name: Checkout actions folder diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 4a969eda337..90ec4743d31 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -96,6 +96,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -243,6 +244,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,21 +273,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_719eb398aa7702eb_EOF' + cat << 'GH_AW_PROMPT_cf0a19fb54617d5a_EOF' - GH_AW_PROMPT_719eb398aa7702eb_EOF + GH_AW_PROMPT_cf0a19fb54617d5a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_719eb398aa7702eb_EOF' + cat << 'GH_AW_PROMPT_cf0a19fb54617d5a_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_719eb398aa7702eb_EOF + GH_AW_PROMPT_cf0a19fb54617d5a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_719eb398aa7702eb_EOF' + cat << 'GH_AW_PROMPT_cf0a19fb54617d5a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,15 +316,15 @@ jobs: {{/if}} - GH_AW_PROMPT_719eb398aa7702eb_EOF + GH_AW_PROMPT_cf0a19fb54617d5a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_719eb398aa7702eb_EOF' + cat << 'GH_AW_PROMPT_cf0a19fb54617d5a_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/lockfile-stats.md}} - GH_AW_PROMPT_719eb398aa7702eb_EOF + GH_AW_PROMPT_cf0a19fb54617d5a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -411,6 +425,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: lockfilestats outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -556,9 +571,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_dabee2521c22e546_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3c1df0b9bac5d5c8_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[lockfile-stats] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_dabee2521c22e546_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3c1df0b9bac5d5c8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -718,7 +733,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -778,7 +793,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1144,6 +1159,8 @@ jobs: group: "gh-aw-conclusion-lockfile-stats" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1392,6 +1409,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1661,6 +1680,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "lockfile-stats" @@ -1757,6 +1777,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: lockfilestats steps: - name: Checkout actions folder diff --git a/.github/workflows/mattpocock-skills-reviewer.lock.yml b/.github/workflows/mattpocock-skills-reviewer.lock.yml index 107cc58e6ab..28be5af7798 100644 --- a/.github/workflows/mattpocock-skills-reviewer.lock.yml +++ b/.github/workflows/mattpocock-skills-reviewer.lock.yml @@ -100,6 +100,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: "10000" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -285,6 +286,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -304,20 +318,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_2649dd009b3e236a_EOF' + cat << 'GH_AW_PROMPT_c537469e30b371d2_EOF' - GH_AW_PROMPT_2649dd009b3e236a_EOF + GH_AW_PROMPT_c537469e30b371d2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_2649dd009b3e236a_EOF' + cat << 'GH_AW_PROMPT_c537469e30b371d2_EOF' Tools: add_comment, create_pull_request_review_comment(max:10), submit_pull_request_review, create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_2649dd009b3e236a_EOF + GH_AW_PROMPT_c537469e30b371d2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_2649dd009b3e236a_EOF' + cat << 'GH_AW_PROMPT_c537469e30b371d2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -346,19 +360,19 @@ jobs: {{/if}} - GH_AW_PROMPT_2649dd009b3e236a_EOF + GH_AW_PROMPT_c537469e30b371d2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_2649dd009b3e236a_EOF' + cat << 'GH_AW_PROMPT_c537469e30b371d2_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/pr-code-review-config.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/mattpocock-skills-reviewer.md}} - GH_AW_PROMPT_2649dd009b3e236a_EOF + GH_AW_PROMPT_c537469e30b371d2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -464,6 +478,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: mattpocockskillsreviewer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -599,9 +614,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1fc0681302ffe766_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5a5e0b131226ea26_EOF' {"add_comment":{"hide_older_comments":true,"max":1},"create_check_run":{"max":1},"create_pull_request_review_comment":{"max":10,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_1fc0681302ffe766_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5a5e0b131226ea26_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -819,7 +834,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -865,7 +880,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1165,6 +1180,8 @@ jobs: group: "gh-aw-conclusion-mattpocock-skills-reviewer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1430,6 +1447,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1678,6 +1697,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1754,6 +1775,7 @@ jobs: GH_AW_ENGINE_MODEL: "claude-sonnet-4.6" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿง  *Reviewed using Matt Pocock's skills by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿง  [{workflow_name}]({run_url}) is reviewing this {event_type} using Matt Pocock's engineering skills...\",\"runSuccess\":\"๐Ÿง  [{workflow_name}]({run_url}) has completed the skills-based review. โœ…\",\"runFailure\":\"๐Ÿง  [{workflow_name}]({run_url}) {status} during the skills-based review.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index eab6ab3a6f5..07b63d9c8fb 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -141,6 +141,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -288,6 +289,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -304,21 +318,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_acc9b52bbf66f865_EOF' + cat << 'GH_AW_PROMPT_2ff5c23988a1f9a6_EOF' - GH_AW_PROMPT_acc9b52bbf66f865_EOF + GH_AW_PROMPT_2ff5c23988a1f9a6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_acc9b52bbf66f865_EOF' + cat << 'GH_AW_PROMPT_2ff5c23988a1f9a6_EOF' Tools: create_discussion, missing_tool, missing_data, noop, notion_add_comment, post_to_slack_channel - GH_AW_PROMPT_acc9b52bbf66f865_EOF + GH_AW_PROMPT_2ff5c23988a1f9a6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_acc9b52bbf66f865_EOF' + cat << 'GH_AW_PROMPT_2ff5c23988a1f9a6_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -347,9 +361,9 @@ jobs: {{/if}} - GH_AW_PROMPT_acc9b52bbf66f865_EOF + GH_AW_PROMPT_2ff5c23988a1f9a6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_acc9b52bbf66f865_EOF' + cat << 'GH_AW_PROMPT_2ff5c23988a1f9a6_EOF' {{#runtime-import .github/workflows/shared/mcp/arxiv.md}} {{#runtime-import .github/workflows/shared/mcp/ast-grep.md}} @@ -373,7 +387,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/mcp-inspector.md}} - GH_AW_PROMPT_acc9b52bbf66f865_EOF + GH_AW_PROMPT_2ff5c23988a1f9a6_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -476,6 +490,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: mcpinspector outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -693,9 +708,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0256eb09846d0ac7_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_070336af79dc1fcc_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[mcp-inspector] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"notion-add-comment":{"description":"Add a comment to a Notion page","inputs":{"comment":{"default":null,"description":"The comment text to add","required":true,"type":"string"}},"output":"Comment added to Notion successfully!"},"post-to-slack-channel":{"description":"Post a message to a Slack channel. Message must be 200 characters or less. Supports basic Slack markdown: *bold*, _italic_, ~strike~, `code`, ```code block```, \u003equote, and links \u003curl|text\u003e. Requires GH_AW_SLACK_CHANNEL_ID environment variable to be set.","inputs":{"message":{"default":null,"description":"The message to post (max 200 characters, supports Slack markdown)","required":true,"type":"string"}},"output":"Message posted to Slack successfully!"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_0256eb09846d0ac7_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_070336af79dc1fcc_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -905,7 +920,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_52328fdc1ff4e179_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_3aa683cfd6a17528_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -1288,7 +1303,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_52328fdc1ff4e179_EOF + GH_AW_MCP_CONFIG_3aa683cfd6a17528_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1614,6 +1629,8 @@ jobs: group: "gh-aw-conclusion-mcp-inspector" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1862,6 +1879,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2394,6 +2413,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "mcp-inspector" @@ -2491,6 +2511,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: mcpinspector steps: - name: Checkout actions folder diff --git a/.github/workflows/mergefest.lock.yml b/.github/workflows/mergefest.lock.yml index 1f10eb33b42..c42daed0c1a 100644 --- a/.github/workflows/mergefest.lock.yml +++ b/.github/workflows/mergefest.lock.yml @@ -96,6 +96,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -286,6 +287,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -304,23 +318,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a6e9aba48913f409_EOF' + cat << 'GH_AW_PROMPT_ac22f2f1d6e6282e_EOF' - GH_AW_PROMPT_a6e9aba48913f409_EOF + GH_AW_PROMPT_ac22f2f1d6e6282e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a6e9aba48913f409_EOF' + cat << 'GH_AW_PROMPT_ac22f2f1d6e6282e_EOF' Tools: push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_a6e9aba48913f409_EOF + GH_AW_PROMPT_ac22f2f1d6e6282e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_a6e9aba48913f409_EOF' + cat << 'GH_AW_PROMPT_ac22f2f1d6e6282e_EOF' - GH_AW_PROMPT_a6e9aba48913f409_EOF + GH_AW_PROMPT_ac22f2f1d6e6282e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a6e9aba48913f409_EOF' + cat << 'GH_AW_PROMPT_ac22f2f1d6e6282e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -349,7 +363,7 @@ jobs: {{/if}} - GH_AW_PROMPT_a6e9aba48913f409_EOF + GH_AW_PROMPT_ac22f2f1d6e6282e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" @@ -357,12 +371,12 @@ jobs: if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md" fi - cat << 'GH_AW_PROMPT_a6e9aba48913f409_EOF' + cat << 'GH_AW_PROMPT_ac22f2f1d6e6282e_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/mergefest.md}} - GH_AW_PROMPT_a6e9aba48913f409_EOF + GH_AW_PROMPT_ac22f2f1d6e6282e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -465,6 +479,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: mergefest outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -594,9 +609,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_177ef4cfa563d18c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3993e8e21f42ca4e_EOF' {"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"if_no_changes":"warn","max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_177ef4cfa563d18c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3993e8e21f42ca4e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -744,7 +759,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -790,7 +805,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1132,6 +1147,8 @@ jobs: group: "gh-aw-conclusion-mergefest" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1397,6 +1414,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1643,6 +1662,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1717,6 +1738,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”€" GH_AW_WORKFLOW_ID: "mergefest" diff --git a/.github/workflows/metrics-collector.lock.yml b/.github/workflows/metrics-collector.lock.yml index 73578eeb3fe..3545e8d50ef 100644 --- a/.github/workflows/metrics-collector.lock.yml +++ b/.github/workflows/metrics-collector.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -262,24 +276,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a4bd76fecbe34a7c_EOF' + cat << 'GH_AW_PROMPT_3ba3d09869db66e6_EOF' - GH_AW_PROMPT_a4bd76fecbe34a7c_EOF + GH_AW_PROMPT_3ba3d09869db66e6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a4bd76fecbe34a7c_EOF' + cat << 'GH_AW_PROMPT_3ba3d09869db66e6_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_a4bd76fecbe34a7c_EOF + GH_AW_PROMPT_3ba3d09869db66e6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_a4bd76fecbe34a7c_EOF' + cat << 'GH_AW_PROMPT_3ba3d09869db66e6_EOF' - GH_AW_PROMPT_a4bd76fecbe34a7c_EOF + GH_AW_PROMPT_3ba3d09869db66e6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a4bd76fecbe34a7c_EOF' + cat << 'GH_AW_PROMPT_3ba3d09869db66e6_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -308,15 +322,15 @@ jobs: {{/if}} - GH_AW_PROMPT_a4bd76fecbe34a7c_EOF + GH_AW_PROMPT_3ba3d09869db66e6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_a4bd76fecbe34a7c_EOF' + cat << 'GH_AW_PROMPT_3ba3d09869db66e6_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/metrics-collector.md}} - GH_AW_PROMPT_a4bd76fecbe34a7c_EOF + GH_AW_PROMPT_3ba3d09869db66e6_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -426,6 +440,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: metricscollector outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -624,9 +639,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_40ff9ff53fbd5548_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_92ab0562e7e4bfdf_EOF' {"create_issue":{"labels":["metrics-collector"],"max":1,"title_prefix":"[metrics-collector]"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_40ff9ff53fbd5548_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_92ab0562e7e4bfdf_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -794,7 +809,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7292df9048689c98_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -859,7 +874,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF + GH_AW_MCP_CONFIG_7292df9048689c98_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1174,6 +1189,8 @@ jobs: group: "gh-aw-conclusion-metrics-collector" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1421,6 +1438,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1677,6 +1696,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/meta-orchestrators" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1776,6 +1797,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "metrics-collector" diff --git a/.github/workflows/necromancer.lock.yml b/.github/workflows/necromancer.lock.yml index 78471403baf..13064f85f4e 100644 --- a/.github/workflows/necromancer.lock.yml +++ b/.github/workflows/necromancer.lock.yml @@ -104,6 +104,7 @@ jobs: issues: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -307,6 +308,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -325,23 +339,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_41df51c30405a776_EOF' + cat << 'GH_AW_PROMPT_7cafd582e09a4fed_EOF' - GH_AW_PROMPT_41df51c30405a776_EOF + GH_AW_PROMPT_7cafd582e09a4fed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_41df51c30405a776_EOF' + cat << 'GH_AW_PROMPT_7cafd582e09a4fed_EOF' Tools: add_comment, push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_41df51c30405a776_EOF + GH_AW_PROMPT_7cafd582e09a4fed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_41df51c30405a776_EOF' + cat << 'GH_AW_PROMPT_7cafd582e09a4fed_EOF' - GH_AW_PROMPT_41df51c30405a776_EOF + GH_AW_PROMPT_7cafd582e09a4fed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_41df51c30405a776_EOF' + cat << 'GH_AW_PROMPT_7cafd582e09a4fed_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -370,14 +384,14 @@ jobs: {{/if}} - GH_AW_PROMPT_41df51c30405a776_EOF + GH_AW_PROMPT_7cafd582e09a4fed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_41df51c30405a776_EOF' + cat << 'GH_AW_PROMPT_7cafd582e09a4fed_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/necromancer.md}} - GH_AW_PROMPT_41df51c30405a776_EOF + GH_AW_PROMPT_7cafd582e09a4fed_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -479,6 +493,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: necromancer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -606,9 +621,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_8330ae22f531aef0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b56c5a42c0edd77c_EOF' {"add_comment":{"hide_older_comments":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"allowed_files":["**/*_test.go","**/*.test.js","**/*.test.cjs","**/*.spec.js","**/*.spec.ts","**/*.spec.tsx","**/*.snap"],"commit_title_suffix":" [necromancer]","if_no_changes":"warn","max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_8330ae22f531aef0_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b56c5a42c0edd77c_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -779,7 +794,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_a8bd541a147368d4_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_6b595a071763b638_EOF [history] persistence = "none" @@ -799,11 +814,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_a8bd541a147368d4_EOF + GH_AW_MCP_CONFIG_6b595a071763b638_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -848,11 +863,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF model_provider = "openai-proxy" @@ -864,7 +879,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1150,6 +1165,8 @@ jobs: group: "gh-aw-conclusion-necromancer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1417,6 +1434,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1566,18 +1585,18 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF [history] persistence = "none" [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_37834a58b4c29838_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { }, @@ -1588,11 +1607,11 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_37834a58b4c29838_EOF + GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF model_provider = "openai-proxy" [model_providers.openai-proxy] name = "OpenAI AWF proxy" @@ -1602,7 +1621,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1727,6 +1746,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1789,6 +1810,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐ŸงŸ *Regression revived by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐ŸงŸ [{workflow_name}]({run_url}) is exhuming regressions for this {event_type}...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) fortified this PR with fresh regression coverage.\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status} while raising regression tests.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ’€" diff --git a/.github/workflows/notion-issue-summary.lock.yml b/.github/workflows/notion-issue-summary.lock.yml index 5b7207d12e7..8443b6921ef 100644 --- a/.github/workflows/notion-issue-summary.lock.yml +++ b/.github/workflows/notion-issue-summary.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,20 +275,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1a4bab10d1a62037_EOF' + cat << 'GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF' - GH_AW_PROMPT_1a4bab10d1a62037_EOF + GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1a4bab10d1a62037_EOF' + cat << 'GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF' Tools: missing_tool, missing_data, noop, notion_add_comment - GH_AW_PROMPT_1a4bab10d1a62037_EOF + GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1a4bab10d1a62037_EOF' + cat << 'GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,14 +317,14 @@ jobs: {{/if}} - GH_AW_PROMPT_1a4bab10d1a62037_EOF + GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1a4bab10d1a62037_EOF' + cat << 'GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF' {{#runtime-import .github/workflows/shared/mcp/notion.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/notion-issue-summary.md}} - GH_AW_PROMPT_1a4bab10d1a62037_EOF + GH_AW_PROMPT_4b7ebc1e71dc3b75_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -405,6 +419,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: notionissuesummary outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -529,9 +544,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4e239e9988f5416a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c5fcd8faddfdc1da_EOF' {"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"notion-add-comment":{"description":"Add a comment to a Notion page","inputs":{"comment":{"default":null,"description":"The comment text to add","required":true,"type":"string"}},"output":"Comment added to Notion successfully!"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_4e239e9988f5416a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c5fcd8faddfdc1da_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -682,7 +697,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_f8c86559a143e842_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_78e29482062729d1_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -764,7 +779,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_f8c86559a143e842_EOF + GH_AW_MCP_CONFIG_78e29482062729d1_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1046,6 +1061,8 @@ jobs: group: "gh-aw-conclusion-notion-issue-summary" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1289,6 +1306,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1678,6 +1697,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" GH_AW_WORKFLOW_ID: "notion-issue-summary" diff --git a/.github/workflows/objective-impact-report.lock.yml b/.github/workflows/objective-impact-report.lock.yml index 6fc89dba397..e2f2137b0aa 100644 --- a/.github/workflows/objective-impact-report.lock.yml +++ b/.github/workflows/objective-impact-report.lock.yml @@ -78,6 +78,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -223,6 +224,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -239,20 +253,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_83686801fd9c61f2_EOF' + cat << 'GH_AW_PROMPT_c6b903902df2efbb_EOF' - GH_AW_PROMPT_83686801fd9c61f2_EOF + GH_AW_PROMPT_c6b903902df2efbb_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_83686801fd9c61f2_EOF' + cat << 'GH_AW_PROMPT_c6b903902df2efbb_EOF' Tools: create_issue, close_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_83686801fd9c61f2_EOF + GH_AW_PROMPT_c6b903902df2efbb_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_83686801fd9c61f2_EOF' + cat << 'GH_AW_PROMPT_c6b903902df2efbb_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -281,12 +295,12 @@ jobs: {{/if}} - GH_AW_PROMPT_83686801fd9c61f2_EOF + GH_AW_PROMPT_c6b903902df2efbb_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_83686801fd9c61f2_EOF' + cat << 'GH_AW_PROMPT_c6b903902df2efbb_EOF' {{#runtime-import .github/workflows/objective-impact-report.md}} - GH_AW_PROMPT_83686801fd9c61f2_EOF + GH_AW_PROMPT_c6b903902df2efbb_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -379,6 +393,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: objectiveimpactreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -515,9 +530,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a7adcaa5205f36a9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d108a67434282c92_EOF' {"close_issue":{"max":1,"required_title_prefix":"Impact Efficiency Report - ","target":"*"},"create_issue":{"max":1,"title_prefix":"Impact Efficiency Report - "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_a7adcaa5205f36a9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d108a67434282c92_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -703,7 +718,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -744,7 +759,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF + GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1051,6 +1066,8 @@ jobs: group: "gh-aw-conclusion-objective-impact-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1294,6 +1311,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1559,6 +1578,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "objective-impact-report" diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index 939a6b7deda..ddf17e4b7cb 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,23 +275,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6fed80bba4c56f6b_EOF' + cat << 'GH_AW_PROMPT_87982e350d954a80_EOF' - GH_AW_PROMPT_6fed80bba4c56f6b_EOF + GH_AW_PROMPT_87982e350d954a80_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6fed80bba4c56f6b_EOF' + cat << 'GH_AW_PROMPT_87982e350d954a80_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_6fed80bba4c56f6b_EOF + GH_AW_PROMPT_87982e350d954a80_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6fed80bba4c56f6b_EOF' + cat << 'GH_AW_PROMPT_87982e350d954a80_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -306,9 +320,9 @@ jobs: {{/if}} - GH_AW_PROMPT_6fed80bba4c56f6b_EOF + GH_AW_PROMPT_87982e350d954a80_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_6fed80bba4c56f6b_EOF' + cat << 'GH_AW_PROMPT_87982e350d954a80_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/python-dataviz.md}} @@ -317,7 +331,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/org-health-report.md}} - GH_AW_PROMPT_6fed80bba4c56f6b_EOF + GH_AW_PROMPT_87982e350d954a80_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: orghealthreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -585,9 +600,9 @@ jobs: mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_afac893864ab83aa_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f1e43010d93823cb_EOF' {"create_discussion":{"category":"reports","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":3,"retention-days":30,"skip-archive":true},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_afac893864ab83aa_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_f1e43010d93823cb_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -758,7 +773,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -804,7 +819,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1147,6 +1162,8 @@ jobs: group: "gh-aw-conclusion-org-health-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1395,6 +1412,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1661,6 +1680,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "org-health-report" @@ -1768,6 +1788,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: orghealthreport steps: - name: Checkout actions folder @@ -1823,6 +1844,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/outcome-collector.lock.yml b/.github/workflows/outcome-collector.lock.yml index d096fcbceb0..6f120886ecc 100644 --- a/.github/workflows/outcome-collector.lock.yml +++ b/.github/workflows/outcome-collector.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,21 +271,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f89b08a7b426f0c0_EOF' + cat << 'GH_AW_PROMPT_644f5fe4761b488a_EOF' - GH_AW_PROMPT_f89b08a7b426f0c0_EOF + GH_AW_PROMPT_644f5fe4761b488a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f89b08a7b426f0c0_EOF' + cat << 'GH_AW_PROMPT_644f5fe4761b488a_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_f89b08a7b426f0c0_EOF + GH_AW_PROMPT_644f5fe4761b488a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f89b08a7b426f0c0_EOF' + cat << 'GH_AW_PROMPT_644f5fe4761b488a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,13 +314,13 @@ jobs: {{/if}} - GH_AW_PROMPT_f89b08a7b426f0c0_EOF + GH_AW_PROMPT_644f5fe4761b488a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_f89b08a7b426f0c0_EOF' + cat << 'GH_AW_PROMPT_644f5fe4761b488a_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/outcome-collector.md}} - GH_AW_PROMPT_f89b08a7b426f0c0_EOF + GH_AW_PROMPT_644f5fe4761b488a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -409,6 +423,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: outcomecollector outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -565,9 +580,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7b0f01afe9cde68c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2d4a76b0d9622158_EOF' {"create_issue":{"close_older_issues":true,"expires":168,"group_by_day":true,"labels":["automation","observability","outcomes"],"max":1,"title_prefix":"[Outcome Report]"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_7b0f01afe9cde68c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2d4a76b0d9622158_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -734,7 +749,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -780,7 +795,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1094,6 +1109,8 @@ jobs: group: "gh-aw-conclusion-outcome-collector" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1346,6 +1363,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1611,6 +1630,7 @@ jobs: GH_AW_ENGINE_MODEL: "claude-haiku-4.5" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“Š *Measured by [{workflow_name}]({run_url})*{ai_credits_suffix}\",\"runStarted\":\"๐Ÿ“Š [{workflow_name}]({run_url}) is evaluating safe output outcomes...\",\"runSuccess\":\"๐Ÿ“Š [{workflow_name}]({run_url}) outcome evaluation complete!\",\"runFailure\":\"๐Ÿ“Š [{workflow_name}]({run_url}) {status}\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "outcome-collector" @@ -1711,6 +1731,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: outcomecollector steps: - name: Checkout actions folder diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 0d78620bc28..903f79843f0 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -106,6 +106,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -297,6 +298,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -318,21 +332,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_90c98906e5da7cd3_EOF' + cat << 'GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF' - GH_AW_PROMPT_90c98906e5da7cd3_EOF + GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_90c98906e5da7cd3_EOF' + cat << 'GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF' Tools: add_comment, create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_90c98906e5da7cd3_EOF + GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_90c98906e5da7cd3_EOF' + cat << 'GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -361,19 +375,19 @@ jobs: {{/if}} - GH_AW_PROMPT_90c98906e5da7cd3_EOF + GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_90c98906e5da7cd3_EOF' + cat << 'GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF' {{#runtime-import .github/workflows/shared/mcp/markitdown.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/pdf-summary.md}} - GH_AW_PROMPT_90c98906e5da7cd3_EOF + GH_AW_PROMPT_e6fffb2f5dc9c5d7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -492,6 +506,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: pdfsummary outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -636,9 +651,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d38b0e8411f27e4f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa78eeacae31b1e5_EOF' {"add_comment":{"max":1},"create_discussion":{"expires":24,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_d38b0e8411f27e4f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_fa78eeacae31b1e5_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -822,7 +837,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4b01e1847e953d5e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_e701760ad3aacff5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -898,7 +913,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4b01e1847e953d5e_EOF + GH_AW_MCP_CONFIG_e701760ad3aacff5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1206,6 +1221,8 @@ jobs: group: "gh-aw-conclusion-pdf-summary" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1476,6 +1493,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1722,6 +1741,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1798,6 +1819,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“„ *Summary compiled by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ“– Page by page! [{workflow_name}]({run_url}) is reading through this {event_type}...\",\"runSuccess\":\"๐Ÿ“š TL;DR ready! [{workflow_name}]({run_url}) has distilled the essence. Knowledge condensed! โœจ\",\"runFailure\":\"๐Ÿ“– Reading interrupted! [{workflow_name}]({run_url}) {status}. The document remains unsummarized...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“„" @@ -1897,6 +1919,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: pdfsummary steps: - name: Checkout actions folder diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index 5bf1eb436f6..b3d9eb216c9 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -95,6 +95,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -285,6 +286,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -305,20 +319,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_32131f0532a7d114_EOF' + cat << 'GH_AW_PROMPT_fc3b386430d0cc54_EOF' - GH_AW_PROMPT_32131f0532a7d114_EOF + GH_AW_PROMPT_fc3b386430d0cc54_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_32131f0532a7d114_EOF' + cat << 'GH_AW_PROMPT_fc3b386430d0cc54_EOF' Tools: create_issue(max:5), close_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_32131f0532a7d114_EOF + GH_AW_PROMPT_fc3b386430d0cc54_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_32131f0532a7d114_EOF' + cat << 'GH_AW_PROMPT_fc3b386430d0cc54_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -347,17 +361,17 @@ jobs: {{/if}} - GH_AW_PROMPT_32131f0532a7d114_EOF + GH_AW_PROMPT_fc3b386430d0cc54_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_32131f0532a7d114_EOF' + cat << 'GH_AW_PROMPT_fc3b386430d0cc54_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/plan.md}} - GH_AW_PROMPT_32131f0532a7d114_EOF + GH_AW_PROMPT_fc3b386430d0cc54_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -466,6 +480,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: plan outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -589,9 +604,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7b746b311cd6ee15_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_dd267048923accdb_EOF' {"close_discussion":{"max":1},"create_issue":{"expires":48,"group":true,"labels":["plan","ai-generated","cookie"],"max":5,"title_prefix":"[plan] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_7b746b311cd6ee15_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_dd267048923accdb_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -786,7 +801,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -832,7 +847,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1135,6 +1150,8 @@ jobs: group: "gh-aw-conclusion-plan" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1398,6 +1415,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1644,6 +1663,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1719,6 +1740,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“‹" GH_AW_WORKFLOW_ID: "plan" diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index 1b10e0efa69..cedb736dd89 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -103,6 +103,7 @@ jobs: issues: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -294,6 +295,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -313,25 +327,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6e77e06f51b1969f_EOF' + cat << 'GH_AW_PROMPT_9cb56adf7be8f5e2_EOF' - GH_AW_PROMPT_6e77e06f51b1969f_EOF + GH_AW_PROMPT_9cb56adf7be8f5e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6e77e06f51b1969f_EOF' + cat << 'GH_AW_PROMPT_9cb56adf7be8f5e2_EOF' Tools: add_comment(max:3), create_issue(max:2), update_issue(max:2), create_discussion(max:2), create_agent_session, create_pull_request, close_pull_request(max:2), create_pull_request_review_comment(max:2), add_labels(max:5), push_to_pull_request_branch, link_sub_issue(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_6e77e06f51b1969f_EOF + GH_AW_PROMPT_9cb56adf7be8f5e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_6e77e06f51b1969f_EOF' + cat << 'GH_AW_PROMPT_9cb56adf7be8f5e2_EOF' - GH_AW_PROMPT_6e77e06f51b1969f_EOF + GH_AW_PROMPT_9cb56adf7be8f5e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6e77e06f51b1969f_EOF' + cat << 'GH_AW_PROMPT_9cb56adf7be8f5e2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -360,7 +374,7 @@ jobs: {{/if}} - GH_AW_PROMPT_6e77e06f51b1969f_EOF + GH_AW_PROMPT_9cb56adf7be8f5e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" @@ -368,13 +382,13 @@ jobs: if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md" fi - cat << 'GH_AW_PROMPT_6e77e06f51b1969f_EOF' + cat << 'GH_AW_PROMPT_9cb56adf7be8f5e2_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/poem-bot.md}} - GH_AW_PROMPT_6e77e06f51b1969f_EOF + GH_AW_PROMPT_9cb56adf7be8f5e2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -486,6 +500,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: poembot outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -628,9 +643,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ff3e3e7e9c3de847_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c28dfe3ebe457378_EOF' {"add_comment":{"max":3,"target":"*"},"add_labels":{"allowed":["poetry","creative","automation","ai-generated","epic","haiku","sonnet","limerick"],"max":5},"close_pull_request":{"max":2,"required_labels":["poetry","automation"],"required_title_prefix":"[๐ŸŽจ POETRY]","target":"*"},"create_agent_session":{"base":"main","max":1},"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"labels":["poetry","automation","ai-generated"],"max":2,"title_prefix":"[๐Ÿ“œ POETRY] "},"create_issue":{"expires":48,"group":true,"labels":["poetry","automation","ai-generated"],"max":2,"title_prefix":"[๐ŸŽญ POEM-BOT] "},"create_pull_request":{"draft":false,"expires":48,"labels":["poetry","automation","creative-writing"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","PI.md","AGENTS.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[๐ŸŽจ POETRY] "},"create_pull_request_review_comment":{"max":2,"side":"RIGHT"},"create_report_incomplete_issue":{},"link_sub_issue":{"max":3,"parent_required_labels":["poetry","epic"],"parent_title_prefix":"[๐ŸŽญ POEM-BOT]","sub_required_labels":["poetry"],"sub_title_prefix":"[๐ŸŽญ POEM-BOT]"},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"if_no_changes":"warn","max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","PI.md","AGENTS.md"]},"report_incomplete":{},"update_issue":{"allow_body":true,"allow_status":true,"allow_title":true,"max":2,"target":"*"},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":1,"retention-days":30}} - GH_AW_SAFE_OUTPUTS_CONFIG_ff3e3e7e9c3de847_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c28dfe3ebe457378_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -1076,7 +1091,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -1121,7 +1136,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1417,6 +1432,8 @@ jobs: group: "gh-aw-conclusion-poem-bot" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1685,6 +1702,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1912,6 +1931,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1983,6 +2004,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUTS_STAGED: "true" GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿชถ *Verses penned by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐ŸŽญ Hear ye! The muse stirs! [{workflow_name}]({run_url}) takes quill in hand for this {event_type}...\",\"runSuccess\":\"๐Ÿชถ The poem is writ! [{workflow_name}]({run_url}) has composed verses most fair. Applause! ๐Ÿ‘\",\"runFailure\":\"๐ŸŽญ Alas! [{workflow_name}]({run_url}) {status}. The muse has fled, leaving verses unsung...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} @@ -2093,6 +2115,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: poembot steps: - name: Checkout actions folder diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index e6d2bd15ec5..5fb5ec8b4a6 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -90,6 +90,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -235,6 +236,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -251,23 +265,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_c76d993f8263aed6_EOF' + cat << 'GH_AW_PROMPT_495304a3beb17761_EOF' - GH_AW_PROMPT_c76d993f8263aed6_EOF + GH_AW_PROMPT_495304a3beb17761_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_c76d993f8263aed6_EOF' + cat << 'GH_AW_PROMPT_495304a3beb17761_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_c76d993f8263aed6_EOF + GH_AW_PROMPT_495304a3beb17761_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_c76d993f8263aed6_EOF' + cat << 'GH_AW_PROMPT_495304a3beb17761_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -296,16 +310,16 @@ jobs: {{/if}} - GH_AW_PROMPT_c76d993f8263aed6_EOF + GH_AW_PROMPT_495304a3beb17761_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_c76d993f8263aed6_EOF' + cat << 'GH_AW_PROMPT_495304a3beb17761_EOF' {{#runtime-import .github/workflows/shared/mcp/sentry.md}} {{#runtime-import .github/workflows/shared/mcp/grafana.md}} {{#runtime-import .github/workflows/shared/python-dataviz.md}} {{#runtime-import .github/workflows/shared/trends.md}} {{#runtime-import .github/workflows/portfolio-analyst.md}} - GH_AW_PROMPT_c76d993f8263aed6_EOF + GH_AW_PROMPT_495304a3beb17761_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -407,6 +421,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: portfolioanalyst outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -577,9 +592,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_95b669e899cc8eff_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_08b1df940c4ecd9a_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":168,"fallback_to_issue":true,"max":1,"title_prefix":"[portfolio] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_95b669e899cc8eff_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_08b1df940c4ecd9a_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -756,7 +771,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GRAFANA_SERVICE_ACCOUNT_TOKEN -e GRAFANA_URL -e SENTRY_ACCESS_TOKEN -e SENTRY_HOST -e SENTRY_OPENAI_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_953e577c5008b031_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b015f0f0787345cc_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -878,7 +893,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_953e577c5008b031_EOF + GH_AW_MCP_CONFIG_b015f0f0787345cc_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1273,6 +1288,8 @@ jobs: group: "gh-aw-conclusion-portfolio-analyst" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1526,6 +1543,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1795,6 +1814,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "portfolio-analyst" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -1890,6 +1910,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: portfolioanalyst steps: - name: Checkout actions folder @@ -1945,6 +1966,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/pr-code-quality-reviewer.lock.yml b/.github/workflows/pr-code-quality-reviewer.lock.yml index df9ccc719ec..7df4ed5613a 100644 --- a/.github/workflows/pr-code-quality-reviewer.lock.yml +++ b/.github/workflows/pr-code-quality-reviewer.lock.yml @@ -100,6 +100,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -285,6 +286,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -303,20 +317,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9ccae2af0dc705bf_EOF' + cat << 'GH_AW_PROMPT_c0d4c53a6b6257f5_EOF' - GH_AW_PROMPT_9ccae2af0dc705bf_EOF + GH_AW_PROMPT_c0d4c53a6b6257f5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9ccae2af0dc705bf_EOF' + cat << 'GH_AW_PROMPT_c0d4c53a6b6257f5_EOF' Tools: create_pull_request_review_comment(max:10), submit_pull_request_review, create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_9ccae2af0dc705bf_EOF + GH_AW_PROMPT_c0d4c53a6b6257f5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9ccae2af0dc705bf_EOF' + cat << 'GH_AW_PROMPT_c0d4c53a6b6257f5_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -345,19 +359,19 @@ jobs: {{/if}} - GH_AW_PROMPT_9ccae2af0dc705bf_EOF + GH_AW_PROMPT_c0d4c53a6b6257f5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_9ccae2af0dc705bf_EOF' + cat << 'GH_AW_PROMPT_c0d4c53a6b6257f5_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/pr-code-review-config.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/pr-code-quality-reviewer.md}} - GH_AW_PROMPT_9ccae2af0dc705bf_EOF + GH_AW_PROMPT_c0d4c53a6b6257f5_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -461,6 +475,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: prcodequalityreviewer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -585,9 +600,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c9435ed05ad4a65f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6c85fb785cea0a84_EOF' {"create_check_run":{"max":1},"create_pull_request_review_comment":{"max":10,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_c9435ed05ad4a65f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_6c85fb785cea0a84_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -782,7 +797,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -828,7 +843,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1131,6 +1146,8 @@ jobs: group: "gh-aw-conclusion-pr-code-quality-reviewer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1396,6 +1413,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1644,6 +1663,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1719,6 +1740,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”Ž *Code quality review by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”Ž [{workflow_name}]({run_url}) is reviewing code quality for this {event_type}...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed the code quality review.\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status} during code quality review.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" diff --git a/.github/workflows/pr-description-caveman.lock.yml b/.github/workflows/pr-description-caveman.lock.yml index 80ded79bdcc..a8dad7eff88 100644 --- a/.github/workflows/pr-description-caveman.lock.yml +++ b/.github/workflows/pr-description-caveman.lock.yml @@ -76,6 +76,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -236,6 +237,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,20 +268,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF' + cat << 'GH_AW_PROMPT_098153d30275075e_EOF' - GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF + GH_AW_PROMPT_098153d30275075e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF' + cat << 'GH_AW_PROMPT_098153d30275075e_EOF' Tools: update_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF + GH_AW_PROMPT_098153d30275075e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF' + cat << 'GH_AW_PROMPT_098153d30275075e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -296,12 +310,12 @@ jobs: {{/if}} - GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF + GH_AW_PROMPT_098153d30275075e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF' + cat << 'GH_AW_PROMPT_098153d30275075e_EOF' {{#runtime-import .github/workflows/pr-description-caveman.md}} - GH_AW_PROMPT_ab22f7bdcbbcfdaa_EOF + GH_AW_PROMPT_098153d30275075e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -403,6 +417,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: prdescriptioncaveman outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -532,9 +547,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7f6b1ee572bd1c92_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_56c9891836c8e735_EOF' {"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_pull_request":{"allow_body":true,"allow_title":false,"default_operation":"replace","max":1,"target":"*","update_branch":false}} - GH_AW_SAFE_OUTPUTS_CONFIG_7f6b1ee572bd1c92_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_56c9891836c8e735_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -702,7 +717,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -743,7 +758,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_948e05ee7d6ef5c2_EOF + GH_AW_MCP_CONFIG_b8f867f3b864ff14_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1053,6 +1068,8 @@ jobs: group: "gh-aw-conclusion-pr-description-caveman" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1296,6 +1313,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1544,6 +1563,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1606,6 +1627,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "pr-description-caveman" GH_AW_WORKFLOW_NAME: "PR Description Updater" diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index ffa6a3e3220..a6e0baedda2 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -97,6 +97,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -288,6 +289,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -307,20 +321,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_700951786d21456f_EOF' + cat << 'GH_AW_PROMPT_f2f889bcbbec0e9b_EOF' - GH_AW_PROMPT_700951786d21456f_EOF + GH_AW_PROMPT_f2f889bcbbec0e9b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_700951786d21456f_EOF' + cat << 'GH_AW_PROMPT_f2f889bcbbec0e9b_EOF' Tools: create_discussion, create_pull_request_review_comment(max:10), submit_pull_request_review, create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_700951786d21456f_EOF + GH_AW_PROMPT_f2f889bcbbec0e9b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_700951786d21456f_EOF' + cat << 'GH_AW_PROMPT_f2f889bcbbec0e9b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -349,12 +363,12 @@ jobs: {{/if}} - GH_AW_PROMPT_700951786d21456f_EOF + GH_AW_PROMPT_f2f889bcbbec0e9b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_700951786d21456f_EOF' + cat << 'GH_AW_PROMPT_f2f889bcbbec0e9b_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -362,7 +376,7 @@ jobs: {{#runtime-import .github/workflows/shared/pr-code-review-config.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/pr-nitpick-reviewer.md}} - GH_AW_PROMPT_700951786d21456f_EOF + GH_AW_PROMPT_f2f889bcbbec0e9b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -468,6 +482,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: prnitpickreviewer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -592,9 +607,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6bc74e7492c24f4b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1a06baac06d1ff5a_EOF' {"create_check_run":{"max":1},"create_discussion":{"category":"audits","expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[nitpick-report] "},"create_pull_request_review_comment":{"max":10,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_6bc74e7492c24f4b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_1a06baac06d1ff5a_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -818,7 +833,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d69edc3365a69022_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_6ef64cec9cf209a3_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -883,7 +898,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d69edc3365a69022_EOF + GH_AW_MCP_CONFIG_6ef64cec9cf209a3_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1175,6 +1190,8 @@ jobs: group: "gh-aw-conclusion-pr-nitpick-reviewer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1442,6 +1459,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1688,6 +1707,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1765,6 +1786,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ” *Meticulously inspected by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ฌ Adjusting monocle... [{workflow_name}]({run_url}) is scrutinizing every pixel of this {event_type}...\",\"runSuccess\":\"๐Ÿ” Nitpicks catalogued! [{workflow_name}]({run_url}) has documented all the tiny details. Perfection awaits! โœ…\",\"runFailure\":\"๐Ÿ”ฌ Lens cracked! [{workflow_name}]({run_url}) {status}. Some nitpicks remain undetected...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" diff --git a/.github/workflows/pr-sous-chef.lock.yml b/.github/workflows/pr-sous-chef.lock.yml index 3671cf7bbe9..320eff30891 100644 --- a/.github/workflows/pr-sous-chef.lock.yml +++ b/.github/workflows/pr-sous-chef.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,23 +271,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_abd8e2438f693a5c_EOF' + cat << 'GH_AW_PROMPT_203913b8c8acd84a_EOF' - GH_AW_PROMPT_abd8e2438f693a5c_EOF + GH_AW_PROMPT_203913b8c8acd84a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_abd8e2438f693a5c_EOF' + cat << 'GH_AW_PROMPT_203913b8c8acd84a_EOF' Tools: add_comment(max:20), update_pull_request(max:10), push_to_pull_request_branch(max:10), missing_tool, missing_data, noop - GH_AW_PROMPT_abd8e2438f693a5c_EOF + GH_AW_PROMPT_203913b8c8acd84a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_abd8e2438f693a5c_EOF' + cat << 'GH_AW_PROMPT_203913b8c8acd84a_EOF' - GH_AW_PROMPT_abd8e2438f693a5c_EOF + GH_AW_PROMPT_203913b8c8acd84a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_abd8e2438f693a5c_EOF' + cat << 'GH_AW_PROMPT_203913b8c8acd84a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -315,13 +329,13 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_abd8e2438f693a5c_EOF + GH_AW_PROMPT_203913b8c8acd84a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_abd8e2438f693a5c_EOF' + cat << 'GH_AW_PROMPT_203913b8c8acd84a_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/pr-sous-chef.md}} - GH_AW_PROMPT_abd8e2438f693a5c_EOF + GH_AW_PROMPT_203913b8c8acd84a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: prsouschef outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -582,9 +597,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a21961792bf52d99_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4584a679bd529cd3_EOF' {"add_comment":{"max":20,"target":"*"},"create_report_incomplete_issue":{},"mentions":{"allowed":["copilot"]},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"commit_title_suffix":" [pr-sous-chef]","excluded_files":[".github/workflows/**"],"if_no_changes":"ignore","max":10,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"target":"*"},"report_incomplete":{},"update_pull_request":{"allow_body":true,"allow_title":false,"default_operation":"append","max":10,"target":"*","update_branch":true}} - GH_AW_SAFE_OUTPUTS_CONFIG_a21961792bf52d99_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_4584a679bd529cd3_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -800,7 +815,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -846,7 +861,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1173,6 +1188,8 @@ jobs: group: "gh-aw-conclusion-pr-sous-chef" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1419,6 +1436,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1666,6 +1685,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_no_match.outputs.skip_no_match_check_ok == 'true' }} matched_command: '' @@ -1742,6 +1763,7 @@ jobs: GH_AW_ENGINE_MODEL: "gpt-5-mini" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"๐Ÿณ [{workflow_name}]({run_url}) is preparing PRs for maintainer investigation.\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) finished PR sous-chef nudges.\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status} while preparing PRs.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ‘จ\u200d๐Ÿณ" diff --git a/.github/workflows/pr-triage-agent.lock.yml b/.github/workflows/pr-triage-agent.lock.yml index 81f2feed49a..d1147208ba6 100644 --- a/.github/workflows/pr-triage-agent.lock.yml +++ b/.github/workflows/pr-triage-agent.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,21 +275,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9085e86852471e59_EOF' + cat << 'GH_AW_PROMPT_34d19a2da78335ed_EOF' - GH_AW_PROMPT_9085e86852471e59_EOF + GH_AW_PROMPT_34d19a2da78335ed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9085e86852471e59_EOF' + cat << 'GH_AW_PROMPT_34d19a2da78335ed_EOF' Tools: add_comment(max:50), create_issue, create_pull_request_review_comment(max:10), submit_pull_request_review, add_labels(max:100), create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_9085e86852471e59_EOF + GH_AW_PROMPT_34d19a2da78335ed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9085e86852471e59_EOF' + cat << 'GH_AW_PROMPT_34d19a2da78335ed_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -304,9 +318,9 @@ jobs: {{/if}} - GH_AW_PROMPT_9085e86852471e59_EOF + GH_AW_PROMPT_34d19a2da78335ed_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_9085e86852471e59_EOF' + cat << 'GH_AW_PROMPT_34d19a2da78335ed_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -315,7 +329,7 @@ jobs: {{#runtime-import .github/triage.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/pr-triage-agent.md}} - GH_AW_PROMPT_9085e86852471e59_EOF + GH_AW_PROMPT_34d19a2da78335ed_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -424,6 +438,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: prtriageagent outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -558,9 +573,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1a7e3f071ae1fbd6_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_80652b5ec8cf2cb9_EOF' {"add_comment":{"max":50},"add_labels":{"max":100},"create_check_run":{"max":1},"create_issue":{"close_older_issues":true,"expires":24,"max":1,"title_prefix":"[PR Triage Report] "},"create_pull_request_review_comment":{"max":10,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_1a7e3f071ae1fbd6_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_80652b5ec8cf2cb9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -836,7 +851,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -882,7 +897,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1199,6 +1214,8 @@ jobs: group: "gh-aw-conclusion-pr-triage-agent" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1447,6 +1464,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1703,6 +1722,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/pr-triage" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1804,6 +1825,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"๐Ÿ” Starting PR triage analysis... [{workflow_name}]({run_url}) is categorizing and prioritizing agent-created PRs\",\"runSuccess\":\"โœ… PR triage complete! [{workflow_name}]({run_url}) has analyzed and categorized PRs. Check the issue for detailed report.\",\"runFailure\":\"โŒ PR triage failed! [{workflow_name}]({run_url}) {status}. Some PRs may not be triaged.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index 3fe7d53ef2a..df2ccd5b5f5 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -110,6 +110,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -257,6 +258,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -273,23 +287,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_62e1434e5c693f7b_EOF' + cat << 'GH_AW_PROMPT_c6c7bd9224fc3016_EOF' - GH_AW_PROMPT_62e1434e5c693f7b_EOF + GH_AW_PROMPT_c6c7bd9224fc3016_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_62e1434e5c693f7b_EOF' + cat << 'GH_AW_PROMPT_c6c7bd9224fc3016_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_62e1434e5c693f7b_EOF + GH_AW_PROMPT_c6c7bd9224fc3016_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_62e1434e5c693f7b_EOF' + cat << 'GH_AW_PROMPT_c6c7bd9224fc3016_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -318,9 +332,9 @@ jobs: {{/if}} - GH_AW_PROMPT_62e1434e5c693f7b_EOF + GH_AW_PROMPT_c6c7bd9224fc3016_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_62e1434e5c693f7b_EOF' + cat << 'GH_AW_PROMPT_c6c7bd9224fc3016_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/skills/jqschema/SKILL.md}} @@ -331,7 +345,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/prompt-clustering-analysis.md}} - GH_AW_PROMPT_62e1434e5c693f7b_EOF + GH_AW_PROMPT_c6c7bd9224fc3016_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -433,6 +447,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: promptclusteringanalysis outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -687,9 +702,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ad0ccd295e5a0031_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_35d0ec616390e98a_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[prompt-clustering] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_ad0ccd295e5a0031_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_35d0ec616390e98a_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -859,7 +874,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -922,7 +937,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF + GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1315,6 +1330,8 @@ jobs: group: "gh-aw-conclusion-prompt-clustering-analysis" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1563,6 +1580,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1832,6 +1851,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "prompt-clustering-analysis" @@ -1928,6 +1948,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: promptclusteringanalysis steps: - name: Checkout actions folder @@ -1983,6 +2004,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index d1e26b50213..9ad192b80c7 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,23 +274,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_42228a9614a4879c_EOF' + cat << 'GH_AW_PROMPT_751510579965f577_EOF' - GH_AW_PROMPT_42228a9614a4879c_EOF + GH_AW_PROMPT_751510579965f577_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_42228a9614a4879c_EOF' + cat << 'GH_AW_PROMPT_751510579965f577_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_42228a9614a4879c_EOF + GH_AW_PROMPT_751510579965f577_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_42228a9614a4879c_EOF' + cat << 'GH_AW_PROMPT_751510579965f577_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -305,9 +319,9 @@ jobs: {{/if}} - GH_AW_PROMPT_42228a9614a4879c_EOF + GH_AW_PROMPT_751510579965f577_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_42228a9614a4879c_EOF' + cat << 'GH_AW_PROMPT_751510579965f577_EOF' {{#runtime-import .github/workflows/shared/charts-with-trending.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -315,7 +329,7 @@ jobs: {{#runtime-import .github/workflows/shared/trends.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/python-data-charts.md}} - GH_AW_PROMPT_42228a9614a4879c_EOF + GH_AW_PROMPT_751510579965f577_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -416,6 +430,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: pythondatacharts outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -645,9 +660,9 @@ jobs: mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_220f2239ae3db1c3_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_92175066ea61acc0_EOF' {"create_discussion":{"category":"artifacts","expires":24,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":3,"retention-days":30,"skip-archive":true},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_220f2239ae3db1c3_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_92175066ea61acc0_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -821,7 +836,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e39ef0e5c25dae7b_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_439bd56e98e9d691_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -902,7 +917,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e39ef0e5c25dae7b_EOF + GH_AW_MCP_CONFIG_439bd56e98e9d691_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1230,6 +1245,8 @@ jobs: group: "gh-aw-conclusion-python-data-charts" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1478,6 +1495,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1744,6 +1763,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "python-data-charts" @@ -1851,6 +1871,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: pythondatacharts steps: - name: Checkout actions folder @@ -1906,6 +1927,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index cbe76da124d..8b7f793e0de 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -122,6 +122,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -313,6 +314,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -335,23 +349,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d6adb058a7095635_EOF' + cat << 'GH_AW_PROMPT_f81efcd020f76a13_EOF' - GH_AW_PROMPT_d6adb058a7095635_EOF + GH_AW_PROMPT_f81efcd020f76a13_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d6adb058a7095635_EOF' + cat << 'GH_AW_PROMPT_f81efcd020f76a13_EOF' Tools: add_comment, create_pull_request, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_d6adb058a7095635_EOF + GH_AW_PROMPT_f81efcd020f76a13_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_d6adb058a7095635_EOF' + cat << 'GH_AW_PROMPT_f81efcd020f76a13_EOF' - GH_AW_PROMPT_d6adb058a7095635_EOF + GH_AW_PROMPT_f81efcd020f76a13_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d6adb058a7095635_EOF' + cat << 'GH_AW_PROMPT_f81efcd020f76a13_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -380,17 +394,17 @@ jobs: {{/if}} - GH_AW_PROMPT_d6adb058a7095635_EOF + GH_AW_PROMPT_f81efcd020f76a13_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_d6adb058a7095635_EOF' + cat << 'GH_AW_PROMPT_f81efcd020f76a13_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/q.md}} - GH_AW_PROMPT_d6adb058a7095635_EOF + GH_AW_PROMPT_f81efcd020f76a13_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -507,6 +521,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: q outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -692,9 +707,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_368135f086bb95e8_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_593d3bc21f12b87e_EOF' {"add_comment":{"max":1},"add_labels":{"allowed":["spam"]},"create_pull_request":{"draft":false,"expires":48,"if_no_changes":"ignore","labels":["automation","workflow-optimization"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"fallback-to-issue","reviewers":["copilot"],"title_prefix":"[q] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_368135f086bb95e8_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_593d3bc21f12b87e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -909,7 +924,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_7292df9048689c98_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -974,7 +989,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_4c27ef9d304151ee_EOF + GH_AW_MCP_CONFIG_7292df9048689c98_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1277,6 +1292,8 @@ jobs: group: "gh-aw-conclusion-q" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1544,6 +1561,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1791,6 +1810,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1866,6 +1887,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐ŸŽฉ *Equipped by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ง Pay attention, 007! [{workflow_name}]({run_url}) is preparing your gadgets for this {event_type}...\",\"runSuccess\":\"๐ŸŽฉ Mission equipment ready! [{workflow_name}]({run_url}) has optimized your workflow. Use wisely, 007! ๐Ÿ”ซ\",\"runFailure\":\"๐Ÿ”ง Technical difficulties! [{workflow_name}]({run_url}) {status}. Even Q Branch has bad days...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โ“" diff --git a/.github/workflows/refactoring-cadence.lock.yml b/.github/workflows/refactoring-cadence.lock.yml index c093b4d9621..7d74884a524 100644 --- a/.github/workflows/refactoring-cadence.lock.yml +++ b/.github/workflows/refactoring-cadence.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,21 +272,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF' + cat << 'GH_AW_PROMPT_eead8f829ebbb798_EOF' - GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF + GH_AW_PROMPT_eead8f829ebbb798_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF' + cat << 'GH_AW_PROMPT_eead8f829ebbb798_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF + GH_AW_PROMPT_eead8f829ebbb798_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF' + cat << 'GH_AW_PROMPT_eead8f829ebbb798_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,15 +315,15 @@ jobs: {{/if}} - GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF + GH_AW_PROMPT_eead8f829ebbb798_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF' + cat << 'GH_AW_PROMPT_eead8f829ebbb798_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/refactoring-cadence.md}} - GH_AW_PROMPT_ce3c00d3f5eaaa0e_EOF + GH_AW_PROMPT_eead8f829ebbb798_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -415,6 +429,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: refactoringcadence outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -557,9 +572,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b57f168ca2d86b1b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_754d6637f26130d2_EOF' {"create_issue":{"expires":336,"labels":["refactoring","ai-generated"],"max":1,"title_prefix":"[refactoring-cadence] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b57f168ca2d86b1b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_754d6637f26130d2_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -727,7 +742,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -773,7 +788,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1087,6 +1102,8 @@ jobs: group: "gh-aw-conclusion-refactoring-cadence" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1339,6 +1356,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1586,6 +1605,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1661,6 +1682,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”ง *Code health check by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ง Refactoring Cadence online! [{workflow_name}]({run_url}) is measuring code health...\",\"runSuccess\":\"โœ… Code health check complete! [{workflow_name}]({run_url}) has finished its analysis.\",\"runFailure\":\"๐Ÿ”ง Code health check failed! [{workflow_name}]({run_url}) {status}. Code health status unknown...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "refactoring-cadence" @@ -1761,6 +1783,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: refactoringcadence steps: - name: Checkout actions folder diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index 55cab2d11bc..5fd083bbda8 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -109,6 +109,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -272,6 +273,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -290,23 +304,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_3af1bb52787738c6_EOF' + cat << 'GH_AW_PROMPT_36de2744f87eda9f_EOF' - GH_AW_PROMPT_3af1bb52787738c6_EOF + GH_AW_PROMPT_36de2744f87eda9f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_3af1bb52787738c6_EOF' + cat << 'GH_AW_PROMPT_36de2744f87eda9f_EOF' Tools: add_comment, create_pull_request, create_pull_request_review_comment(max:10), submit_pull_request_review, create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_3af1bb52787738c6_EOF + GH_AW_PROMPT_36de2744f87eda9f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_3af1bb52787738c6_EOF' + cat << 'GH_AW_PROMPT_36de2744f87eda9f_EOF' - GH_AW_PROMPT_3af1bb52787738c6_EOF + GH_AW_PROMPT_36de2744f87eda9f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_3af1bb52787738c6_EOF' + cat << 'GH_AW_PROMPT_36de2744f87eda9f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -335,16 +349,16 @@ jobs: {{/if}} - GH_AW_PROMPT_3af1bb52787738c6_EOF + GH_AW_PROMPT_36de2744f87eda9f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_3af1bb52787738c6_EOF' + cat << 'GH_AW_PROMPT_36de2744f87eda9f_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/pr-code-review-config.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/refiner.md}} - GH_AW_PROMPT_3af1bb52787738c6_EOF + GH_AW_PROMPT_36de2744f87eda9f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -446,6 +460,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: refiner outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -568,9 +583,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5b99c4293ba2c30f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5620de2116d1140e_EOF' {"add_comment":{"max":1},"create_check_run":{"max":1},"create_pull_request":{"draft":false,"labels":["automation","refine-improvements"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[refiner] "},"create_pull_request_review_comment":{"max":10,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_5b99c4293ba2c30f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5620de2116d1140e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -830,7 +845,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -876,7 +891,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1175,6 +1190,8 @@ jobs: group: "gh-aw-conclusion-refiner" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1421,6 +1438,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1670,6 +1689,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1734,6 +1755,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"๐Ÿ” Starting code refinement... [{workflow_name}]({run_url}) is analyzing PR #${{ github.event.pull_request.number }} for style alignment and security issues\",\"runSuccess\":\"โœ… Refinement complete! [{workflow_name}]({run_url}) has created a PR with improvements for PR #${{ github.event.pull_request.number }}\",\"runFailure\":\"โŒ Refinement failed! [{workflow_name}]({run_url}) {status} while processing PR #${{ github.event.pull_request.number }}\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โœจ" diff --git a/.github/workflows/release.lock.yml b/.github/workflows/release.lock.yml index ef0b9f7c224..bdac8f2642f 100644 --- a/.github/workflows/release.lock.yml +++ b/.github/workflows/release.lock.yml @@ -110,6 +110,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -259,6 +260,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -275,20 +289,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e3ce61374f2bfadd_EOF' + cat << 'GH_AW_PROMPT_de9b08ad203ed7a9_EOF' - GH_AW_PROMPT_e3ce61374f2bfadd_EOF + GH_AW_PROMPT_de9b08ad203ed7a9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e3ce61374f2bfadd_EOF' + cat << 'GH_AW_PROMPT_de9b08ad203ed7a9_EOF' Tools: update_release, missing_tool, missing_data, noop - GH_AW_PROMPT_e3ce61374f2bfadd_EOF + GH_AW_PROMPT_de9b08ad203ed7a9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e3ce61374f2bfadd_EOF' + cat << 'GH_AW_PROMPT_de9b08ad203ed7a9_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -317,15 +331,15 @@ jobs: {{/if}} - GH_AW_PROMPT_e3ce61374f2bfadd_EOF + GH_AW_PROMPT_de9b08ad203ed7a9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e3ce61374f2bfadd_EOF' + cat << 'GH_AW_PROMPT_de9b08ad203ed7a9_EOF' {{#runtime-import .github/workflows/shared/community-attribution.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/release.md}} - GH_AW_PROMPT_e3ce61374f2bfadd_EOF + GH_AW_PROMPT_de9b08ad203ed7a9_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -423,6 +437,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: release outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -559,9 +574,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_be58f20512772ac7_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0f4d9ec5e0fbe39d_EOF' {"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_release":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_be58f20512772ac7_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_0f4d9ec5e0fbe39d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -721,7 +736,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -783,7 +798,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1089,6 +1104,8 @@ jobs: group: "gh-aw-conclusion-release" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1704,6 +1721,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -2003,6 +2022,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "๐Ÿš€" GH_AW_WORKFLOW_ID: "release" GH_AW_WORKFLOW_NAME: "Release" diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index 4ce734b440e..3c6884bbece 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -262,21 +276,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_bbd0cd310eafce8a_EOF' + cat << 'GH_AW_PROMPT_36afddcedaf39580_EOF' - GH_AW_PROMPT_bbd0cd310eafce8a_EOF + GH_AW_PROMPT_36afddcedaf39580_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt_multi.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_bbd0cd310eafce8a_EOF' + cat << 'GH_AW_PROMPT_36afddcedaf39580_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_bbd0cd310eafce8a_EOF + GH_AW_PROMPT_36afddcedaf39580_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_bbd0cd310eafce8a_EOF' + cat << 'GH_AW_PROMPT_36afddcedaf39580_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -305,15 +319,15 @@ jobs: {{/if}} - GH_AW_PROMPT_bbd0cd310eafce8a_EOF + GH_AW_PROMPT_36afddcedaf39580_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_bbd0cd310eafce8a_EOF' + cat << 'GH_AW_PROMPT_36afddcedaf39580_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/repo-audit-analyzer.md}} - GH_AW_PROMPT_bbd0cd310eafce8a_EOF + GH_AW_PROMPT_36afddcedaf39580_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -415,6 +429,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: repoauditanalyzer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -558,9 +573,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_098b9ee60a7cfdab_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_44efcb4e37af14d9_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[repo-audit] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_098b9ee60a7cfdab_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_44efcb4e37af14d9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -721,7 +736,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -783,7 +798,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1085,6 +1100,8 @@ jobs: group: "gh-aw-conclusion-repo-audit-analyzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1335,6 +1352,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1601,6 +1620,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "repo-audit-analyzer" @@ -1697,6 +1717,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: repoauditanalyzer steps: - name: Checkout actions folder diff --git a/.github/workflows/repo-tree-map.lock.yml b/.github/workflows/repo-tree-map.lock.yml index 90fb6206387..133995bca4c 100644 --- a/.github/workflows/repo-tree-map.lock.yml +++ b/.github/workflows/repo-tree-map.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,20 +271,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_c7b454877b0a4fe1_EOF' + cat << 'GH_AW_PROMPT_de71f8debb6e7d91_EOF' - GH_AW_PROMPT_c7b454877b0a4fe1_EOF + GH_AW_PROMPT_de71f8debb6e7d91_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_c7b454877b0a4fe1_EOF' + cat << 'GH_AW_PROMPT_de71f8debb6e7d91_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_c7b454877b0a4fe1_EOF + GH_AW_PROMPT_de71f8debb6e7d91_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_c7b454877b0a4fe1_EOF' + cat << 'GH_AW_PROMPT_de71f8debb6e7d91_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,15 +313,15 @@ jobs: {{/if}} - GH_AW_PROMPT_c7b454877b0a4fe1_EOF + GH_AW_PROMPT_de71f8debb6e7d91_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_c7b454877b0a4fe1_EOF' + cat << 'GH_AW_PROMPT_de71f8debb6e7d91_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/repo-tree-map.md}} - GH_AW_PROMPT_c7b454877b0a4fe1_EOF + GH_AW_PROMPT_de71f8debb6e7d91_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -402,6 +416,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: repotreemap outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -526,9 +541,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_83f61056d39e8890_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6f98b47aef6aafdb_EOF' {"create_discussion":{"category":"dev","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_83f61056d39e8890_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_6f98b47aef6aafdb_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -689,7 +704,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -751,7 +766,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1034,6 +1049,8 @@ jobs: group: "gh-aw-conclusion-repo-tree-map" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1279,6 +1296,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1545,6 +1564,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐ŸŒณ" GH_AW_WORKFLOW_ID: "repo-tree-map" diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index 193e86dac5f..df34eaec475 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -103,6 +103,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -250,6 +251,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -266,21 +280,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_0193440be9ac870c_EOF' + cat << 'GH_AW_PROMPT_c07e3c9884a76c5e_EOF' - GH_AW_PROMPT_0193440be9ac870c_EOF + GH_AW_PROMPT_c07e3c9884a76c5e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt_multi.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_0193440be9ac870c_EOF' + cat << 'GH_AW_PROMPT_c07e3c9884a76c5e_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_0193440be9ac870c_EOF + GH_AW_PROMPT_c07e3c9884a76c5e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_0193440be9ac870c_EOF' + cat << 'GH_AW_PROMPT_c07e3c9884a76c5e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -309,16 +323,16 @@ jobs: {{/if}} - GH_AW_PROMPT_0193440be9ac870c_EOF + GH_AW_PROMPT_c07e3c9884a76c5e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_0193440be9ac870c_EOF' + cat << 'GH_AW_PROMPT_c07e3c9884a76c5e_EOF' {{#runtime-import .github/workflows/shared/repository-quality-report-template.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/repository-quality-improver.md}} - GH_AW_PROMPT_0193440be9ac870c_EOF + GH_AW_PROMPT_c07e3c9884a76c5e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -421,6 +435,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: repositoryqualityimprover outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -567,9 +582,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_42e58ac55e79b2e9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_39b2b18cd0030bbf_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[repository-quality] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_42e58ac55e79b2e9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_39b2b18cd0030bbf_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -727,7 +742,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -773,7 +788,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1088,6 +1103,8 @@ jobs: group: "gh-aw-conclusion-repository-quality-improver" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1336,6 +1353,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1602,6 +1621,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โšก" GH_AW_WORKFLOW_ID: "repository-quality-improver" @@ -1698,6 +1718,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: repositoryqualityimprover steps: - name: Checkout actions folder diff --git a/.github/workflows/research.lock.yml b/.github/workflows/research.lock.yml index e30e366ecdc..34245ff4ca2 100644 --- a/.github/workflows/research.lock.yml +++ b/.github/workflows/research.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -261,20 +275,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_4ebd695e961c6232_EOF' + cat << 'GH_AW_PROMPT_23c2dcfae81c4ba9_EOF' - GH_AW_PROMPT_4ebd695e961c6232_EOF + GH_AW_PROMPT_23c2dcfae81c4ba9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_4ebd695e961c6232_EOF' + cat << 'GH_AW_PROMPT_23c2dcfae81c4ba9_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_4ebd695e961c6232_EOF + GH_AW_PROMPT_23c2dcfae81c4ba9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_4ebd695e961c6232_EOF' + cat << 'GH_AW_PROMPT_23c2dcfae81c4ba9_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,16 +317,16 @@ jobs: {{/if}} - GH_AW_PROMPT_4ebd695e961c6232_EOF + GH_AW_PROMPT_23c2dcfae81c4ba9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_4ebd695e961c6232_EOF' + cat << 'GH_AW_PROMPT_23c2dcfae81c4ba9_EOF' {{#runtime-import .github/workflows/shared/mcp/tavily.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/research.md}} - GH_AW_PROMPT_4ebd695e961c6232_EOF + GH_AW_PROMPT_23c2dcfae81c4ba9_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -409,6 +423,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: research outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -533,9 +548,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f85925dee86bf639_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_06722461b8eef9f8_EOF' {"create_discussion":{"category":"research","expires":24,"fallback_to_issue":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_f85925dee86bf639_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_06722461b8eef9f8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -697,7 +712,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_db9aa64e6757f77f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_9f0a76cf7411bcf0_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -779,7 +794,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_db9aa64e6757f77f_EOF + GH_AW_MCP_CONFIG_9f0a76cf7411bcf0_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1064,6 +1079,8 @@ jobs: group: "gh-aw-conclusion-research" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1309,6 +1326,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1575,6 +1594,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ฌ" GH_AW_WORKFLOW_ID: "research" diff --git a/.github/workflows/ruflo-backed-task.lock.yml b/.github/workflows/ruflo-backed-task.lock.yml index a0cfcecfdc5..1604225726d 100644 --- a/.github/workflows/ruflo-backed-task.lock.yml +++ b/.github/workflows/ruflo-backed-task.lock.yml @@ -85,6 +85,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -273,6 +274,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -292,23 +306,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6eff129e619b0cbc_EOF' + cat << 'GH_AW_PROMPT_5f87ed35d3e573f7_EOF' - GH_AW_PROMPT_6eff129e619b0cbc_EOF + GH_AW_PROMPT_5f87ed35d3e573f7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6eff129e619b0cbc_EOF' + cat << 'GH_AW_PROMPT_5f87ed35d3e573f7_EOF' Tools: add_comment(max:2), create_issue, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_6eff129e619b0cbc_EOF + GH_AW_PROMPT_5f87ed35d3e573f7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_6eff129e619b0cbc_EOF' + cat << 'GH_AW_PROMPT_5f87ed35d3e573f7_EOF' - GH_AW_PROMPT_6eff129e619b0cbc_EOF + GH_AW_PROMPT_5f87ed35d3e573f7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6eff129e619b0cbc_EOF' + cat << 'GH_AW_PROMPT_5f87ed35d3e573f7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -337,17 +351,17 @@ jobs: {{/if}} - GH_AW_PROMPT_6eff129e619b0cbc_EOF + GH_AW_PROMPT_5f87ed35d3e573f7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_6eff129e619b0cbc_EOF' + cat << 'GH_AW_PROMPT_5f87ed35d3e573f7_EOF' {{#runtime-import .github/workflows/shared/mcp/ruflo.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/ruflo-backed-task.md}} - GH_AW_PROMPT_6eff129e619b0cbc_EOF + GH_AW_PROMPT_5f87ed35d3e573f7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -453,6 +467,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: ruflobackedtask outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -583,9 +598,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_891833aa41c52185_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_113680cc143c4ee2_EOF' {"add_comment":{"max":2},"create_issue":{"labels":["automation"],"max":1},"create_pull_request":{"draft":false,"expires":48,"if_no_changes":"ignore","labels":["automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[ruflo] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_891833aa41c52185_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_113680cc143c4ee2_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -817,7 +832,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_01cf341e29ee2bee_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_a2f33806d550301a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "ruflo": { @@ -887,7 +902,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_01cf341e29ee2bee_EOF + GH_AW_MCP_CONFIG_a2f33806d550301a_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1243,6 +1258,8 @@ jobs: group: "gh-aw-conclusion-ruflo-backed-task" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1510,6 +1527,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1760,6 +1779,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1834,6 +1855,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐ŸŒŠ *Ruflo-backed run by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐ŸŒŠ [{workflow_name}]({run_url}) is coordinating this task with Ruflo...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed the Ruflo-backed task.\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status} while coordinating the Ruflo-backed task.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_ID: "ruflo-backed-task" diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 64520ea4124..4e581abbeba 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -264,21 +278,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_08840c1426d47411_EOF' + cat << 'GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF' - GH_AW_PROMPT_08840c1426d47411_EOF + GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_08840c1426d47411_EOF' + cat << 'GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_08840c1426d47411_EOF + GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_08840c1426d47411_EOF' + cat << 'GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -307,9 +321,9 @@ jobs: {{/if}} - GH_AW_PROMPT_08840c1426d47411_EOF + GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_08840c1426d47411_EOF' + cat << 'GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF' {{#runtime-import .github/workflows/shared/aw-logs-24h-fetch.md}} {{#runtime-import .github/skills/jqschema/SKILL.md}} @@ -317,7 +331,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/safe-output-health.md}} - GH_AW_PROMPT_08840c1426d47411_EOF + GH_AW_PROMPT_efebf8b6ff4e9c3d_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: safeoutputhealth outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -632,9 +647,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6653640fa399a8f7_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a2d8d398c77aff21_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[safe-output-health] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_6653640fa399a8f7_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a2d8d398c77aff21_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -794,7 +809,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_fef2217f28f28334_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_467ea9a369748bce_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -872,7 +887,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_fef2217f28f28334_EOF + GH_AW_MCP_CONFIG_467ea9a369748bce_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1260,6 +1275,8 @@ jobs: group: "gh-aw-conclusion-safe-output-health" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1508,6 +1525,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1777,6 +1796,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" GH_AW_WORKFLOW_ID: "safe-output-health" @@ -1873,6 +1893,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: safeoutputhealth steps: - name: Checkout actions folder diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 85bd053dbd5..0c7a9d4d1f3 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,21 +274,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_142ad24cb6754e01_EOF' + cat << 'GH_AW_PROMPT_93a93ae6ba1ceb61_EOF' - GH_AW_PROMPT_142ad24cb6754e01_EOF + GH_AW_PROMPT_93a93ae6ba1ceb61_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_142ad24cb6754e01_EOF' + cat << 'GH_AW_PROMPT_93a93ae6ba1ceb61_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_142ad24cb6754e01_EOF + GH_AW_PROMPT_93a93ae6ba1ceb61_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_142ad24cb6754e01_EOF' + cat << 'GH_AW_PROMPT_93a93ae6ba1ceb61_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -316,15 +330,15 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_142ad24cb6754e01_EOF + GH_AW_PROMPT_93a93ae6ba1ceb61_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_142ad24cb6754e01_EOF' + cat << 'GH_AW_PROMPT_93a93ae6ba1ceb61_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/schema-consistency-checker.md}} - GH_AW_PROMPT_142ad24cb6754e01_EOF + GH_AW_PROMPT_93a93ae6ba1ceb61_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -426,6 +440,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: schemaconsistencychecker outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -571,9 +586,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ceaafb9b249ffd5b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_23873cf882ec1120_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[Schema Consistency] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_ceaafb9b249ffd5b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_23873cf882ec1120_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -730,7 +745,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -775,7 +790,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1061,6 +1076,8 @@ jobs: group: "gh-aw-conclusion-schema-consistency-checker" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1304,6 +1321,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1550,6 +1569,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โœ…" GH_AW_WORKFLOW_ID: "schema-consistency-checker" @@ -1646,6 +1666,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: schemaconsistencychecker steps: - name: Checkout actions folder diff --git a/.github/workflows/schema-feature-coverage.lock.yml b/.github/workflows/schema-feature-coverage.lock.yml index ff5f07e8f78..614083fe10c 100644 --- a/.github/workflows/schema-feature-coverage.lock.yml +++ b/.github/workflows/schema-feature-coverage.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,23 +273,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ba505b563202ab5a_EOF' + cat << 'GH_AW_PROMPT_7a09c237282e717b_EOF' - GH_AW_PROMPT_ba505b563202ab5a_EOF + GH_AW_PROMPT_7a09c237282e717b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ba505b563202ab5a_EOF' + cat << 'GH_AW_PROMPT_7a09c237282e717b_EOF' Tools: create_pull_request(max:10), missing_tool, missing_data, noop - GH_AW_PROMPT_ba505b563202ab5a_EOF + GH_AW_PROMPT_7a09c237282e717b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_ba505b563202ab5a_EOF' + cat << 'GH_AW_PROMPT_7a09c237282e717b_EOF' - GH_AW_PROMPT_ba505b563202ab5a_EOF + GH_AW_PROMPT_7a09c237282e717b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ba505b563202ab5a_EOF' + cat << 'GH_AW_PROMPT_7a09c237282e717b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -317,13 +331,13 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_ba505b563202ab5a_EOF + GH_AW_PROMPT_7a09c237282e717b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ba505b563202ab5a_EOF' + cat << 'GH_AW_PROMPT_7a09c237282e717b_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/schema-feature-coverage.md}} - GH_AW_PROMPT_ba505b563202ab5a_EOF + GH_AW_PROMPT_7a09c237282e717b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -421,6 +435,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: schemafeaturecoverage outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -549,9 +564,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b46c8e6a9b623241_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_767240d1ae61390e_EOF' {"create_pull_request":{"expires":168,"labels":["automation","schema-coverage"],"max":10,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[schema-coverage] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b46c8e6a9b623241_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_767240d1ae61390e_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -725,7 +740,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_c4c97eba084a846c_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_613eb7e4de2827ce_EOF [history] persistence = "none" @@ -752,11 +767,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_c4c97eba084a846c_EOF + GH_AW_MCP_CONFIG_613eb7e4de2827ce_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_50b3e1addba0a499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_6cf3eed4b8fbf222_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -816,11 +831,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_50b3e1addba0a499_EOF + GH_AW_MCP_CONFIG_6cf3eed4b8fbf222_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF model_provider = "openai-proxy" @@ -832,7 +847,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_PERSONAL_ACCESS_TOKEN$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1105,6 +1120,8 @@ jobs: group: "gh-aw-conclusion-schema-feature-coverage" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1350,6 +1367,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1499,18 +1518,18 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF [history] persistence = "none" [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_MCP_CONFIG_9dc1744e356f5fbe_EOF + GH_AW_MCP_CONFIG_2f5d9885311152cf_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_37834a58b4c29838_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { }, @@ -1521,11 +1540,11 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_37834a58b4c29838_EOF + GH_AW_MCP_CONFIG_b9b3d113c1a9458e_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF model_provider = "openai-proxy" [model_providers.openai-proxy] name = "OpenAI AWF proxy" @@ -1535,7 +1554,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_cb4a4f0f8e96eaf4_EOF + GH_AW_CODEX_SHELL_POLICY_f48e0018706875a8_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1676,6 +1695,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "schema-feature-coverage" diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 78ce0b10d09..9543558c3cf 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -119,6 +119,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -310,6 +311,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -331,21 +345,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b3ca2dff04f37224_EOF' + cat << 'GH_AW_PROMPT_3dbb920c6b3da8d4_EOF' - GH_AW_PROMPT_b3ca2dff04f37224_EOF + GH_AW_PROMPT_3dbb920c6b3da8d4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b3ca2dff04f37224_EOF' + cat << 'GH_AW_PROMPT_3dbb920c6b3da8d4_EOF' Tools: add_comment, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_b3ca2dff04f37224_EOF + GH_AW_PROMPT_3dbb920c6b3da8d4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b3ca2dff04f37224_EOF' + cat << 'GH_AW_PROMPT_3dbb920c6b3da8d4_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -374,12 +388,12 @@ jobs: {{/if}} - GH_AW_PROMPT_b3ca2dff04f37224_EOF + GH_AW_PROMPT_3dbb920c6b3da8d4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_b3ca2dff04f37224_EOF' + cat << 'GH_AW_PROMPT_3dbb920c6b3da8d4_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/mcp/arxiv.md}} @@ -390,7 +404,7 @@ jobs: {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/scout.md}} - GH_AW_PROMPT_b3ca2dff04f37224_EOF + GH_AW_PROMPT_3dbb920c6b3da8d4_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -508,6 +522,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: scout outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -650,9 +665,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_014206a16e65cb25_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a401066a08496125_EOF' {"add_comment":{"max":1},"add_labels":{"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_014206a16e65cb25_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a401066a08496125_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -825,7 +840,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e TAVILY_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_79a8a6113a5e4229_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_d7a387caeb962bf8_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "arxiv": { @@ -950,7 +965,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_79a8a6113a5e4229_EOF + GH_AW_MCP_CONFIG_d7a387caeb962bf8_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1342,6 +1357,8 @@ jobs: group: "gh-aw-conclusion-scout" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1610,6 +1627,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1860,6 +1879,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1934,6 +1955,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”ญ *Intelligence gathered by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ•๏ธ Scout on patrol! [{workflow_name}]({run_url}) is blazing trails through this {event_type}...\",\"runSuccess\":\"๐Ÿ”ญ Recon complete! [{workflow_name}]({run_url}) has charted the territory. Map ready! ๐Ÿ—บ๏ธ\",\"runFailure\":\"๐Ÿ•๏ธ Lost in the wilderness! [{workflow_name}]({run_url}) {status}. Sending search party...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ญ" @@ -2033,6 +2055,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: scout steps: - name: Checkout actions folder diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index 425d3963276..f0336cfba9d 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -102,6 +102,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -249,6 +250,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -269,21 +283,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b195fc0f0262c61a_EOF' + cat << 'GH_AW_PROMPT_84af2d4e0c4c2292_EOF' - GH_AW_PROMPT_b195fc0f0262c61a_EOF + GH_AW_PROMPT_84af2d4e0c4c2292_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b195fc0f0262c61a_EOF' + cat << 'GH_AW_PROMPT_84af2d4e0c4c2292_EOF' Tools: create_issue(max:100), missing_tool, missing_data, noop - GH_AW_PROMPT_b195fc0f0262c61a_EOF + GH_AW_PROMPT_84af2d4e0c4c2292_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b195fc0f0262c61a_EOF' + cat << 'GH_AW_PROMPT_84af2d4e0c4c2292_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -312,14 +326,14 @@ jobs: {{/if}} - GH_AW_PROMPT_b195fc0f0262c61a_EOF + GH_AW_PROMPT_84af2d4e0c4c2292_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_b195fc0f0262c61a_EOF' + cat << 'GH_AW_PROMPT_84af2d4e0c4c2292_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/security-compliance.md}} - GH_AW_PROMPT_b195fc0f0262c61a_EOF + GH_AW_PROMPT_84af2d4e0c4c2292_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -432,6 +446,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: securitycompliance outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -566,9 +581,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_712393fddcbe3594_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cfb966ea07073246_EOF' {"create_issue":{"expires":48,"group":true,"labels":["security","campaign-tracker","cookie"],"max":100},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_712393fddcbe3594_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cfb966ea07073246_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -736,7 +751,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -782,7 +797,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1093,6 +1108,8 @@ jobs: group: "gh-aw-conclusion-security-compliance" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1340,6 +1357,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1596,6 +1615,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/campaigns" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1695,6 +1716,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" GH_AW_WORKFLOW_ID: "security-compliance" diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index 5eca5ee92af..8ff79717d31 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -99,6 +99,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -284,6 +285,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -303,20 +317,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_54280fece80bcfcc_EOF' + cat << 'GH_AW_PROMPT_9ca239661740a307_EOF' - GH_AW_PROMPT_54280fece80bcfcc_EOF + GH_AW_PROMPT_9ca239661740a307_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_54280fece80bcfcc_EOF' + cat << 'GH_AW_PROMPT_9ca239661740a307_EOF' Tools: create_pull_request_review_comment(max:10), submit_pull_request_review, create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_54280fece80bcfcc_EOF + GH_AW_PROMPT_9ca239661740a307_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_54280fece80bcfcc_EOF' + cat << 'GH_AW_PROMPT_9ca239661740a307_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -345,12 +359,12 @@ jobs: {{/if}} - GH_AW_PROMPT_54280fece80bcfcc_EOF + GH_AW_PROMPT_9ca239661740a307_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_54280fece80bcfcc_EOF' + cat << 'GH_AW_PROMPT_9ca239661740a307_EOF' {{#runtime-import .github/workflows/shared/security-analysis-base.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -358,7 +372,7 @@ jobs: {{#runtime-import .github/workflows/shared/pr-code-review-config.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/security-review.md}} - GH_AW_PROMPT_54280fece80bcfcc_EOF + GH_AW_PROMPT_9ca239661740a307_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -467,6 +481,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: securityreview outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -651,9 +666,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c9435ed05ad4a65f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6c85fb785cea0a84_EOF' {"create_check_run":{"max":1},"create_pull_request_review_comment":{"max":10,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_c9435ed05ad4a65f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_6c85fb785cea0a84_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -849,7 +864,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_44d91c55e3e1a6d5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_d451a4658ddf6a65_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -933,7 +948,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_44d91c55e3e1a6d5_EOF + GH_AW_MCP_CONFIG_d451a4658ddf6a65_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1219,6 +1234,8 @@ jobs: group: "gh-aw-conclusion-security-review" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1484,6 +1501,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1731,6 +1750,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1806,6 +1827,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”’ *Security review by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) is analyzing this {event_type} for security implications...\",\"runSuccess\":\"๐Ÿ”’ [{workflow_name}]({run_url}) completed the security review.\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status} during security review.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" diff --git a/.github/workflows/semantic-function-refactor.lock.yml b/.github/workflows/semantic-function-refactor.lock.yml index 41d4c75f931..ceb87221f9b 100644 --- a/.github/workflows/semantic-function-refactor.lock.yml +++ b/.github/workflows/semantic-function-refactor.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -246,6 +247,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -262,20 +276,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_c580de9f20f4f701_EOF' + cat << 'GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF' - GH_AW_PROMPT_c580de9f20f4f701_EOF + GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_c580de9f20f4f701_EOF' + cat << 'GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF' Tools: create_issue, close_issue(max:10), missing_tool, missing_data, noop - GH_AW_PROMPT_c580de9f20f4f701_EOF + GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_c580de9f20f4f701_EOF' + cat << 'GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -304,9 +318,9 @@ jobs: {{/if}} - GH_AW_PROMPT_c580de9f20f4f701_EOF + GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_c580de9f20f4f701_EOF' + cat << 'GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF' {{#runtime-import .github/workflows/shared/go-source-analysis.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -317,7 +331,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/semantic-function-refactor.md}} - GH_AW_PROMPT_c580de9f20f4f701_EOF + GH_AW_PROMPT_98ff3cd53aaf5dc8_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -414,6 +428,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: semanticfunctionrefactor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -541,9 +556,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0128ad199182e463_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_938c2b7c9db9a625_EOF' {"close_issue":{"max":10,"required_title_prefix":"[refactor] ","target":"*"},"create_issue":{"expires":48,"labels":["refactoring","code-quality","automated-analysis","cookie"],"max":1,"title_prefix":"[refactor] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_0128ad199182e463_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_938c2b7c9db9a625_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -728,7 +743,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_77337373ac920130_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -799,7 +814,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_77337373ac920130_EOF + GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1179,6 +1194,8 @@ jobs: group: "gh-aw-conclusion-semantic-function-refactor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1422,6 +1439,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1690,6 +1709,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "semantic-function-refactor" diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index 95981de06f5..f1c4c87f6be 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -264,21 +278,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_476e0e41b61c1784_EOF' + cat << 'GH_AW_PROMPT_ce3bf5db9fbb496f_EOF' - GH_AW_PROMPT_476e0e41b61c1784_EOF + GH_AW_PROMPT_ce3bf5db9fbb496f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_476e0e41b61c1784_EOF' + cat << 'GH_AW_PROMPT_ce3bf5db9fbb496f_EOF' Tools: create_issue(max:3), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_476e0e41b61c1784_EOF + GH_AW_PROMPT_ce3bf5db9fbb496f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_476e0e41b61c1784_EOF' + cat << 'GH_AW_PROMPT_ce3bf5db9fbb496f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -307,9 +321,9 @@ jobs: {{/if}} - GH_AW_PROMPT_476e0e41b61c1784_EOF + GH_AW_PROMPT_ce3bf5db9fbb496f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_476e0e41b61c1784_EOF' + cat << 'GH_AW_PROMPT_ce3bf5db9fbb496f_EOF' {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -319,7 +333,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/sergo.md}} - GH_AW_PROMPT_476e0e41b61c1784_EOF + GH_AW_PROMPT_ce3bf5db9fbb496f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -430,6 +444,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: sergo outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -567,9 +582,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2624c16c4990b6a2_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_47323e9bd9afa6db_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[sergo] "},"create_issue":{"expires":168,"labels":["sergo","cookie"],"max":3},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_2624c16c4990b6a2_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_47323e9bd9afa6db_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -764,7 +779,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_77337373ac920130_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -835,7 +850,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_77337373ac920130_EOF + GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1229,6 +1244,8 @@ jobs: group: "gh-aw-conclusion-sergo" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1483,6 +1500,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1743,6 +1762,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/sergo" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1842,6 +1863,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "sergo-daily" GH_AW_WORKFLOW_EMOJI: "๐Ÿค–" diff --git a/.github/workflows/skillet.lock.yml b/.github/workflows/skillet.lock.yml index b227d61f6b7..1e31003aca9 100644 --- a/.github/workflows/skillet.lock.yml +++ b/.github/workflows/skillet.lock.yml @@ -103,6 +103,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -288,6 +289,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -310,20 +324,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e9091531c3fdfd79_EOF' + cat << 'GH_AW_PROMPT_b2a1f30a9a4a2489_EOF' - GH_AW_PROMPT_e9091531c3fdfd79_EOF + GH_AW_PROMPT_b2a1f30a9a4a2489_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e9091531c3fdfd79_EOF' + cat << 'GH_AW_PROMPT_b2a1f30a9a4a2489_EOF' Tools: create_pull_request_review_comment(max:10), submit_pull_request_review, create_check_run, missing_tool, missing_data, noop - GH_AW_PROMPT_e9091531c3fdfd79_EOF + GH_AW_PROMPT_b2a1f30a9a4a2489_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e9091531c3fdfd79_EOF' + cat << 'GH_AW_PROMPT_b2a1f30a9a4a2489_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -352,19 +366,19 @@ jobs: {{/if}} - GH_AW_PROMPT_e9091531c3fdfd79_EOF + GH_AW_PROMPT_b2a1f30a9a4a2489_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_e9091531c3fdfd79_EOF' + cat << 'GH_AW_PROMPT_b2a1f30a9a4a2489_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/pr-code-review-config.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/skillet.md}} - GH_AW_PROMPT_e9091531c3fdfd79_EOF + GH_AW_PROMPT_b2a1f30a9a4a2489_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -480,6 +494,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: skillet outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -602,9 +617,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c9435ed05ad4a65f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_6c85fb785cea0a84_EOF' {"create_check_run":{"max":1},"create_pull_request_review_comment":{"max":10,"side":"RIGHT"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_c9435ed05ad4a65f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_6c85fb785cea0a84_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -799,7 +814,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -845,7 +860,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1144,6 +1159,8 @@ jobs: group: "gh-aw-conclusion-skillet" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1409,6 +1426,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1658,6 +1677,8 @@ jobs: contents: read issues: write pull-requests: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} available_skills: ${{ steps.match_skill.outputs.available_skills }} @@ -1854,6 +1875,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿณ *Reviewed by [{workflow_name}]({run_url}) with `/${{ needs.pre_activation.outputs.skill_name }}`*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿณ [{workflow_name}]({run_url}) is loading `/${{ needs.pre_activation.outputs.skill_name }}` for this {event_type}...\",\"runSuccess\":\"๐Ÿณ [{workflow_name}]({run_url}) completed the skill-guided review.\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status} during the skill-guided review.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿณ" diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index 52fe84472b3..e97f4483466 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -104,6 +104,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -253,6 +254,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -271,25 +285,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF' + cat << 'GH_AW_PROMPT_dee49537c99974f0_EOF' - GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF + GH_AW_PROMPT_dee49537c99974f0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF' + cat << 'GH_AW_PROMPT_dee49537c99974f0_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF + GH_AW_PROMPT_dee49537c99974f0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF' + cat << 'GH_AW_PROMPT_dee49537c99974f0_EOF' - GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF + GH_AW_PROMPT_dee49537c99974f0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF' + cat << 'GH_AW_PROMPT_dee49537c99974f0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -318,15 +332,15 @@ jobs: {{/if}} - GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF + GH_AW_PROMPT_dee49537c99974f0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF' + cat << 'GH_AW_PROMPT_dee49537c99974f0_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/slide-deck-maintainer.md}} - GH_AW_PROMPT_41b6c51d0b1c5a0b_EOF + GH_AW_PROMPT_dee49537c99974f0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -438,6 +452,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: slidedeckmaintainer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -601,9 +616,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_17653c069a216028_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_dabb887762084163_EOF' {"create_pull_request":{"expires":24,"labels":["automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[slides] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_17653c069a216028_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_dabb887762084163_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -778,7 +793,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -840,7 +855,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1185,6 +1200,8 @@ jobs: group: "gh-aw-conclusion-slide-deck-maintainer-${{ inputs.focus || github.run_id }}" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1438,6 +1455,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1684,6 +1703,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1760,6 +1781,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "slide-deck-maintainer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" @@ -1888,6 +1910,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: slidedeckmaintainer steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-agent-all-merged.lock.yml b/.github/workflows/smoke-agent-all-merged.lock.yml index 7a55554b512..482b0178c57 100644 --- a/.github/workflows/smoke-agent-all-merged.lock.yml +++ b/.github/workflows/smoke-agent-all-merged.lock.yml @@ -100,6 +100,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -291,6 +292,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -308,20 +322,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b3085da9718be51a_EOF' + cat << 'GH_AW_PROMPT_0cd25df212aaa70b_EOF' - GH_AW_PROMPT_b3085da9718be51a_EOF + GH_AW_PROMPT_0cd25df212aaa70b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b3085da9718be51a_EOF' + cat << 'GH_AW_PROMPT_0cd25df212aaa70b_EOF' Tools: add_comment(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_b3085da9718be51a_EOF + GH_AW_PROMPT_0cd25df212aaa70b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b3085da9718be51a_EOF' + cat << 'GH_AW_PROMPT_0cd25df212aaa70b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -350,16 +364,16 @@ jobs: {{/if}} - GH_AW_PROMPT_b3085da9718be51a_EOF + GH_AW_PROMPT_0cd25df212aaa70b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_b3085da9718be51a_EOF' + cat << 'GH_AW_PROMPT_0cd25df212aaa70b_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-agent-all-merged.md}} - GH_AW_PROMPT_b3085da9718be51a_EOF + GH_AW_PROMPT_0cd25df212aaa70b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -458,6 +472,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeagentallmerged outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -582,9 +597,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -736,7 +751,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_b5d9bd42e96535f1_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_229a509df89fc495_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -799,7 +814,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_b5d9bd42e96535f1_EOF + GH_AW_MCP_CONFIG_229a509df89fc495_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1145,6 +1160,8 @@ jobs: group: "gh-aw-conclusion-smoke-agent-all-merged" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1410,6 +1427,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1629,6 +1648,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1703,6 +1724,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿค– *Guard policy smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) testing guard policy: `repos=all, min-integrity=merged`...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed guard policy test.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-agent-all-none.lock.yml b/.github/workflows/smoke-agent-all-none.lock.yml index d473794a621..5af60842730 100644 --- a/.github/workflows/smoke-agent-all-none.lock.yml +++ b/.github/workflows/smoke-agent-all-none.lock.yml @@ -100,6 +100,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -291,6 +292,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -308,20 +322,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d1895e37dab0a6c7_EOF' + cat << 'GH_AW_PROMPT_aa9665c50c7b4431_EOF' - GH_AW_PROMPT_d1895e37dab0a6c7_EOF + GH_AW_PROMPT_aa9665c50c7b4431_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d1895e37dab0a6c7_EOF' + cat << 'GH_AW_PROMPT_aa9665c50c7b4431_EOF' Tools: add_comment(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_d1895e37dab0a6c7_EOF + GH_AW_PROMPT_aa9665c50c7b4431_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d1895e37dab0a6c7_EOF' + cat << 'GH_AW_PROMPT_aa9665c50c7b4431_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -350,16 +364,16 @@ jobs: {{/if}} - GH_AW_PROMPT_d1895e37dab0a6c7_EOF + GH_AW_PROMPT_aa9665c50c7b4431_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_d1895e37dab0a6c7_EOF' + cat << 'GH_AW_PROMPT_aa9665c50c7b4431_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-agent-all-none.md}} - GH_AW_PROMPT_d1895e37dab0a6c7_EOF + GH_AW_PROMPT_aa9665c50c7b4431_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -458,6 +472,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeagentallnone outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -582,9 +597,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -736,7 +751,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_242085c2b2e7f489_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_0b07ea5f3463e363_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -799,7 +814,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_242085c2b2e7f489_EOF + GH_AW_MCP_CONFIG_0b07ea5f3463e363_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1145,6 +1160,8 @@ jobs: group: "gh-aw-conclusion-smoke-agent-all-none" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1410,6 +1427,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1629,6 +1648,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1703,6 +1724,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿค– *Guard policy smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) testing guard policy: `repos=all, min-integrity=none`...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed guard policy test.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-agent-public-approved.lock.yml b/.github/workflows/smoke-agent-public-approved.lock.yml index 72c910e24b3..5eafc223135 100644 --- a/.github/workflows/smoke-agent-public-approved.lock.yml +++ b/.github/workflows/smoke-agent-public-approved.lock.yml @@ -102,6 +102,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -293,6 +294,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -310,20 +324,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1326360892280a90_EOF' + cat << 'GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF' - GH_AW_PROMPT_1326360892280a90_EOF + GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1326360892280a90_EOF' + cat << 'GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF' Tools: add_comment(max:2), assign_to_agent, missing_tool, missing_data, noop - GH_AW_PROMPT_1326360892280a90_EOF + GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1326360892280a90_EOF' + cat << 'GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -352,17 +366,17 @@ jobs: {{/if}} - GH_AW_PROMPT_1326360892280a90_EOF + GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_1326360892280a90_EOF' + cat << 'GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-agent-public-approved.md}} - GH_AW_PROMPT_1326360892280a90_EOF + GH_AW_PROMPT_e8ddf5fe5fcb6e36_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -461,6 +475,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeagentpublicapproved outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -586,9 +601,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_18ceb4ddee5fdbf9_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_11240500ab141b38_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"assign_to_agent":{"allowed":["copilot"],"custom-agent":"agentic-workflows","max":1,"target":"*"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_18ceb4ddee5fdbf9_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_11240500ab141b38_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -767,7 +782,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_26e3d3a247a05e39_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_2b9a5a73e56f1dcc_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -830,7 +845,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_26e3d3a247a05e39_EOF + GH_AW_MCP_CONFIG_2b9a5a73e56f1dcc_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1176,6 +1191,8 @@ jobs: group: "gh-aw-conclusion-smoke-agent-public-approved" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1444,6 +1461,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1663,6 +1682,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1737,6 +1758,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿค– *Smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿค– [{workflow_name}]({run_url}) is looking for a Smoke issue to assign...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed. Issue assigned to the agentic-workflows agent.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-agent-public-none.lock.yml b/.github/workflows/smoke-agent-public-none.lock.yml index 93a00e69818..4415fda9551 100644 --- a/.github/workflows/smoke-agent-public-none.lock.yml +++ b/.github/workflows/smoke-agent-public-none.lock.yml @@ -100,6 +100,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -291,6 +292,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -308,20 +322,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_8187a5525a2eaf9b_EOF' + cat << 'GH_AW_PROMPT_8062e7141cd3f37f_EOF' - GH_AW_PROMPT_8187a5525a2eaf9b_EOF + GH_AW_PROMPT_8062e7141cd3f37f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_8187a5525a2eaf9b_EOF' + cat << 'GH_AW_PROMPT_8062e7141cd3f37f_EOF' Tools: add_comment(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_8187a5525a2eaf9b_EOF + GH_AW_PROMPT_8062e7141cd3f37f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_8187a5525a2eaf9b_EOF' + cat << 'GH_AW_PROMPT_8062e7141cd3f37f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -350,16 +364,16 @@ jobs: {{/if}} - GH_AW_PROMPT_8187a5525a2eaf9b_EOF + GH_AW_PROMPT_8062e7141cd3f37f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_8187a5525a2eaf9b_EOF' + cat << 'GH_AW_PROMPT_8062e7141cd3f37f_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-agent-public-none.md}} - GH_AW_PROMPT_8187a5525a2eaf9b_EOF + GH_AW_PROMPT_8062e7141cd3f37f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -458,6 +472,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeagentpublicnone outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -582,9 +597,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -736,7 +751,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d7d81ee33d56f56a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_da0b5d7141d17ff1_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -799,7 +814,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d7d81ee33d56f56a_EOF + GH_AW_MCP_CONFIG_da0b5d7141d17ff1_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1145,6 +1160,8 @@ jobs: group: "gh-aw-conclusion-smoke-agent-public-none" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1410,6 +1427,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1629,6 +1648,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1703,6 +1724,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿค– *Guard policy smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) testing guard policy: `repos=public, min-integrity=none`...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed guard policy test.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-agent-scoped-approved.lock.yml b/.github/workflows/smoke-agent-scoped-approved.lock.yml index 7ee8779c077..ef608fda020 100644 --- a/.github/workflows/smoke-agent-scoped-approved.lock.yml +++ b/.github/workflows/smoke-agent-scoped-approved.lock.yml @@ -101,6 +101,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -292,6 +293,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -309,20 +323,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9dcba906af9fef68_EOF' + cat << 'GH_AW_PROMPT_5bca9537055d4218_EOF' - GH_AW_PROMPT_9dcba906af9fef68_EOF + GH_AW_PROMPT_5bca9537055d4218_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9dcba906af9fef68_EOF' + cat << 'GH_AW_PROMPT_5bca9537055d4218_EOF' Tools: add_comment(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_9dcba906af9fef68_EOF + GH_AW_PROMPT_5bca9537055d4218_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9dcba906af9fef68_EOF' + cat << 'GH_AW_PROMPT_5bca9537055d4218_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -351,17 +365,17 @@ jobs: {{/if}} - GH_AW_PROMPT_9dcba906af9fef68_EOF + GH_AW_PROMPT_5bca9537055d4218_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_9dcba906af9fef68_EOF' + cat << 'GH_AW_PROMPT_5bca9537055d4218_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-agent-scoped-approved.md}} - GH_AW_PROMPT_9dcba906af9fef68_EOF + GH_AW_PROMPT_5bca9537055d4218_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -460,6 +474,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeagentscopedapproved outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -585,9 +600,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -739,7 +754,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_bda0ddd6c64ce97a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_9dbe08a44c610dca_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -806,7 +821,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_bda0ddd6c64ce97a_EOF + GH_AW_MCP_CONFIG_9dbe08a44c610dca_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1152,6 +1167,8 @@ jobs: group: "gh-aw-conclusion-smoke-agent-scoped-approved" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1417,6 +1434,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1636,6 +1655,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1710,6 +1731,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿค– *Guard policy smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) testing guard policy: `repos=[github/gh-aw, github/*], min-integrity=approved`...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed guard policy test.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status}. Check the logs for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-antigravity.lock.yml b/.github/workflows/smoke-antigravity.lock.yml index 7933cca990a..ec314fc4699 100644 --- a/.github/workflows/smoke-antigravity.lock.yml +++ b/.github/workflows/smoke-antigravity.lock.yml @@ -104,6 +104,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -295,6 +296,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -348,21 +362,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_354354e1fe11886e_EOF' + cat << 'GH_AW_PROMPT_2d8c2817504948cf_EOF' - GH_AW_PROMPT_354354e1fe11886e_EOF + GH_AW_PROMPT_2d8c2817504948cf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_354354e1fe11886e_EOF' + cat << 'GH_AW_PROMPT_2d8c2817504948cf_EOF' Tools: add_comment(max:2), create_issue, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_354354e1fe11886e_EOF + GH_AW_PROMPT_2d8c2817504948cf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_354354e1fe11886e_EOF' + cat << 'GH_AW_PROMPT_2d8c2817504948cf_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -391,12 +405,12 @@ jobs: {{/if}} - GH_AW_PROMPT_354354e1fe11886e_EOF + GH_AW_PROMPT_2d8c2817504948cf_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_354354e1fe11886e_EOF' + cat << 'GH_AW_PROMPT_2d8c2817504948cf_EOF' {{#runtime-import .github/workflows/shared/gh.md}} {{#runtime-import .github/workflows/shared/reporting-otlp.md}} @@ -404,7 +418,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-antigravity.md}} - GH_AW_PROMPT_354354e1fe11886e_EOF + GH_AW_PROMPT_2d8c2817504948cf_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -516,6 +530,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeantigravity outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -652,9 +667,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_db23ca6d45fd037b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fe2c3f1c0bd9fc8f_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-antigravity"]},"create_issue":{"close_older_issues":true,"close_older_key":"smoke-antigravity","expires":2,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_db23ca6d45fd037b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_fe2c3f1c0bd9fc8f_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -863,7 +878,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -908,7 +923,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1215,6 +1230,8 @@ jobs: group: "gh-aw-conclusion-smoke-antigravity" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1477,6 +1494,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1675,6 +1694,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1729,6 +1750,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1816,6 +1839,7 @@ jobs: GH_AW_ENGINE_ID: "antigravity" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e โœจ *[{workflow_name}]({run_url}) โ€” Powered by Antigravity*{ai_credits_suffix}{history_link}\",\"runStarted\":\"โœจ Antigravity awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"๐Ÿš€ [{workflow_name}]({run_url}) **MISSION COMPLETE!** Antigravity has spoken. โœจ\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status}. Antigravity encountered unexpected challenges...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -1915,6 +1939,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeantigravity steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-call-workflow.lock.yml b/.github/workflows/smoke-call-workflow.lock.yml index 1cfaef61c48..044d9e43480 100644 --- a/.github/workflows/smoke-call-workflow.lock.yml +++ b/.github/workflows/smoke-call-workflow.lock.yml @@ -103,6 +103,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -294,6 +295,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -311,20 +325,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f9286209d2d0acf8_EOF' + cat << 'GH_AW_PROMPT_1e9aa6197bd0deb7_EOF' - GH_AW_PROMPT_f9286209d2d0acf8_EOF + GH_AW_PROMPT_1e9aa6197bd0deb7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f9286209d2d0acf8_EOF' + cat << 'GH_AW_PROMPT_1e9aa6197bd0deb7_EOF' Tools: call_workflow, missing_tool, missing_data, noop - GH_AW_PROMPT_f9286209d2d0acf8_EOF + GH_AW_PROMPT_1e9aa6197bd0deb7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f9286209d2d0acf8_EOF' + cat << 'GH_AW_PROMPT_1e9aa6197bd0deb7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -353,16 +367,16 @@ jobs: {{/if}} - GH_AW_PROMPT_f9286209d2d0acf8_EOF + GH_AW_PROMPT_1e9aa6197bd0deb7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_f9286209d2d0acf8_EOF' + cat << 'GH_AW_PROMPT_1e9aa6197bd0deb7_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-call-workflow.md}} - GH_AW_PROMPT_f9286209d2d0acf8_EOF + GH_AW_PROMPT_1e9aa6197bd0deb7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -459,6 +473,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecallworkflow outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -586,9 +601,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_61dd02c72f53ba9d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3427c87d65c57f80_EOF' {"call_workflow":{"max":1,"workflow_files":{"smoke-workflow-call":"./.github/workflows/smoke-workflow-call.lock.yml"},"workflows":["smoke-workflow-call"]},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_61dd02c72f53ba9d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3427c87d65c57f80_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -745,7 +760,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_a5fa731b9ce6679a_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_326bc1d844630eac_EOF [history] persistence = "none" @@ -773,11 +788,11 @@ jobs: [mcp_servers.safeoutputs."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_a5fa731b9ce6679a_EOF + GH_AW_MCP_CONFIG_326bc1d844630eac_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -837,11 +852,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF model_provider = "openai-proxy" @@ -853,7 +868,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_PERSONAL_ACCESS_TOKEN$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_929fca99db4cd5ec_EOF + GH_AW_CODEX_SHELL_POLICY_47d4538748fe3213_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1145,6 +1160,8 @@ jobs: group: "gh-aw-conclusion-smoke-call-workflow" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1409,6 +1426,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1621,6 +1640,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1692,6 +1713,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: "gpt-5.4-mini" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "smoke-call-workflow" diff --git a/.github/workflows/smoke-ci.lock.yml b/.github/workflows/smoke-ci.lock.yml index 617e0ee29d2..c37f9ca3c33 100644 --- a/.github/workflows/smoke-ci.lock.yml +++ b/.github/workflows/smoke-ci.lock.yml @@ -111,6 +111,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -268,6 +269,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -285,25 +299,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_bc6dc3727d90a5db_EOF' + cat << 'GH_AW_PROMPT_42e80936ec52555c_EOF' - GH_AW_PROMPT_bc6dc3727d90a5db_EOF + GH_AW_PROMPT_42e80936ec52555c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_bc6dc3727d90a5db_EOF' + cat << 'GH_AW_PROMPT_42e80936ec52555c_EOF' Tools: add_comment, create_issue, update_issue, update_pull_request, add_labels, remove_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_bc6dc3727d90a5db_EOF + GH_AW_PROMPT_42e80936ec52555c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_comment_memory.md" - cat << 'GH_AW_PROMPT_bc6dc3727d90a5db_EOF' + cat << 'GH_AW_PROMPT_42e80936ec52555c_EOF' - GH_AW_PROMPT_bc6dc3727d90a5db_EOF + GH_AW_PROMPT_42e80936ec52555c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_bc6dc3727d90a5db_EOF' + cat << 'GH_AW_PROMPT_42e80936ec52555c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -332,13 +346,13 @@ jobs: {{/if}} - GH_AW_PROMPT_bc6dc3727d90a5db_EOF + GH_AW_PROMPT_42e80936ec52555c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_bc6dc3727d90a5db_EOF' + cat << 'GH_AW_PROMPT_42e80936ec52555c_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-ci.md}} - GH_AW_PROMPT_bc6dc3727d90a5db_EOF + GH_AW_PROMPT_42e80936ec52555c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -451,6 +465,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeci outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -608,9 +623,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2c75dca78def0b05_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_57aac7a27df7011d_EOF' {"add_comment":{"hide_older_comments":true,"max":1},"add_labels":{"allowed":["ai-generated"],"max":1},"comment_memory":{"max":1,"memory_id":"default"},"create_issue":{"close_older_issues":true,"close_older_key":"smoke-ci-memory-safe-outputs","labels":["ai-generated"],"max":1,"title_prefix":"[smoke-ci] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"remove_labels":{"allowed":["ai-generated"],"max":1},"report_incomplete":{},"update_issue":{"allow_body":true,"max":1,"target":"*"},"update_pull_request":{"allow_body":true,"allow_title":true,"max":1,"target":"*","update_branch":false}} - GH_AW_SAFE_OUTPUTS_CONFIG_2c75dca78def0b05_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_57aac7a27df7011d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -961,7 +976,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -1023,7 +1038,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1336,6 +1351,8 @@ jobs: group: "gh-aw-conclusion-smoke-ci" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1562,6 +1579,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1612,6 +1631,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/smoke-ci" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1708,6 +1729,7 @@ jobs: GH_AW_ENGINE_ID: "copilot" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "smoke-ci" GH_AW_WORKFLOW_NAME: "Smoke CI" diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index 66a7ed082fc..dc656febcc0 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -113,6 +113,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -304,6 +305,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -322,25 +336,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f55ce5c1908f7015_EOF' + cat << 'GH_AW_PROMPT_75fb28ee3eb10e61_EOF' - GH_AW_PROMPT_f55ce5c1908f7015_EOF + GH_AW_PROMPT_75fb28ee3eb10e61_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f55ce5c1908f7015_EOF' + cat << 'GH_AW_PROMPT_75fb28ee3eb10e61_EOF' Tools: add_comment(max:2), create_issue, close_pull_request, update_pull_request, create_pull_request_review_comment(max:5), submit_pull_request_review, resolve_pull_request_review_thread(max:5), add_labels, add_reviewer(max:2), push_to_pull_request_branch, create_code_scanning_alert, create_check_run, missing_tool, missing_data, noop, post_slack_message - GH_AW_PROMPT_f55ce5c1908f7015_EOF + GH_AW_PROMPT_75fb28ee3eb10e61_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_f55ce5c1908f7015_EOF' + cat << 'GH_AW_PROMPT_75fb28ee3eb10e61_EOF' - GH_AW_PROMPT_f55ce5c1908f7015_EOF + GH_AW_PROMPT_75fb28ee3eb10e61_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f55ce5c1908f7015_EOF' + cat << 'GH_AW_PROMPT_75fb28ee3eb10e61_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -382,7 +396,7 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_f55ce5c1908f7015_EOF + GH_AW_PROMPT_75fb28ee3eb10e61_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" @@ -390,7 +404,7 @@ jobs: if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md" fi - cat << 'GH_AW_PROMPT_f55ce5c1908f7015_EOF' + cat << 'GH_AW_PROMPT_75fb28ee3eb10e61_EOF' @@ -538,7 +552,7 @@ jobs: {{#runtime-import shared/noop-reminder.md}} - GH_AW_PROMPT_f55ce5c1908f7015_EOF + GH_AW_PROMPT_75fb28ee3eb10e61_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -649,6 +663,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeclaude outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -883,9 +898,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ccf222437533be3c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3cf046441d594154_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-claude"]},"add_reviewer":{"max":2,"target":"*"},"close_pull_request":{"max":1,"staged":true},"create_check_run":{"max":1,"name":"Smoke Claude: Agent Status"},"create_code_scanning_alert":{"driver":"Smoke Claude"},"create_issue":{"close_older_issues":true,"close_older_key":"smoke-claude","expires":2,"group":true,"labels":["automation","testing"],"max":1},"create_pull_request_review_comment":{"max":5,"side":"RIGHT","target":"*"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"post_slack_message":{"description":"Post a message to a fictitious Slack channel (smoke test only โ€” no real Slack integration)","inputs":{"channel":{"default":"#general","description":"Slack channel name to post to","required":false,"type":"string"},"message":{"description":"Message text to post","required":false,"type":"string"}}},"push_to_pull_request_branch":{"allowed_files":["smoke-test-files/smoke-claude-push-test.md"],"if_no_changes":"warn","max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"required_labels":["smoke-claude"],"staged":true,"target":"*"},"report_incomplete":{},"resolve_pull_request_review_thread":{"max":5},"submit_pull_request_review":{"footer":"always","max":1},"update_pull_request":{"allow_body":true,"allow_title":true,"max":1,"target":"*","update_branch":false}} - GH_AW_SAFE_OUTPUTS_CONFIG_ccf222437533be3c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3cf046441d594154_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -1301,7 +1316,7 @@ jobs: - name: Write MCP Scripts Config run: | mkdir -p "${RUNNER_TEMP}/gh-aw/mcp-scripts/logs" - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_469f1a852a85f36b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/tools.json" << 'GH_AW_MCP_SCRIPTS_TOOLS_bab178232d2c40e3_EOF' { "serverName": "mcpscripts", "version": "1.0.0", @@ -1345,8 +1360,8 @@ jobs: } ] } - GH_AW_MCP_SCRIPTS_TOOLS_469f1a852a85f36b_EOF - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF' + GH_AW_MCP_SCRIPTS_TOOLS_bab178232d2c40e3_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" << 'GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF' const path = require("path"); const { startHttpServer } = require("./mcp_scripts_mcp_server_http.cjs"); const configPath = path.join(__dirname, "tools.json"); @@ -1360,12 +1375,12 @@ jobs: console.error("Failed to start mcp-scripts HTTP server:", error); process.exit(1); }); - GH_AW_MCP_SCRIPTS_SERVER_5818b5ebd87c75d8_EOF + GH_AW_MCP_SCRIPTS_SERVER_e0a10bf70e571677_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/mcp-server.cjs" - name: Write MCP Scripts Tool Files run: | - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/go.sh" << 'GH_AW_MCP_SCRIPTS_SH_GO_0c369cdb9541bbbc_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/go.sh" << 'GH_AW_MCP_SCRIPTS_SH_GO_7b45399736bf1900_EOF' #!/bin/bash # Auto-generated mcp-script tool: go # Execute any Go command. This tool is accessible as 'mcpscripts-go'. Provide the full command after 'go' (e.g., args: 'test ./...'). The tool will run: go . Use single quotes ' for complex args to avoid shell interpretation issues. @@ -1377,9 +1392,9 @@ jobs: go $INPUT_ARGS - GH_AW_MCP_SCRIPTS_SH_GO_0c369cdb9541bbbc_EOF + GH_AW_MCP_SCRIPTS_SH_GO_7b45399736bf1900_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/go.sh" - cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/make.sh" << 'GH_AW_MCP_SCRIPTS_SH_MAKE_2f7cc0abd4078475_EOF' + cat > "${RUNNER_TEMP}/gh-aw/mcp-scripts/make.sh" << 'GH_AW_MCP_SCRIPTS_SH_MAKE_7e3f3e7ed66106db_EOF' #!/bin/bash # Auto-generated mcp-script tool: make # Execute any Make target. This tool is accessible as 'mcpscripts-make'. Provide the target name(s) (e.g., args: 'build'). The tool will run: make . Use single quotes ' for complex args to avoid shell interpretation issues. @@ -1391,7 +1406,7 @@ jobs: make $INPUT_ARGS - GH_AW_MCP_SCRIPTS_SH_MAKE_2f7cc0abd4078475_EOF + GH_AW_MCP_SCRIPTS_SH_MAKE_7e3f3e7ed66106db_EOF chmod +x "${RUNNER_TEMP}/gh-aw/mcp-scripts/make.sh" - name: Generate MCP Scripts Server Config @@ -1465,7 +1480,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GH_AW_MCP_SCRIPTS_PORT -e GH_AW_MCP_SCRIPTS_API_KEY -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e TAVILY_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_51154d5b12dfbda3_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c6bd7ef5cdbd4cb7_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -1562,7 +1577,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_51154d5b12dfbda3_EOF + GH_AW_MCP_CONFIG_c6bd7ef5cdbd4cb7_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1980,6 +1995,8 @@ jobs: group: "gh-aw-conclusion-smoke-claude" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -2251,6 +2268,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2470,6 +2489,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -2546,6 +2567,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ’ฅ *[THE END] โ€” Illustrated by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ’ฅ **WHOOSH!** [{workflow_name}]({run_url}) springs into action on this {event_type}! *[Panel 1 begins...]*\",\"runSuccess\":\"๐ŸŽฌ **THE END** โ€” [{workflow_name}]({run_url}) **MISSION: ACCOMPLISHED!** The hero saves the day! โœจ\",\"runFailure\":\"๐Ÿ’ซ **TO BE CONTINUED...** [{workflow_name}]({run_url}) {status}! Our hero faces unexpected challenges...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -2616,7 +2638,7 @@ jobs: echo "GH_HOST=${GH_HOST}" >> "$GITHUB_ENV" - name: Configure Safe Outputs Custom Scripts run: | - cat > "${RUNNER_TEMP}/gh-aw/actions/safe_output_script_post_slack_message.cjs" << 'GH_AW_SAFE_OUTPUT_SCRIPT_POST_SLACK_MESSAGE_9dfbfd5f0942b2d0_EOF' + cat > "${RUNNER_TEMP}/gh-aw/actions/safe_output_script_post_slack_message.cjs" << 'GH_AW_SAFE_OUTPUT_SCRIPT_POST_SLACK_MESSAGE_eea3b7e558f45c50_EOF' // @ts-check /// // Auto-generated safe-output script handler: post-slack-message @@ -2636,7 +2658,7 @@ jobs: } module.exports = { main }; - GH_AW_SAFE_OUTPUT_SCRIPT_POST_SLACK_MESSAGE_9dfbfd5f0942b2d0_EOF + GH_AW_SAFE_OUTPUT_SCRIPT_POST_SLACK_MESSAGE_eea3b7e558f45c50_EOF - name: Process Safe Outputs id: process_safe_outputs uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -2683,6 +2705,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeclaude steps: - name: Checkout actions folder @@ -2738,6 +2761,8 @@ jobs: contents: read security-events: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Restore checkout to triggering commit uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index 750f3501562..deaf3e0fb33 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -112,6 +112,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -304,6 +305,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -323,25 +337,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_370ba7656cfd048e_EOF' + cat << 'GH_AW_PROMPT_5315c6df59ccee24_EOF' - GH_AW_PROMPT_370ba7656cfd048e_EOF + GH_AW_PROMPT_5315c6df59ccee24_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_370ba7656cfd048e_EOF' + cat << 'GH_AW_PROMPT_5315c6df59ccee24_EOF' Tools: add_comment(max:2), create_issue, add_labels, remove_labels, unassign_from_user, hide_comment(max:5), set_issue_field, missing_tool, missing_data, noop, add_smoked_label - GH_AW_PROMPT_370ba7656cfd048e_EOF + GH_AW_PROMPT_5315c6df59ccee24_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_comment_memory.md" - cat << 'GH_AW_PROMPT_370ba7656cfd048e_EOF' + cat << 'GH_AW_PROMPT_5315c6df59ccee24_EOF' - GH_AW_PROMPT_370ba7656cfd048e_EOF + GH_AW_PROMPT_5315c6df59ccee24_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_370ba7656cfd048e_EOF' + cat << 'GH_AW_PROMPT_5315c6df59ccee24_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -383,12 +397,12 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_370ba7656cfd048e_EOF + GH_AW_PROMPT_5315c6df59ccee24_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_370ba7656cfd048e_EOF' + cat << 'GH_AW_PROMPT_5315c6df59ccee24_EOF' {{#runtime-import .github/workflows/shared/gh.md}} {{#runtime-import .github/workflows/shared/reporting-otlp.md}} @@ -401,7 +415,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-codex.md}} - GH_AW_PROMPT_370ba7656cfd048e_EOF + GH_AW_PROMPT_5315c6df59ccee24_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -514,6 +528,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecodex outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -686,9 +701,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_65a8c075d253af1f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d80c5784e24841f3_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-codex"]},"add_smoked_label":true,"comment_memory":{"max":1,"memory_id":"default"},"create_issue":{"close_older_issues":true,"close_older_key":"smoke-codex","expires":2,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"hide_comment":{"max":5},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"remove_labels":{"allowed":["smoke"]},"report_incomplete":{},"set_issue_field":{"allowed_fields":["*"],"max":1},"unassign_from_user":{"allowed":["githubactionagent"],"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_65a8c075d253af1f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d80c5784e24841f3_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -1043,7 +1058,7 @@ jobs: DOCKER_SOCK_GID=$(stat -c '%g' "$DOCKER_SOCK_PATH" 2>/dev/null || echo '0') export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -e CODEX_HOME -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' - cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_3d6ff0ef172f3ee3_EOF + cat > "${RUNNER_TEMP}/gh-aw/mcp-config/config.toml" << GH_AW_MCP_CONFIG_e1c0287b7ca0447a_EOF [history] persistence = "none" @@ -1078,11 +1093,11 @@ jobs: [mcp_servers.serena."guard-policies".write-sink] accept = ["*"] - GH_AW_MCP_CONFIG_3d6ff0ef172f3ee3_EOF + GH_AW_MCP_CONFIG_e1c0287b7ca0447a_EOF # Generate JSON config for MCP gateway GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_5d9dfcc4cd7406b9_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_eec889b1c22482e6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -1153,11 +1168,11 @@ jobs: } } } - GH_AW_MCP_CONFIG_5d9dfcc4cd7406b9_EOF + GH_AW_MCP_CONFIG_eec889b1c22482e6_EOF # Sync converter output to writable CODEX_HOME for Codex mkdir -p /tmp/gh-aw/mcp-config - cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + cat > "/tmp/gh-aw/mcp-config/config.toml" << GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF model_provider = "openai-proxy" @@ -1169,7 +1184,7 @@ jobs: [shell_environment_policy] inherit = "core" include_only = ["^CODEX_API_KEY$", "^GH_AW_ASSETS_ALLOWED_EXTS$", "^GH_AW_ASSETS_BRANCH$", "^GH_AW_ASSETS_MAX_SIZE_KB$", "^GH_AW_SAFE_OUTPUTS$", "^GITHUB_REPOSITORY$", "^GITHUB_SERVER_URL$", "^HOME$", "^OPENAI_API_KEY$", "^PATH$"] - GH_AW_CODEX_SHELL_POLICY_843b5f425ba46e83_EOF + GH_AW_CODEX_SHELL_POLICY_d8326fb8068eb0d4_EOF awk ' BEGIN { skip_openai_proxy = 0 } /^[[:space:]]*model_provider[[:space:]]*=/ { next } @@ -1478,6 +1493,8 @@ jobs: group: "gh-aw-conclusion-smoke-codex" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1776,6 +1793,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1988,6 +2007,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -2063,6 +2084,7 @@ jobs: GH_AW_ENGINE_ID: "codex" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”ฎ *The oracle has spoken through [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ฎ The ancient spirits stir... [{workflow_name}]({run_url}) awakens to divine this {event_type}...\",\"runSuccess\":\"โœจ The prophecy is fulfilled... [{workflow_name}]({run_url}) has completed its mystical journey. The stars align. ๐ŸŒŸ\",\"runFailure\":\"๐ŸŒ‘ The shadows whisper... [{workflow_name}]({run_url}) {status}. The oracle requires further meditation...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -2322,6 +2344,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecodex steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-copilot-aoai-apikey.lock.yml b/.github/workflows/smoke-copilot-aoai-apikey.lock.yml index a03e85905ca..7e8cca1f0d2 100644 --- a/.github/workflows/smoke-copilot-aoai-apikey.lock.yml +++ b/.github/workflows/smoke-copilot-aoai-apikey.lock.yml @@ -108,6 +108,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} caveman: ${{ steps.pick-experiment.outputs.caveman }} @@ -312,6 +313,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -549,6 +563,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilotaoaiapikey outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -2148,6 +2163,8 @@ jobs: group: "gh-aw-conclusion-smoke-copilot-aoai-apikey" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -2418,6 +2435,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2642,6 +2661,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -2698,6 +2719,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -2791,6 +2814,7 @@ jobs: GH_AW_ENGINE_MODEL: "o4-mini-aw" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“ฐ *BREAKING: Report filed by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿ“ฐ BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"๐Ÿ“ฐ VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. ๐ŸŽค\",\"runFailure\":\"๐Ÿ“ฐ DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -2935,6 +2959,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilotaoaiapikey steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-copilot-aoai-entra.lock.yml b/.github/workflows/smoke-copilot-aoai-entra.lock.yml index 5303e078a28..f52d8308461 100644 --- a/.github/workflows/smoke-copilot-aoai-entra.lock.yml +++ b/.github/workflows/smoke-copilot-aoai-entra.lock.yml @@ -107,6 +107,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} caveman: ${{ steps.pick-experiment.outputs.caveman }} @@ -311,6 +312,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -550,6 +564,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilotaoaientra outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -2152,6 +2167,8 @@ jobs: group: "gh-aw-conclusion-smoke-copilot-aoai-entra" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -2424,6 +2441,8 @@ jobs: permissions: contents: read id-token: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2649,6 +2668,8 @@ jobs: environment: aoai-model permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -2705,6 +2726,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -2799,6 +2822,7 @@ jobs: GH_AW_ENGINE_MODEL: "o4-mini-aw" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“ฐ *BREAKING: Report filed by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿ“ฐ BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"๐Ÿ“ฐ VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. ๐ŸŽค\",\"runFailure\":\"๐Ÿ“ฐ DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -2944,6 +2968,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilotaoaientra steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-copilot-arm.lock.yml b/.github/workflows/smoke-copilot-arm.lock.yml index 3b898831ca8..1afa8e6d8fc 100644 --- a/.github/workflows/smoke-copilot-arm.lock.yml +++ b/.github/workflows/smoke-copilot-arm.lock.yml @@ -110,6 +110,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -301,6 +302,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -493,6 +507,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilotarm outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -2006,6 +2021,8 @@ jobs: group: "gh-aw-conclusion-smoke-copilot-arm" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -2277,6 +2294,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2495,6 +2514,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -2572,6 +2593,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“ฐ *BREAKING: Report filed by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿ“ฐ BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"๐Ÿ“ฐ VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. ๐ŸŽค\",\"runFailure\":\"๐Ÿ“ฐ DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -2707,6 +2729,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilotarm steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-copilot-sdk.lock.yml b/.github/workflows/smoke-copilot-sdk.lock.yml index a9b16a2af4f..0aba3c11ad7 100644 --- a/.github/workflows/smoke-copilot-sdk.lock.yml +++ b/.github/workflows/smoke-copilot-sdk.lock.yml @@ -80,6 +80,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -284,6 +285,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -302,20 +316,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_fe74274cd87feed3_EOF' + cat << 'GH_AW_PROMPT_228410af7e901e88_EOF' - GH_AW_PROMPT_fe74274cd87feed3_EOF + GH_AW_PROMPT_228410af7e901e88_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_fe74274cd87feed3_EOF' + cat << 'GH_AW_PROMPT_228410af7e901e88_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_fe74274cd87feed3_EOF + GH_AW_PROMPT_228410af7e901e88_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_fe74274cd87feed3_EOF' + cat << 'GH_AW_PROMPT_228410af7e901e88_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -344,15 +358,15 @@ jobs: {{/if}} - GH_AW_PROMPT_fe74274cd87feed3_EOF + GH_AW_PROMPT_228410af7e901e88_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_fe74274cd87feed3_EOF' + cat << 'GH_AW_PROMPT_228410af7e901e88_EOF' {{#runtime-import .github/workflows/smoke-copilot-sdk.md}} - GH_AW_PROMPT_fe74274cd87feed3_EOF + GH_AW_PROMPT_228410af7e901e88_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -453,6 +467,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilotsdk outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -577,9 +592,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_482e3001c8329d97_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1f77e75ffdd5cb4d_EOF' {"create_issue":{"close_older_issues":true,"close_older_key":"smoke-copilot-sdk","expires":2,"group":true,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_482e3001c8329d97_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_1f77e75ffdd5cb4d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -749,7 +764,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -806,7 +821,7 @@ jobs: "payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}" } } - GH_AW_MCP_CONFIG_2ed48797ea52df3f_EOF + GH_AW_MCP_CONFIG_c70c556baaebe8bb_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1082,6 +1097,8 @@ jobs: group: "gh-aw-conclusion-smoke-copilot-sdk" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1345,6 +1362,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1563,6 +1582,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1637,6 +1658,7 @@ jobs: GH_AW_ENGINE_MODEL: "gpt-5.4" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ฌ" GH_AW_WORKFLOW_ID: "smoke-copilot-sdk" diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 6c1a93c6cf0..45d16aa751d 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -106,6 +106,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} caveman: ${{ steps.pick-experiment.outputs.caveman }} @@ -317,6 +318,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -554,6 +568,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilot outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -2150,6 +2165,8 @@ jobs: group: "gh-aw-conclusion-smoke-copilot" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -2421,6 +2438,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -2645,6 +2664,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -2701,6 +2722,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -2794,6 +2817,7 @@ jobs: GH_AW_ENGINE_MODEL: "gpt-5.4" GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“ฐ *BREAKING: Report filed by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿ“ฐ BREAKING: [{workflow_name}]({run_url}) is now investigating this {event_type}. Sources say the story is developing...\",\"runSuccess\":\"๐Ÿ“ฐ VERDICT: [{workflow_name}]({run_url}) has concluded. All systems operational. This is a developing story. ๐ŸŽค\",\"runFailure\":\"๐Ÿ“ฐ DEVELOPING STORY: [{workflow_name}]({run_url}) reports {status}. Our correspondents are investigating the incident...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -2938,6 +2962,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecopilot steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml index 41a0ed97681..d0eca9d7848 100644 --- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml @@ -101,6 +101,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -286,6 +287,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -304,23 +318,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a65d2c5788adf62f_EOF' + cat << 'GH_AW_PROMPT_6e6e42239f1dbf7d_EOF' - GH_AW_PROMPT_a65d2c5788adf62f_EOF + GH_AW_PROMPT_6e6e42239f1dbf7d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a65d2c5788adf62f_EOF' + cat << 'GH_AW_PROMPT_6e6e42239f1dbf7d_EOF' Tools: add_comment(max:2), create_issue, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_a65d2c5788adf62f_EOF + GH_AW_PROMPT_6e6e42239f1dbf7d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_a65d2c5788adf62f_EOF' + cat << 'GH_AW_PROMPT_6e6e42239f1dbf7d_EOF' - GH_AW_PROMPT_a65d2c5788adf62f_EOF + GH_AW_PROMPT_6e6e42239f1dbf7d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a65d2c5788adf62f_EOF' + cat << 'GH_AW_PROMPT_6e6e42239f1dbf7d_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -362,16 +376,16 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_a65d2c5788adf62f_EOF + GH_AW_PROMPT_6e6e42239f1dbf7d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_a65d2c5788adf62f_EOF' + cat << 'GH_AW_PROMPT_6e6e42239f1dbf7d_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-create-cross-repo-pr.md}} - GH_AW_PROMPT_a65d2c5788adf62f_EOF + GH_AW_PROMPT_6e6e42239f1dbf7d_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -475,6 +489,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecreatecrossrepopr outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -619,9 +634,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e4ebdce2dc5cf57e_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1818ed76c9e95114_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_issue":{"close_older_issues":true,"expires":2,"labels":["automation","testing"],"max":1},"create_pull_request":{"draft":true,"expires":24,"fallback_as_issue":false,"github-token":"${GH_AW_SECRET_GH_AW_SIDE_REPO_PAT}","if_no_changes":"error","labels":["smoke-test"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","target-repo":"github/gh-aw-side-repo","title_prefix":"[smoke] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e4ebdce2dc5cf57e_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_1818ed76c9e95114_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -856,7 +871,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -918,7 +933,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1212,6 +1227,8 @@ jobs: group: "gh-aw-conclusion-smoke-create-cross-repo-pr" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1479,6 +1496,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1698,6 +1717,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1773,6 +1794,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”ฌ *Cross-repo smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ฌ [{workflow_name}]({run_url}) is testing cross-repo PR creation in github/gh-aw-side-repo...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) successfully created a cross-repo PR in github/gh-aw-side-repo!\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) failed to create a cross-repo PR: {status}\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-crush.lock.yml b/.github/workflows/smoke-crush.lock.yml index 635789217b1..dfaf0d2e008 100644 --- a/.github/workflows/smoke-crush.lock.yml +++ b/.github/workflows/smoke-crush.lock.yml @@ -103,6 +103,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -293,6 +294,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -310,20 +324,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_34c8daaea30bcc23_EOF' + cat << 'GH_AW_PROMPT_7136928fa05f6ebe_EOF' - GH_AW_PROMPT_34c8daaea30bcc23_EOF + GH_AW_PROMPT_7136928fa05f6ebe_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_34c8daaea30bcc23_EOF' + cat << 'GH_AW_PROMPT_7136928fa05f6ebe_EOF' Tools: add_comment(max:2), create_issue, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_34c8daaea30bcc23_EOF + GH_AW_PROMPT_7136928fa05f6ebe_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_34c8daaea30bcc23_EOF' + cat << 'GH_AW_PROMPT_7136928fa05f6ebe_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -352,19 +366,19 @@ jobs: {{/if}} - GH_AW_PROMPT_34c8daaea30bcc23_EOF + GH_AW_PROMPT_7136928fa05f6ebe_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_34c8daaea30bcc23_EOF' + cat << 'GH_AW_PROMPT_7136928fa05f6ebe_EOF' {{#runtime-import .github/workflows/shared/gh.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-crush.md}} - GH_AW_PROMPT_34c8daaea30bcc23_EOF + GH_AW_PROMPT_7136928fa05f6ebe_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -464,6 +478,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokecrush outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -590,9 +605,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7836d6e2885c0050_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0d267a9995038d27_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-crush"]},"create_issue":{"close_older_issues":true,"expires":2,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_7836d6e2885c0050_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_0d267a9995038d27_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -804,7 +819,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -864,7 +879,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1112,6 +1127,8 @@ jobs: group: "gh-aw-conclusion-smoke-crush" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1371,6 +1388,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1569,6 +1588,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1642,6 +1663,7 @@ jobs: GH_AW_ENGINE_ID: "crush" GH_AW_ENGINE_MODEL: "anthropic/claude-sonnet-4-20250514" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e โšก *[{workflow_name}]({run_url}) โ€” Powered by Crush*\",\"runStarted\":\"โšก Crush initializing... [{workflow_name}]({run_url}) begins on this {event_type}...\",\"runSuccess\":\"๐ŸŽฏ [{workflow_name}]({run_url}) **MISSION COMPLETE!** Crush has delivered. โšก\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status}. Crush encountered unexpected challenges...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-gemini.lock.yml b/.github/workflows/smoke-gemini.lock.yml index 64caa2cb84e..61fa2b72f17 100644 --- a/.github/workflows/smoke-gemini.lock.yml +++ b/.github/workflows/smoke-gemini.lock.yml @@ -105,6 +105,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -296,6 +297,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -349,21 +363,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_4bff0360ea1c1fdd_EOF' + cat << 'GH_AW_PROMPT_13366d92a8d2cf24_EOF' - GH_AW_PROMPT_4bff0360ea1c1fdd_EOF + GH_AW_PROMPT_13366d92a8d2cf24_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_4bff0360ea1c1fdd_EOF' + cat << 'GH_AW_PROMPT_13366d92a8d2cf24_EOF' Tools: add_comment(max:2), create_issue, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_4bff0360ea1c1fdd_EOF + GH_AW_PROMPT_13366d92a8d2cf24_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_4bff0360ea1c1fdd_EOF' + cat << 'GH_AW_PROMPT_13366d92a8d2cf24_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -392,12 +406,12 @@ jobs: {{/if}} - GH_AW_PROMPT_4bff0360ea1c1fdd_EOF + GH_AW_PROMPT_13366d92a8d2cf24_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_4bff0360ea1c1fdd_EOF' + cat << 'GH_AW_PROMPT_13366d92a8d2cf24_EOF' {{#runtime-import .github/workflows/shared/gh.md}} {{#runtime-import .github/workflows/shared/reporting-otlp.md}} @@ -405,7 +419,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-gemini.md}} - GH_AW_PROMPT_4bff0360ea1c1fdd_EOF + GH_AW_PROMPT_13366d92a8d2cf24_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -517,6 +531,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokegemini outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -656,9 +671,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b7a72f6843550ce4_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7c525b0f2e6670e9_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-gemini"]},"create_issue":{"close_older_issues":true,"close_older_key":"smoke-gemini","expires":2,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b7a72f6843550ce4_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_7c525b0f2e6670e9_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -867,7 +882,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -912,7 +927,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1218,6 +1233,8 @@ jobs: group: "gh-aw-conclusion-smoke-gemini" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1480,6 +1497,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1681,6 +1700,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1735,6 +1756,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1822,6 +1845,7 @@ jobs: GH_AW_ENGINE_ID: "gemini" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e โœจ *[{workflow_name}]({run_url}) โ€” Powered by Gemini*{ai_credits_suffix}{history_link}\",\"runStarted\":\"โœจ Gemini awakens... [{workflow_name}]({run_url}) begins its journey on this {event_type}...\",\"runSuccess\":\"๐Ÿš€ [{workflow_name}]({run_url}) **MISSION COMPLETE!** Gemini has spoken. โœจ\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status}. Gemini encountered unexpected challenges...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -1921,6 +1945,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokegemini steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index 6734ffd2921..0a510305518 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -101,6 +101,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -292,6 +293,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -309,23 +323,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9206afef35f3da03_EOF' + cat << 'GH_AW_PROMPT_80845df11aa1a675_EOF' - GH_AW_PROMPT_9206afef35f3da03_EOF + GH_AW_PROMPT_80845df11aa1a675_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9206afef35f3da03_EOF' + cat << 'GH_AW_PROMPT_80845df11aa1a675_EOF' Tools: add_comment, create_pull_request(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_9206afef35f3da03_EOF + GH_AW_PROMPT_80845df11aa1a675_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_9206afef35f3da03_EOF' + cat << 'GH_AW_PROMPT_80845df11aa1a675_EOF' - GH_AW_PROMPT_9206afef35f3da03_EOF + GH_AW_PROMPT_80845df11aa1a675_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9206afef35f3da03_EOF' + cat << 'GH_AW_PROMPT_80845df11aa1a675_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -354,17 +368,17 @@ jobs: {{/if}} - GH_AW_PROMPT_9206afef35f3da03_EOF + GH_AW_PROMPT_80845df11aa1a675_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_9206afef35f3da03_EOF' + cat << 'GH_AW_PROMPT_80845df11aa1a675_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-multi-pr.md}} - GH_AW_PROMPT_9206afef35f3da03_EOF + GH_AW_PROMPT_80845df11aa1a675_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -462,6 +476,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokemultipr outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -586,9 +601,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9973d5c4429af48c_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cf02acdd3c26e1ca_EOF' {"add_comment":{"hide_older_comments":true,"max":1},"create_pull_request":{"expires":2,"if_no_changes":"warn","labels":["ai-generated"],"max":2,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[smoke-multi-pr] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_9973d5c4429af48c_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cf02acdd3c26e1ca_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -786,7 +801,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -848,7 +863,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1157,6 +1172,8 @@ jobs: group: "gh-aw-conclusion-smoke-multi-pr" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1424,6 +1441,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1642,6 +1661,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1717,6 +1738,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿงช *Multi PR smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿงช [{workflow_name}]({run_url}) is now testing multiple PR creation...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) successfully created multiple PRs.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) failed to create multiple PRs. Check the logs.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index 451b486963a..c6b8f6a4502 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -104,6 +104,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -294,6 +295,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -312,20 +326,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f6617ddd70fb7101_EOF' + cat << 'GH_AW_PROMPT_2a98ed4f634b97b9_EOF' - GH_AW_PROMPT_f6617ddd70fb7101_EOF + GH_AW_PROMPT_2a98ed4f634b97b9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f6617ddd70fb7101_EOF' + cat << 'GH_AW_PROMPT_2a98ed4f634b97b9_EOF' Tools: add_comment(max:2), create_issue, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_f6617ddd70fb7101_EOF + GH_AW_PROMPT_2a98ed4f634b97b9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f6617ddd70fb7101_EOF' + cat << 'GH_AW_PROMPT_2a98ed4f634b97b9_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -354,12 +368,12 @@ jobs: {{/if}} - GH_AW_PROMPT_f6617ddd70fb7101_EOF + GH_AW_PROMPT_2a98ed4f634b97b9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_f6617ddd70fb7101_EOF' + cat << 'GH_AW_PROMPT_2a98ed4f634b97b9_EOF' {{#runtime-import .github/workflows/shared/gh.md}} {{#runtime-import .github/workflows/shared/reporting-otlp.md}} @@ -367,7 +381,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-opencode.md}} - GH_AW_PROMPT_f6617ddd70fb7101_EOF + GH_AW_PROMPT_2a98ed4f634b97b9_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -470,6 +484,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeopencode outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -594,9 +609,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4eaf09afe17c985f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_95a6122e5be4a441_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-opencode"]},"create_issue":{"close_older_issues":true,"close_older_key":"smoke-opencode","expires":2,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_4eaf09afe17c985f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_95a6122e5be4a441_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -808,7 +823,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -868,7 +883,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1117,6 +1132,8 @@ jobs: group: "gh-aw-conclusion-smoke-opencode" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1376,6 +1393,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1572,6 +1591,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1645,6 +1666,7 @@ jobs: GH_AW_ENGINE_ID: "opencode" GH_AW_ENGINE_MODEL: "copilot/gpt-5" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”ฅ *[{workflow_name}]({run_url}) โ€” Powered by OpenCode*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ฅ OpenCode initializing... [{workflow_name}]({run_url}) begins on this {event_type}...\",\"runSuccess\":\"๐Ÿš€ [{workflow_name}]({run_url}) **MISSION COMPLETE!** OpenCode delivered. ๐Ÿ”ฅ\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status}. OpenCode encountered unexpected challenges...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-otel-backends.lock.yml b/.github/workflows/smoke-otel-backends.lock.yml index bcfd13ab9f5..1d6755011b1 100644 --- a/.github/workflows/smoke-otel-backends.lock.yml +++ b/.github/workflows/smoke-otel-backends.lock.yml @@ -116,6 +116,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -318,6 +319,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -336,20 +350,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_fe0cff616aa2658e_EOF' + cat << 'GH_AW_PROMPT_f20b29eaba2a2cc7_EOF' - GH_AW_PROMPT_fe0cff616aa2658e_EOF + GH_AW_PROMPT_f20b29eaba2a2cc7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_fe0cff616aa2658e_EOF' + cat << 'GH_AW_PROMPT_f20b29eaba2a2cc7_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_fe0cff616aa2658e_EOF + GH_AW_PROMPT_f20b29eaba2a2cc7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_fe0cff616aa2658e_EOF' + cat << 'GH_AW_PROMPT_f20b29eaba2a2cc7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -378,12 +392,12 @@ jobs: {{/if}} - GH_AW_PROMPT_fe0cff616aa2658e_EOF + GH_AW_PROMPT_f20b29eaba2a2cc7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_fe0cff616aa2658e_EOF' + cat << 'GH_AW_PROMPT_f20b29eaba2a2cc7_EOF' {{#runtime-import .github/workflows/shared/mcp/datadog.md}} {{#runtime-import .github/workflows/shared/mcp/grafana.md}} @@ -393,7 +407,7 @@ jobs: {{#runtime-import .github/workflows/shared/grafana.md}} {{#runtime-import .github/workflows/shared/datadog.md}} {{#runtime-import .github/workflows/smoke-otel-backends.md}} - GH_AW_PROMPT_fe0cff616aa2658e_EOF + GH_AW_PROMPT_f20b29eaba2a2cc7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -496,6 +510,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeotelbackends outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -625,9 +640,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9ddfadab0a851780_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0ddba8c3e9635a64_EOF' {"create_issue":{"close_older_issues":true,"close_older_key":"smoke-otel-backends","expires":2,"labels":["automation","testing","observability"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_9ddfadab0a851780_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_0ddba8c3e9635a64_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -804,7 +819,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_964755345220100a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_4e9e5904ecccd2ae_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "datadog": { @@ -947,7 +962,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_964755345220100a_EOF + GH_AW_MCP_CONFIG_4e9e5904ecccd2ae_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1255,6 +1270,8 @@ jobs: group: "gh-aw-conclusion-smoke-otel-backends" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1518,6 +1535,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1736,6 +1755,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1810,6 +1831,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "smoke-otel-backends" diff --git a/.github/workflows/smoke-pi.lock.yml b/.github/workflows/smoke-pi.lock.yml index 461445e41ed..c8e12d9178d 100644 --- a/.github/workflows/smoke-pi.lock.yml +++ b/.github/workflows/smoke-pi.lock.yml @@ -105,6 +105,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -296,6 +297,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -314,21 +328,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ff367b116ec16fee_EOF' + cat << 'GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF' - GH_AW_PROMPT_ff367b116ec16fee_EOF + GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ff367b116ec16fee_EOF' + cat << 'GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF' Tools: add_comment(max:2), create_issue, add_labels, missing_tool, missing_data, noop - GH_AW_PROMPT_ff367b116ec16fee_EOF + GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ff367b116ec16fee_EOF' + cat << 'GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -357,19 +371,19 @@ jobs: {{/if}} - GH_AW_PROMPT_ff367b116ec16fee_EOF + GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_ff367b116ec16fee_EOF' + cat << 'GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF' {{#runtime-import .github/workflows/shared/gh.md}} {{#runtime-import .github/workflows/shared/reporting-otlp.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/smoke-pi.md}} - GH_AW_PROMPT_ff367b116ec16fee_EOF + GH_AW_PROMPT_5b5a2f16e53ecd6a_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -478,6 +492,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokepi outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -624,9 +639,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9b624d3581ddba6d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_984554a83e43c589_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-pi"]},"create_issue":{"close_older_issues":true,"close_older_key":"smoke-pi","expires":2,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_9b624d3581ddba6d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_984554a83e43c589_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -836,7 +851,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -881,7 +896,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1169,6 +1184,8 @@ jobs: group: "gh-aw-conclusion-smoke-pi" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1432,6 +1449,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1643,6 +1662,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1717,6 +1738,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿฅง *[{workflow_name}]({run_url}) โ€” Powered by Pi*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿฅง Pi initializing... [{workflow_name}]({run_url}) begins on this {event_type}...\",\"runSuccess\":\"๐Ÿš€ [{workflow_name}]({run_url}) **MISSION COMPLETE!** Pi delivered. ๐Ÿฅง\",\"runFailure\":\"โš ๏ธ [{workflow_name}]({run_url}) {status}. Pi encountered unexpected challenges...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -1818,6 +1840,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokepi steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index 311a3bc19e5..f0d72821a00 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -102,6 +102,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -295,6 +296,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -347,23 +361,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_d51744f2cfdabe27_EOF' + cat << 'GH_AW_PROMPT_a0507a40057c6822_EOF' - GH_AW_PROMPT_d51744f2cfdabe27_EOF + GH_AW_PROMPT_a0507a40057c6822_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_d51744f2cfdabe27_EOF' + cat << 'GH_AW_PROMPT_a0507a40057c6822_EOF' Tools: add_comment(max:2), create_issue, create_pull_request, add_labels, remove_labels, update_project(max:20), create_project_status_update, missing_tool, missing_data, noop - GH_AW_PROMPT_d51744f2cfdabe27_EOF + GH_AW_PROMPT_a0507a40057c6822_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_d51744f2cfdabe27_EOF' + cat << 'GH_AW_PROMPT_a0507a40057c6822_EOF' - GH_AW_PROMPT_d51744f2cfdabe27_EOF + GH_AW_PROMPT_a0507a40057c6822_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_d51744f2cfdabe27_EOF' + cat << 'GH_AW_PROMPT_a0507a40057c6822_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -392,17 +406,17 @@ jobs: {{/if}} - GH_AW_PROMPT_d51744f2cfdabe27_EOF + GH_AW_PROMPT_a0507a40057c6822_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_d51744f2cfdabe27_EOF' + cat << 'GH_AW_PROMPT_a0507a40057c6822_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-project.md}} - GH_AW_PROMPT_d51744f2cfdabe27_EOF + GH_AW_PROMPT_a0507a40057c6822_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -504,6 +518,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeproject outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -630,9 +645,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cfa787d65b4c610d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7b10df5a79670f7d_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"add_labels":{"allowed":["smoke-project"]},"create_issue":{"close_older_issues":true,"expires":2,"group":true,"labels":["ai-generated","automation","testing"],"max":1},"create_project_status_update":{"github-token":"${GH_AW_SECRET_GH_AW_PROJECT_GITHUB_TOKEN}","max":1,"project":"https://github.com/orgs/github/projects/24068"},"create_pull_request":{"expires":2,"if_no_changes":"warn","labels":["ai-generated"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[smoke-project] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"remove_labels":{"allowed":["smoke-project"]},"report_incomplete":{},"update_project":{"github-token":"${GH_AW_SECRET_GH_AW_PROJECT_GITHUB_TOKEN}","max":20,"project":"https://github.com/orgs/github/projects/24068","views":[{"name":"Smoke Test Board","layout":"board","filter":"is:open"}]}} - GH_AW_SAFE_OUTPUTS_CONFIG_cfa787d65b4c610d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_7b10df5a79670f7d_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -991,7 +1006,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -1053,7 +1068,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1339,6 +1354,8 @@ jobs: group: "gh-aw-conclusion-smoke-project" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1606,6 +1623,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1830,6 +1849,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1886,6 +1907,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1976,6 +1999,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿงช *Project smoke test report by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿงช [{workflow_name}]({run_url}) is now testing project operations...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed successfully. All project operations validated.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-service-ports.lock.yml b/.github/workflows/smoke-service-ports.lock.yml index d8a654d1567..2ad1918a8c2 100644 --- a/.github/workflows/smoke-service-ports.lock.yml +++ b/.github/workflows/smoke-service-ports.lock.yml @@ -93,6 +93,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -284,6 +285,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -301,20 +315,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_97051c4311ad7332_EOF' + cat << 'GH_AW_PROMPT_8676aedd5232efa7_EOF' - GH_AW_PROMPT_97051c4311ad7332_EOF + GH_AW_PROMPT_8676aedd5232efa7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_97051c4311ad7332_EOF' + cat << 'GH_AW_PROMPT_8676aedd5232efa7_EOF' Tools: add_comment(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_97051c4311ad7332_EOF + GH_AW_PROMPT_8676aedd5232efa7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_97051c4311ad7332_EOF' + cat << 'GH_AW_PROMPT_8676aedd5232efa7_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -343,16 +357,16 @@ jobs: {{/if}} - GH_AW_PROMPT_97051c4311ad7332_EOF + GH_AW_PROMPT_8676aedd5232efa7_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_97051c4311ad7332_EOF' + cat << 'GH_AW_PROMPT_8676aedd5232efa7_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-service-ports.md}} - GH_AW_PROMPT_97051c4311ad7332_EOF + GH_AW_PROMPT_8676aedd5232efa7_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -456,6 +470,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeserviceports outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -580,9 +595,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -737,7 +752,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -799,7 +814,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1083,6 +1098,8 @@ jobs: group: "gh-aw-conclusion-smoke-service-ports" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1348,6 +1365,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1563,6 +1582,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1638,6 +1659,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”Œ *Service ports validation by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”Œ Starting service ports validation... [{workflow_name}]({run_url}) is testing Redis connectivity...\",\"runSuccess\":\"โœ… Service ports validation passed! [{workflow_name}]({run_url}) confirms agent can reach Redis.\",\"runFailure\":\"โŒ Service ports validation failed! [{workflow_name}]({run_url}) could not reach Redis: {status}\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-temporary-id.lock.yml b/.github/workflows/smoke-temporary-id.lock.yml index da6311475cd..139d46f14ea 100644 --- a/.github/workflows/smoke-temporary-id.lock.yml +++ b/.github/workflows/smoke-temporary-id.lock.yml @@ -100,6 +100,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -293,6 +294,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -345,20 +359,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1209c6df7944b207_EOF' + cat << 'GH_AW_PROMPT_42902931571bc859_EOF' - GH_AW_PROMPT_1209c6df7944b207_EOF + GH_AW_PROMPT_42902931571bc859_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1209c6df7944b207_EOF' + cat << 'GH_AW_PROMPT_42902931571bc859_EOF' Tools: add_comment(max:2), create_issue(max:5), link_sub_issue(max:3), missing_tool, missing_data, noop - GH_AW_PROMPT_1209c6df7944b207_EOF + GH_AW_PROMPT_42902931571bc859_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1209c6df7944b207_EOF' + cat << 'GH_AW_PROMPT_42902931571bc859_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -387,17 +401,17 @@ jobs: {{/if}} - GH_AW_PROMPT_1209c6df7944b207_EOF + GH_AW_PROMPT_42902931571bc859_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_1209c6df7944b207_EOF' + cat << 'GH_AW_PROMPT_42902931571bc859_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-temporary-id.md}} - GH_AW_PROMPT_1209c6df7944b207_EOF + GH_AW_PROMPT_42902931571bc859_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -498,6 +512,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smoketemporaryid outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -622,9 +637,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_77d2bfab59fdf5a7_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_578f8bf3075d3ca4_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_issue":{"close_older_issues":true,"expires":2,"group":true,"labels":["ai-generated","automation","testing"],"max":5,"title_prefix":"[smoke-temporary-id] "},"create_report_incomplete_issue":{},"link_sub_issue":{"max":3},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_77d2bfab59fdf5a7_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_578f8bf3075d3ca4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -837,7 +852,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -899,7 +914,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1184,6 +1199,8 @@ jobs: group: "gh-aw-conclusion-smoke-temporary-id" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1449,6 +1466,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1673,6 +1692,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1729,6 +1750,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1819,6 +1842,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿงช *Temporary ID smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿงช [{workflow_name}]({run_url}) is now testing temporary ID functionality...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed successfully. Temporary ID validation passed.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) encountered failures. Check the logs for details.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 4c1ae59cce7..1dfa297cf6c 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -105,6 +105,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -296,6 +297,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -313,20 +327,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_b2e3fb5c2a5be738_EOF' + cat << 'GH_AW_PROMPT_697463475cfdd779_EOF' - GH_AW_PROMPT_b2e3fb5c2a5be738_EOF + GH_AW_PROMPT_697463475cfdd779_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_b2e3fb5c2a5be738_EOF' + cat << 'GH_AW_PROMPT_697463475cfdd779_EOF' Tools: add_comment(max:2), missing_tool, missing_data, noop - GH_AW_PROMPT_b2e3fb5c2a5be738_EOF + GH_AW_PROMPT_697463475cfdd779_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_b2e3fb5c2a5be738_EOF' + cat << 'GH_AW_PROMPT_697463475cfdd779_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -355,17 +369,17 @@ jobs: {{/if}} - GH_AW_PROMPT_b2e3fb5c2a5be738_EOF + GH_AW_PROMPT_697463475cfdd779_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_b2e3fb5c2a5be738_EOF' + cat << 'GH_AW_PROMPT_697463475cfdd779_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-test-tools.md}} - GH_AW_PROMPT_b2e3fb5c2a5be738_EOF + GH_AW_PROMPT_697463475cfdd779_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -463,6 +477,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smoketesttools outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -612,9 +627,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_fa7eae974840a053_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_84ab1bf6f77385c4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -769,7 +784,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -831,7 +846,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1115,6 +1130,8 @@ jobs: group: "gh-aw-conclusion-smoke-test-tools" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1380,6 +1397,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1598,6 +1617,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1673,6 +1694,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ”ง *Tool validation by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ง Starting tool validation... [{workflow_name}]({run_url}) is checking the agent container tools...\",\"runSuccess\":\"โœ… All tools validated successfully! [{workflow_name}]({run_url}) confirms agent container is ready.\",\"runFailure\":\"โŒ Tool validation failed! [{workflow_name}]({run_url}) detected missing tools: {status}\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/smoke-update-cross-repo-pr.lock.yml b/.github/workflows/smoke-update-cross-repo-pr.lock.yml index 1281468b18c..eefd653b0e4 100644 --- a/.github/workflows/smoke-update-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-update-cross-repo-pr.lock.yml @@ -101,6 +101,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -286,6 +287,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -304,24 +318,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_53cfb9ec20ba1056_EOF' + cat << 'GH_AW_PROMPT_52010c97baa700b8_EOF' - GH_AW_PROMPT_53cfb9ec20ba1056_EOF + GH_AW_PROMPT_52010c97baa700b8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_53cfb9ec20ba1056_EOF' + cat << 'GH_AW_PROMPT_52010c97baa700b8_EOF' Tools: add_comment(max:2), create_issue, push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_53cfb9ec20ba1056_EOF + GH_AW_PROMPT_52010c97baa700b8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_53cfb9ec20ba1056_EOF' + cat << 'GH_AW_PROMPT_52010c97baa700b8_EOF' - GH_AW_PROMPT_53cfb9ec20ba1056_EOF + GH_AW_PROMPT_52010c97baa700b8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_53cfb9ec20ba1056_EOF' + cat << 'GH_AW_PROMPT_52010c97baa700b8_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -363,7 +377,7 @@ jobs: stop immediately and report the limitation rather than spending turns trying to work around it. - GH_AW_PROMPT_53cfb9ec20ba1056_EOF + GH_AW_PROMPT_52010c97baa700b8_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" @@ -371,11 +385,11 @@ jobs: if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md" fi - cat << 'GH_AW_PROMPT_53cfb9ec20ba1056_EOF' + cat << 'GH_AW_PROMPT_52010c97baa700b8_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-update-cross-repo-pr.md}} - GH_AW_PROMPT_53cfb9ec20ba1056_EOF + GH_AW_PROMPT_52010c97baa700b8_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -485,6 +499,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeupdatecrossrepopr outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -654,9 +669,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b46b2a3368a74929_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d1d7b065ffd02987_EOF' {"add_comment":{"hide_older_comments":true,"max":2},"create_issue":{"close_older_issues":true,"expires":2,"labels":["automation","testing"],"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"github-token":"${GH_AW_SECRET_GH_AW_SIDE_REPO_PAT}","if_no_changes":"error","max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"target":"1","target-repo":"github/gh-aw-side-repo"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b46b2a3368a74929_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d1d7b065ffd02987_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -868,7 +883,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -930,7 +945,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1243,6 +1258,8 @@ jobs: group: "gh-aw-conclusion-smoke-update-cross-repo-pr" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1513,6 +1530,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1732,6 +1751,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1807,6 +1828,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“œ *Cross-repo PR update smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ“œ [{workflow_name}]({run_url}) is adding the next Odyssey line to github/gh-aw-side-repo PR #1...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) successfully updated the cross-repo PR with a new Odyssey line!\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) failed to update the cross-repo PR: {status}\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" @@ -1955,6 +1977,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeupdatecrossrepopr steps: - name: Checkout actions folder diff --git a/.github/workflows/smoke-workflow-call-with-inputs.lock.yml b/.github/workflows/smoke-workflow-call-with-inputs.lock.yml index 66fd4c391c0..09f4f6d6d61 100644 --- a/.github/workflows/smoke-workflow-call-with-inputs.lock.yml +++ b/.github/workflows/smoke-workflow-call-with-inputs.lock.yml @@ -130,6 +130,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: artifact_prefix: ${{ steps.artifact-prefix.outputs.prefix }} comment_id: "" @@ -314,6 +315,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -331,23 +345,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6c9240ce81a74961_EOF' + cat << 'GH_AW_PROMPT_40ab435d1282f626_EOF' - GH_AW_PROMPT_6c9240ce81a74961_EOF + GH_AW_PROMPT_40ab435d1282f626_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6c9240ce81a74961_EOF' + cat << 'GH_AW_PROMPT_40ab435d1282f626_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_6c9240ce81a74961_EOF + GH_AW_PROMPT_40ab435d1282f626_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_6c9240ce81a74961_EOF' + cat << 'GH_AW_PROMPT_40ab435d1282f626_EOF' - GH_AW_PROMPT_6c9240ce81a74961_EOF + GH_AW_PROMPT_40ab435d1282f626_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6c9240ce81a74961_EOF' + cat << 'GH_AW_PROMPT_40ab435d1282f626_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -376,13 +390,13 @@ jobs: {{/if}} - GH_AW_PROMPT_6c9240ce81a74961_EOF + GH_AW_PROMPT_40ab435d1282f626_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_6c9240ce81a74961_EOF' + cat << 'GH_AW_PROMPT_40ab435d1282f626_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/smoke-workflow-call-with-inputs.md}} - GH_AW_PROMPT_6c9240ce81a74961_EOF + GH_AW_PROMPT_40ab435d1282f626_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -479,6 +493,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeworkflowcallwithinputs outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -605,9 +620,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0320b07af8528b6b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_86af460004b0a6f0_EOF' {"create_issue":{"labels":["smoke-workflow-call-with-inputs"],"max":1,"title_prefix":"[smoke-workflow-call-with-inputs]"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_0320b07af8528b6b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_86af460004b0a6f0_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -778,7 +793,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -840,7 +855,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1139,6 +1154,8 @@ jobs: group: "gh-aw-conclusion-smoke-workflow-call-with-inputs" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1383,6 +1400,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1599,6 +1618,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1662,6 +1683,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "smoke-workflow-call-with-inputs" diff --git a/.github/workflows/smoke-workflow-call.lock.yml b/.github/workflows/smoke-workflow-call.lock.yml index 1a85119bf22..8fb81522161 100644 --- a/.github/workflows/smoke-workflow-call.lock.yml +++ b/.github/workflows/smoke-workflow-call.lock.yml @@ -133,6 +133,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: artifact_prefix: ${{ steps.artifact-prefix.outputs.prefix }} comment_id: "" @@ -317,6 +318,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -334,20 +348,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_dbe3090c0133b3a7_EOF' + cat << 'GH_AW_PROMPT_d0ac0e9a864d6436_EOF' - GH_AW_PROMPT_dbe3090c0133b3a7_EOF + GH_AW_PROMPT_d0ac0e9a864d6436_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_dbe3090c0133b3a7_EOF' + cat << 'GH_AW_PROMPT_d0ac0e9a864d6436_EOF' Tools: add_comment, missing_tool, missing_data, noop - GH_AW_PROMPT_dbe3090c0133b3a7_EOF + GH_AW_PROMPT_d0ac0e9a864d6436_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_dbe3090c0133b3a7_EOF' + cat << 'GH_AW_PROMPT_d0ac0e9a864d6436_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -376,14 +390,14 @@ jobs: {{/if}} - GH_AW_PROMPT_dbe3090c0133b3a7_EOF + GH_AW_PROMPT_d0ac0e9a864d6436_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_dbe3090c0133b3a7_EOF' + cat << 'GH_AW_PROMPT_d0ac0e9a864d6436_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/smoke-workflow-call.md}} - GH_AW_PROMPT_dbe3090c0133b3a7_EOF + GH_AW_PROMPT_d0ac0e9a864d6436_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -479,6 +493,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: smokeworkflowcall outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -605,9 +620,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ed22ddb806335f16_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_5f0fc79d5296e107_EOF' {"add_comment":{"hide_older_comments":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_ed22ddb806335f16_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_5f0fc79d5296e107_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -762,7 +777,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -824,7 +839,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1128,6 +1143,8 @@ jobs: group: "gh-aw-conclusion-smoke-workflow-call" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1373,6 +1390,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1589,6 +1608,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1653,6 +1674,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ” *workflow_call smoke test by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"appendOnlyComments\":true,\"runStarted\":\"๐Ÿ” [{workflow_name}]({run_url}) is validating workflow_call checkout...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) successfully validated workflow_call checkout.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) failed to validate workflow_call checkout. Check the logs.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/spec-enforcer.lock.yml b/.github/workflows/spec-enforcer.lock.yml index 18cbfecd4c9..481d4c3d9d7 100644 --- a/.github/workflows/spec-enforcer.lock.yml +++ b/.github/workflows/spec-enforcer.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -266,24 +280,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_fab5a5b393f15c03_EOF' + cat << 'GH_AW_PROMPT_087f73bb2443c22f_EOF' - GH_AW_PROMPT_fab5a5b393f15c03_EOF + GH_AW_PROMPT_087f73bb2443c22f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_fab5a5b393f15c03_EOF' + cat << 'GH_AW_PROMPT_087f73bb2443c22f_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_fab5a5b393f15c03_EOF + GH_AW_PROMPT_087f73bb2443c22f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_fab5a5b393f15c03_EOF' + cat << 'GH_AW_PROMPT_087f73bb2443c22f_EOF' - GH_AW_PROMPT_fab5a5b393f15c03_EOF + GH_AW_PROMPT_087f73bb2443c22f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_fab5a5b393f15c03_EOF' + cat << 'GH_AW_PROMPT_087f73bb2443c22f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -312,15 +326,15 @@ jobs: {{/if}} - GH_AW_PROMPT_fab5a5b393f15c03_EOF + GH_AW_PROMPT_087f73bb2443c22f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_fab5a5b393f15c03_EOF' + cat << 'GH_AW_PROMPT_087f73bb2443c22f_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/spec-enforcer.md}} - GH_AW_PROMPT_fab5a5b393f15c03_EOF + GH_AW_PROMPT_087f73bb2443c22f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -429,6 +443,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: specenforcer outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -570,9 +585,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_edc42d532142ff8d_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_34996a96e4181382_EOF' {"create_pull_request":{"draft":false,"expires":72,"labels":["pkg-specifications","testing","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","PI.md","AGENTS.md"],"protected_files_policy":"request_review","title_prefix":"[spec-enforcer] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_edc42d532142ff8d_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_34996a96e4181382_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -743,7 +758,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -788,7 +803,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1075,6 +1090,8 @@ jobs: group: "gh-aw-conclusion-spec-enforcer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1323,6 +1340,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1569,6 +1588,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "spec-enforcer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“‹" @@ -1697,6 +1717,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: specenforcer steps: - name: Checkout actions folder diff --git a/.github/workflows/spec-extractor.lock.yml b/.github/workflows/spec-extractor.lock.yml index c7234276b8e..b1cf040c508 100644 --- a/.github/workflows/spec-extractor.lock.yml +++ b/.github/workflows/spec-extractor.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -240,6 +241,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -256,24 +270,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_10495d7d84bb9704_EOF' + cat << 'GH_AW_PROMPT_66b86f270e04bc40_EOF' - GH_AW_PROMPT_10495d7d84bb9704_EOF + GH_AW_PROMPT_66b86f270e04bc40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_10495d7d84bb9704_EOF' + cat << 'GH_AW_PROMPT_66b86f270e04bc40_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_10495d7d84bb9704_EOF + GH_AW_PROMPT_66b86f270e04bc40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_10495d7d84bb9704_EOF' + cat << 'GH_AW_PROMPT_66b86f270e04bc40_EOF' - GH_AW_PROMPT_10495d7d84bb9704_EOF + GH_AW_PROMPT_66b86f270e04bc40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_10495d7d84bb9704_EOF' + cat << 'GH_AW_PROMPT_66b86f270e04bc40_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,9 +316,9 @@ jobs: {{/if}} - GH_AW_PROMPT_10495d7d84bb9704_EOF + GH_AW_PROMPT_66b86f270e04bc40_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_10495d7d84bb9704_EOF' + cat << 'GH_AW_PROMPT_66b86f270e04bc40_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/go-source-analysis.md}} @@ -315,7 +329,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/spec-extractor.md}} - GH_AW_PROMPT_10495d7d84bb9704_EOF + GH_AW_PROMPT_66b86f270e04bc40_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: specextractor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -565,9 +580,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_55b330b7b35b9c9a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cc2608ff4712c4f8_EOF' {"create_pull_request":{"draft":false,"expires":72,"labels":["pkg-specifications","documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[spec-extractor] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_55b330b7b35b9c9a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cc2608ff4712c4f8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -739,7 +754,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -814,7 +829,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1168,6 +1183,8 @@ jobs: group: "gh-aw-conclusion-spec-extractor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1421,6 +1438,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1688,6 +1707,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "spec-extractor" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“‹" @@ -1816,6 +1836,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: specextractor steps: - name: Checkout actions folder diff --git a/.github/workflows/spec-librarian.lock.yml b/.github/workflows/spec-librarian.lock.yml index 822fe73095a..b7a1e158113 100644 --- a/.github/workflows/spec-librarian.lock.yml +++ b/.github/workflows/spec-librarian.lock.yml @@ -104,6 +104,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -263,20 +277,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e171f12b6d213e7c_EOF' + cat << 'GH_AW_PROMPT_2271e79f65d6b72f_EOF' - GH_AW_PROMPT_e171f12b6d213e7c_EOF + GH_AW_PROMPT_2271e79f65d6b72f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e171f12b6d213e7c_EOF' + cat << 'GH_AW_PROMPT_2271e79f65d6b72f_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_e171f12b6d213e7c_EOF + GH_AW_PROMPT_2271e79f65d6b72f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e171f12b6d213e7c_EOF' + cat << 'GH_AW_PROMPT_2271e79f65d6b72f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -305,9 +319,9 @@ jobs: {{/if}} - GH_AW_PROMPT_e171f12b6d213e7c_EOF + GH_AW_PROMPT_2271e79f65d6b72f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e171f12b6d213e7c_EOF' + cat << 'GH_AW_PROMPT_2271e79f65d6b72f_EOF' {{#runtime-import .github/workflows/shared/go-source-analysis.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -319,7 +333,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/spec-librarian.md}} - GH_AW_PROMPT_e171f12b6d213e7c_EOF + GH_AW_PROMPT_2271e79f65d6b72f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: speclibrarian outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -544,9 +559,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4d4ebe3652fb09a2_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3d9666d127c9d2c1_EOF' {"create_issue":{"assignees":["copilot"],"close_older_issues":true,"expires":72,"labels":["pkg-specifications","review","automation"],"max":1,"title_prefix":"[spec-librarian] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_4d4ebe3652fb09a2_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3d9666d127c9d2c1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -714,7 +729,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -789,7 +804,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1129,6 +1144,8 @@ jobs: group: "gh-aw-conclusion-spec-librarian" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1378,6 +1395,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1625,6 +1644,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1700,6 +1721,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“š *Specification review by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ“š Specification Librarian online! [{workflow_name}]({run_url}) is reviewing all package specifications...\",\"runSuccess\":\"โœ… Specification review complete! [{workflow_name}]({run_url}) has audited all package specs. Report delivered! ๐Ÿ“‹\",\"runFailure\":\"๐Ÿ“š Specification review failed! [{workflow_name}]({run_url}) {status}.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "spec-librarian" diff --git a/.github/workflows/stale-pr-cleanup.lock.yml b/.github/workflows/stale-pr-cleanup.lock.yml index 22722ae7d58..759cfacce78 100644 --- a/.github/workflows/stale-pr-cleanup.lock.yml +++ b/.github/workflows/stale-pr-cleanup.lock.yml @@ -93,6 +93,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -234,6 +235,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -250,20 +264,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6f9fe75724f495db_EOF' + cat << 'GH_AW_PROMPT_6b46b69b9019f1bc_EOF' - GH_AW_PROMPT_6f9fe75724f495db_EOF + GH_AW_PROMPT_6b46b69b9019f1bc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6f9fe75724f495db_EOF' + cat << 'GH_AW_PROMPT_6b46b69b9019f1bc_EOF' Tools: add_comment(max:30), close_pull_request(max:20), add_labels(max:30), missing_tool, missing_data, noop - GH_AW_PROMPT_6f9fe75724f495db_EOF + GH_AW_PROMPT_6b46b69b9019f1bc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6f9fe75724f495db_EOF' + cat << 'GH_AW_PROMPT_6b46b69b9019f1bc_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -292,14 +306,14 @@ jobs: {{/if}} - GH_AW_PROMPT_6f9fe75724f495db_EOF + GH_AW_PROMPT_6b46b69b9019f1bc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_6f9fe75724f495db_EOF' + cat << 'GH_AW_PROMPT_6b46b69b9019f1bc_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/stale-pr-cleanup.md}} - GH_AW_PROMPT_6f9fe75724f495db_EOF + GH_AW_PROMPT_6b46b69b9019f1bc_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -397,6 +411,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: staleprcleanup outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -521,9 +536,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e273a5a4189861e3_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_2d0313cdc98bec78_EOF' {"add_comment":{"max":30},"add_labels":{"max":30},"close_pull_request":{"max":20,"target":"*"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e273a5a4189861e3_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_2d0313cdc98bec78_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -715,7 +730,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -761,7 +776,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1076,6 +1091,8 @@ jobs: group: "gh-aw-conclusion-stale-pr-cleanup" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1320,6 +1337,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1587,6 +1606,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"runStarted\":\"๐Ÿงน Starting stale PR cleanup... [{workflow_name}]({run_url}) is reviewing PRs open 30+ days\",\"runSuccess\":\"โœ… Stale PR cleanup complete! [{workflow_name}]({run_url}) has triaged the 30+ day PR backlog.\",\"runFailure\":\"โŒ Stale PR cleanup failed! [{workflow_name}]({run_url}) {status}. Some PRs may not be processed.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 31777f5102f..696ed2bd42e 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -110,6 +110,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -257,6 +258,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -274,23 +288,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_941289e52d5177d0_EOF' + cat << 'GH_AW_PROMPT_93444f7baf3c38c9_EOF' - GH_AW_PROMPT_941289e52d5177d0_EOF + GH_AW_PROMPT_93444f7baf3c38c9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_941289e52d5177d0_EOF' + cat << 'GH_AW_PROMPT_93444f7baf3c38c9_EOF' Tools: add_comment(max:5), create_issue(max:10), create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_941289e52d5177d0_EOF + GH_AW_PROMPT_93444f7baf3c38c9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_941289e52d5177d0_EOF' + cat << 'GH_AW_PROMPT_93444f7baf3c38c9_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -319,9 +333,9 @@ jobs: {{/if}} - GH_AW_PROMPT_941289e52d5177d0_EOF + GH_AW_PROMPT_93444f7baf3c38c9_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_941289e52d5177d0_EOF' + cat << 'GH_AW_PROMPT_93444f7baf3c38c9_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/skills/jqschema/SKILL.md}} @@ -330,7 +344,7 @@ jobs: {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/stale-repo-identifier.md}} - GH_AW_PROMPT_941289e52d5177d0_EOF + GH_AW_PROMPT_93444f7baf3c38c9_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -437,6 +451,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: stalerepoidentifier outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -655,9 +670,9 @@ jobs: mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_bae9b85ae03d3272_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b984a4067e1bcbe8_EOF' {"add_comment":{"max":5},"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[stale-repo-identifier] "},"create_issue":{"expires":48,"group":true,"labels":["stale-repository","automated-analysis","cookie"],"max":10,"title_prefix":"[Stale Repository] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_artifact":{"allowed-paths":["**/*.png","**/*.jpg","**/*.svg"],"max-size-bytes":104857600,"max-uploads":5,"retention-days":30,"skip-archive":true},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_bae9b85ae03d3272_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b984a4067e1bcbe8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -889,7 +904,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -935,7 +950,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1272,6 +1287,8 @@ jobs: group: "gh-aw-conclusion-stale-repo-identifier-${{ inputs.organization || github.run_id }}" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1521,6 +1538,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1784,6 +1803,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUTS_STAGED: "true" GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ” *Analysis by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ” Stale Repository Identifier starting! [{workflow_name}]({run_url}) is analyzing repository activity...\",\"runSuccess\":\"โœ… Analysis complete! [{workflow_name}]({run_url}) has finished analyzing stale repositories.\",\"runFailure\":\"โš ๏ธ Analysis interrupted! [{workflow_name}]({run_url}) {status}.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} @@ -1891,6 +1911,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: stalerepoidentifier steps: - name: Checkout actions folder @@ -1946,6 +1967,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index 2e472ac292a..d897dc3dbfd 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -246,6 +247,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -263,21 +277,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_7fc77d968a648926_EOF' + cat << 'GH_AW_PROMPT_fb6afc22ada5b90c_EOF' - GH_AW_PROMPT_7fc77d968a648926_EOF + GH_AW_PROMPT_fb6afc22ada5b90c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_7fc77d968a648926_EOF' + cat << 'GH_AW_PROMPT_fb6afc22ada5b90c_EOF' Tools: add_comment(max:3), create_issue(max:4), missing_tool, missing_data, noop - GH_AW_PROMPT_7fc77d968a648926_EOF + GH_AW_PROMPT_fb6afc22ada5b90c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_7fc77d968a648926_EOF' + cat << 'GH_AW_PROMPT_fb6afc22ada5b90c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -306,16 +320,16 @@ jobs: {{/if}} - GH_AW_PROMPT_7fc77d968a648926_EOF + GH_AW_PROMPT_fb6afc22ada5b90c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_7fc77d968a648926_EOF' + cat << 'GH_AW_PROMPT_fb6afc22ada5b90c_EOF' **IMPORTANT**: When analyzing agentic workflows, use the `agentic-workflows` tool to read workflow files. {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/static-analysis-report.md}} - GH_AW_PROMPT_7fc77d968a648926_EOF + GH_AW_PROMPT_fb6afc22ada5b90c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -422,6 +436,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: staticanalysisreport outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -649,9 +664,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e5543ed02275a537_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d960ff23d806e2c6_EOF' {"add_comment":{"max":3},"create_issue":{"close_older_issues":true,"expires":168,"labels":["security","automation"],"max":4,"title_prefix":"[static-analysis] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_e5543ed02275a537_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d960ff23d806e2c6_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -841,7 +856,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -904,7 +919,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_c6943b0e725b5f53_EOF + GH_AW_MCP_CONFIG_f194a3d22c6f07b2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1285,6 +1300,8 @@ jobs: group: "gh-aw-conclusion-static-analysis-report" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1531,6 +1548,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1800,6 +1819,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“Š" GH_AW_WORKFLOW_ID: "static-analysis-report" @@ -1900,6 +1920,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: staticanalysisreport steps: - name: Checkout actions folder diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index 296a00048a1..c2d75e9ba13 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,21 +271,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_25c6537fc105e8c2_EOF' + cat << 'GH_AW_PROMPT_daf1498b6fbffef2_EOF' - GH_AW_PROMPT_25c6537fc105e8c2_EOF + GH_AW_PROMPT_daf1498b6fbffef2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_25c6537fc105e8c2_EOF' + cat << 'GH_AW_PROMPT_daf1498b6fbffef2_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_25c6537fc105e8c2_EOF + GH_AW_PROMPT_daf1498b6fbffef2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_25c6537fc105e8c2_EOF' + cat << 'GH_AW_PROMPT_daf1498b6fbffef2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,14 +314,14 @@ jobs: {{/if}} - GH_AW_PROMPT_25c6537fc105e8c2_EOF + GH_AW_PROMPT_daf1498b6fbffef2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_25c6537fc105e8c2_EOF' + cat << 'GH_AW_PROMPT_daf1498b6fbffef2_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/step-name-alignment.md}} - GH_AW_PROMPT_25c6537fc105e8c2_EOF + GH_AW_PROMPT_daf1498b6fbffef2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: stepnamealignment outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -556,9 +571,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f68f76499a32c049_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_764db95e01398a81_EOF' {"create_issue":{"expires":48,"labels":["maintenance","step-naming","cookie"],"max":1,"title_prefix":"[step-names] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_f68f76499a32c049_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_764db95e01398a81_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -724,7 +739,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -769,7 +784,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1171,6 +1186,8 @@ jobs: group: "gh-aw-conclusion-step-name-alignment" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1417,6 +1434,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1685,6 +1704,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“‹" GH_AW_WORKFLOW_ID: "step-name-alignment" @@ -1783,6 +1803,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: stepnamealignment steps: - name: Checkout actions folder diff --git a/.github/workflows/sub-issue-closer.lock.yml b/.github/workflows/sub-issue-closer.lock.yml index fb1916a6399..7abdc07af48 100644 --- a/.github/workflows/sub-issue-closer.lock.yml +++ b/.github/workflows/sub-issue-closer.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,20 +271,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_ad97978fc6c3ae97_EOF' + cat << 'GH_AW_PROMPT_7af96883bcb366b1_EOF' - GH_AW_PROMPT_ad97978fc6c3ae97_EOF + GH_AW_PROMPT_7af96883bcb366b1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_ad97978fc6c3ae97_EOF' + cat << 'GH_AW_PROMPT_7af96883bcb366b1_EOF' Tools: add_comment(max:20), update_issue(max:20), missing_tool, missing_data, noop - GH_AW_PROMPT_ad97978fc6c3ae97_EOF + GH_AW_PROMPT_7af96883bcb366b1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_ad97978fc6c3ae97_EOF' + cat << 'GH_AW_PROMPT_7af96883bcb366b1_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,14 +313,14 @@ jobs: {{/if}} - GH_AW_PROMPT_ad97978fc6c3ae97_EOF + GH_AW_PROMPT_7af96883bcb366b1_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_ad97978fc6c3ae97_EOF' + cat << 'GH_AW_PROMPT_7af96883bcb366b1_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/sub-issue-closer.md}} - GH_AW_PROMPT_ad97978fc6c3ae97_EOF + GH_AW_PROMPT_7af96883bcb366b1_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -401,6 +415,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: subissuecloser outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -525,9 +540,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_7cfb541adc3ca7e3_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b328877d02efaf3f_EOF' {"add_comment":{"max":20,"target":"*"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_issue":{"allow_body":true,"allow_status":true,"max":20,"target":"*"}} - GH_AW_SAFE_OUTPUTS_CONFIG_7cfb541adc3ca7e3_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_b328877d02efaf3f_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -735,7 +750,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -781,7 +796,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1077,6 +1092,8 @@ jobs: group: "gh-aw-conclusion-sub-issue-closer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1320,6 +1337,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1586,6 +1605,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "sub-issue-closer" diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index 9044d32caf5..efe2c2901e9 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,21 +273,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e869fcbe1bee3ea4_EOF' + cat << 'GH_AW_PROMPT_62b256b669e02cc4_EOF' - GH_AW_PROMPT_e869fcbe1bee3ea4_EOF + GH_AW_PROMPT_62b256b669e02cc4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e869fcbe1bee3ea4_EOF' + cat << 'GH_AW_PROMPT_62b256b669e02cc4_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_e869fcbe1bee3ea4_EOF + GH_AW_PROMPT_62b256b669e02cc4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e869fcbe1bee3ea4_EOF' + cat << 'GH_AW_PROMPT_62b256b669e02cc4_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,15 +316,15 @@ jobs: {{/if}} - GH_AW_PROMPT_e869fcbe1bee3ea4_EOF + GH_AW_PROMPT_62b256b669e02cc4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e869fcbe1bee3ea4_EOF' + cat << 'GH_AW_PROMPT_62b256b669e02cc4_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/super-linter.md}} - GH_AW_PROMPT_e869fcbe1bee3ea4_EOF + GH_AW_PROMPT_62b256b669e02cc4_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: superlinter outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -568,9 +583,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ab8f2f9166c24984_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_e8492ca934ab9aea_EOF' {"create_issue":{"expires":48,"labels":["automation","code-quality","cookie"],"max":1,"title_prefix":"[linter] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_ab8f2f9166c24984_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_e8492ca934ab9aea_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -741,7 +756,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -803,7 +818,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1105,6 +1120,8 @@ jobs: group: "gh-aw-conclusion-super-linter" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1351,6 +1368,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1616,6 +1635,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "super-linter" @@ -1775,6 +1795,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: superlinter steps: - name: Checkout actions folder diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 0a104b0f5d9..0fe3872e0fe 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -245,6 +246,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -262,25 +276,25 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_50952601c102d6db_EOF' + cat << 'GH_AW_PROMPT_93debf60ff558fd0_EOF' - GH_AW_PROMPT_50952601c102d6db_EOF + GH_AW_PROMPT_93debf60ff558fd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_50952601c102d6db_EOF' + cat << 'GH_AW_PROMPT_93debf60ff558fd0_EOF' Tools: add_comment, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_50952601c102d6db_EOF + GH_AW_PROMPT_93debf60ff558fd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_50952601c102d6db_EOF' + cat << 'GH_AW_PROMPT_93debf60ff558fd0_EOF' - GH_AW_PROMPT_50952601c102d6db_EOF + GH_AW_PROMPT_93debf60ff558fd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_50952601c102d6db_EOF' + cat << 'GH_AW_PROMPT_93debf60ff558fd0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -309,16 +323,16 @@ jobs: {{/if}} - GH_AW_PROMPT_50952601c102d6db_EOF + GH_AW_PROMPT_93debf60ff558fd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_50952601c102d6db_EOF' + cat << 'GH_AW_PROMPT_93debf60ff558fd0_EOF' {{#runtime-import .github/skills/documentation/SKILL.md}} {{#runtime-import .github/agents/technical-doc-writer.agent.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/technical-doc-writer.md}} - GH_AW_PROMPT_50952601c102d6db_EOF + GH_AW_PROMPT_93debf60ff558fd0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -432,6 +446,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: technicaldocwriter outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -612,9 +627,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/upload-artifacts" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_975df1547504ed30_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ce664faf4fe737ce_EOF' {"add_comment":{"max":1},"create_pull_request":{"draft":false,"expires":48,"labels":["documentation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{},"upload_artifact":{"max-size-bytes":104857600,"max-uploads":1,"retention-days":30}} - GH_AW_SAFE_OUTPUTS_CONFIG_975df1547504ed30_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_ce664faf4fe737ce_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -809,7 +824,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -855,7 +870,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1195,6 +1210,8 @@ jobs: group: "gh-aw-conclusion-technical-doc-writer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1448,6 +1465,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1704,6 +1723,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|master" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1804,6 +1825,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ“ *Documentation by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"โœ๏ธ The Technical Writer begins! [{workflow_name}]({run_url}) is documenting this {event_type}...\",\"runSuccess\":\"๐Ÿ“ Documentation complete! [{workflow_name}]({run_url}) has written the docs. Clear as crystal! โœจ\",\"runFailure\":\"โœ๏ธ Writer's block! [{workflow_name}]({run_url}) {status}. The page remains blank...\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" @@ -1943,6 +1965,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: technicaldocwriter steps: - name: Checkout actions folder diff --git a/.github/workflows/terminal-stylist.lock.yml b/.github/workflows/terminal-stylist.lock.yml index 76df830f1af..f7a080b6908 100644 --- a/.github/workflows/terminal-stylist.lock.yml +++ b/.github/workflows/terminal-stylist.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -263,20 +277,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_6e134f8045b5e085_EOF' + cat << 'GH_AW_PROMPT_109a7634698abcd6_EOF' - GH_AW_PROMPT_6e134f8045b5e085_EOF + GH_AW_PROMPT_109a7634698abcd6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_6e134f8045b5e085_EOF' + cat << 'GH_AW_PROMPT_109a7634698abcd6_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_6e134f8045b5e085_EOF + GH_AW_PROMPT_109a7634698abcd6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_6e134f8045b5e085_EOF' + cat << 'GH_AW_PROMPT_109a7634698abcd6_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -305,9 +319,9 @@ jobs: {{/if}} - GH_AW_PROMPT_6e134f8045b5e085_EOF + GH_AW_PROMPT_109a7634698abcd6_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_6e134f8045b5e085_EOF' + cat << 'GH_AW_PROMPT_109a7634698abcd6_EOF' {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -317,7 +331,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/terminal-stylist.md}} - GH_AW_PROMPT_6e134f8045b5e085_EOF + GH_AW_PROMPT_109a7634698abcd6_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -412,6 +426,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: terminalstylist outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -536,9 +551,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a8f57af169561e62_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_95643ec42dbcd554_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[terminal-stylist] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_a8f57af169561e62_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_95643ec42dbcd554_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -696,7 +711,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e038212cc49aba08_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -771,7 +786,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e038212cc49aba08_EOF + GH_AW_MCP_CONFIG_81258bd6aadd79ea_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1067,6 +1082,8 @@ jobs: group: "gh-aw-conclusion-terminal-stylist" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1312,6 +1329,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1578,6 +1597,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ’„" GH_AW_WORKFLOW_ID: "terminal-stylist" diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index 88e4a6efe5f..73d20dcea0a 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -91,6 +91,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -238,6 +239,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -254,24 +268,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e185045268669e02_EOF' + cat << 'GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF' - GH_AW_PROMPT_e185045268669e02_EOF + GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e185045268669e02_EOF' + cat << 'GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_e185045268669e02_EOF + GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_e185045268669e02_EOF' + cat << 'GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF' - GH_AW_PROMPT_e185045268669e02_EOF + GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e185045268669e02_EOF' + cat << 'GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,14 +314,14 @@ jobs: {{/if}} - GH_AW_PROMPT_e185045268669e02_EOF + GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e185045268669e02_EOF' + cat << 'GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/test-create-pr-error-handling.md}} - GH_AW_PROMPT_e185045268669e02_EOF + GH_AW_PROMPT_9f7bc8d1498f9dd0_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -405,6 +419,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: testcreateprerrorhandling outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -550,9 +565,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_9c63a923daa11a04_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_86bf8f9eff867d5f_EOF' {"create_pull_request":{"expires":48,"labels":["test"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","CLAUDE.md","AGENTS.md"],"protected_files_policy":"request_review"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_9c63a923daa11a04_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_86bf8f9eff867d5f_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -726,7 +741,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_d39699d1b063f094_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -786,7 +801,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_d39699d1b063f094_EOF + GH_AW_MCP_CONFIG_127079b3ae1cd520_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1152,6 +1167,8 @@ jobs: group: "gh-aw-conclusion-test-create-pr-error-handling" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1400,6 +1417,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1635,6 +1654,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "test-create-pr-error-handling" @@ -1762,6 +1782,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: testcreateprerrorhandling steps: - name: Checkout actions folder diff --git a/.github/workflows/test-dispatcher.lock.yml b/.github/workflows/test-dispatcher.lock.yml index f6015ec6e12..c048b4a351f 100644 --- a/.github/workflows/test-dispatcher.lock.yml +++ b/.github/workflows/test-dispatcher.lock.yml @@ -88,6 +88,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -235,6 +236,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -251,20 +265,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_589f0f9945564868_EOF' + cat << 'GH_AW_PROMPT_d654c235ffbd4157_EOF' - GH_AW_PROMPT_589f0f9945564868_EOF + GH_AW_PROMPT_d654c235ffbd4157_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_589f0f9945564868_EOF' + cat << 'GH_AW_PROMPT_d654c235ffbd4157_EOF' Tools: dispatch_workflow, missing_tool, missing_data, noop - GH_AW_PROMPT_589f0f9945564868_EOF + GH_AW_PROMPT_d654c235ffbd4157_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_589f0f9945564868_EOF' + cat << 'GH_AW_PROMPT_d654c235ffbd4157_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -293,14 +307,14 @@ jobs: {{/if}} - GH_AW_PROMPT_589f0f9945564868_EOF + GH_AW_PROMPT_d654c235ffbd4157_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_589f0f9945564868_EOF' + cat << 'GH_AW_PROMPT_d654c235ffbd4157_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/test-dispatcher.md}} - GH_AW_PROMPT_589f0f9945564868_EOF + GH_AW_PROMPT_d654c235ffbd4157_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -391,6 +405,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: testdispatcher outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -515,9 +530,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_03cb91b960b61ec8_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c3c37646c1200c03_EOF' {"create_report_incomplete_issue":{},"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"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_03cb91b960b61ec8_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c3c37646c1200c03_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -689,7 +704,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -751,7 +766,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1032,6 +1047,8 @@ jobs: group: "gh-aw-conclusion-test-dispatcher" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1275,6 +1292,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1508,6 +1527,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "test-dispatcher" diff --git a/.github/workflows/test-project-url-default.lock.yml b/.github/workflows/test-project-url-default.lock.yml index 7e50f0d94b5..51624d73ce8 100644 --- a/.github/workflows/test-project-url-default.lock.yml +++ b/.github/workflows/test-project-url-default.lock.yml @@ -89,6 +89,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -236,6 +237,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -252,20 +266,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_fea56f61f794ceed_EOF' + cat << 'GH_AW_PROMPT_0c2806f05d76db6f_EOF' - GH_AW_PROMPT_fea56f61f794ceed_EOF + GH_AW_PROMPT_0c2806f05d76db6f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_fea56f61f794ceed_EOF' + cat << 'GH_AW_PROMPT_0c2806f05d76db6f_EOF' Tools: update_project(max:5), create_project_status_update, missing_tool, missing_data, noop - GH_AW_PROMPT_fea56f61f794ceed_EOF + GH_AW_PROMPT_0c2806f05d76db6f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_fea56f61f794ceed_EOF' + cat << 'GH_AW_PROMPT_0c2806f05d76db6f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -294,14 +308,14 @@ jobs: {{/if}} - GH_AW_PROMPT_fea56f61f794ceed_EOF + GH_AW_PROMPT_0c2806f05d76db6f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_fea56f61f794ceed_EOF' + cat << 'GH_AW_PROMPT_0c2806f05d76db6f_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/test-project-url-default.md}} - GH_AW_PROMPT_fea56f61f794ceed_EOF + GH_AW_PROMPT_0c2806f05d76db6f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -391,6 +405,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: testprojecturldefault outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -515,9 +530,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_fb6b52c0dfe5c9d7_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_382c0b3c61dd55d3_EOF' {"create_project_status_update":{"max":1,"project":"https://github.com/orgs/\u003cORG\u003e/projects/\u003cNUMBER\u003e"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_project":{"max":5,"project":"https://github.com/orgs/\u003cORG\u003e/projects/\u003cNUMBER\u003e"}} - GH_AW_SAFE_OUTPUTS_CONFIG_fb6b52c0dfe5c9d7_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_382c0b3c61dd55d3_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -734,7 +749,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -796,7 +811,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1078,6 +1093,8 @@ jobs: group: "gh-aw-conclusion-test-project-url-default" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1321,6 +1338,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1555,6 +1574,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "test-project-url-default" diff --git a/.github/workflows/test-quality-sentinel.lock.yml b/.github/workflows/test-quality-sentinel.lock.yml index f53ca5e9d6d..ad753804263 100644 --- a/.github/workflows/test-quality-sentinel.lock.yml +++ b/.github/workflows/test-quality-sentinel.lock.yml @@ -98,6 +98,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -283,6 +284,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -303,20 +317,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_89cde7e8e5fa3573_EOF' + cat << 'GH_AW_PROMPT_876bf5b2862d7918_EOF' - GH_AW_PROMPT_89cde7e8e5fa3573_EOF + GH_AW_PROMPT_876bf5b2862d7918_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_89cde7e8e5fa3573_EOF' + cat << 'GH_AW_PROMPT_876bf5b2862d7918_EOF' Tools: add_comment, submit_pull_request_review, missing_tool, missing_data, noop - GH_AW_PROMPT_89cde7e8e5fa3573_EOF + GH_AW_PROMPT_876bf5b2862d7918_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_89cde7e8e5fa3573_EOF' + cat << 'GH_AW_PROMPT_876bf5b2862d7918_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -345,17 +359,17 @@ jobs: {{/if}} - GH_AW_PROMPT_89cde7e8e5fa3573_EOF + GH_AW_PROMPT_876bf5b2862d7918_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" fi - cat << 'GH_AW_PROMPT_89cde7e8e5fa3573_EOF' + cat << 'GH_AW_PROMPT_876bf5b2862d7918_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/test-quality-sentinel.md}} - GH_AW_PROMPT_89cde7e8e5fa3573_EOF + GH_AW_PROMPT_876bf5b2862d7918_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -464,6 +478,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: testqualitysentinel outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -595,9 +610,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_52f396868d116d70_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a606785ca7ba9ac5_EOF' {"add_comment":{"hide_older_comments":true,"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"submit_pull_request_review":{"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_52f396868d116d70_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a606785ca7ba9ac5_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -776,7 +791,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -822,7 +837,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1145,6 +1160,8 @@ jobs: group: "gh-aw-conclusion-test-quality-sentinel" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1410,6 +1427,8 @@ jobs: permissions: contents: read copilot-requests: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1627,6 +1646,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1702,6 +1723,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿงช *Test quality analysis by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ”ฌ [{workflow_name}]({run_url}) is analyzing test quality on this {event_type}...\",\"runSuccess\":\"โœ… [{workflow_name}]({run_url}) completed test quality analysis.\",\"runFailure\":\"โŒ [{workflow_name}]({run_url}) {status} during test quality analysis.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" diff --git a/.github/workflows/test-workflow.lock.yml b/.github/workflows/test-workflow.lock.yml index 5263f04ef91..34b74251277 100644 --- a/.github/workflows/test-workflow.lock.yml +++ b/.github/workflows/test-workflow.lock.yml @@ -92,6 +92,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -239,6 +240,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -255,23 +269,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_9ce312d8ae78d29f_EOF' + cat << 'GH_AW_PROMPT_07712a7905774cef_EOF' - GH_AW_PROMPT_9ce312d8ae78d29f_EOF + GH_AW_PROMPT_07712a7905774cef_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_9ce312d8ae78d29f_EOF' + cat << 'GH_AW_PROMPT_07712a7905774cef_EOF' Tools: create_issue - GH_AW_PROMPT_9ce312d8ae78d29f_EOF + GH_AW_PROMPT_07712a7905774cef_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_auto_create_issue.md" - cat << 'GH_AW_PROMPT_9ce312d8ae78d29f_EOF' + cat << 'GH_AW_PROMPT_07712a7905774cef_EOF' - GH_AW_PROMPT_9ce312d8ae78d29f_EOF + GH_AW_PROMPT_07712a7905774cef_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_9ce312d8ae78d29f_EOF' + cat << 'GH_AW_PROMPT_07712a7905774cef_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -300,13 +314,13 @@ jobs: {{/if}} - GH_AW_PROMPT_9ce312d8ae78d29f_EOF + GH_AW_PROMPT_07712a7905774cef_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_9ce312d8ae78d29f_EOF' + cat << 'GH_AW_PROMPT_07712a7905774cef_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/test-workflow.md}} - GH_AW_PROMPT_9ce312d8ae78d29f_EOF + GH_AW_PROMPT_07712a7905774cef_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -396,6 +410,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: testworkflow outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -520,9 +535,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_be051d861f2b2670_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_14bc8a0ee0ad9717_EOF' {"create_issue":{"labels":["test-workflow"],"max":1,"title_prefix":"[test-workflow]"}} - GH_AW_SAFE_OUTPUTS_CONFIG_be051d861f2b2670_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_14bc8a0ee0ad9717_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -619,7 +634,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -681,7 +696,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -960,6 +975,8 @@ jobs: group: "gh-aw-conclusion-test-workflow" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1139,6 +1156,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงช" GH_AW_WORKFLOW_ID: "test-workflow" GH_AW_WORKFLOW_NAME: "Test Workflow" diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index 2ab211d9fe0..a2af05eabee 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -108,6 +108,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -298,6 +299,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -315,24 +329,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_866525c795568048_EOF' + cat << 'GH_AW_PROMPT_4234b4df9656eb86_EOF' - GH_AW_PROMPT_866525c795568048_EOF + GH_AW_PROMPT_4234b4df9656eb86_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_866525c795568048_EOF' + cat << 'GH_AW_PROMPT_4234b4df9656eb86_EOF' Tools: create_pull_request, push_to_pull_request_branch, missing_tool, missing_data, noop - GH_AW_PROMPT_866525c795568048_EOF + GH_AW_PROMPT_4234b4df9656eb86_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_push_to_pr_branch.md" - cat << 'GH_AW_PROMPT_866525c795568048_EOF' + cat << 'GH_AW_PROMPT_4234b4df9656eb86_EOF' - GH_AW_PROMPT_866525c795568048_EOF + GH_AW_PROMPT_4234b4df9656eb86_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_866525c795568048_EOF' + cat << 'GH_AW_PROMPT_4234b4df9656eb86_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -361,7 +375,7 @@ jobs: {{/if}} - GH_AW_PROMPT_866525c795568048_EOF + GH_AW_PROMPT_4234b4df9656eb86_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md" @@ -369,12 +383,12 @@ jobs: if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_push_to_pr_branch_guidance.md" fi - cat << 'GH_AW_PROMPT_866525c795568048_EOF' + cat << 'GH_AW_PROMPT_4234b4df9656eb86_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/tidy.md}} - GH_AW_PROMPT_866525c795568048_EOF + GH_AW_PROMPT_4234b4df9656eb86_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -472,6 +486,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: tidy outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -610,9 +625,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_68dd83ec684cb65e_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cf5f7b84c34f6a15_EOF' {"create_pull_request":{"draft":false,"expires":48,"labels":["automation","maintenance"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[tidy] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_to_pull_request_branch":{"if_no_changes":"warn","max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_68dd83ec684cb65e_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cf5f7b84c34f6a15_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -803,7 +818,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -849,7 +864,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1174,6 +1189,8 @@ jobs: group: "gh-aw-conclusion-tidy" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1440,6 +1457,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1686,6 +1705,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1761,6 +1782,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿงน" GH_AW_WORKFLOW_ID: "tidy" diff --git a/.github/workflows/typist.lock.yml b/.github/workflows/typist.lock.yml index dee9ca7600f..74daae10e38 100644 --- a/.github/workflows/typist.lock.yml +++ b/.github/workflows/typist.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -249,6 +250,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -300,20 +314,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_fb6013acecd9a442_EOF' + cat << 'GH_AW_PROMPT_a1835ce2d57b5942_EOF' - GH_AW_PROMPT_fb6013acecd9a442_EOF + GH_AW_PROMPT_a1835ce2d57b5942_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_fb6013acecd9a442_EOF' + cat << 'GH_AW_PROMPT_a1835ce2d57b5942_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_fb6013acecd9a442_EOF + GH_AW_PROMPT_a1835ce2d57b5942_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_fb6013acecd9a442_EOF' + cat << 'GH_AW_PROMPT_a1835ce2d57b5942_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -342,9 +356,9 @@ jobs: {{/if}} - GH_AW_PROMPT_fb6013acecd9a442_EOF + GH_AW_PROMPT_a1835ce2d57b5942_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_fb6013acecd9a442_EOF' + cat << 'GH_AW_PROMPT_a1835ce2d57b5942_EOF' {{#runtime-import .github/workflows/shared/mcp/serena-go.md}} {{#runtime-import .github/workflows/shared/otlp.md}} @@ -354,7 +368,7 @@ jobs: Serena is enabled for **["go"]** in `__GH_AW_GITHUB_WORKSPACE__`. Start by calling `activate_project` with that workspace path, then prefer Serena semantic tools for symbol lookup, references, docs, diagnostics, and structured edits. {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/typist.md}} - GH_AW_PROMPT_fb6013acecd9a442_EOF + GH_AW_PROMPT_a1835ce2d57b5942_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -454,6 +468,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: typist outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -581,9 +596,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_0e84d4fd941a8e88_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_dc2be56fca693df0_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[typist] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_0e84d4fd941a8e88_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_dc2be56fca693df0_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -740,7 +755,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_77337373ac920130_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -811,7 +826,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_77337373ac920130_EOF + GH_AW_MCP_CONFIG_1a07a17ae491fc76_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1192,6 +1207,8 @@ jobs: group: "gh-aw-conclusion-typist" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1437,6 +1454,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1695,6 +1714,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1783,6 +1804,7 @@ jobs: GH_AW_ENGINE_ID: "claude" GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "โœ๏ธ" GH_AW_WORKFLOW_ID: "typist" diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 7fd3934222f..50957461381 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -101,6 +101,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -250,6 +251,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -266,23 +280,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_e81871b1236ea3a7_EOF' + cat << 'GH_AW_PROMPT_511c1530951e70a4_EOF' - GH_AW_PROMPT_e81871b1236ea3a7_EOF + GH_AW_PROMPT_511c1530951e70a4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_e81871b1236ea3a7_EOF' + cat << 'GH_AW_PROMPT_511c1530951e70a4_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_e81871b1236ea3a7_EOF + GH_AW_PROMPT_511c1530951e70a4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_e81871b1236ea3a7_EOF' + cat << 'GH_AW_PROMPT_511c1530951e70a4_EOF' - GH_AW_PROMPT_e81871b1236ea3a7_EOF + GH_AW_PROMPT_511c1530951e70a4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_e81871b1236ea3a7_EOF' + cat << 'GH_AW_PROMPT_511c1530951e70a4_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -311,16 +325,16 @@ jobs: {{/if}} - GH_AW_PROMPT_e81871b1236ea3a7_EOF + GH_AW_PROMPT_511c1530951e70a4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_e81871b1236ea3a7_EOF' + cat << 'GH_AW_PROMPT_511c1530951e70a4_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/ubuntu-image-analyzer.md}} - GH_AW_PROMPT_e81871b1236ea3a7_EOF + GH_AW_PROMPT_511c1530951e70a4_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -419,6 +433,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: ubuntuimageanalyzer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -543,9 +558,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_50caf522db6a2e4a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_cd58761e38039007_EOF' {"create_pull_request":{"expires":48,"labels":["documentation","automation","infrastructure"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[ubuntu-image] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_50caf522db6a2e4a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_cd58761e38039007_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -717,7 +732,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -763,7 +778,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1088,6 +1103,8 @@ jobs: group: "gh-aw-conclusion-ubuntu-image-analyzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1338,6 +1355,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1584,6 +1603,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' }} matched_command: '' @@ -1660,6 +1681,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "ubuntu-image-analyzer" GH_AW_WORKFLOW_EMOJI: "๐Ÿง" diff --git a/.github/workflows/uk-ai-operational-resilience.lock.yml b/.github/workflows/uk-ai-operational-resilience.lock.yml index e35c66d5990..04e18d3d163 100644 --- a/.github/workflows/uk-ai-operational-resilience.lock.yml +++ b/.github/workflows/uk-ai-operational-resilience.lock.yml @@ -106,6 +106,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -252,6 +253,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -268,20 +282,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_f4d5c16342d9c7f7_EOF' + cat << 'GH_AW_PROMPT_815621e6defcfc2e_EOF' - GH_AW_PROMPT_f4d5c16342d9c7f7_EOF + GH_AW_PROMPT_815621e6defcfc2e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_f4d5c16342d9c7f7_EOF' + cat << 'GH_AW_PROMPT_815621e6defcfc2e_EOF' Tools: create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_f4d5c16342d9c7f7_EOF + GH_AW_PROMPT_815621e6defcfc2e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_f4d5c16342d9c7f7_EOF' + cat << 'GH_AW_PROMPT_815621e6defcfc2e_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -310,15 +324,15 @@ jobs: {{/if}} - GH_AW_PROMPT_f4d5c16342d9c7f7_EOF + GH_AW_PROMPT_815621e6defcfc2e_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_f4d5c16342d9c7f7_EOF' + cat << 'GH_AW_PROMPT_815621e6defcfc2e_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/uk-ai-operational-resilience.md}} - GH_AW_PROMPT_f4d5c16342d9c7f7_EOF + GH_AW_PROMPT_815621e6defcfc2e_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -415,6 +429,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: ukaioperationalresilience outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -545,9 +560,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c64716c36f495e89_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d2b9fd86b7645ef1_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":72,"fallback_to_issue":true,"max":1,"title_prefix":"[uk ai resilience] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_c64716c36f495e89_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_d2b9fd86b7645ef1_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -705,7 +720,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -751,7 +766,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1068,6 +1083,8 @@ jobs: group: "gh-aw-conclusion-uk-ai-operational-resilience" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1318,6 +1335,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1584,6 +1603,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "uk-ai-operational-resilience" GH_AW_WORKFLOW_ID: "uk-ai-operational-resilience" diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index 696ddf0c157..d0cfa09bdcf 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -102,6 +102,7 @@ jobs: pull-requests: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: ${{ steps.add-comment.outputs.comment-id }} @@ -293,6 +294,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -310,24 +324,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_1daa3f8c56d7af58_EOF' + cat << 'GH_AW_PROMPT_b969731a58eee7e2_EOF' - GH_AW_PROMPT_1daa3f8c56d7af58_EOF + GH_AW_PROMPT_b969731a58eee7e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_1daa3f8c56d7af58_EOF' + cat << 'GH_AW_PROMPT_b969731a58eee7e2_EOF' Tools: add_comment, create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_1daa3f8c56d7af58_EOF + GH_AW_PROMPT_b969731a58eee7e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_1daa3f8c56d7af58_EOF' + cat << 'GH_AW_PROMPT_b969731a58eee7e2_EOF' - GH_AW_PROMPT_1daa3f8c56d7af58_EOF + GH_AW_PROMPT_b969731a58eee7e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_1daa3f8c56d7af58_EOF' + cat << 'GH_AW_PROMPT_b969731a58eee7e2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -356,16 +370,16 @@ jobs: {{/if}} - GH_AW_PROMPT_1daa3f8c56d7af58_EOF + GH_AW_PROMPT_b969731a58eee7e2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_1daa3f8c56d7af58_EOF' + cat << 'GH_AW_PROMPT_b969731a58eee7e2_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/activation-app.md}} {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/unbloat-docs.md}} - GH_AW_PROMPT_1daa3f8c56d7af58_EOF + GH_AW_PROMPT_b969731a58eee7e2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -475,6 +489,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: unbloatdocs outputs: ai_credits_rate_limit_error: ${{ steps.parse-mcp-gateway.outputs.ai_credits_rate_limit_error || 'false' }} @@ -637,9 +652,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_b4b151c14d0ce73a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3cf2caff476e54e8_EOF' {"add_comment":{"max":1},"create_pull_request":{"auto_merge":true,"draft":true,"expires":48,"fallback_as_issue":false,"labels":["documentation","automation","doc-unbloat"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","PI.md","AGENTS.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_b4b151c14d0ce73a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3cf2caff476e54e8_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -833,7 +848,7 @@ jobs: export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host --name awmg-mcpg --add-host host.docker.internal:127.0.0.1 --user '"${MCP_GATEWAY_UID}"':'"${MCP_GATEWAY_GID}"' --group-add '"${DOCKER_SOCK_GID}"' -v '"${DOCKER_SOCK_PATH}"':/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DOCKER_HOST=unix:///var/run/docker.sock -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e RUNNER_TEMP -e GITHUB_AW_OTEL_TRACE_ID -e GITHUB_AW_OTEL_PARENT_SPAN_ID -e OTEL_EXPORTER_OTLP_HEADERS -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw -v '"${RUNNER_TEMP}"'/gh-aw/safeoutputs:'"${RUNNER_TEMP}"'/gh-aw/safeoutputs:rw ghcr.io/github/gh-aw-mcpg:v0.3.27' GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_317d62f563f888f6_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -878,7 +893,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_317d62f563f888f6_EOF + GH_AW_MCP_CONFIG_5a62c05d6d2f1358_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1166,6 +1181,8 @@ jobs: group: "gh-aw-conclusion-unbloat-docs" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1431,6 +1448,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1658,6 +1677,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_match.outputs.skip_check_ok == 'true' && steps.check_command_position.outputs.command_position_ok == 'true' }} matched_command: ${{ steps.check_command_position.outputs.matched_command }} @@ -1745,6 +1766,7 @@ jobs: GH_AW_ENGINE_ID: "pi" GH_AW_ENGINE_MODEL: "copilot/gpt-5.4" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e ๐Ÿ—œ๏ธ *Compressed by [{workflow_name}]({run_url})*{ai_credits_suffix}{history_link}\",\"runStarted\":\"๐Ÿ“ฆ Time to slim down! [{workflow_name}]({run_url}) is trimming the excess from this {event_type}...\",\"runSuccess\":\"๐Ÿ—œ๏ธ Docs on a diet! [{workflow_name}]({run_url}) has removed the bloat. Lean and mean! ๐Ÿ’ช\",\"runFailure\":\"๐Ÿ“ฆ Unbloating paused! [{workflow_name}]({run_url}) {status}. The docs remain... fluffy.\"}" GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" @@ -1875,6 +1897,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: unbloatdocs steps: - name: Checkout actions folder diff --git a/.github/workflows/update-astro.lock.yml b/.github/workflows/update-astro.lock.yml index 961a4e17ce5..a44e12857c3 100644 --- a/.github/workflows/update-astro.lock.yml +++ b/.github/workflows/update-astro.lock.yml @@ -99,6 +99,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -248,6 +249,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -266,23 +280,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_0cb74b310b810f14_EOF' + cat << 'GH_AW_PROMPT_bb08b04001c808dc_EOF' - GH_AW_PROMPT_0cb74b310b810f14_EOF + GH_AW_PROMPT_bb08b04001c808dc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_0cb74b310b810f14_EOF' + cat << 'GH_AW_PROMPT_bb08b04001c808dc_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_0cb74b310b810f14_EOF + GH_AW_PROMPT_bb08b04001c808dc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_0cb74b310b810f14_EOF' + cat << 'GH_AW_PROMPT_bb08b04001c808dc_EOF' - GH_AW_PROMPT_0cb74b310b810f14_EOF + GH_AW_PROMPT_bb08b04001c808dc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_0cb74b310b810f14_EOF' + cat << 'GH_AW_PROMPT_bb08b04001c808dc_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -311,13 +325,13 @@ jobs: {{/if}} - GH_AW_PROMPT_0cb74b310b810f14_EOF + GH_AW_PROMPT_bb08b04001c808dc_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_0cb74b310b810f14_EOF' + cat << 'GH_AW_PROMPT_bb08b04001c808dc_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/update-astro.md}} - GH_AW_PROMPT_0cb74b310b810f14_EOF + GH_AW_PROMPT_bb08b04001c808dc_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -423,6 +437,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: updateastro outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -547,9 +562,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_69d05a54678e9dc4_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_bce6d3e3598738e4_EOF' {"create_pull_request":{"expires":48,"labels":["documentation","dependencies"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"allowed","title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_69d05a54678e9dc4_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_bce6d3e3598738e4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -724,7 +739,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -786,7 +801,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1113,6 +1128,8 @@ jobs: group: "gh-aw-conclusion-update-astro" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1363,6 +1380,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1609,6 +1628,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_skip_if_no_match.outputs.skip_no_match_check_ok == 'true' }} matched_command: '' @@ -1685,6 +1706,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "update-astro" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" diff --git a/.github/workflows/video-analyzer.lock.yml b/.github/workflows/video-analyzer.lock.yml index 04374b7ac0f..ffb045d55d8 100644 --- a/.github/workflows/video-analyzer.lock.yml +++ b/.github/workflows/video-analyzer.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,20 +273,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_a4d6c3ac4819ba61_EOF' + cat << 'GH_AW_PROMPT_e11213c65095874b_EOF' - GH_AW_PROMPT_a4d6c3ac4819ba61_EOF + GH_AW_PROMPT_e11213c65095874b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_a4d6c3ac4819ba61_EOF' + cat << 'GH_AW_PROMPT_e11213c65095874b_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_a4d6c3ac4819ba61_EOF + GH_AW_PROMPT_e11213c65095874b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_a4d6c3ac4819ba61_EOF' + cat << 'GH_AW_PROMPT_e11213c65095874b_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -301,15 +315,15 @@ jobs: {{/if}} - GH_AW_PROMPT_a4d6c3ac4819ba61_EOF + GH_AW_PROMPT_e11213c65095874b_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_a4d6c3ac4819ba61_EOF' + cat << 'GH_AW_PROMPT_e11213c65095874b_EOF' {{#runtime-import .github/workflows/shared/ffmpeg.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/video-analyzer.md}} - GH_AW_PROMPT_a4d6c3ac4819ba61_EOF + GH_AW_PROMPT_e11213c65095874b_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -406,6 +420,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: videoanalyzer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -538,9 +553,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f683b7dc6451a42f_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_02d6af9fb3304674_EOF' {"create_issue":{"expires":48,"labels":["automation","video-processing","cookie"],"max":1,"title_prefix":"[video-analysis] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_f683b7dc6451a42f_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_02d6af9fb3304674_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -711,7 +726,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -773,7 +788,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1055,6 +1070,8 @@ jobs: group: "gh-aw-conclusion-video-analyzer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1298,6 +1315,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1563,6 +1582,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐ŸŽฌ" GH_AW_WORKFLOW_ID: "video-analyzer" diff --git a/.github/workflows/visual-regression-checker.lock.yml b/.github/workflows/visual-regression-checker.lock.yml index ab49cbe6f65..03b444c632a 100644 --- a/.github/workflows/visual-regression-checker.lock.yml +++ b/.github/workflows/visual-regression-checker.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -261,6 +262,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -277,21 +291,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_81746ddbe8f02bd7_EOF' + cat << 'GH_AW_PROMPT_42ac7274b3a9717d_EOF' - GH_AW_PROMPT_81746ddbe8f02bd7_EOF + GH_AW_PROMPT_42ac7274b3a9717d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_81746ddbe8f02bd7_EOF' + cat << 'GH_AW_PROMPT_42ac7274b3a9717d_EOF' Tools: add_comment, missing_tool, missing_data, noop - GH_AW_PROMPT_81746ddbe8f02bd7_EOF + GH_AW_PROMPT_42ac7274b3a9717d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_81746ddbe8f02bd7_EOF' + cat << 'GH_AW_PROMPT_42ac7274b3a9717d_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -320,13 +334,13 @@ jobs: {{/if}} - GH_AW_PROMPT_81746ddbe8f02bd7_EOF + GH_AW_PROMPT_42ac7274b3a9717d_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_81746ddbe8f02bd7_EOF' + cat << 'GH_AW_PROMPT_42ac7274b3a9717d_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/visual-regression-checker.md}} - GH_AW_PROMPT_81746ddbe8f02bd7_EOF + GH_AW_PROMPT_42ac7274b3a9717d_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -419,6 +433,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: visualregressionchecker outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -600,9 +615,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_375b1128cbd884ba_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_049c1935bf1a6a33_EOF' {"add_comment":{"max":1},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_375b1128cbd884ba_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_049c1935bf1a6a33_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -758,7 +773,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -820,7 +835,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1125,6 +1140,8 @@ jobs: group: "gh-aw-conclusion-visual-regression-checker" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1368,6 +1385,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1615,6 +1634,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }} matched_command: '' @@ -1678,6 +1699,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ‘๏ธ" GH_AW_WORKFLOW_ID: "visual-regression-checker" diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index 1c5de2cf394..f31bef22e76 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -98,6 +98,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git id: restore-experiment-state uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -299,24 +313,24 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_cb1c0df260f2546a_EOF' + cat << 'GH_AW_PROMPT_33ca2f7f015063ce_EOF' - GH_AW_PROMPT_cb1c0df260f2546a_EOF + GH_AW_PROMPT_33ca2f7f015063ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_cb1c0df260f2546a_EOF' + cat << 'GH_AW_PROMPT_33ca2f7f015063ce_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_cb1c0df260f2546a_EOF + GH_AW_PROMPT_33ca2f7f015063ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_cb1c0df260f2546a_EOF' + cat << 'GH_AW_PROMPT_33ca2f7f015063ce_EOF' - GH_AW_PROMPT_cb1c0df260f2546a_EOF + GH_AW_PROMPT_33ca2f7f015063ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_cb1c0df260f2546a_EOF' + cat << 'GH_AW_PROMPT_33ca2f7f015063ce_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -345,14 +359,14 @@ jobs: {{/if}} - GH_AW_PROMPT_cb1c0df260f2546a_EOF + GH_AW_PROMPT_33ca2f7f015063ce_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_cb1c0df260f2546a_EOF' + cat << 'GH_AW_PROMPT_33ca2f7f015063ce_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/weekly-blog-post-writer.md}} - GH_AW_PROMPT_cb1c0df260f2546a_EOF + GH_AW_PROMPT_33ca2f7f015063ce_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -467,6 +481,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: weeklyblogpostwriter outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -699,9 +714,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_711da0821f81f750_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_75ac7e35e9d56eb4_EOF' {"create_pull_request":{"draft":false,"expires":168,"labels":["blog"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[blog] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":10240}]},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_711da0821f81f750_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_75ac7e35e9d56eb4_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -873,7 +888,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_3e846bbfc2bb0378_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_bc1e8afd57ffb1f8_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -938,7 +953,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_3e846bbfc2bb0378_EOF + GH_AW_MCP_CONFIG_bc1e8afd57ffb1f8_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1253,6 +1268,8 @@ jobs: group: "gh-aw-conclusion-weekly-blog-post-writer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1507,6 +1524,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1761,6 +1780,8 @@ jobs: runs-on: ubuntu-slim permissions: contents: write + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -1840,6 +1861,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|master" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1940,6 +1963,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "weekly-blog-post-writer" GH_AW_WORKFLOW_EMOJI: "โœ๏ธ" diff --git a/.github/workflows/weekly-editors-health-check.lock.yml b/.github/workflows/weekly-editors-health-check.lock.yml index 40bea090ad7..de59f87aa59 100644 --- a/.github/workflows/weekly-editors-health-check.lock.yml +++ b/.github/workflows/weekly-editors-health-check.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,26 +271,26 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_0525f49e499df2af_EOF' + cat << 'GH_AW_PROMPT_62408daeb5373069_EOF' - GH_AW_PROMPT_0525f49e499df2af_EOF + GH_AW_PROMPT_62408daeb5373069_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/playwright_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_0525f49e499df2af_EOF' + cat << 'GH_AW_PROMPT_62408daeb5373069_EOF' Tools: create_pull_request, upload_asset(max:5), missing_tool, missing_data, noop - GH_AW_PROMPT_0525f49e499df2af_EOF + GH_AW_PROMPT_62408daeb5373069_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_0525f49e499df2af_EOF' + cat << 'GH_AW_PROMPT_62408daeb5373069_EOF' upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_0525f49e499df2af_EOF + GH_AW_PROMPT_62408daeb5373069_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_0525f49e499df2af_EOF' + cat << 'GH_AW_PROMPT_62408daeb5373069_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -305,14 +319,14 @@ jobs: {{/if}} - GH_AW_PROMPT_0525f49e499df2af_EOF + GH_AW_PROMPT_62408daeb5373069_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_0525f49e499df2af_EOF' + cat << 'GH_AW_PROMPT_62408daeb5373069_EOF' {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/weekly-editors-health-check.md}} - GH_AW_PROMPT_0525f49e499df2af_EOF + GH_AW_PROMPT_62408daeb5373069_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -408,6 +422,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: weeklyeditorshealthcheck outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -545,9 +560,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c4e4e3b50bfd4f42_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_aabbca8ec7c6afcd_EOF' {"create_pull_request":{"expires":168,"labels":["documentation","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","reviewers":["copilot"],"title_prefix":"[docs] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_c4e4e3b50bfd4f42_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_aabbca8ec7c6afcd_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -735,7 +750,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -797,7 +812,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1122,6 +1137,8 @@ jobs: group: "gh-aw-conclusion-weekly-editors-health-check" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1372,6 +1389,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1638,6 +1657,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "weekly-editors-health-check" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“" @@ -1765,6 +1785,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 573e67925fe..23df52f1f6b 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -100,6 +100,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -247,6 +248,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -263,23 +277,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_82f71bd3d844d9f4_EOF' + cat << 'GH_AW_PROMPT_470c9de4223b683c_EOF' - GH_AW_PROMPT_82f71bd3d844d9f4_EOF + GH_AW_PROMPT_470c9de4223b683c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/cache_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_82f71bd3d844d9f4_EOF' + cat << 'GH_AW_PROMPT_470c9de4223b683c_EOF' Tools: create_discussion, upload_asset(max:5), missing_tool, missing_data, noop upload_asset: provide a file path; returns a URL; assets are published after the workflow completes (safeoutputs). - GH_AW_PROMPT_82f71bd3d844d9f4_EOF + GH_AW_PROMPT_470c9de4223b683c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_82f71bd3d844d9f4_EOF' + cat << 'GH_AW_PROMPT_470c9de4223b683c_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -308,9 +322,9 @@ jobs: {{/if}} - GH_AW_PROMPT_82f71bd3d844d9f4_EOF + GH_AW_PROMPT_470c9de4223b683c_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_82f71bd3d844d9f4_EOF' + cat << 'GH_AW_PROMPT_470c9de4223b683c_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/trends.md}} @@ -319,7 +333,7 @@ jobs: {{#runtime-import .github/workflows/shared/python-dataviz.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/weekly-issue-summary.md}} - GH_AW_PROMPT_82f71bd3d844d9f4_EOF + GH_AW_PROMPT_470c9de4223b683c_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -420,6 +434,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 10240 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: weeklyissuesummary outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -561,9 +576,9 @@ jobs: mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs/assets" - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_f0965c0e5c1f6e4a_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_654b17a6289e1f20_EOF' {"create_discussion":{"category":"audits","close_older_discussions":true,"expires":24,"fallback_to_issue":true,"max":1,"title_prefix":"[Weekly Summary] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"upload_asset":{"allowed-exts":[".png",".jpg",".jpeg",".svg"],"branch":"assets/${GITHUB_WORKFLOW}","max":5,"max-size":10240}} - GH_AW_SAFE_OUTPUTS_CONFIG_f0965c0e5c1f6e4a_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_654b17a6289e1f20_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -734,7 +749,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -780,7 +795,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1110,6 +1125,8 @@ jobs: group: "gh-aw-conclusion-weekly-issue-summary" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1362,6 +1379,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1628,6 +1647,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "weekly-issue-summary" GH_AW_WORKFLOW_EMOJI: "๐Ÿ“…" @@ -1725,6 +1745,7 @@ jobs: permissions: contents: read env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: weeklyissuesummary steps: - name: Checkout actions folder @@ -1780,6 +1801,8 @@ jobs: permissions: contents: write timeout-minutes: 10 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: branch_name: ${{ steps.upload_assets.outputs.branch_name }} published_count: ${{ steps.upload_assets.outputs.published_count }} diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index a5e9b774454..bcc1a9dac91 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -258,23 +272,23 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_975cfba2d1bcaffd_EOF' + cat << 'GH_AW_PROMPT_6c1184c009a39528_EOF' - GH_AW_PROMPT_975cfba2d1bcaffd_EOF + GH_AW_PROMPT_6c1184c009a39528_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_975cfba2d1bcaffd_EOF' + cat << 'GH_AW_PROMPT_6c1184c009a39528_EOF' Tools: create_pull_request, missing_tool, missing_data, noop - GH_AW_PROMPT_975cfba2d1bcaffd_EOF + GH_AW_PROMPT_6c1184c009a39528_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md" - cat << 'GH_AW_PROMPT_975cfba2d1bcaffd_EOF' + cat << 'GH_AW_PROMPT_6c1184c009a39528_EOF' - GH_AW_PROMPT_975cfba2d1bcaffd_EOF + GH_AW_PROMPT_6c1184c009a39528_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_975cfba2d1bcaffd_EOF' + cat << 'GH_AW_PROMPT_6c1184c009a39528_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -303,15 +317,15 @@ jobs: {{/if}} - GH_AW_PROMPT_975cfba2d1bcaffd_EOF + GH_AW_PROMPT_6c1184c009a39528_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_975cfba2d1bcaffd_EOF' + cat << 'GH_AW_PROMPT_6c1184c009a39528_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/weekly-safe-outputs-spec-review.md}} - GH_AW_PROMPT_975cfba2d1bcaffd_EOF + GH_AW_PROMPT_6c1184c009a39528_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -405,6 +419,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: weeklysafeoutputsspecreview outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -527,9 +542,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_93a441f65a706455_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3e321a8f58ddb53f_EOF' {"create_pull_request":{"auto_merge":false,"draft":false,"expires":168,"labels":["documentation","safe-outputs","automation"],"max":1,"max_patch_files":100,"max_patch_size":4096,"protect_top_level_dot_folders":true,"protected_files":["package.json","bun.lockb","bunfig.toml","deno.json","deno.jsonc","deno.lock","global.json","NuGet.Config","Directory.Packages.props","mix.exs","mix.lock","go.mod","go.sum","stack.yaml","stack.yaml.lock","pom.xml","build.gradle","build.gradle.kts","settings.gradle","settings.gradle.kts","gradle.properties","package-lock.json","yarn.lock","pnpm-lock.yaml","npm-shrinkwrap.json","requirements.txt","Pipfile","Pipfile.lock","pyproject.toml","setup.py","setup.cfg","Gemfile","Gemfile.lock","uv.lock","CODEOWNERS","DESIGN.md","README.md","CONTRIBUTING.md","CHANGELOG.md","SECURITY.md","CODE_OF_CONDUCT.md","AGENTS.md","CLAUDE.md","GEMINI.md"],"protected_files_policy":"request_review","title_prefix":"[spec-review] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_93a441f65a706455_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_3e321a8f58ddb53f_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -701,7 +716,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -747,7 +762,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1045,6 +1060,8 @@ jobs: group: "gh-aw-conclusion-weekly-safe-outputs-spec-review" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1295,6 +1312,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1561,6 +1580,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "weekly-safe-outputs-spec-review" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”’" diff --git a/.github/workflows/workflow-generator.lock.yml b/.github/workflows/workflow-generator.lock.yml index 32090bf015b..594d4c8d13f 100644 --- a/.github/workflows/workflow-generator.lock.yml +++ b/.github/workflows/workflow-generator.lock.yml @@ -92,6 +92,7 @@ jobs: issues: write env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: body: ${{ steps.sanitized.outputs.body }} comment_id: "" @@ -279,6 +280,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/lock-issue.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -295,20 +309,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_00b63a81ea0a4225_EOF' + cat << 'GH_AW_PROMPT_15fbbbfd75888cc4_EOF' - GH_AW_PROMPT_00b63a81ea0a4225_EOF + GH_AW_PROMPT_15fbbbfd75888cc4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_00b63a81ea0a4225_EOF' + cat << 'GH_AW_PROMPT_15fbbbfd75888cc4_EOF' Tools: update_issue, assign_to_agent, missing_tool, missing_data, noop - GH_AW_PROMPT_00b63a81ea0a4225_EOF + GH_AW_PROMPT_15fbbbfd75888cc4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_00b63a81ea0a4225_EOF' + cat << 'GH_AW_PROMPT_15fbbbfd75888cc4_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -337,15 +351,15 @@ jobs: {{/if}} - GH_AW_PROMPT_00b63a81ea0a4225_EOF + GH_AW_PROMPT_15fbbbfd75888cc4_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_00b63a81ea0a4225_EOF' + cat << 'GH_AW_PROMPT_15fbbbfd75888cc4_EOF' {{#runtime-import .github/workflows/shared/github-guard-policy.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/workflow-generator.md}} - GH_AW_PROMPT_00b63a81ea0a4225_EOF + GH_AW_PROMPT_15fbbbfd75888cc4_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -439,6 +453,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflowgenerator outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -561,9 +576,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_3cd27919f8862be5_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_ea6f834c08d3c870_EOF' {"assign_to_agent":{"allowed":["copilot"],"max":1,"target":"triggering"},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{},"update_issue":{"allow_body":true,"allow_status":true,"max":1}} - GH_AW_SAFE_OUTPUTS_CONFIG_3cd27919f8862be5_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_ea6f834c08d3c870_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -774,7 +789,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -820,7 +835,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1118,6 +1133,8 @@ jobs: group: "gh-aw-conclusion-workflow-generator" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1363,6 +1380,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1611,6 +1630,8 @@ jobs: permissions: actions: read contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: activated: ${{ steps.check_membership.outputs.is_team_member == 'true' && steps.check_rate_limit.outputs.rate_limit_ok == 'true' }} matched_command: '' @@ -1689,6 +1710,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" GH_AW_WORKFLOW_ID: "workflow-generator" @@ -1790,6 +1812,8 @@ jobs: contents: read issues: write timeout-minutes: 5 + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} steps: - name: Checkout actions folder uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index 8972db924b6..64ef7de0201 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -95,6 +95,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -242,6 +243,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -259,21 +273,21 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_853a3accf50c7652_EOF' + cat << 'GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF' - GH_AW_PROMPT_853a3accf50c7652_EOF + GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/repo_memory_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_853a3accf50c7652_EOF' + cat << 'GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF' Tools: add_comment(max:15), create_issue(max:10), update_issue(max:5), missing_tool, missing_data, noop - GH_AW_PROMPT_853a3accf50c7652_EOF + GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_853a3accf50c7652_EOF' + cat << 'GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,15 +316,15 @@ jobs: {{/if}} - GH_AW_PROMPT_853a3accf50c7652_EOF + GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/cli_proxy_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_853a3accf50c7652_EOF' + cat << 'GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/workflow-health-manager.md}} - GH_AW_PROMPT_853a3accf50c7652_EOF + GH_AW_PROMPT_cbeb8ab3f12bf6d2_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -418,6 +432,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflowhealthmanager outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -560,9 +575,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_4d997d424239bc6e_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_1609572a144c7835_EOF' {"add_comment":{"max":15},"create_issue":{"expires":24,"group":true,"labels":["cookie"],"max":10},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"push_repo_memory":{"memories":[{"dir":"/tmp/gh-aw/repo-memory/default","id":"default","max_file_count":100,"max_file_size":102400,"max_patch_size":51200}]},"report_incomplete":{},"update_issue":{"allow_body":true,"max":5}} - GH_AW_SAFE_OUTPUTS_CONFIG_4d997d424239bc6e_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_1609572a144c7835_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -808,7 +823,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_faea8415d1e91499_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "safeoutputs": { @@ -854,7 +869,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_faea8415d1e91499_EOF + GH_AW_MCP_CONFIG_17560cf429a33dd5_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1164,6 +1179,8 @@ jobs: group: "gh-aw-conclusion-workflow-health-manager" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1411,6 +1428,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1667,6 +1686,8 @@ jobs: concurrency: group: "push-repo-memory-${{ github.repository }}|memory/meta-orchestrators" cancel-in-progress: false + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: patch_size_exceeded_default: ${{ steps.push_repo_memory_default.outputs.patch_size_exceeded }} validation_error_default: ${{ steps.push_repo_memory_default.outputs.validation_error }} @@ -1767,6 +1788,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿฅ" GH_AW_WORKFLOW_ID: "workflow-health-manager" diff --git a/.github/workflows/workflow-normalizer.lock.yml b/.github/workflows/workflow-normalizer.lock.yml index b4d566fe172..8e215405a2d 100644 --- a/.github/workflows/workflow-normalizer.lock.yml +++ b/.github/workflows/workflow-normalizer.lock.yml @@ -97,6 +97,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -244,6 +245,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -260,20 +274,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_925f1e2caa763a42_EOF' + cat << 'GH_AW_PROMPT_d9a452834515f8f5_EOF' - GH_AW_PROMPT_925f1e2caa763a42_EOF + GH_AW_PROMPT_d9a452834515f8f5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_925f1e2caa763a42_EOF' + cat << 'GH_AW_PROMPT_d9a452834515f8f5_EOF' Tools: create_issue, missing_tool, missing_data, noop - GH_AW_PROMPT_925f1e2caa763a42_EOF + GH_AW_PROMPT_d9a452834515f8f5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_925f1e2caa763a42_EOF' + cat << 'GH_AW_PROMPT_d9a452834515f8f5_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -302,15 +316,15 @@ jobs: {{/if}} - GH_AW_PROMPT_925f1e2caa763a42_EOF + GH_AW_PROMPT_d9a452834515f8f5_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_925f1e2caa763a42_EOF' + cat << 'GH_AW_PROMPT_d9a452834515f8f5_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/workflow-normalizer.md}} - GH_AW_PROMPT_925f1e2caa763a42_EOF + GH_AW_PROMPT_d9a452834515f8f5_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -407,6 +421,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflownormalizer outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -593,9 +608,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_bd3c20a98d5e14ee_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_c7c6ba543301fb8f_EOF' {"create_issue":{"expires":24,"labels":["cookie"],"max":1,"title_prefix":"[workflow-style] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_bd3c20a98d5e14ee_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_c7c6ba543301fb8f_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -765,7 +780,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_e39ef0e5c25dae7b_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_439bd56e98e9d691_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "agenticworkflows": { @@ -846,7 +861,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_e39ef0e5c25dae7b_EOF + GH_AW_MCP_CONFIG_439bd56e98e9d691_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1128,6 +1143,8 @@ jobs: group: "gh-aw-conclusion-workflow-normalizer" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1376,6 +1393,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1641,6 +1660,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_TRACKER_ID: "workflow-normalizer" GH_AW_WORKFLOW_EMOJI: "๐Ÿ”ง" diff --git a/.github/workflows/workflow-skill-extractor.lock.yml b/.github/workflows/workflow-skill-extractor.lock.yml index ed4921b37ab..5e6d91d43ae 100644 --- a/.github/workflows/workflow-skill-extractor.lock.yml +++ b/.github/workflows/workflow-skill-extractor.lock.yml @@ -94,6 +94,7 @@ jobs: contents: read env: GH_AW_MAX_DAILY_AI_CREDITS: ${{ vars.GH_AW_DEFAULT_MAX_DAILY_AI_CREDITS || '5000' }} + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: comment_id: "" comment_repo: "" @@ -241,6 +242,19 @@ jobs: setupGlobals(core, github, context, exec, io, getOctokit); const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); + - name: Log runtime features + run: | + { + echo "## Runtime features" + echo + if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + echo '```text' + printf '%s\n' "$GH_AW_RUNTIME_FEATURES" + echo '```' + else + echo "_Not set_" + fi + } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context env: GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt @@ -257,20 +271,20 @@ jobs: run: | bash "${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh" { - cat << 'GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF' + cat << 'GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF' - GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF + GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md" cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md" cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md" cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md" - cat << 'GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF' + cat << 'GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF' Tools: create_issue(max:3), create_discussion, missing_tool, missing_data, noop - GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF + GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/mcp_cli_tools_prompt.md" - cat << 'GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF' + cat << 'GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF' The following GitHub context information is available for this workflow: {{#if github.actor}} @@ -299,15 +313,15 @@ jobs: {{/if}} - GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF + GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md" - cat << 'GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF' + cat << 'GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF' {{#runtime-import .github/workflows/shared/reporting.md}} {{#runtime-import .github/workflows/shared/otlp.md}} {{#runtime-import .github/workflows/shared/noop-reminder.md}} {{#runtime-import .github/workflows/workflow-skill-extractor.md}} - GH_AW_PROMPT_c2fbea9cc1b3bff2_EOF + GH_AW_PROMPT_567e3f4c5e9a2e9f_EOF } > "$GH_AW_PROMPT" - name: Interpolate variables and render templates uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 @@ -403,6 +417,7 @@ jobs: GH_AW_ASSETS_MAX_SIZE_KB: 0 GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_WORKFLOW_ID_SANITIZED: workflowskillextractor outputs: agentic_engine_timeout: ${{ steps.detect-agent-errors.outputs.agentic_engine_timeout || 'false' }} @@ -532,9 +547,9 @@ jobs: mkdir -p "${RUNNER_TEMP}/gh-aw/safeoutputs" mkdir -p /tmp/gh-aw/safeoutputs mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs - cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_d848d8b80c1ed51b_EOF' + cat > "${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" << 'GH_AW_SAFE_OUTPUTS_CONFIG_a06cfe5cde237553_EOF' {"create_discussion":{"category":"reports","close_older_discussions":true,"expires":168,"fallback_to_issue":true,"max":1},"create_issue":{"expires":48,"group":true,"labels":["refactoring","shared-component","improvement","cookie"],"max":3,"title_prefix":"[refactoring] "},"create_report_incomplete_issue":{},"missing_data":{},"missing_tool":{},"noop":{"max":1,"report-as-issue":"true"},"report_incomplete":{}} - GH_AW_SAFE_OUTPUTS_CONFIG_d848d8b80c1ed51b_EOF + GH_AW_SAFE_OUTPUTS_CONFIG_a06cfe5cde237553_EOF - name: Generate Safe Outputs Tools env: GH_AW_TOOLS_META_JSON: | @@ -733,7 +748,7 @@ jobs: mkdir -p "$HOME/.copilot" GH_AW_NODE=$(which node 2>/dev/null || command -v node 2>/dev/null || echo node) - cat << GH_AW_MCP_CONFIG_6d044e770f62221a_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" + cat << GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF | "$GH_AW_NODE" "${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.cjs" { "mcpServers": { "github": { @@ -795,7 +810,7 @@ jobs: } } } - GH_AW_MCP_CONFIG_6d044e770f62221a_EOF + GH_AW_MCP_CONFIG_1fbd4b8aa1d452d2_EOF - name: Mount MCP servers as CLIs id: mount-mcp-clis continue-on-error: true @@ -1099,6 +1114,8 @@ jobs: group: "gh-aw-conclusion-workflow-skill-extractor" cancel-in-progress: false queue: max + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: incomplete_count: ${{ steps.report_incomplete.outputs.incomplete_count }} noop_message: ${{ steps.noop.outputs.noop_message }} @@ -1344,6 +1361,8 @@ jobs: runs-on: ubuntu-latest permissions: contents: read + env: + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} outputs: aic: ${{ steps.parse_detection_token_usage.outputs.aic }} detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }} @@ -1610,6 +1629,7 @@ jobs: GH_AW_ENGINE_MODEL: ${{ needs.agent.outputs.model }} GH_AW_ENGINE_VERSION: "1.0.63" GH_AW_PROJECT_UTC: "-08:00" + GH_AW_RUNTIME_FEATURES: ${{ vars.GH_AW_RUNTIME_FEATURES }} GH_AW_THREAT_DETECTION_AIC: ${{ needs.detection.outputs.aic }} GH_AW_WORKFLOW_EMOJI: "๐Ÿ”" GH_AW_WORKFLOW_ID: "workflow-skill-extractor" From 470f5bd295f2ff385afbae4ece2b4e05009b7626 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 22 Jun 2026 18:15:05 +0000 Subject: [PATCH 4/4] Fix runtime features review feedback Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/ab-testing-advisor.lock.yml | 8 ++++++-- .github/workflows/ace-editor.lock.yml | 8 ++++++-- .../agent-performance-analyzer.lock.yml | 8 ++++++-- .../workflows/agent-persona-explorer.lock.yml | 8 ++++++-- .../workflows/agentic-token-audit.lock.yml | 8 ++++++-- .../agentic-token-optimizer.lock.yml | 8 ++++++-- .../agentic-token-trend-audit.lock.yml | 8 ++++++-- .github/workflows/ai-moderator.lock.yml | 8 ++++++-- .../workflows/api-consumption-report.lock.yml | 8 ++++++-- .github/workflows/approach-validator.lock.yml | 8 ++++++-- .github/workflows/archie.lock.yml | 8 ++++++-- .../workflows/architecture-guardian.lock.yml | 8 ++++++-- .github/workflows/artifacts-summary.lock.yml | 8 ++++++-- .github/workflows/audit-workflows.lock.yml | 8 ++++++-- .github/workflows/auto-triage-issues.lock.yml | 8 ++++++-- .github/workflows/avenger.lock.yml | 8 ++++++-- .../aw-failure-investigator.lock.yml | 8 ++++++-- .github/workflows/blog-auditor.lock.yml | 8 ++++++-- .github/workflows/bot-detection.lock.yml | 8 ++++++-- .github/workflows/brave.lock.yml | 8 ++++++-- .../breaking-change-checker.lock.yml | 8 ++++++-- .github/workflows/changeset.lock.yml | 8 ++++++-- .../workflows/chaos-pr-bundle-fuzzer.lock.yml | 8 ++++++-- .github/workflows/ci-coach.lock.yml | 8 ++++++-- .github/workflows/ci-doctor.lock.yml | 8 ++++++-- .../claude-code-user-docs-review.lock.yml | 8 ++++++-- .../cli-consistency-checker.lock.yml | 8 ++++++-- .../workflows/cli-version-checker.lock.yml | 8 ++++++-- .github/workflows/cloclo.lock.yml | 8 ++++++-- .../workflows/code-scanning-fixer.lock.yml | 8 ++++++-- .github/workflows/code-simplifier.lock.yml | 8 ++++++-- .../codex-github-remote-mcp-test.lock.yml | 8 ++++++-- .../commit-changes-analyzer.lock.yml | 8 ++++++-- .../constraint-solving-potd.lock.yml | 8 ++++++-- .github/workflows/contribution-check.lock.yml | 8 ++++++-- .../workflows/copilot-agent-analysis.lock.yml | 8 ++++++-- .../copilot-centralization-drilldown.lock.yml | 8 ++++++-- .../copilot-centralization-optimizer.lock.yml | 8 ++++++-- .../copilot-cli-deep-research.lock.yml | 8 ++++++-- .github/workflows/copilot-opt.lock.yml | 8 ++++++-- .../copilot-pr-merged-report.lock.yml | 8 ++++++-- .../copilot-pr-nlp-analysis.lock.yml | 8 ++++++-- .../copilot-pr-prompt-analysis.lock.yml | 8 ++++++-- .../copilot-session-insights.lock.yml | 8 ++++++-- .github/workflows/craft.lock.yml | 8 ++++++-- ...aily-agent-of-the-day-blog-writer.lock.yml | 8 ++++++-- .../daily-agentrx-trace-optimizer.lock.yml | 8 ++++++-- .../daily-ambient-context-optimizer.lock.yml | 8 ++++++-- .../daily-architecture-diagram.lock.yml | 8 ++++++-- .../daily-assign-issue-to-user.lock.yml | 8 ++++++-- ...strostylelite-markdown-spellcheck.lock.yml | 8 ++++++-- ...daily-aw-cross-repo-compile-check.lock.yml | 8 ++++++-- ...daily-awf-spec-compiler-surfacing.lock.yml | 8 ++++++-- .../workflows/daily-byok-ollama-test.lock.yml | 8 ++++++-- .../daily-cache-strategy-analyzer.lock.yml | 8 ++++++-- .../daily-caveman-optimizer.lock.yml | 8 ++++++-- .github/workflows/daily-choice-test.lock.yml | 8 ++++++-- .../workflows/daily-cli-performance.lock.yml | 8 ++++++-- .../workflows/daily-cli-tools-tester.lock.yml | 8 ++++++-- .github/workflows/daily-code-metrics.lock.yml | 8 ++++++-- .../daily-community-attribution.lock.yml | 8 ++++++-- .../workflows/daily-compiler-quality.lock.yml | 8 ++++++-- ...ly-compiler-threat-spec-optimizer.lock.yml | 8 ++++++-- .../daily-credit-limit-test.lock.yml | 8 ++++++-- .github/workflows/daily-doc-healer.lock.yml | 8 ++++++-- .github/workflows/daily-doc-updater.lock.yml | 8 ++++++-- .../daily-experiment-report.lock.yml | 8 ++++++-- .github/workflows/daily-fact.lock.yml | 8 ++++++-- .github/workflows/daily-file-diet.lock.yml | 8 ++++++-- .../workflows/daily-firewall-report.lock.yml | 8 ++++++-- .../daily-formal-spec-verifier.lock.yml | 8 ++++++-- .../workflows/daily-function-namer.lock.yml | 8 ++++++-- .../workflows/daily-geo-optimizer.lock.yml | 8 ++++++-- .github/workflows/daily-hippo-learn.lock.yml | 8 ++++++-- .../workflows/daily-issues-report.lock.yml | 8 ++++++-- .../daily-malicious-code-scan.lock.yml | 8 ++++++-- .../daily-max-ai-credits-test.lock.yml | 8 ++++++-- .../daily-mcp-concurrency-analysis.lock.yml | 8 ++++++-- .../workflows/daily-model-inventory.lock.yml | 8 ++++++-- .../daily-multi-device-docs-tester.lock.yml | 8 ++++++-- .github/workflows/daily-news.lock.yml | 8 ++++++-- .../daily-observability-report.lock.yml | 8 ++++++-- .../daily-performance-summary.lock.yml | 8 ++++++-- .github/workflows/daily-regulatory.lock.yml | 8 ++++++-- .../daily-reliability-review.lock.yml | 8 ++++++-- .../daily-rendering-scripts-verifier.lock.yml | 8 ++++++-- .../workflows/daily-repo-chronicle.lock.yml | 8 ++++++-- .../daily-safe-output-integrator.lock.yml | 8 ++++++-- .../daily-safe-output-optimizer.lock.yml | 8 ++++++-- .../daily-safe-outputs-conformance.lock.yml | 8 ++++++-- .../daily-safeoutputs-git-simulator.lock.yml | 8 ++++++-- .../workflows/daily-secrets-analysis.lock.yml | 8 ++++++-- .../daily-security-observability.lock.yml | 8 ++++++-- .../daily-security-red-team.lock.yml | 8 ++++++-- .github/workflows/daily-semgrep-scan.lock.yml | 8 ++++++-- .../workflows/daily-sentrux-report.lock.yml | 8 ++++++-- .../workflows/daily-skill-optimizer.lock.yml | 8 ++++++-- .../daily-spdd-spec-planner.lock.yml | 8 ++++++-- .../daily-syntax-error-quality.lock.yml | 8 ++++++-- .../daily-team-evolution-insights.lock.yml | 8 ++++++-- .github/workflows/daily-team-status.lock.yml | 8 ++++++-- .../daily-testify-uber-super-expert.lock.yml | 8 ++++++-- .../daily-token-consumption-report.lock.yml | 8 ++++++-- ...dows-terminal-integration-builder.lock.yml | 8 ++++++-- .../workflows/daily-workflow-updater.lock.yml | 8 ++++++-- .../dataflow-pr-discussion-dataset.lock.yml | 8 ++++++-- .github/workflows/dead-code-remover.lock.yml | 8 ++++++-- .github/workflows/deep-report.lock.yml | 8 ++++++-- .github/workflows/delight.lock.yml | 8 ++++++-- .github/workflows/dependabot-burner.lock.yml | 8 ++++++-- .../workflows/dependabot-go-checker.lock.yml | 8 ++++++-- .github/workflows/dependabot-repair.lock.yml | 8 ++++++-- .../deployment-incident-monitor.lock.yml | 8 ++++++-- .../workflows/design-decision-gate.lock.yml | 8 ++++++-- .../workflows/designer-drift-audit.lock.yml | 8 ++++++-- .github/workflows/dev-hawk.lock.yml | 8 ++++++-- .github/workflows/dev.lock.yml | 8 ++++++-- .../developer-docs-consolidator.lock.yml | 8 ++++++-- .github/workflows/dictation-prompt.lock.yml | 8 ++++++-- .../workflows/discussion-task-miner.lock.yml | 8 ++++++-- .github/workflows/docs-noob-tester.lock.yml | 8 ++++++-- .github/workflows/draft-pr-cleanup.lock.yml | 8 ++++++-- .../duplicate-code-detector.lock.yml | 8 ++++++-- .../example-failure-category-filter.lock.yml | 8 ++++++-- .../example-permissions-warning.lock.yml | 8 ++++++-- .../example-workflow-analyzer.lock.yml | 8 ++++++-- .github/workflows/firewall-escape.lock.yml | 8 ++++++-- .github/workflows/firewall.lock.yml | 8 ++++++-- .../workflows/functional-pragmatist.lock.yml | 8 ++++++-- .../github-mcp-structural-analysis.lock.yml | 8 ++++++-- .../github-mcp-tools-report.lock.yml | 8 ++++++-- .../github-remote-mcp-auth-test.lock.yml | 8 ++++++-- .../workflows/glossary-maintainer.lock.yml | 8 ++++++-- .github/workflows/go-fan.lock.yml | 8 ++++++-- .github/workflows/go-logger.lock.yml | 8 ++++++-- .../workflows/go-pattern-detector.lock.yml | 8 ++++++-- .github/workflows/gpclean.lock.yml | 8 ++++++-- .github/workflows/grumpy-reviewer.lock.yml | 8 ++++++-- .github/workflows/hippo-embed.lock.yml | 8 ++++++-- .github/workflows/hourly-ci-cleaner.lock.yml | 8 ++++++-- .../workflows/instructions-janitor.lock.yml | 8 ++++++-- .github/workflows/issue-arborist.lock.yml | 8 ++++++-- .github/workflows/issue-monster.lock.yml | 8 ++++++-- .github/workflows/issue-triage-agent.lock.yml | 8 ++++++-- .github/workflows/jsweep.lock.yml | 8 ++++++-- .../workflows/layout-spec-maintainer.lock.yml | 8 ++++++-- .github/workflows/lint-monster.lock.yml | 8 ++++++-- .github/workflows/linter-miner.lock.yml | 8 ++++++-- .github/workflows/lockfile-stats.lock.yml | 8 ++++++-- .../mattpocock-skills-reviewer.lock.yml | 8 ++++++-- .github/workflows/mcp-inspector.lock.yml | 8 ++++++-- .github/workflows/mergefest.lock.yml | 8 ++++++-- .github/workflows/metrics-collector.lock.yml | 8 ++++++-- .github/workflows/necromancer.lock.yml | 8 ++++++-- .../workflows/notion-issue-summary.lock.yml | 8 ++++++-- .../objective-impact-report.lock.yml | 8 ++++++-- .github/workflows/org-health-report.lock.yml | 8 ++++++-- .github/workflows/outcome-collector.lock.yml | 8 ++++++-- .github/workflows/pdf-summary.lock.yml | 8 ++++++-- .github/workflows/plan.lock.yml | 8 ++++++-- .github/workflows/poem-bot.lock.yml | 8 ++++++-- .github/workflows/portfolio-analyst.lock.yml | 8 ++++++-- .../pr-code-quality-reviewer.lock.yml | 8 ++++++-- .../workflows/pr-description-caveman.lock.yml | 8 ++++++-- .../workflows/pr-nitpick-reviewer.lock.yml | 8 ++++++-- .github/workflows/pr-sous-chef.lock.yml | 8 ++++++-- .github/workflows/pr-triage-agent.lock.yml | 8 ++++++-- .../prompt-clustering-analysis.lock.yml | 8 ++++++-- .github/workflows/python-data-charts.lock.yml | 8 ++++++-- .github/workflows/q.lock.yml | 8 ++++++-- .../workflows/refactoring-cadence.lock.yml | 8 ++++++-- .github/workflows/refiner.lock.yml | 8 ++++++-- .github/workflows/release.lock.yml | 8 ++++++-- .../workflows/repo-audit-analyzer.lock.yml | 8 ++++++-- .github/workflows/repo-tree-map.lock.yml | 8 ++++++-- .../repository-quality-improver.lock.yml | 8 ++++++-- .github/workflows/research.lock.yml | 8 ++++++-- .github/workflows/ruflo-backed-task.lock.yml | 8 ++++++-- .github/workflows/safe-output-health.lock.yml | 8 ++++++-- .../schema-consistency-checker.lock.yml | 8 ++++++-- .../schema-feature-coverage.lock.yml | 8 ++++++-- .github/workflows/scout.lock.yml | 8 ++++++-- .../workflows/security-compliance.lock.yml | 8 ++++++-- .github/workflows/security-review.lock.yml | 8 ++++++-- .../semantic-function-refactor.lock.yml | 8 ++++++-- .github/workflows/sergo.lock.yml | 8 ++++++-- .github/workflows/skillet.lock.yml | 8 ++++++-- .../workflows/slide-deck-maintainer.lock.yml | 8 ++++++-- .../workflows/smoke-agent-all-merged.lock.yml | 8 ++++++-- .../workflows/smoke-agent-all-none.lock.yml | 8 ++++++-- .../smoke-agent-public-approved.lock.yml | 8 ++++++-- .../smoke-agent-public-none.lock.yml | 8 ++++++-- .../smoke-agent-scoped-approved.lock.yml | 8 ++++++-- .github/workflows/smoke-antigravity.lock.yml | 8 ++++++-- .../workflows/smoke-call-workflow.lock.yml | 8 ++++++-- .github/workflows/smoke-ci.lock.yml | 8 ++++++-- .github/workflows/smoke-claude.lock.yml | 8 ++++++-- .github/workflows/smoke-codex.lock.yml | 8 ++++++-- .../smoke-copilot-aoai-apikey.lock.yml | 8 ++++++-- .../smoke-copilot-aoai-entra.lock.yml | 8 ++++++-- .github/workflows/smoke-copilot-arm.lock.yml | 8 ++++++-- .github/workflows/smoke-copilot-sdk.lock.yml | 8 ++++++-- .github/workflows/smoke-copilot.lock.yml | 8 ++++++-- .../smoke-create-cross-repo-pr.lock.yml | 8 ++++++-- .github/workflows/smoke-crush.lock.yml | 8 ++++++-- .github/workflows/smoke-gemini.lock.yml | 8 ++++++-- .github/workflows/smoke-multi-pr.lock.yml | 8 ++++++-- .github/workflows/smoke-opencode.lock.yml | 8 ++++++-- .../workflows/smoke-otel-backends.lock.yml | 8 ++++++-- .github/workflows/smoke-pi.lock.yml | 8 ++++++-- .github/workflows/smoke-project.lock.yml | 8 ++++++-- .../workflows/smoke-service-ports.lock.yml | 8 ++++++-- .github/workflows/smoke-temporary-id.lock.yml | 8 ++++++-- .github/workflows/smoke-test-tools.lock.yml | 8 ++++++-- .../smoke-update-cross-repo-pr.lock.yml | 8 ++++++-- .../smoke-workflow-call-with-inputs.lock.yml | 8 ++++++-- .../workflows/smoke-workflow-call.lock.yml | 8 ++++++-- .github/workflows/spec-enforcer.lock.yml | 8 ++++++-- .github/workflows/spec-extractor.lock.yml | 8 ++++++-- .github/workflows/spec-librarian.lock.yml | 8 ++++++-- .github/workflows/stale-pr-cleanup.lock.yml | 8 ++++++-- .../workflows/stale-repo-identifier.lock.yml | 8 ++++++-- .../workflows/static-analysis-report.lock.yml | 8 ++++++-- .../workflows/step-name-alignment.lock.yml | 8 ++++++-- .github/workflows/sub-issue-closer.lock.yml | 8 ++++++-- .github/workflows/super-linter.lock.yml | 8 ++++++-- .../workflows/technical-doc-writer.lock.yml | 8 ++++++-- .github/workflows/terminal-stylist.lock.yml | 8 ++++++-- .../test-create-pr-error-handling.lock.yml | 8 ++++++-- .github/workflows/test-dispatcher.lock.yml | 8 ++++++-- .../test-project-url-default.lock.yml | 8 ++++++-- .../workflows/test-quality-sentinel.lock.yml | 8 ++++++-- .github/workflows/test-workflow.lock.yml | 8 ++++++-- .github/workflows/tidy.lock.yml | 8 ++++++-- .github/workflows/typist.lock.yml | 8 ++++++-- .../workflows/ubuntu-image-analyzer.lock.yml | 8 ++++++-- .../uk-ai-operational-resilience.lock.yml | 8 ++++++-- .github/workflows/unbloat-docs.lock.yml | 8 ++++++-- .github/workflows/update-astro.lock.yml | 8 ++++++-- .github/workflows/video-analyzer.lock.yml | 8 ++++++-- .../visual-regression-checker.lock.yml | 8 ++++++-- .../weekly-blog-post-writer.lock.yml | 8 ++++++-- .../weekly-editors-health-check.lock.yml | 8 ++++++-- .../workflows/weekly-issue-summary.lock.yml | 8 ++++++-- .../weekly-safe-outputs-spec-review.lock.yml | 8 ++++++-- .github/workflows/workflow-generator.lock.yml | 8 ++++++-- .../workflow-health-manager.lock.yml | 8 ++++++-- .../workflows/workflow-normalizer.lock.yml | 8 ++++++-- .../workflow-skill-extractor.lock.yml | 8 ++++++-- actions/setup/js/runtime_features.cjs | 2 ++ actions/setup/js/runtime_features.test.cjs | 15 +++++++++++++++ actions/setup/js/setup_globals.cjs | 2 +- actions/setup/setup.sh | 2 ++ pkg/workflow/cache.go | 2 +- .../compiler_activation_job_builder.go | 8 ++++++-- pkg/workflow/compiler_experiments.go | 2 +- pkg/workflow/jobs.go | 10 +++++++--- pkg/workflow/repo_memory.go | 2 +- pkg/workflow/runtime_features_env_test.go | 19 +++++++++++++++++++ .../TestWasmGolden_AllEngines/claude.golden | 8 ++++++-- .../TestWasmGolden_AllEngines/codex.golden | 8 ++++++-- .../TestWasmGolden_AllEngines/copilot.golden | 8 ++++++-- .../TestWasmGolden_AllEngines/gemini.golden | 8 ++++++-- .../TestWasmGolden_AllEngines/pi.golden | 8 ++++++-- .../basic-copilot.golden | 8 ++++++-- .../playwright-cli-mode.golden | 8 ++++++-- .../smoke-copilot.golden | 8 ++++++-- .../with-imports.golden | 8 ++++++-- 268 files changed, 1603 insertions(+), 525 deletions(-) diff --git a/.github/workflows/ab-testing-advisor.lock.yml b/.github/workflows/ab-testing-advisor.lock.yml index 46356a17af9..f53b1a6b133 100644 --- a/.github/workflows/ab-testing-advisor.lock.yml +++ b/.github/workflows/ab-testing-advisor.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/ace-editor.lock.yml b/.github/workflows/ace-editor.lock.yml index c6c96aa6ae8..fa5597b4df6 100644 --- a/.github/workflows/ace-editor.lock.yml +++ b/.github/workflows/ace-editor.lock.yml @@ -285,16 +285,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/agent-performance-analyzer.lock.yml b/.github/workflows/agent-performance-analyzer.lock.yml index e70785a4b8b..cb495d2fb6c 100644 --- a/.github/workflows/agent-performance-analyzer.lock.yml +++ b/.github/workflows/agent-performance-analyzer.lock.yml @@ -242,16 +242,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/agent-persona-explorer.lock.yml b/.github/workflows/agent-persona-explorer.lock.yml index 1c058762758..a9997a77159 100644 --- a/.github/workflows/agent-persona-explorer.lock.yml +++ b/.github/workflows/agent-persona-explorer.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/agentic-token-audit.lock.yml b/.github/workflows/agentic-token-audit.lock.yml index 6d45fc1db00..8df80d99352 100644 --- a/.github/workflows/agentic-token-audit.lock.yml +++ b/.github/workflows/agentic-token-audit.lock.yml @@ -232,16 +232,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/agentic-token-optimizer.lock.yml b/.github/workflows/agentic-token-optimizer.lock.yml index ac2da2b3988..ede62ef3623 100644 --- a/.github/workflows/agentic-token-optimizer.lock.yml +++ b/.github/workflows/agentic-token-optimizer.lock.yml @@ -228,16 +228,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/agentic-token-trend-audit.lock.yml b/.github/workflows/agentic-token-trend-audit.lock.yml index edb8b48cce7..5618ba45d24 100644 --- a/.github/workflows/agentic-token-trend-audit.lock.yml +++ b/.github/workflows/agentic-token-trend-audit.lock.yml @@ -229,16 +229,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/ai-moderator.lock.yml b/.github/workflows/ai-moderator.lock.yml index 02ee1baa8f8..5f24750f002 100644 --- a/.github/workflows/ai-moderator.lock.yml +++ b/.github/workflows/ai-moderator.lock.yml @@ -302,16 +302,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/lock-issue.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/api-consumption-report.lock.yml b/.github/workflows/api-consumption-report.lock.yml index 5f8d436f9be..aa0fb1862e9 100644 --- a/.github/workflows/api-consumption-report.lock.yml +++ b/.github/workflows/api-consumption-report.lock.yml @@ -253,16 +253,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/approach-validator.lock.yml b/.github/workflows/approach-validator.lock.yml index 6bb634aac3a..2c2a3af6844 100644 --- a/.github/workflows/approach-validator.lock.yml +++ b/.github/workflows/approach-validator.lock.yml @@ -307,16 +307,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/archie.lock.yml b/.github/workflows/archie.lock.yml index 1355c63a7a0..d2712693934 100644 --- a/.github/workflows/archie.lock.yml +++ b/.github/workflows/archie.lock.yml @@ -283,16 +283,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/architecture-guardian.lock.yml b/.github/workflows/architecture-guardian.lock.yml index fe8e0d3d835..334bb3de6f3 100644 --- a/.github/workflows/architecture-guardian.lock.yml +++ b/.github/workflows/architecture-guardian.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/artifacts-summary.lock.yml b/.github/workflows/artifacts-summary.lock.yml index 043b81536c9..37420b0a874 100644 --- a/.github/workflows/artifacts-summary.lock.yml +++ b/.github/workflows/artifacts-summary.lock.yml @@ -237,16 +237,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/audit-workflows.lock.yml b/.github/workflows/audit-workflows.lock.yml index 8282d6e99d9..a08f5a0672a 100644 --- a/.github/workflows/audit-workflows.lock.yml +++ b/.github/workflows/audit-workflows.lock.yml @@ -253,16 +253,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/auto-triage-issues.lock.yml b/.github/workflows/auto-triage-issues.lock.yml index a928f88cb53..48dab269656 100644 --- a/.github/workflows/auto-triage-issues.lock.yml +++ b/.github/workflows/auto-triage-issues.lock.yml @@ -259,16 +259,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/avenger.lock.yml b/.github/workflows/avenger.lock.yml index a6a3fe848ef..287e54e87f3 100644 --- a/.github/workflows/avenger.lock.yml +++ b/.github/workflows/avenger.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/aw-failure-investigator.lock.yml b/.github/workflows/aw-failure-investigator.lock.yml index 85cab50a127..206d2e54304 100644 --- a/.github/workflows/aw-failure-investigator.lock.yml +++ b/.github/workflows/aw-failure-investigator.lock.yml @@ -253,16 +253,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/blog-auditor.lock.yml b/.github/workflows/blog-auditor.lock.yml index d844f11fda7..c4c94f622c2 100644 --- a/.github/workflows/blog-auditor.lock.yml +++ b/.github/workflows/blog-auditor.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/bot-detection.lock.yml b/.github/workflows/bot-detection.lock.yml index d14cc6154a8..e5282d98129 100644 --- a/.github/workflows/bot-detection.lock.yml +++ b/.github/workflows/bot-detection.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/brave.lock.yml b/.github/workflows/brave.lock.yml index 96ee742019e..c6f478ae1c4 100644 --- a/.github/workflows/brave.lock.yml +++ b/.github/workflows/brave.lock.yml @@ -282,16 +282,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/breaking-change-checker.lock.yml b/.github/workflows/breaking-change-checker.lock.yml index e079709a9f0..723d9705741 100644 --- a/.github/workflows/breaking-change-checker.lock.yml +++ b/.github/workflows/breaking-change-checker.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/changeset.lock.yml b/.github/workflows/changeset.lock.yml index d3dc9c2c192..c2ae73471f2 100644 --- a/.github/workflows/changeset.lock.yml +++ b/.github/workflows/changeset.lock.yml @@ -288,16 +288,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml b/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml index ad97450de77..af3ecf115f1 100644 --- a/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml +++ b/.github/workflows/chaos-pr-bundle-fuzzer.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/ci-coach.lock.yml b/.github/workflows/ci-coach.lock.yml index df1949fba48..359618296fa 100644 --- a/.github/workflows/ci-coach.lock.yml +++ b/.github/workflows/ci-coach.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/ci-doctor.lock.yml b/.github/workflows/ci-doctor.lock.yml index d2b777c1361..e9491f7062e 100644 --- a/.github/workflows/ci-doctor.lock.yml +++ b/.github/workflows/ci-doctor.lock.yml @@ -297,16 +297,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/claude-code-user-docs-review.lock.yml b/.github/workflows/claude-code-user-docs-review.lock.yml index 1f84c1bc3ba..2966954bca0 100644 --- a/.github/workflows/claude-code-user-docs-review.lock.yml +++ b/.github/workflows/claude-code-user-docs-review.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/cli-consistency-checker.lock.yml b/.github/workflows/cli-consistency-checker.lock.yml index 912b607bd55..32b02457567 100644 --- a/.github/workflows/cli-consistency-checker.lock.yml +++ b/.github/workflows/cli-consistency-checker.lock.yml @@ -234,16 +234,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/cli-version-checker.lock.yml b/.github/workflows/cli-version-checker.lock.yml index 4c4f6ab9a0c..8d2f9b068cd 100644 --- a/.github/workflows/cli-version-checker.lock.yml +++ b/.github/workflows/cli-version-checker.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/cloclo.lock.yml b/.github/workflows/cloclo.lock.yml index c8d6e855d9c..654095775bd 100644 --- a/.github/workflows/cloclo.lock.yml +++ b/.github/workflows/cloclo.lock.yml @@ -314,16 +314,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/code-scanning-fixer.lock.yml b/.github/workflows/code-scanning-fixer.lock.yml index 8a5ca4a7653..ed71d84f500 100644 --- a/.github/workflows/code-scanning-fixer.lock.yml +++ b/.github/workflows/code-scanning-fixer.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/code-simplifier.lock.yml b/.github/workflows/code-simplifier.lock.yml index 2b5dab49cc8..8688202d209 100644 --- a/.github/workflows/code-simplifier.lock.yml +++ b/.github/workflows/code-simplifier.lock.yml @@ -253,16 +253,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/codex-github-remote-mcp-test.lock.yml b/.github/workflows/codex-github-remote-mcp-test.lock.yml index e8a9d946d77..ea33af9b9c9 100644 --- a/.github/workflows/codex-github-remote-mcp-test.lock.yml +++ b/.github/workflows/codex-github-remote-mcp-test.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/commit-changes-analyzer.lock.yml b/.github/workflows/commit-changes-analyzer.lock.yml index a29ff86ed26..d52dc31c362 100644 --- a/.github/workflows/commit-changes-analyzer.lock.yml +++ b/.github/workflows/commit-changes-analyzer.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/constraint-solving-potd.lock.yml b/.github/workflows/constraint-solving-potd.lock.yml index ecc56eb6c49..fc27d994dc2 100644 --- a/.github/workflows/constraint-solving-potd.lock.yml +++ b/.github/workflows/constraint-solving-potd.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/contribution-check.lock.yml b/.github/workflows/contribution-check.lock.yml index 59111998c82..8d5f9838d0e 100644 --- a/.github/workflows/contribution-check.lock.yml +++ b/.github/workflows/contribution-check.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-agent-analysis.lock.yml b/.github/workflows/copilot-agent-analysis.lock.yml index 90644bd9e5b..e42cd158faf 100644 --- a/.github/workflows/copilot-agent-analysis.lock.yml +++ b/.github/workflows/copilot-agent-analysis.lock.yml @@ -252,16 +252,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/copilot-centralization-drilldown.lock.yml b/.github/workflows/copilot-centralization-drilldown.lock.yml index 5ea728d59bc..9c4266e3a7e 100644 --- a/.github/workflows/copilot-centralization-drilldown.lock.yml +++ b/.github/workflows/copilot-centralization-drilldown.lock.yml @@ -233,16 +233,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-centralization-optimizer.lock.yml b/.github/workflows/copilot-centralization-optimizer.lock.yml index add15b6b5da..90ea3c3753a 100644 --- a/.github/workflows/copilot-centralization-optimizer.lock.yml +++ b/.github/workflows/copilot-centralization-optimizer.lock.yml @@ -217,16 +217,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-cli-deep-research.lock.yml b/.github/workflows/copilot-cli-deep-research.lock.yml index 0330bd368fd..ee3aa78494c 100644 --- a/.github/workflows/copilot-cli-deep-research.lock.yml +++ b/.github/workflows/copilot-cli-deep-research.lock.yml @@ -236,16 +236,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-opt.lock.yml b/.github/workflows/copilot-opt.lock.yml index 66f1d0a581d..dc49fe35184 100644 --- a/.github/workflows/copilot-opt.lock.yml +++ b/.github/workflows/copilot-opt.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-pr-merged-report.lock.yml b/.github/workflows/copilot-pr-merged-report.lock.yml index 2ff652659ea..5921977ad5c 100644 --- a/.github/workflows/copilot-pr-merged-report.lock.yml +++ b/.github/workflows/copilot-pr-merged-report.lock.yml @@ -239,16 +239,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-pr-nlp-analysis.lock.yml b/.github/workflows/copilot-pr-nlp-analysis.lock.yml index 296ef1a0b2c..a6bd3d96dd9 100644 --- a/.github/workflows/copilot-pr-nlp-analysis.lock.yml +++ b/.github/workflows/copilot-pr-nlp-analysis.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-pr-prompt-analysis.lock.yml b/.github/workflows/copilot-pr-prompt-analysis.lock.yml index 46ad4fbd803..999f2d3c3e6 100644 --- a/.github/workflows/copilot-pr-prompt-analysis.lock.yml +++ b/.github/workflows/copilot-pr-prompt-analysis.lock.yml @@ -241,16 +241,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/copilot-session-insights.lock.yml b/.github/workflows/copilot-session-insights.lock.yml index 2c47f8de055..8bbc959befd 100644 --- a/.github/workflows/copilot-session-insights.lock.yml +++ b/.github/workflows/copilot-session-insights.lock.yml @@ -253,16 +253,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/craft.lock.yml b/.github/workflows/craft.lock.yml index 4a375ba1034..afeeba575dd 100644 --- a/.github/workflows/craft.lock.yml +++ b/.github/workflows/craft.lock.yml @@ -280,16 +280,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml index 8d49e065976..37da7f6dad8 100644 --- a/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml +++ b/.github/workflows/daily-agent-of-the-day-blog-writer.lock.yml @@ -252,16 +252,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-agentrx-trace-optimizer.lock.yml b/.github/workflows/daily-agentrx-trace-optimizer.lock.yml index 2725f3574b8..466e6b09821 100644 --- a/.github/workflows/daily-agentrx-trace-optimizer.lock.yml +++ b/.github/workflows/daily-agentrx-trace-optimizer.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-ambient-context-optimizer.lock.yml b/.github/workflows/daily-ambient-context-optimizer.lock.yml index c1880000170..5e22aec0456 100644 --- a/.github/workflows/daily-ambient-context-optimizer.lock.yml +++ b/.github/workflows/daily-ambient-context-optimizer.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-architecture-diagram.lock.yml b/.github/workflows/daily-architecture-diagram.lock.yml index 774f85295b3..1ad9a83794d 100644 --- a/.github/workflows/daily-architecture-diagram.lock.yml +++ b/.github/workflows/daily-architecture-diagram.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-assign-issue-to-user.lock.yml b/.github/workflows/daily-assign-issue-to-user.lock.yml index 3e29b41160b..a1493e2c5d8 100644 --- a/.github/workflows/daily-assign-issue-to-user.lock.yml +++ b/.github/workflows/daily-assign-issue-to-user.lock.yml @@ -234,16 +234,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml b/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml index 62da06ee484..2d47aedb4b7 100644 --- a/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml +++ b/.github/workflows/daily-astrostylelite-markdown-spellcheck.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml b/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml index b954c0bed62..3943bdcf7a9 100644 --- a/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml +++ b/.github/workflows/daily-aw-cross-repo-compile-check.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml b/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml index baba26cc978..66adff1dc07 100644 --- a/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml +++ b/.github/workflows/daily-awf-spec-compiler-surfacing.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-byok-ollama-test.lock.yml b/.github/workflows/daily-byok-ollama-test.lock.yml index 049000f6118..5a255712281 100644 --- a/.github/workflows/daily-byok-ollama-test.lock.yml +++ b/.github/workflows/daily-byok-ollama-test.lock.yml @@ -217,16 +217,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-cache-strategy-analyzer.lock.yml b/.github/workflows/daily-cache-strategy-analyzer.lock.yml index 25f3ed2f657..3b8c76373b8 100644 --- a/.github/workflows/daily-cache-strategy-analyzer.lock.yml +++ b/.github/workflows/daily-cache-strategy-analyzer.lock.yml @@ -253,16 +253,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-caveman-optimizer.lock.yml b/.github/workflows/daily-caveman-optimizer.lock.yml index 3e8643c9a93..796dd66f542 100644 --- a/.github/workflows/daily-caveman-optimizer.lock.yml +++ b/.github/workflows/daily-caveman-optimizer.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-choice-test.lock.yml b/.github/workflows/daily-choice-test.lock.yml index 0c88cce4b0f..f02dc129a1f 100644 --- a/.github/workflows/daily-choice-test.lock.yml +++ b/.github/workflows/daily-choice-test.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-cli-performance.lock.yml b/.github/workflows/daily-cli-performance.lock.yml index 534b6a2599b..69f3f90103f 100644 --- a/.github/workflows/daily-cli-performance.lock.yml +++ b/.github/workflows/daily-cli-performance.lock.yml @@ -268,16 +268,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-cli-tools-tester.lock.yml b/.github/workflows/daily-cli-tools-tester.lock.yml index 0fbf96c8cec..27701e10f0d 100644 --- a/.github/workflows/daily-cli-tools-tester.lock.yml +++ b/.github/workflows/daily-cli-tools-tester.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-code-metrics.lock.yml b/.github/workflows/daily-code-metrics.lock.yml index 9430a2c1a1e..57efb92d147 100644 --- a/.github/workflows/daily-code-metrics.lock.yml +++ b/.github/workflows/daily-code-metrics.lock.yml @@ -251,16 +251,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-community-attribution.lock.yml b/.github/workflows/daily-community-attribution.lock.yml index 5951ec10962..82570af521a 100644 --- a/.github/workflows/daily-community-attribution.lock.yml +++ b/.github/workflows/daily-community-attribution.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-compiler-quality.lock.yml b/.github/workflows/daily-compiler-quality.lock.yml index d731c8eb38a..c2dbcf23eea 100644 --- a/.github/workflows/daily-compiler-quality.lock.yml +++ b/.github/workflows/daily-compiler-quality.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml b/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml index 3aa7c66bae2..65b8462b24b 100644 --- a/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml +++ b/.github/workflows/daily-compiler-threat-spec-optimizer.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-credit-limit-test.lock.yml b/.github/workflows/daily-credit-limit-test.lock.yml index 56691e5d785..920d3e5fb9d 100644 --- a/.github/workflows/daily-credit-limit-test.lock.yml +++ b/.github/workflows/daily-credit-limit-test.lock.yml @@ -223,16 +223,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-doc-healer.lock.yml b/.github/workflows/daily-doc-healer.lock.yml index f586932dfe1..52f016ab0b3 100644 --- a/.github/workflows/daily-doc-healer.lock.yml +++ b/.github/workflows/daily-doc-healer.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-doc-updater.lock.yml b/.github/workflows/daily-doc-updater.lock.yml index 735c22a53d1..60341416ae3 100644 --- a/.github/workflows/daily-doc-updater.lock.yml +++ b/.github/workflows/daily-doc-updater.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-experiment-report.lock.yml b/.github/workflows/daily-experiment-report.lock.yml index e2ed32b8ea7..5ea1892990d 100644 --- a/.github/workflows/daily-experiment-report.lock.yml +++ b/.github/workflows/daily-experiment-report.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-fact.lock.yml b/.github/workflows/daily-fact.lock.yml index 78dd5ab5e8a..4cde1b6a5dd 100644 --- a/.github/workflows/daily-fact.lock.yml +++ b/.github/workflows/daily-fact.lock.yml @@ -251,16 +251,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-file-diet.lock.yml b/.github/workflows/daily-file-diet.lock.yml index d9f723d17f0..4fb0b64f72c 100644 --- a/.github/workflows/daily-file-diet.lock.yml +++ b/.github/workflows/daily-file-diet.lock.yml @@ -248,16 +248,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-firewall-report.lock.yml b/.github/workflows/daily-firewall-report.lock.yml index c3605ece29a..ada32b05a23 100644 --- a/.github/workflows/daily-firewall-report.lock.yml +++ b/.github/workflows/daily-firewall-report.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-formal-spec-verifier.lock.yml b/.github/workflows/daily-formal-spec-verifier.lock.yml index 9be72d1a90f..e71789db37f 100644 --- a/.github/workflows/daily-formal-spec-verifier.lock.yml +++ b/.github/workflows/daily-formal-spec-verifier.lock.yml @@ -239,16 +239,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-function-namer.lock.yml b/.github/workflows/daily-function-namer.lock.yml index 38710a668b0..a550545bb93 100644 --- a/.github/workflows/daily-function-namer.lock.yml +++ b/.github/workflows/daily-function-namer.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-geo-optimizer.lock.yml b/.github/workflows/daily-geo-optimizer.lock.yml index bb743f6a4d8..e81d122dd70 100644 --- a/.github/workflows/daily-geo-optimizer.lock.yml +++ b/.github/workflows/daily-geo-optimizer.lock.yml @@ -239,16 +239,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-hippo-learn.lock.yml b/.github/workflows/daily-hippo-learn.lock.yml index 85d609eaa38..3d79bce4100 100644 --- a/.github/workflows/daily-hippo-learn.lock.yml +++ b/.github/workflows/daily-hippo-learn.lock.yml @@ -238,16 +238,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-issues-report.lock.yml b/.github/workflows/daily-issues-report.lock.yml index 4138c476b27..61af9af62db 100644 --- a/.github/workflows/daily-issues-report.lock.yml +++ b/.github/workflows/daily-issues-report.lock.yml @@ -254,16 +254,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-malicious-code-scan.lock.yml b/.github/workflows/daily-malicious-code-scan.lock.yml index 2a7d5df8a7d..202f75ead01 100644 --- a/.github/workflows/daily-malicious-code-scan.lock.yml +++ b/.github/workflows/daily-malicious-code-scan.lock.yml @@ -239,16 +239,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-max-ai-credits-test.lock.yml b/.github/workflows/daily-max-ai-credits-test.lock.yml index 1db797ddae4..f97570ddc85 100644 --- a/.github/workflows/daily-max-ai-credits-test.lock.yml +++ b/.github/workflows/daily-max-ai-credits-test.lock.yml @@ -165,16 +165,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml index bde02a02857..64ad788e21f 100644 --- a/.github/workflows/daily-mcp-concurrency-analysis.lock.yml +++ b/.github/workflows/daily-mcp-concurrency-analysis.lock.yml @@ -242,16 +242,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-model-inventory.lock.yml b/.github/workflows/daily-model-inventory.lock.yml index e1c38b2c520..a87905898ef 100644 --- a/.github/workflows/daily-model-inventory.lock.yml +++ b/.github/workflows/daily-model-inventory.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-multi-device-docs-tester.lock.yml b/.github/workflows/daily-multi-device-docs-tester.lock.yml index 92941126b15..89def689555 100644 --- a/.github/workflows/daily-multi-device-docs-tester.lock.yml +++ b/.github/workflows/daily-multi-device-docs-tester.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-news.lock.yml b/.github/workflows/daily-news.lock.yml index 8548dede997..9950e3f7eea 100644 --- a/.github/workflows/daily-news.lock.yml +++ b/.github/workflows/daily-news.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-observability-report.lock.yml b/.github/workflows/daily-observability-report.lock.yml index fd2e3185f8d..7c2ff25fcdb 100644 --- a/.github/workflows/daily-observability-report.lock.yml +++ b/.github/workflows/daily-observability-report.lock.yml @@ -252,16 +252,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-performance-summary.lock.yml b/.github/workflows/daily-performance-summary.lock.yml index 0df7289e506..a2c6e3d2235 100644 --- a/.github/workflows/daily-performance-summary.lock.yml +++ b/.github/workflows/daily-performance-summary.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-regulatory.lock.yml b/.github/workflows/daily-regulatory.lock.yml index b66e39c66e5..84063cfdbbd 100644 --- a/.github/workflows/daily-regulatory.lock.yml +++ b/.github/workflows/daily-regulatory.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-reliability-review.lock.yml b/.github/workflows/daily-reliability-review.lock.yml index 5b9d1252586..85aafc98a7f 100644 --- a/.github/workflows/daily-reliability-review.lock.yml +++ b/.github/workflows/daily-reliability-review.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-rendering-scripts-verifier.lock.yml b/.github/workflows/daily-rendering-scripts-verifier.lock.yml index 38addae29ac..0809b807ac5 100644 --- a/.github/workflows/daily-rendering-scripts-verifier.lock.yml +++ b/.github/workflows/daily-rendering-scripts-verifier.lock.yml @@ -258,16 +258,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-repo-chronicle.lock.yml b/.github/workflows/daily-repo-chronicle.lock.yml index 36212b40b1b..9347161ab08 100644 --- a/.github/workflows/daily-repo-chronicle.lock.yml +++ b/.github/workflows/daily-repo-chronicle.lock.yml @@ -241,16 +241,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-safe-output-integrator.lock.yml b/.github/workflows/daily-safe-output-integrator.lock.yml index b81cc664860..af5de602fa5 100644 --- a/.github/workflows/daily-safe-output-integrator.lock.yml +++ b/.github/workflows/daily-safe-output-integrator.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-safe-output-optimizer.lock.yml b/.github/workflows/daily-safe-output-optimizer.lock.yml index 212963d0f58..373ec19daac 100644 --- a/.github/workflows/daily-safe-output-optimizer.lock.yml +++ b/.github/workflows/daily-safe-output-optimizer.lock.yml @@ -258,16 +258,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-safe-outputs-conformance.lock.yml b/.github/workflows/daily-safe-outputs-conformance.lock.yml index aa4f77bd606..45099fd090a 100644 --- a/.github/workflows/daily-safe-outputs-conformance.lock.yml +++ b/.github/workflows/daily-safe-outputs-conformance.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-safeoutputs-git-simulator.lock.yml b/.github/workflows/daily-safeoutputs-git-simulator.lock.yml index 86d85002f5f..1469117ec60 100644 --- a/.github/workflows/daily-safeoutputs-git-simulator.lock.yml +++ b/.github/workflows/daily-safeoutputs-git-simulator.lock.yml @@ -226,16 +226,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-secrets-analysis.lock.yml b/.github/workflows/daily-secrets-analysis.lock.yml index 4353a917805..9bdb8cd6022 100644 --- a/.github/workflows/daily-secrets-analysis.lock.yml +++ b/.github/workflows/daily-secrets-analysis.lock.yml @@ -239,16 +239,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-security-observability.lock.yml b/.github/workflows/daily-security-observability.lock.yml index 5cadf92a071..ee6d727bede 100644 --- a/.github/workflows/daily-security-observability.lock.yml +++ b/.github/workflows/daily-security-observability.lock.yml @@ -258,16 +258,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-security-red-team.lock.yml b/.github/workflows/daily-security-red-team.lock.yml index 503a63c5e3e..88f8365190d 100644 --- a/.github/workflows/daily-security-red-team.lock.yml +++ b/.github/workflows/daily-security-red-team.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-semgrep-scan.lock.yml b/.github/workflows/daily-semgrep-scan.lock.yml index faf4c06f11e..8ae0085abf0 100644 --- a/.github/workflows/daily-semgrep-scan.lock.yml +++ b/.github/workflows/daily-semgrep-scan.lock.yml @@ -241,16 +241,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/daily-sentrux-report.lock.yml b/.github/workflows/daily-sentrux-report.lock.yml index bc16b730844..a04aa1d31d6 100644 --- a/.github/workflows/daily-sentrux-report.lock.yml +++ b/.github/workflows/daily-sentrux-report.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-skill-optimizer.lock.yml b/.github/workflows/daily-skill-optimizer.lock.yml index 11102cacc4b..fec8b5065d8 100644 --- a/.github/workflows/daily-skill-optimizer.lock.yml +++ b/.github/workflows/daily-skill-optimizer.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-spdd-spec-planner.lock.yml b/.github/workflows/daily-spdd-spec-planner.lock.yml index ec258a1f997..97c7c4a525a 100644 --- a/.github/workflows/daily-spdd-spec-planner.lock.yml +++ b/.github/workflows/daily-spdd-spec-planner.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-syntax-error-quality.lock.yml b/.github/workflows/daily-syntax-error-quality.lock.yml index 5e1c14b80e5..b69f29ae4f9 100644 --- a/.github/workflows/daily-syntax-error-quality.lock.yml +++ b/.github/workflows/daily-syntax-error-quality.lock.yml @@ -236,16 +236,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-team-evolution-insights.lock.yml b/.github/workflows/daily-team-evolution-insights.lock.yml index 105b83f5ed5..836e34aaadb 100644 --- a/.github/workflows/daily-team-evolution-insights.lock.yml +++ b/.github/workflows/daily-team-evolution-insights.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-team-status.lock.yml b/.github/workflows/daily-team-status.lock.yml index adca0350a36..f72001a7566 100644 --- a/.github/workflows/daily-team-status.lock.yml +++ b/.github/workflows/daily-team-status.lock.yml @@ -231,16 +231,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-testify-uber-super-expert.lock.yml b/.github/workflows/daily-testify-uber-super-expert.lock.yml index 61d0ec400aa..ecf07c64b67 100644 --- a/.github/workflows/daily-testify-uber-super-expert.lock.yml +++ b/.github/workflows/daily-testify-uber-super-expert.lock.yml @@ -248,16 +248,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-token-consumption-report.lock.yml b/.github/workflows/daily-token-consumption-report.lock.yml index f45132164fc..c107c36b182 100644 --- a/.github/workflows/daily-token-consumption-report.lock.yml +++ b/.github/workflows/daily-token-consumption-report.lock.yml @@ -253,16 +253,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-windows-terminal-integration-builder.lock.yml b/.github/workflows/daily-windows-terminal-integration-builder.lock.yml index 48e2e9676b0..92c98016603 100644 --- a/.github/workflows/daily-windows-terminal-integration-builder.lock.yml +++ b/.github/workflows/daily-windows-terminal-integration-builder.lock.yml @@ -225,16 +225,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/daily-workflow-updater.lock.yml b/.github/workflows/daily-workflow-updater.lock.yml index fc9ad136aee..f17515379b2 100644 --- a/.github/workflows/daily-workflow-updater.lock.yml +++ b/.github/workflows/daily-workflow-updater.lock.yml @@ -237,16 +237,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/dataflow-pr-discussion-dataset.lock.yml b/.github/workflows/dataflow-pr-discussion-dataset.lock.yml index 3e8563d82ce..9e5bca67336 100644 --- a/.github/workflows/dataflow-pr-discussion-dataset.lock.yml +++ b/.github/workflows/dataflow-pr-discussion-dataset.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/dead-code-remover.lock.yml b/.github/workflows/dead-code-remover.lock.yml index 3934ea83303..4c5c7d55dd6 100644 --- a/.github/workflows/dead-code-remover.lock.yml +++ b/.github/workflows/dead-code-remover.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/deep-report.lock.yml b/.github/workflows/deep-report.lock.yml index df62f1c1b31..d57111094c9 100644 --- a/.github/workflows/deep-report.lock.yml +++ b/.github/workflows/deep-report.lock.yml @@ -255,16 +255,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/delight.lock.yml b/.github/workflows/delight.lock.yml index 75eeb3d8466..b325725dee0 100644 --- a/.github/workflows/delight.lock.yml +++ b/.github/workflows/delight.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/dependabot-burner.lock.yml b/.github/workflows/dependabot-burner.lock.yml index f9ba32e722f..a9b1e8b3a47 100644 --- a/.github/workflows/dependabot-burner.lock.yml +++ b/.github/workflows/dependabot-burner.lock.yml @@ -306,16 +306,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/dependabot-go-checker.lock.yml b/.github/workflows/dependabot-go-checker.lock.yml index 98290c74052..bc2a9ce4607 100644 --- a/.github/workflows/dependabot-go-checker.lock.yml +++ b/.github/workflows/dependabot-go-checker.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/dependabot-repair.lock.yml b/.github/workflows/dependabot-repair.lock.yml index 6686b92ffea..fa9495c4bba 100644 --- a/.github/workflows/dependabot-repair.lock.yml +++ b/.github/workflows/dependabot-repair.lock.yml @@ -264,16 +264,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/deployment-incident-monitor.lock.yml b/.github/workflows/deployment-incident-monitor.lock.yml index 0a23e00f316..2d7251ad656 100644 --- a/.github/workflows/deployment-incident-monitor.lock.yml +++ b/.github/workflows/deployment-incident-monitor.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/design-decision-gate.lock.yml b/.github/workflows/design-decision-gate.lock.yml index 26e8f34e50b..d3270e863df 100644 --- a/.github/workflows/design-decision-gate.lock.yml +++ b/.github/workflows/design-decision-gate.lock.yml @@ -302,16 +302,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/designer-drift-audit.lock.yml b/.github/workflows/designer-drift-audit.lock.yml index 7c7f92ae2cf..31b46e54926 100644 --- a/.github/workflows/designer-drift-audit.lock.yml +++ b/.github/workflows/designer-drift-audit.lock.yml @@ -225,16 +225,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/dev-hawk.lock.yml b/.github/workflows/dev-hawk.lock.yml index 4561865fcd5..fa571ed8d3c 100644 --- a/.github/workflows/dev-hawk.lock.yml +++ b/.github/workflows/dev-hawk.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/dev.lock.yml b/.github/workflows/dev.lock.yml index 722ae3b17ed..055fe3e09a9 100644 --- a/.github/workflows/dev.lock.yml +++ b/.github/workflows/dev.lock.yml @@ -299,16 +299,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/developer-docs-consolidator.lock.yml b/.github/workflows/developer-docs-consolidator.lock.yml index 06359148025..e5ad26716e6 100644 --- a/.github/workflows/developer-docs-consolidator.lock.yml +++ b/.github/workflows/developer-docs-consolidator.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/dictation-prompt.lock.yml b/.github/workflows/dictation-prompt.lock.yml index 023d3741ed1..aec488209a5 100644 --- a/.github/workflows/dictation-prompt.lock.yml +++ b/.github/workflows/dictation-prompt.lock.yml @@ -238,16 +238,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/discussion-task-miner.lock.yml b/.github/workflows/discussion-task-miner.lock.yml index 284613a6f2f..9c9c96fcae1 100644 --- a/.github/workflows/discussion-task-miner.lock.yml +++ b/.github/workflows/discussion-task-miner.lock.yml @@ -239,16 +239,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/docs-noob-tester.lock.yml b/.github/workflows/docs-noob-tester.lock.yml index c42b89b9ecf..ba47900e33b 100644 --- a/.github/workflows/docs-noob-tester.lock.yml +++ b/.github/workflows/docs-noob-tester.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/draft-pr-cleanup.lock.yml b/.github/workflows/draft-pr-cleanup.lock.yml index 96dc85ac6a4..232d132ce42 100644 --- a/.github/workflows/draft-pr-cleanup.lock.yml +++ b/.github/workflows/draft-pr-cleanup.lock.yml @@ -236,16 +236,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/duplicate-code-detector.lock.yml b/.github/workflows/duplicate-code-detector.lock.yml index 2bd0491a142..ec88b04a9d6 100644 --- a/.github/workflows/duplicate-code-detector.lock.yml +++ b/.github/workflows/duplicate-code-detector.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/example-failure-category-filter.lock.yml b/.github/workflows/example-failure-category-filter.lock.yml index c5352e1de3a..4dd28e1f350 100644 --- a/.github/workflows/example-failure-category-filter.lock.yml +++ b/.github/workflows/example-failure-category-filter.lock.yml @@ -219,16 +219,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/example-permissions-warning.lock.yml b/.github/workflows/example-permissions-warning.lock.yml index 4d54bd86fea..04feb172794 100644 --- a/.github/workflows/example-permissions-warning.lock.yml +++ b/.github/workflows/example-permissions-warning.lock.yml @@ -238,16 +238,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/example-workflow-analyzer.lock.yml b/.github/workflows/example-workflow-analyzer.lock.yml index b679f75ead7..3c32782afc7 100644 --- a/.github/workflows/example-workflow-analyzer.lock.yml +++ b/.github/workflows/example-workflow-analyzer.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/firewall-escape.lock.yml b/.github/workflows/firewall-escape.lock.yml index 1951371f8df..b77ce8321aa 100644 --- a/.github/workflows/firewall-escape.lock.yml +++ b/.github/workflows/firewall-escape.lock.yml @@ -262,16 +262,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/firewall.lock.yml b/.github/workflows/firewall.lock.yml index a248e095b2f..0115664c263 100644 --- a/.github/workflows/firewall.lock.yml +++ b/.github/workflows/firewall.lock.yml @@ -238,16 +238,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/functional-pragmatist.lock.yml b/.github/workflows/functional-pragmatist.lock.yml index 97fe8841981..7eb443e43c9 100644 --- a/.github/workflows/functional-pragmatist.lock.yml +++ b/.github/workflows/functional-pragmatist.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/github-mcp-structural-analysis.lock.yml b/.github/workflows/github-mcp-structural-analysis.lock.yml index 8b2ade72b8c..3e32f93f7db 100644 --- a/.github/workflows/github-mcp-structural-analysis.lock.yml +++ b/.github/workflows/github-mcp-structural-analysis.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/github-mcp-tools-report.lock.yml b/.github/workflows/github-mcp-tools-report.lock.yml index c028bf891ed..cea7c84fbb9 100644 --- a/.github/workflows/github-mcp-tools-report.lock.yml +++ b/.github/workflows/github-mcp-tools-report.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/github-remote-mcp-auth-test.lock.yml b/.github/workflows/github-remote-mcp-auth-test.lock.yml index 330ca17936d..00567912e33 100644 --- a/.github/workflows/github-remote-mcp-auth-test.lock.yml +++ b/.github/workflows/github-remote-mcp-auth-test.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/glossary-maintainer.lock.yml b/.github/workflows/glossary-maintainer.lock.yml index e223d4003f6..50ddf57e608 100644 --- a/.github/workflows/glossary-maintainer.lock.yml +++ b/.github/workflows/glossary-maintainer.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/go-fan.lock.yml b/.github/workflows/go-fan.lock.yml index 54695c62316..47d1f343829 100644 --- a/.github/workflows/go-fan.lock.yml +++ b/.github/workflows/go-fan.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/go-logger.lock.yml b/.github/workflows/go-logger.lock.yml index 0eb777fb494..2e9b6aff31b 100644 --- a/.github/workflows/go-logger.lock.yml +++ b/.github/workflows/go-logger.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index 4a53c52a431..be5bd500620 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/gpclean.lock.yml b/.github/workflows/gpclean.lock.yml index e32429a5253..da3be8dee09 100644 --- a/.github/workflows/gpclean.lock.yml +++ b/.github/workflows/gpclean.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/grumpy-reviewer.lock.yml b/.github/workflows/grumpy-reviewer.lock.yml index 0ded4073b7c..f0277ecc4f1 100644 --- a/.github/workflows/grumpy-reviewer.lock.yml +++ b/.github/workflows/grumpy-reviewer.lock.yml @@ -291,16 +291,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/hippo-embed.lock.yml b/.github/workflows/hippo-embed.lock.yml index dd4837a75c0..4bc88e22b90 100644 --- a/.github/workflows/hippo-embed.lock.yml +++ b/.github/workflows/hippo-embed.lock.yml @@ -237,16 +237,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/hourly-ci-cleaner.lock.yml b/.github/workflows/hourly-ci-cleaner.lock.yml index f3bc5bd4110..37ca369b99e 100644 --- a/.github/workflows/hourly-ci-cleaner.lock.yml +++ b/.github/workflows/hourly-ci-cleaner.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/instructions-janitor.lock.yml b/.github/workflows/instructions-janitor.lock.yml index 4b36f7d3a0d..ecc1639e32f 100644 --- a/.github/workflows/instructions-janitor.lock.yml +++ b/.github/workflows/instructions-janitor.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/issue-arborist.lock.yml b/.github/workflows/issue-arborist.lock.yml index 93ce344fe1f..b54e7ed83db 100644 --- a/.github/workflows/issue-arborist.lock.yml +++ b/.github/workflows/issue-arborist.lock.yml @@ -248,16 +248,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/issue-monster.lock.yml b/.github/workflows/issue-monster.lock.yml index 3a2c50c302c..a9d1def31fe 100644 --- a/.github/workflows/issue-monster.lock.yml +++ b/.github/workflows/issue-monster.lock.yml @@ -632,16 +632,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/issue-triage-agent.lock.yml b/.github/workflows/issue-triage-agent.lock.yml index d65e1f292e6..e19895b2368 100644 --- a/.github/workflows/issue-triage-agent.lock.yml +++ b/.github/workflows/issue-triage-agent.lock.yml @@ -242,16 +242,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/jsweep.lock.yml b/.github/workflows/jsweep.lock.yml index b3723fbf10e..7b2b1a633eb 100644 --- a/.github/workflows/jsweep.lock.yml +++ b/.github/workflows/jsweep.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/layout-spec-maintainer.lock.yml b/.github/workflows/layout-spec-maintainer.lock.yml index f59f42778b5..54305449ac2 100644 --- a/.github/workflows/layout-spec-maintainer.lock.yml +++ b/.github/workflows/layout-spec-maintainer.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/lint-monster.lock.yml b/.github/workflows/lint-monster.lock.yml index f8f66f4ee3a..f55013bb447 100644 --- a/.github/workflows/lint-monster.lock.yml +++ b/.github/workflows/lint-monster.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/linter-miner.lock.yml b/.github/workflows/linter-miner.lock.yml index a13e20709ef..9b804ec6d84 100644 --- a/.github/workflows/linter-miner.lock.yml +++ b/.github/workflows/linter-miner.lock.yml @@ -239,16 +239,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/lockfile-stats.lock.yml b/.github/workflows/lockfile-stats.lock.yml index 90ec4743d31..4bc1e7637ba 100644 --- a/.github/workflows/lockfile-stats.lock.yml +++ b/.github/workflows/lockfile-stats.lock.yml @@ -245,16 +245,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/mattpocock-skills-reviewer.lock.yml b/.github/workflows/mattpocock-skills-reviewer.lock.yml index 28be5af7798..3619417a4ee 100644 --- a/.github/workflows/mattpocock-skills-reviewer.lock.yml +++ b/.github/workflows/mattpocock-skills-reviewer.lock.yml @@ -287,16 +287,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/mcp-inspector.lock.yml b/.github/workflows/mcp-inspector.lock.yml index 07b63d9c8fb..0ac94f92100 100644 --- a/.github/workflows/mcp-inspector.lock.yml +++ b/.github/workflows/mcp-inspector.lock.yml @@ -290,16 +290,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/mergefest.lock.yml b/.github/workflows/mergefest.lock.yml index c42daed0c1a..4b2c56e309a 100644 --- a/.github/workflows/mergefest.lock.yml +++ b/.github/workflows/mergefest.lock.yml @@ -288,16 +288,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/metrics-collector.lock.yml b/.github/workflows/metrics-collector.lock.yml index 3545e8d50ef..1fd5a43ca74 100644 --- a/.github/workflows/metrics-collector.lock.yml +++ b/.github/workflows/metrics-collector.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/necromancer.lock.yml b/.github/workflows/necromancer.lock.yml index 13064f85f4e..e36dab67f01 100644 --- a/.github/workflows/necromancer.lock.yml +++ b/.github/workflows/necromancer.lock.yml @@ -309,16 +309,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/notion-issue-summary.lock.yml b/.github/workflows/notion-issue-summary.lock.yml index 8443b6921ef..69c6ce3acfd 100644 --- a/.github/workflows/notion-issue-summary.lock.yml +++ b/.github/workflows/notion-issue-summary.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/objective-impact-report.lock.yml b/.github/workflows/objective-impact-report.lock.yml index e2f2137b0aa..2a0c9f8cce2 100644 --- a/.github/workflows/objective-impact-report.lock.yml +++ b/.github/workflows/objective-impact-report.lock.yml @@ -225,16 +225,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/org-health-report.lock.yml b/.github/workflows/org-health-report.lock.yml index ddf17e4b7cb..17305457080 100644 --- a/.github/workflows/org-health-report.lock.yml +++ b/.github/workflows/org-health-report.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/outcome-collector.lock.yml b/.github/workflows/outcome-collector.lock.yml index 6f120886ecc..50b7ce0d079 100644 --- a/.github/workflows/outcome-collector.lock.yml +++ b/.github/workflows/outcome-collector.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/pdf-summary.lock.yml b/.github/workflows/pdf-summary.lock.yml index 903f79843f0..e5f056b7722 100644 --- a/.github/workflows/pdf-summary.lock.yml +++ b/.github/workflows/pdf-summary.lock.yml @@ -299,16 +299,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/plan.lock.yml b/.github/workflows/plan.lock.yml index b3d9eb216c9..127005cf9a6 100644 --- a/.github/workflows/plan.lock.yml +++ b/.github/workflows/plan.lock.yml @@ -287,16 +287,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/poem-bot.lock.yml b/.github/workflows/poem-bot.lock.yml index cedb736dd89..d53c0f4c0c4 100644 --- a/.github/workflows/poem-bot.lock.yml +++ b/.github/workflows/poem-bot.lock.yml @@ -296,16 +296,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/portfolio-analyst.lock.yml b/.github/workflows/portfolio-analyst.lock.yml index 5fb5ec8b4a6..63208ceb636 100644 --- a/.github/workflows/portfolio-analyst.lock.yml +++ b/.github/workflows/portfolio-analyst.lock.yml @@ -237,16 +237,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/pr-code-quality-reviewer.lock.yml b/.github/workflows/pr-code-quality-reviewer.lock.yml index 7df4ed5613a..38a08cd3329 100644 --- a/.github/workflows/pr-code-quality-reviewer.lock.yml +++ b/.github/workflows/pr-code-quality-reviewer.lock.yml @@ -287,16 +287,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/pr-description-caveman.lock.yml b/.github/workflows/pr-description-caveman.lock.yml index a8dad7eff88..2f7988b5927 100644 --- a/.github/workflows/pr-description-caveman.lock.yml +++ b/.github/workflows/pr-description-caveman.lock.yml @@ -238,16 +238,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/pr-nitpick-reviewer.lock.yml b/.github/workflows/pr-nitpick-reviewer.lock.yml index a6e0baedda2..1ca3019336c 100644 --- a/.github/workflows/pr-nitpick-reviewer.lock.yml +++ b/.github/workflows/pr-nitpick-reviewer.lock.yml @@ -290,16 +290,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/pr-sous-chef.lock.yml b/.github/workflows/pr-sous-chef.lock.yml index 320eff30891..22afe06a04c 100644 --- a/.github/workflows/pr-sous-chef.lock.yml +++ b/.github/workflows/pr-sous-chef.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/pr-triage-agent.lock.yml b/.github/workflows/pr-triage-agent.lock.yml index d1147208ba6..bee3c354439 100644 --- a/.github/workflows/pr-triage-agent.lock.yml +++ b/.github/workflows/pr-triage-agent.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/prompt-clustering-analysis.lock.yml b/.github/workflows/prompt-clustering-analysis.lock.yml index df2ccd5b5f5..53e32ce77c5 100644 --- a/.github/workflows/prompt-clustering-analysis.lock.yml +++ b/.github/workflows/prompt-clustering-analysis.lock.yml @@ -259,16 +259,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/python-data-charts.lock.yml b/.github/workflows/python-data-charts.lock.yml index 9ad192b80c7..e1d32b7a286 100644 --- a/.github/workflows/python-data-charts.lock.yml +++ b/.github/workflows/python-data-charts.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/q.lock.yml b/.github/workflows/q.lock.yml index 8b7f793e0de..3728c5fb7b0 100644 --- a/.github/workflows/q.lock.yml +++ b/.github/workflows/q.lock.yml @@ -315,16 +315,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/refactoring-cadence.lock.yml b/.github/workflows/refactoring-cadence.lock.yml index 7d74884a524..3e0c5271277 100644 --- a/.github/workflows/refactoring-cadence.lock.yml +++ b/.github/workflows/refactoring-cadence.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/refiner.lock.yml b/.github/workflows/refiner.lock.yml index 5fd083bbda8..e93bc805bd9 100644 --- a/.github/workflows/refiner.lock.yml +++ b/.github/workflows/refiner.lock.yml @@ -274,16 +274,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/release.lock.yml b/.github/workflows/release.lock.yml index bdac8f2642f..fcd7450e70a 100644 --- a/.github/workflows/release.lock.yml +++ b/.github/workflows/release.lock.yml @@ -261,16 +261,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/repo-audit-analyzer.lock.yml b/.github/workflows/repo-audit-analyzer.lock.yml index 3c6884bbece..4830751fe7b 100644 --- a/.github/workflows/repo-audit-analyzer.lock.yml +++ b/.github/workflows/repo-audit-analyzer.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/repo-tree-map.lock.yml b/.github/workflows/repo-tree-map.lock.yml index 133995bca4c..088b626a7ca 100644 --- a/.github/workflows/repo-tree-map.lock.yml +++ b/.github/workflows/repo-tree-map.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/repository-quality-improver.lock.yml b/.github/workflows/repository-quality-improver.lock.yml index df34eaec475..283871f8cdc 100644 --- a/.github/workflows/repository-quality-improver.lock.yml +++ b/.github/workflows/repository-quality-improver.lock.yml @@ -252,16 +252,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/research.lock.yml b/.github/workflows/research.lock.yml index 34245ff4ca2..af856a53b33 100644 --- a/.github/workflows/research.lock.yml +++ b/.github/workflows/research.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/ruflo-backed-task.lock.yml b/.github/workflows/ruflo-backed-task.lock.yml index 1604225726d..07f0af60ddd 100644 --- a/.github/workflows/ruflo-backed-task.lock.yml +++ b/.github/workflows/ruflo-backed-task.lock.yml @@ -275,16 +275,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/safe-output-health.lock.yml b/.github/workflows/safe-output-health.lock.yml index 4e581abbeba..5bc4434fa67 100644 --- a/.github/workflows/safe-output-health.lock.yml +++ b/.github/workflows/safe-output-health.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/schema-consistency-checker.lock.yml b/.github/workflows/schema-consistency-checker.lock.yml index 0c7a9d4d1f3..f71eaf291c0 100644 --- a/.github/workflows/schema-consistency-checker.lock.yml +++ b/.github/workflows/schema-consistency-checker.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/schema-feature-coverage.lock.yml b/.github/workflows/schema-feature-coverage.lock.yml index 614083fe10c..05a7a8bbb5b 100644 --- a/.github/workflows/schema-feature-coverage.lock.yml +++ b/.github/workflows/schema-feature-coverage.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/scout.lock.yml b/.github/workflows/scout.lock.yml index 9543558c3cf..25091da7000 100644 --- a/.github/workflows/scout.lock.yml +++ b/.github/workflows/scout.lock.yml @@ -312,16 +312,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/security-compliance.lock.yml b/.github/workflows/security-compliance.lock.yml index f0336cfba9d..fb7e8d1dfd2 100644 --- a/.github/workflows/security-compliance.lock.yml +++ b/.github/workflows/security-compliance.lock.yml @@ -251,16 +251,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/security-review.lock.yml b/.github/workflows/security-review.lock.yml index 8ff79717d31..d5d19d26a0f 100644 --- a/.github/workflows/security-review.lock.yml +++ b/.github/workflows/security-review.lock.yml @@ -286,16 +286,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/semantic-function-refactor.lock.yml b/.github/workflows/semantic-function-refactor.lock.yml index ceb87221f9b..12c0c46e259 100644 --- a/.github/workflows/semantic-function-refactor.lock.yml +++ b/.github/workflows/semantic-function-refactor.lock.yml @@ -248,16 +248,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/sergo.lock.yml b/.github/workflows/sergo.lock.yml index f1c4c87f6be..e77b91e9bcc 100644 --- a/.github/workflows/sergo.lock.yml +++ b/.github/workflows/sergo.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/skillet.lock.yml b/.github/workflows/skillet.lock.yml index 1e31003aca9..27a2fe3ca87 100644 --- a/.github/workflows/skillet.lock.yml +++ b/.github/workflows/skillet.lock.yml @@ -290,16 +290,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/slide-deck-maintainer.lock.yml b/.github/workflows/slide-deck-maintainer.lock.yml index e97f4483466..a3e9c94503a 100644 --- a/.github/workflows/slide-deck-maintainer.lock.yml +++ b/.github/workflows/slide-deck-maintainer.lock.yml @@ -255,16 +255,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-agent-all-merged.lock.yml b/.github/workflows/smoke-agent-all-merged.lock.yml index 482b0178c57..45fca1ed5ce 100644 --- a/.github/workflows/smoke-agent-all-merged.lock.yml +++ b/.github/workflows/smoke-agent-all-merged.lock.yml @@ -293,16 +293,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-agent-all-none.lock.yml b/.github/workflows/smoke-agent-all-none.lock.yml index 5af60842730..72e3d79bc08 100644 --- a/.github/workflows/smoke-agent-all-none.lock.yml +++ b/.github/workflows/smoke-agent-all-none.lock.yml @@ -293,16 +293,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-agent-public-approved.lock.yml b/.github/workflows/smoke-agent-public-approved.lock.yml index 5eafc223135..2988eeaf08c 100644 --- a/.github/workflows/smoke-agent-public-approved.lock.yml +++ b/.github/workflows/smoke-agent-public-approved.lock.yml @@ -295,16 +295,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-agent-public-none.lock.yml b/.github/workflows/smoke-agent-public-none.lock.yml index 4415fda9551..27db732eb47 100644 --- a/.github/workflows/smoke-agent-public-none.lock.yml +++ b/.github/workflows/smoke-agent-public-none.lock.yml @@ -293,16 +293,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-agent-scoped-approved.lock.yml b/.github/workflows/smoke-agent-scoped-approved.lock.yml index ef608fda020..09e185a5f82 100644 --- a/.github/workflows/smoke-agent-scoped-approved.lock.yml +++ b/.github/workflows/smoke-agent-scoped-approved.lock.yml @@ -294,16 +294,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-antigravity.lock.yml b/.github/workflows/smoke-antigravity.lock.yml index ec314fc4699..02a1a8d83a6 100644 --- a/.github/workflows/smoke-antigravity.lock.yml +++ b/.github/workflows/smoke-antigravity.lock.yml @@ -297,16 +297,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/smoke-call-workflow.lock.yml b/.github/workflows/smoke-call-workflow.lock.yml index 044d9e43480..44894861740 100644 --- a/.github/workflows/smoke-call-workflow.lock.yml +++ b/.github/workflows/smoke-call-workflow.lock.yml @@ -296,16 +296,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-ci.lock.yml b/.github/workflows/smoke-ci.lock.yml index c37f9ca3c33..b40cfb763ca 100644 --- a/.github/workflows/smoke-ci.lock.yml +++ b/.github/workflows/smoke-ci.lock.yml @@ -270,16 +270,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-claude.lock.yml b/.github/workflows/smoke-claude.lock.yml index dc656febcc0..606211336ee 100644 --- a/.github/workflows/smoke-claude.lock.yml +++ b/.github/workflows/smoke-claude.lock.yml @@ -306,16 +306,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-codex.lock.yml b/.github/workflows/smoke-codex.lock.yml index deaf3e0fb33..90eca24031e 100644 --- a/.github/workflows/smoke-codex.lock.yml +++ b/.github/workflows/smoke-codex.lock.yml @@ -306,16 +306,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-copilot-aoai-apikey.lock.yml b/.github/workflows/smoke-copilot-aoai-apikey.lock.yml index 7e8cca1f0d2..1f2306f2a36 100644 --- a/.github/workflows/smoke-copilot-aoai-apikey.lock.yml +++ b/.github/workflows/smoke-copilot-aoai-apikey.lock.yml @@ -314,16 +314,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/smoke-copilot-aoai-entra.lock.yml b/.github/workflows/smoke-copilot-aoai-entra.lock.yml index f52d8308461..ce404ab8e58 100644 --- a/.github/workflows/smoke-copilot-aoai-entra.lock.yml +++ b/.github/workflows/smoke-copilot-aoai-entra.lock.yml @@ -313,16 +313,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/smoke-copilot-arm.lock.yml b/.github/workflows/smoke-copilot-arm.lock.yml index 1afa8e6d8fc..e23f6b59281 100644 --- a/.github/workflows/smoke-copilot-arm.lock.yml +++ b/.github/workflows/smoke-copilot-arm.lock.yml @@ -303,16 +303,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-copilot-sdk.lock.yml b/.github/workflows/smoke-copilot-sdk.lock.yml index 0aba3c11ad7..da8f6226877 100644 --- a/.github/workflows/smoke-copilot-sdk.lock.yml +++ b/.github/workflows/smoke-copilot-sdk.lock.yml @@ -286,16 +286,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-copilot.lock.yml b/.github/workflows/smoke-copilot.lock.yml index 45d16aa751d..f680ebf7081 100644 --- a/.github/workflows/smoke-copilot.lock.yml +++ b/.github/workflows/smoke-copilot.lock.yml @@ -319,16 +319,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/smoke-create-cross-repo-pr.lock.yml b/.github/workflows/smoke-create-cross-repo-pr.lock.yml index d0eca9d7848..dd459910798 100644 --- a/.github/workflows/smoke-create-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-create-cross-repo-pr.lock.yml @@ -288,16 +288,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-crush.lock.yml b/.github/workflows/smoke-crush.lock.yml index dfaf0d2e008..e230e5857c0 100644 --- a/.github/workflows/smoke-crush.lock.yml +++ b/.github/workflows/smoke-crush.lock.yml @@ -295,16 +295,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-gemini.lock.yml b/.github/workflows/smoke-gemini.lock.yml index 61fa2b72f17..0860a045d57 100644 --- a/.github/workflows/smoke-gemini.lock.yml +++ b/.github/workflows/smoke-gemini.lock.yml @@ -298,16 +298,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/smoke-multi-pr.lock.yml b/.github/workflows/smoke-multi-pr.lock.yml index 0a510305518..526f82d67a6 100644 --- a/.github/workflows/smoke-multi-pr.lock.yml +++ b/.github/workflows/smoke-multi-pr.lock.yml @@ -294,16 +294,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-opencode.lock.yml b/.github/workflows/smoke-opencode.lock.yml index c6b8f6a4502..e7dff522658 100644 --- a/.github/workflows/smoke-opencode.lock.yml +++ b/.github/workflows/smoke-opencode.lock.yml @@ -296,16 +296,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-otel-backends.lock.yml b/.github/workflows/smoke-otel-backends.lock.yml index 1d6755011b1..606b4dfee60 100644 --- a/.github/workflows/smoke-otel-backends.lock.yml +++ b/.github/workflows/smoke-otel-backends.lock.yml @@ -320,16 +320,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/remove_trigger_label.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-pi.lock.yml b/.github/workflows/smoke-pi.lock.yml index c8e12d9178d..310529b2f51 100644 --- a/.github/workflows/smoke-pi.lock.yml +++ b/.github/workflows/smoke-pi.lock.yml @@ -298,16 +298,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-project.lock.yml b/.github/workflows/smoke-project.lock.yml index f0d72821a00..6dfad6e3bb2 100644 --- a/.github/workflows/smoke-project.lock.yml +++ b/.github/workflows/smoke-project.lock.yml @@ -297,16 +297,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/smoke-service-ports.lock.yml b/.github/workflows/smoke-service-ports.lock.yml index 2ad1918a8c2..fcfdbd088f3 100644 --- a/.github/workflows/smoke-service-ports.lock.yml +++ b/.github/workflows/smoke-service-ports.lock.yml @@ -286,16 +286,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-temporary-id.lock.yml b/.github/workflows/smoke-temporary-id.lock.yml index 139d46f14ea..a679ccefb19 100644 --- a/.github/workflows/smoke-temporary-id.lock.yml +++ b/.github/workflows/smoke-temporary-id.lock.yml @@ -295,16 +295,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/smoke-test-tools.lock.yml b/.github/workflows/smoke-test-tools.lock.yml index 1dfa297cf6c..cbaab879f57 100644 --- a/.github/workflows/smoke-test-tools.lock.yml +++ b/.github/workflows/smoke-test-tools.lock.yml @@ -298,16 +298,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-update-cross-repo-pr.lock.yml b/.github/workflows/smoke-update-cross-repo-pr.lock.yml index eefd653b0e4..5ba04103af7 100644 --- a/.github/workflows/smoke-update-cross-repo-pr.lock.yml +++ b/.github/workflows/smoke-update-cross-repo-pr.lock.yml @@ -288,16 +288,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-workflow-call-with-inputs.lock.yml b/.github/workflows/smoke-workflow-call-with-inputs.lock.yml index 09f4f6d6d61..0d111b96021 100644 --- a/.github/workflows/smoke-workflow-call-with-inputs.lock.yml +++ b/.github/workflows/smoke-workflow-call-with-inputs.lock.yml @@ -316,16 +316,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/smoke-workflow-call.lock.yml b/.github/workflows/smoke-workflow-call.lock.yml index 8fb81522161..588b084ab9c 100644 --- a/.github/workflows/smoke-workflow-call.lock.yml +++ b/.github/workflows/smoke-workflow-call.lock.yml @@ -319,16 +319,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/spec-enforcer.lock.yml b/.github/workflows/spec-enforcer.lock.yml index 481d4c3d9d7..dc135090597 100644 --- a/.github/workflows/spec-enforcer.lock.yml +++ b/.github/workflows/spec-enforcer.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/spec-extractor.lock.yml b/.github/workflows/spec-extractor.lock.yml index b1cf040c508..d0dbeeb613b 100644 --- a/.github/workflows/spec-extractor.lock.yml +++ b/.github/workflows/spec-extractor.lock.yml @@ -242,16 +242,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/spec-librarian.lock.yml b/.github/workflows/spec-librarian.lock.yml index b7a1e158113..6a3fc03b46d 100644 --- a/.github/workflows/spec-librarian.lock.yml +++ b/.github/workflows/spec-librarian.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/stale-pr-cleanup.lock.yml b/.github/workflows/stale-pr-cleanup.lock.yml index 759cfacce78..f4805d30d12 100644 --- a/.github/workflows/stale-pr-cleanup.lock.yml +++ b/.github/workflows/stale-pr-cleanup.lock.yml @@ -236,16 +236,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/stale-repo-identifier.lock.yml b/.github/workflows/stale-repo-identifier.lock.yml index 696ed2bd42e..df19d9a7268 100644 --- a/.github/workflows/stale-repo-identifier.lock.yml +++ b/.github/workflows/stale-repo-identifier.lock.yml @@ -259,16 +259,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/static-analysis-report.lock.yml b/.github/workflows/static-analysis-report.lock.yml index d897dc3dbfd..f64087481d2 100644 --- a/.github/workflows/static-analysis-report.lock.yml +++ b/.github/workflows/static-analysis-report.lock.yml @@ -248,16 +248,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/step-name-alignment.lock.yml b/.github/workflows/step-name-alignment.lock.yml index c2d75e9ba13..62f4bcc2017 100644 --- a/.github/workflows/step-name-alignment.lock.yml +++ b/.github/workflows/step-name-alignment.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/sub-issue-closer.lock.yml b/.github/workflows/sub-issue-closer.lock.yml index 7abdc07af48..f21d6b6cecc 100644 --- a/.github/workflows/sub-issue-closer.lock.yml +++ b/.github/workflows/sub-issue-closer.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/super-linter.lock.yml b/.github/workflows/super-linter.lock.yml index efe2c2901e9..b9dab7811e0 100644 --- a/.github/workflows/super-linter.lock.yml +++ b/.github/workflows/super-linter.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/technical-doc-writer.lock.yml b/.github/workflows/technical-doc-writer.lock.yml index 0fe3872e0fe..a23983f851d 100644 --- a/.github/workflows/technical-doc-writer.lock.yml +++ b/.github/workflows/technical-doc-writer.lock.yml @@ -247,16 +247,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/terminal-stylist.lock.yml b/.github/workflows/terminal-stylist.lock.yml index f7a080b6908..eaab023ca18 100644 --- a/.github/workflows/terminal-stylist.lock.yml +++ b/.github/workflows/terminal-stylist.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/test-create-pr-error-handling.lock.yml b/.github/workflows/test-create-pr-error-handling.lock.yml index 73d20dcea0a..3b32f38ffd0 100644 --- a/.github/workflows/test-create-pr-error-handling.lock.yml +++ b/.github/workflows/test-create-pr-error-handling.lock.yml @@ -240,16 +240,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/test-dispatcher.lock.yml b/.github/workflows/test-dispatcher.lock.yml index c048b4a351f..bba331ed351 100644 --- a/.github/workflows/test-dispatcher.lock.yml +++ b/.github/workflows/test-dispatcher.lock.yml @@ -237,16 +237,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/test-project-url-default.lock.yml b/.github/workflows/test-project-url-default.lock.yml index 51624d73ce8..e8c7c9d6259 100644 --- a/.github/workflows/test-project-url-default.lock.yml +++ b/.github/workflows/test-project-url-default.lock.yml @@ -238,16 +238,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/test-quality-sentinel.lock.yml b/.github/workflows/test-quality-sentinel.lock.yml index ad753804263..677a57ff4d3 100644 --- a/.github/workflows/test-quality-sentinel.lock.yml +++ b/.github/workflows/test-quality-sentinel.lock.yml @@ -285,16 +285,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/test-workflow.lock.yml b/.github/workflows/test-workflow.lock.yml index 34b74251277..efdbcd2bca6 100644 --- a/.github/workflows/test-workflow.lock.yml +++ b/.github/workflows/test-workflow.lock.yml @@ -241,16 +241,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/tidy.lock.yml b/.github/workflows/tidy.lock.yml index a2af05eabee..e8e8ac0ac9b 100644 --- a/.github/workflows/tidy.lock.yml +++ b/.github/workflows/tidy.lock.yml @@ -300,16 +300,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/typist.lock.yml b/.github/workflows/typist.lock.yml index 74daae10e38..896e0e821c9 100644 --- a/.github/workflows/typist.lock.yml +++ b/.github/workflows/typist.lock.yml @@ -251,16 +251,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/ubuntu-image-analyzer.lock.yml b/.github/workflows/ubuntu-image-analyzer.lock.yml index 50957461381..e1cbe2a3687 100644 --- a/.github/workflows/ubuntu-image-analyzer.lock.yml +++ b/.github/workflows/ubuntu-image-analyzer.lock.yml @@ -252,16 +252,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/uk-ai-operational-resilience.lock.yml b/.github/workflows/uk-ai-operational-resilience.lock.yml index 04e18d3d163..9bde8d76f4b 100644 --- a/.github/workflows/uk-ai-operational-resilience.lock.yml +++ b/.github/workflows/uk-ai-operational-resilience.lock.yml @@ -254,16 +254,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/unbloat-docs.lock.yml b/.github/workflows/unbloat-docs.lock.yml index d0cfa09bdcf..905c467c71e 100644 --- a/.github/workflows/unbloat-docs.lock.yml +++ b/.github/workflows/unbloat-docs.lock.yml @@ -295,16 +295,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/add_workflow_run_comment.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/update-astro.lock.yml b/.github/workflows/update-astro.lock.yml index a44e12857c3..3b89da92097 100644 --- a/.github/workflows/update-astro.lock.yml +++ b/.github/workflows/update-astro.lock.yml @@ -250,16 +250,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/video-analyzer.lock.yml b/.github/workflows/video-analyzer.lock.yml index ffb045d55d8..f726b3273e1 100644 --- a/.github/workflows/video-analyzer.lock.yml +++ b/.github/workflows/video-analyzer.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/visual-regression-checker.lock.yml b/.github/workflows/visual-regression-checker.lock.yml index 03b444c632a..07b4cfa0cfa 100644 --- a/.github/workflows/visual-regression-checker.lock.yml +++ b/.github/workflows/visual-regression-checker.lock.yml @@ -263,16 +263,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/weekly-blog-post-writer.lock.yml b/.github/workflows/weekly-blog-post-writer.lock.yml index f31bef22e76..0729f64054e 100644 --- a/.github/workflows/weekly-blog-post-writer.lock.yml +++ b/.github/workflows/weekly-blog-post-writer.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Restore experiment state from git diff --git a/.github/workflows/weekly-editors-health-check.lock.yml b/.github/workflows/weekly-editors-health-check.lock.yml index de59f87aa59..f682a2f9481 100644 --- a/.github/workflows/weekly-editors-health-check.lock.yml +++ b/.github/workflows/weekly-editors-health-check.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/weekly-issue-summary.lock.yml b/.github/workflows/weekly-issue-summary.lock.yml index 23df52f1f6b..09b4ea3b658 100644 --- a/.github/workflows/weekly-issue-summary.lock.yml +++ b/.github/workflows/weekly-issue-summary.lock.yml @@ -249,16 +249,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml index bcc1a9dac91..84a13100e44 100644 --- a/.github/workflows/weekly-safe-outputs-spec-review.lock.yml +++ b/.github/workflows/weekly-safe-outputs-spec-review.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/workflow-generator.lock.yml b/.github/workflows/workflow-generator.lock.yml index 594d4c8d13f..d6077951402 100644 --- a/.github/workflows/workflow-generator.lock.yml +++ b/.github/workflows/workflow-generator.lock.yml @@ -281,16 +281,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/lock-issue.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/workflow-health-manager.lock.yml b/.github/workflows/workflow-health-manager.lock.yml index 64ef7de0201..f824d6ea3d5 100644 --- a/.github/workflows/workflow-health-manager.lock.yml +++ b/.github/workflows/workflow-health-manager.lock.yml @@ -244,16 +244,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/workflow-normalizer.lock.yml b/.github/workflows/workflow-normalizer.lock.yml index 8e215405a2d..0c9d0c9c476 100644 --- a/.github/workflows/workflow-normalizer.lock.yml +++ b/.github/workflows/workflow-normalizer.lock.yml @@ -246,16 +246,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/.github/workflows/workflow-skill-extractor.lock.yml b/.github/workflows/workflow-skill-extractor.lock.yml index 5e6d91d43ae..619f2e1555d 100644 --- a/.github/workflows/workflow-skill-extractor.lock.yml +++ b/.github/workflows/workflow-skill-extractor.lock.yml @@ -243,16 +243,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/actions/setup/js/runtime_features.cjs b/actions/setup/js/runtime_features.cjs index e95cc5e59d5..f00eaec58f1 100644 --- a/actions/setup/js/runtime_features.cjs +++ b/actions/setup/js/runtime_features.cjs @@ -8,6 +8,8 @@ * - key=value * * Blank lines are ignored. Flags without an explicit value default to true. + * Empty values (key=) are preserved as the empty string; use hasRuntimeFeature() + * for presence checks when callers need to distinguish empty from missing. * * @param {string | undefined | null} raw * @returns {Record} diff --git a/actions/setup/js/runtime_features.test.cjs b/actions/setup/js/runtime_features.test.cjs index f3544f307c2..a1070eb5b1c 100644 --- a/actions/setup/js/runtime_features.test.cjs +++ b/actions/setup/js/runtime_features.test.cjs @@ -1,7 +1,9 @@ // @ts-check import { describe, expect, it } from "vitest"; +import { createRequire } from "module"; +const require = createRequire(import.meta.url); const { parseRuntimeFeatures, hasRuntimeFeature, getRuntimeFeatureValue } = require("./runtime_features.cjs"); describe("runtime_features", () => { @@ -15,12 +17,20 @@ describe("runtime_features", () => { }); }); + it("treats only the first equals sign as the key/value separator", () => { + expect(parseRuntimeFeatures("key=a=b=c")).toEqual({ + key: "a=b=c", + }); + }); + it("ignores blank lines and malformed empty keys", () => { const features = parseRuntimeFeatures("\n \n=value\nvalid=\n"); expect(features).toEqual({ valid: "", }); + expect(hasRuntimeFeature(features, "valid")).toBe(true); + expect(getRuntimeFeatureValue(features, "valid")).toBe(""); }); it("supports feature lookup helpers", () => { @@ -32,4 +42,9 @@ describe("runtime_features", () => { expect(getRuntimeFeatureValue(features, "mode")).toBe("fast"); expect(getRuntimeFeatureValue(features, "missing")).toBeUndefined(); }); + + it("returns an empty map for nullish input", () => { + expect(parseRuntimeFeatures(null)).toEqual({}); + expect(parseRuntimeFeatures(undefined)).toEqual({}); + }); }); diff --git a/actions/setup/js/setup_globals.cjs b/actions/setup/js/setup_globals.cjs index 1897cdec6ff..a16dfd866fe 100644 --- a/actions/setup/js/setup_globals.cjs +++ b/actions/setup/js/setup_globals.cjs @@ -27,7 +27,7 @@ const { parseRuntimeFeatures, hasRuntimeFeature, getRuntimeFeatureValue } = requ */ function setupGlobals(coreModule, githubModule, contextModule, execModule, ioModule, getOctokitFn) { global.core = coreModule; - const runtimeFeatures = parseRuntimeFeatures(process.env.GH_AW_RUNTIME_FEATURES); + const runtimeFeatures = Object.freeze(parseRuntimeFeatures(process.env.GH_AW_RUNTIME_FEATURES)); global.runtimeFeatures = runtimeFeatures; global.hasRuntimeFeature = key => hasRuntimeFeature(runtimeFeatures, key); global.getRuntimeFeatureValue = key => getRuntimeFeatureValue(runtimeFeatures, key); diff --git a/actions/setup/setup.sh b/actions/setup/setup.sh index 8f2135608a3..0b78b637b78 100755 --- a/actions/setup/setup.sh +++ b/actions/setup/setup.sh @@ -222,6 +222,7 @@ MCP_SCRIPTS_FILES=( "read_buffer.cjs" "generate_mcp_scripts_config.cjs" "setup_globals.cjs" + "runtime_features.cjs" "github_rate_limit_logger.cjs" "error_helpers.cjs" "error_codes.cjs" @@ -306,6 +307,7 @@ SAFE_OUTPUTS_FILES=( "write_large_content_to_file.cjs" "generate_compact_schema.cjs" "setup_globals.cjs" + "runtime_features.cjs" "github_rate_limit_logger.cjs" "error_helpers.cjs" "error_codes.cjs" diff --git a/pkg/workflow/cache.go b/pkg/workflow/cache.go index c7d645d2713..fcd529de1b6 100644 --- a/pkg/workflow/cache.go +++ b/pkg/workflow/cache.go @@ -1064,7 +1064,7 @@ func (c *Compiler) buildUpdateCacheMemoryJob(data *WorkflowData, threatDetection } job := &Job{ - Name: "update_cache_memory", + Name: updateCacheMemoryJobName, DisplayName: "", // No display name - job ID is sufficient RunsOn: c.formatFrameworkJobRunsOn(data), If: jobCondition, diff --git a/pkg/workflow/compiler_activation_job_builder.go b/pkg/workflow/compiler_activation_job_builder.go index f663b784654..1b921c0869a 100644 --- a/pkg/workflow/compiler_activation_job_builder.go +++ b/pkg/workflow/compiler_activation_job_builder.go @@ -409,16 +409,20 @@ func (c *Compiler) buildActivationDailyAICGuardrailStep(data *WorkflowData) []st func buildRuntimeFeaturesSummaryStep() []string { return []string{ " - name: Log runtime features\n", + " env:\n", + " GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '\"GH_AW_RUNTIME_FEATURES\":') }}\n", " run: |\n", " {\n", " echo \"## Runtime features\"\n", " echo\n", - " if [[ -n \"${GH_AW_RUNTIME_FEATURES:-}\" ]]; then\n", + " if [[ \"$GH_AW_RUNTIME_FEATURES_IS_SET\" != \"true\" ]]; then\n", + " echo \"_Not set_\"\n", + " elif [[ -n \"$GH_AW_RUNTIME_FEATURES\" ]]; then\n", " echo '```text'\n", " printf '%s\\n' \"$GH_AW_RUNTIME_FEATURES\"\n", " echo '```'\n", " else\n", - " echo \"_Not set_\"\n", + " echo \"_Empty string_\"\n", " fi\n", " } >> \"$GITHUB_STEP_SUMMARY\"\n", } diff --git a/pkg/workflow/compiler_experiments.go b/pkg/workflow/compiler_experiments.go index 929b391fed0..0acfc04adc2 100644 --- a/pkg/workflow/compiler_experiments.go +++ b/pkg/workflow/compiler_experiments.go @@ -661,7 +661,7 @@ func (c *Compiler) buildPushExperimentsStateJob(data *WorkflowData) (*Job, error jobCondition := RenderCondition(BuildAnd(BuildAnd(BuildFunctionCall("always"), notCancelled), activationSucceeded)) job := &Job{ - Name: "push_experiments_state", + Name: pushExperimentsStateJobName, RunsOn: c.formatFrameworkJobRunsOn(data), If: jobCondition, Permissions: "permissions:\n contents: write", diff --git a/pkg/workflow/jobs.go b/pkg/workflow/jobs.go index c8b7690aa62..06d73b5960d 100644 --- a/pkg/workflow/jobs.go +++ b/pkg/workflow/jobs.go @@ -16,6 +16,10 @@ var jobLog = logger.New("workflow:jobs") const runtimeFeaturesEnvVarName = "GH_AW_RUNTIME_FEATURES" const runtimeFeaturesEnvVarExpression = "${{ vars.GH_AW_RUNTIME_FEATURES }}" +const pushExperimentsStateJobName = "push_experiments_state" +const pushRepoMemoryJobName = "push_repo_memory" +const updateCacheMemoryJobName = "update_cache_memory" + var runtimeFeaturesBuiltInJobNames = map[string]struct{}{ string(constants.AgentJobName): {}, string(constants.ActivationJobName): {}, @@ -26,9 +30,9 @@ var runtimeFeaturesBuiltInJobNames = map[string]struct{}{ string(constants.UploadCodeScanningJobName): {}, string(constants.ConclusionJobName): {}, string(constants.UnlockJobName): {}, - "push_experiments_state": {}, - "push_repo_memory": {}, - "update_cache_memory": {}, + pushExperimentsStateJobName: {}, + pushRepoMemoryJobName: {}, + updateCacheMemoryJobName: {}, } // Job represents a GitHub Actions job with all its properties diff --git a/pkg/workflow/repo_memory.go b/pkg/workflow/repo_memory.go index c353f69c07e..ec2ed0dec95 100644 --- a/pkg/workflow/repo_memory.go +++ b/pkg/workflow/repo_memory.go @@ -814,7 +814,7 @@ func (c *Compiler) buildPushRepoMemoryJob(data *WorkflowData, threatDetectionEna concurrency := c.indentYAMLLines(fmt.Sprintf("concurrency:\n group: %q\n cancel-in-progress: false", concurrencyGroup), " ") job := &Job{ - Name: "push_repo_memory", + Name: pushRepoMemoryJobName, DisplayName: "", // No display name - job ID is sufficient RunsOn: c.formatFrameworkJobRunsOn(data), If: jobCondition, diff --git a/pkg/workflow/runtime_features_env_test.go b/pkg/workflow/runtime_features_env_test.go index 7e25380fdc9..918b33f38ae 100644 --- a/pkg/workflow/runtime_features_env_test.go +++ b/pkg/workflow/runtime_features_env_test.go @@ -48,6 +48,19 @@ func TestBuildRenderedJobEnv_PreservesExistingRuntimeFeaturesOverride(t *testing } } +func TestBuildRenderedJobEnv_DoesNotAddRuntimeFeaturesForUsesJobs(t *testing.T) { + job := &Job{ + Name: string(constants.AgentJobName), + Uses: "./.github/workflows/reusable.yml", + } + + env := buildRenderedJobEnv(job) + + if _, ok := env[runtimeFeaturesEnvVarName]; ok { + t.Fatalf("expected reusable workflow job to skip %s, got %v", runtimeFeaturesEnvVarName, env) + } +} + func TestActivationJobIncludesRuntimeFeatureSummaryStep(t *testing.T) { compiler := NewCompiler() compiler.repoConfigLoaded = true @@ -65,6 +78,12 @@ func TestActivationJobIncludesRuntimeFeatureSummaryStep(t *testing.T) { if !strings.Contains(steps, "GH_AW_RUNTIME_FEATURES") { t.Fatal("expected runtime feature summary step to reference GH_AW_RUNTIME_FEATURES") } + if !strings.Contains(steps, "GH_AW_RUNTIME_FEATURES_IS_SET") { + t.Fatal("expected runtime feature summary step to distinguish unset from empty values") + } + if !strings.Contains(steps, "_Empty string_") { + t.Fatal("expected runtime feature summary step to render empty values distinctly") + } if !strings.Contains(steps, "$GITHUB_STEP_SUMMARY") { t.Fatal("expected runtime feature summary step to write to GITHUB_STEP_SUMMARY") } diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden index 5a99c011127..5624247348f 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/claude.golden @@ -173,16 +173,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden index 06ec6c12b4d..891127ab96d 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/codex.golden @@ -174,16 +174,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden index 44166423d69..5e2cb76f2da 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/copilot.golden @@ -173,16 +173,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden index 9721b40517c..91d8c8f6825 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/gemini.golden @@ -171,16 +171,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden b/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden index 1e98a1deff7..5d38ad68ee3 100644 --- a/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden +++ b/pkg/workflow/testdata/TestWasmGolden_AllEngines/pi.golden @@ -173,16 +173,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden index 7d5ab3d9275..c63602eb9fd 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/basic-copilot.golden @@ -173,16 +173,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden index 215f97bdb3c..61712dee395 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/playwright-cli-mode.golden @@ -173,16 +173,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden index f6294eb69c9..a698ae2e407 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/smoke-copilot.golden @@ -199,16 +199,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context diff --git a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden index c6b5e640348..ebc17de853a 100644 --- a/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden +++ b/pkg/workflow/testdata/TestWasmGolden_CompileFixtures/with-imports.golden @@ -173,16 +173,20 @@ jobs: const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs'); await main(); - name: Log runtime features + env: + GH_AW_RUNTIME_FEATURES_IS_SET: ${{ contains(toJSON(vars), '"GH_AW_RUNTIME_FEATURES":') }} run: | { echo "## Runtime features" echo - if [[ -n "${GH_AW_RUNTIME_FEATURES:-}" ]]; then + if [[ "$GH_AW_RUNTIME_FEATURES_IS_SET" != "true" ]]; then + echo "_Not set_" + elif [[ -n "$GH_AW_RUNTIME_FEATURES" ]]; then echo '```text' printf '%s\n' "$GH_AW_RUNTIME_FEATURES" echo '```' else - echo "_Not set_" + echo "_Empty string_" fi } >> "$GITHUB_STEP_SUMMARY" - name: Create prompt with built-in context