Skip to content

Comments

Expand RuntimeConfig and RuntimesConfig typed structs to cover all supported runtimes and fields#17911

Merged
pelikhan merged 3 commits intomainfrom
copilot/expand-runtime-config-structs
Feb 23, 2026
Merged

Expand RuntimeConfig and RuntimesConfig typed structs to cover all supported runtimes and fields#17911
pelikhan merged 3 commits intomainfrom
copilot/expand-runtime-config-structs

Conversation

Copy link
Contributor

Copilot AI commented Feb 23, 2026

RuntimeConfig was missing action-repo/action-version fields that the schema and raw map parsing already handled, and RuntimesConfig only modeled 6 of the 11 runtimes in knownRuntimes. Code paths using RuntimesTyped silently dropped these values.

Changes

  • RuntimeConfig: Added ActionRepo and ActionVersion fields so action overrides are preserved through the typed path
  • RuntimesConfig: Added the 5 missing runtime fields: Dotnet, Elixir, Haskell, Java, Ruby
  • parseRuntimesConfig: Populates ActionRepo/ActionVersion from the config map; added case branches for all 5 new runtimes
  • rust / Serena: Clarified in both the schema descriptions and the languageToRuntime comment that rust is a valid Serena language identifier but produces no GitHub Actions setup step (no entry in knownRuntimes)
// Before
type RuntimeConfig struct {
    Version string `json:"version,omitempty"`
    If      string `json:"if,omitempty"`
}

// After
type RuntimeConfig struct {
    Version       string `json:"version,omitempty"`
    If            string `json:"if,omitempty"`
    ActionRepo    string `json:"action-repo,omitempty"`
    ActionVersion string `json:"action-version,omitempty"`
}

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/graphql
    • Triggering command: /usr/bin/gh /usr/bin/gh api graphql -f query=query($owner: String!, $name: String!) { repository(owner: $owner, name: $name) { hasDiscussionsEnabled } } -f owner=github -f name=gh-aw -c=4 -nolocalimports git rev-�� --show-toplevel /tmp/go-build2233019096/b414/_testmain.go /usr/bin/git -json GO111MODULE 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login + "/" + .name /usr/bin/docker -json GO111MODULE x_amd64/vet docker pull�� test/race-image:v1.0.0 x_amd64/vet /usr/bin/git -json GO111MODULE At,event,headBra--show-toplevel git (http block)
    • Triggering command: /usr/bin/gh gh repo view --json owner,name --jq .owner.login + "/" + .name /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet -json GO111MODULE x_amd64/vet /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linu--package-lock-only -ato�� -bool -buildtags /usr/bin/git -errorsas -ifaceassert -nilfunc git (http block)
  • https://api.github.com/repos/actions/ai-inference/git/ref/tags/v1
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha -bool -buildtags .cfg -errorsas -ifaceassert -nilfunc /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet -uns�� -unreachable=false /tmp/go-build2233019096/b202/vet.cfg 3019096/b422/testutil.test 5392546/b392/_pkgit GO111MODULE 64/bin/go 3019096/b422/testutil.test (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v3
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v3 --jq .object.sha -json GO111MODULE ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet GOINSECURE 5b1ebab7860eab34rev-parse GOMODCACHE ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha bot-detection.md 3019096/b069/vet.cfg 0/x64/bin/node GOINSECURE GOMOD GOMODCACHE /opt/hostedtoolcache/go/1.25.0/x-dwarf=false t-ha�� SameOutput1218094826/001/stabiligo1.25.0 /tmp/go-build2233019096/b057/vet-c=4 /opt/hostedtoolcache/go/1.25.0/x-nolocalimports GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/x/tmp/go-build2233019096/b431/_testmain.go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linutest@example.com -uns�� runs/20260223-123028-27447/test-887536870/.github/workflows /tmp/go-build2233019096/b111/vet.cfg 3019096/b335/vet.cfg l GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v4 --jq .object.sha user.name Test User /usr/bin/git -json GO111MODULE x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/git -json GO111MODULE x_amd64/vet git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v5
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha -bool -buildtags ache/node/24.13.0/x64/bin/node -errorsas -ifaceassert -nilfunc git t-31�� bility_SameInputSameOutput1218094826/001/stability-test.md rev-parse /usr/bin/git pkg/mod/github.cgit pkg/mod/github.crev-parse 64/bin/go git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel x_amd64/vet /usr/bin/git -json GO111MODULE x_amd64/vet git rev-�� --show-toplevel 8afRszc/J-5ptimqremote.origin.url /usr/bin/git -json GO111MODULE x_amd64/vet /usr/bin/git (http block)
  • https://api.github.com/repos/actions/github-script/git/ref/tags/v8
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha npx prettier --cGOSUMDB GOPROXY 64/bin/go GOSUMDB GOWORK run-script/lib/n-bool sh -c "prettier" --che-errorsas node 64/bin/go tierignore ../../../pkg/wor-atomic 64/bin/go go (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha k/gh-aw/gh-aw/internal/tools/genGOINSECURE sh 64/bin/go "prettier" --wri/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha prettier --check 64/bin/go --ignore-path .prettierignore 64/bin/go go env -json GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE go (http block)
  • https://api.github.com/repos/actions/setup-go/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha -json GO111MODULE /opt/hostedtoolcache/go/1.25.0/x-test.short=true GOINSECURE GOMOD GOMODCACHE /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet -uns�� runs/20260223-123028-27447/test-3305645739/.github/workflows /tmp/go-build2233019096/b050/vet.cfg .cfg GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/actions/setup-node/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha 79 GO111MODULE /opt/hostedtoolcache/go/1.25.0/x-buildmode=exe GOINSECURE GOMOD GOMODCACHE /opt/hostedtoolcache/go/1.25.0/x-extld=gcc -uns�� 3028-27447/test-3110829999 /tmp/go-build2233019096/b036/vet.cfg 3019096/b337/vet.cfg GOSUMDB GOWORK 64/bin/go /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/1/artifacts
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12345/artifacts
    • Triggering command: /usr/bin/gh gh run download 12345 --dir test-logs/run-12345 GO111MODULE 64/pkg/tool/linu-lang=go1.25 GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu-dwarf=false estl�� -json .cfg 64/pkg/tool/linu-nolocalimports GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuTest User (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/12346/artifacts
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 GO111MODULE 64/pkg/tool/linu-buildmode=exe GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu/tmp/go-build2233019096/b112/vet.cfg estl�� -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuorigin (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/2/artifacts
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linuremote.origin.url (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/3/artifacts
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/4/artifacts
    • Triggering command: /usr/bin/gh gh run download 4 --dir test-logs/run-4 GO111MODULE 64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu-buildtags env -json GO111MODULE 64/pkg/tool/linu-nilfunc GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linu-tests (http block)
  • https://api.github.com/repos/github/gh-aw/actions/runs/5/artifacts
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path ." GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go go env -json GOMOD 64/bin/go npx prettier --w/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 100 (http block)
    • Triggering command: /usr/bin/gh gh run list --json databaseId,number,url,status,conclusion,workflowName,createdAt,startedAt,updatedAt,event,headBranch,headSha,displayTitle --workflow nonexistent-workflow-12345 --limit 6 GOMOD GOMODCACHE x_amd64/link env -json GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE I4/X0HLTQaA8PlvKCwosL9U/WoEm3cto--json (http block)
  • https://api.github.com/repos/github/gh-aw/contents/.github/workflows/shared/reporting.md
    • Triggering command: /tmp/go-build2233019096/b381/cli.test /tmp/go-build2233019096/b381/cli.test -test.testlogfile=/tmp/go-build2233019096/b381/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOSUMDB GOWORK 64/bin/go node /opt�� prettier --check 64/bin/go --ignore-path .prettierignore 64/bin/go go (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha -json GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env 3151886479/.github/workflows .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/nonexistent/action/git/ref/tags/v999.999.999
    • Triggering command: /usr/bin/gh gh api /repos/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha -json rty 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json .cfg 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/nonexistent/repo/actions/runs/12345
    • Triggering command: /usr/bin/gh gh run view 12345 --repo nonexistent/repo --json status,conclusion GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env -json GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/owner/repo/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOSUMDB GOWORK 64/bin/go go list�� -mod=readonly -e 64/bin/go npx prettier --w/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOSUMDB GOWORK 64/bin/go git conf�� extensions.objec-c=4 sh 64/bin/go npx prettier --w/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh workflow list --repo owner/repo --json name,path,state /usr/bin/git -json GO111MODULE 64/pkg/tool/linu--show-toplevel git rev-�� --show-toplevel 64/pkg/tool/linu.github/workflows/test.md /usr/bin/git -json GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build2233019096/b381/cli.test /tmp/go-build2233019096/b381/cli.test -test.testlogfile=/tmp/go-build2233019096/b381/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOSUMDB GOWORK 64/bin/go node /opt�� prettier --check 64/bin/go --ignore-path .prettierignore 64/bin/go go (http block)
  • https://api.github.com/repos/test-owner/test-repo/actions/secrets
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name data/action_pins.json..." GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go go env GOPATH sh 64/bin/go -d (http block)
  • https://api.github.com/repos/test/repo
    • Triggering command: /usr/bin/gh gh api /repos/test/repo --jq .default_branch --get-regexp ^remote\..*\.gh-resolved$ /usr/bin/git -json GO111MODULE x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/git -json .cfg 64/pkg/tool/linu--show-toplevel git (http block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>[plan] Expand RuntimeConfig and RuntimesConfig typed structs to cover all supported runtimes and fields</issue_title>
<issue_description>## Context

From schema consistency discussion #17876 (2026-02-23 run, findings 8–10).

Objective

Make the typed runtime structs in pkg/workflow/frontmatter_types.go complete so they match what the schema documents and what the raw map parsing already handles.

Issues to Fix

1. RuntimeConfig missing action-repo and action-version fields

  • Files: pkg/workflow/frontmatter_types.go:16-19, pkg/workflow/runtime_overrides.go:41-42
  • Both fields are in the schema, documented in docs/src/content/docs/reference/frontmatter.md:148-150, and read from the raw map in runtime_overrides.go:41-42.
  • They are absent from the typed struct RuntimeConfig, so any code path using RuntimesTyped silently drops them.
  • Add ActionRepo string \json:"action-repo,omitempty"`andActionVersion string `json:"action-version,omitempty"`toRuntimeConfig`.

2. RuntimesConfig and parseRuntimesConfig missing 5 runtimes

  • Files: pkg/workflow/frontmatter_types.go:16-29, 301-315, pkg/workflow/runtime_definitions.go
  • knownRuntimes defines 11 runtimes but RuntimesConfig only models 6 (node, python, go, uv, bun, deno).
  • Missing: dotnet, elixir, haskell, java, ruby — all documented in frontmatter.md:156-165.
  • Add fields for all 5 missing runtimes to RuntimesConfig and add corresponding case entries in parseRuntimesConfig.

3. rust Serena runtime silently generates no setup step

  • Files: pkg/workflow/runtime_detection.go, pkg/workflow/runtime_definitions.go, pkg/parser/schemas/main_workflow_schema.json:3318
  • rust is mapped as a Serena language but findRuntimeByID("rust") returns nil (not in knownRuntimes), silently skipping the setup step.
  • The schema lists "rust" as a valid Serena language, misleading users.
  • Either add rust to knownRuntimes with appropriate setup, or update the schema to note that rust does not generate a runtime setup step.

Files to Modify

  • pkg/workflow/frontmatter_types.go
  • pkg/workflow/runtime_definitions.go (if adding rust)
  • pkg/parser/schemas/main_workflow_schema.json (if updating Serena language note)

Acceptance Criteria

  • RuntimeConfig includes action-repo and action-version fields
  • RuntimesConfig includes dotnet, elixir, haskell, java, ruby fields
  • parseRuntimesConfig has case entries for all 5 missing runtimes
  • rust Serena language either generates a setup step or schema clarifies it does not
  • Run make agent-finish with no errors before committing

Generated by Plan Command for issue #discussion #17876

  • expires on Feb 25, 2026, 12:04 PM UTC

Comments on the Issue (you are @copilot in this section)


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.



✨ PR Review Safe Output Test - Run 22306576814

💥 [THE END] — Illustrated by Smoke Claude

…runtimes and fields

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Expand RuntimeConfig and RuntimesConfig to include all fields Expand RuntimeConfig and RuntimesConfig typed structs to cover all supported runtimes and fields Feb 23, 2026
@github-actions
Copy link
Contributor

Commit pushed: da44b6a

@github-actions
Copy link
Contributor

Hey @Copilot 👋 — great work on implementing the RuntimeConfig/RuntimesConfig expansion from issue #17905! The type-safety improvements look solid, and adding the missing runtime fields aligns perfectly with the schema. Here are a few things that would help get this across the finish line:

  • Remove the unrelated smoke test filesmoke-test-pr-push-22306576814.sh appears to be a test artifact that snuck into this PR. It's unrelated to the runtime config changes and should be removed to keep the PR focused.
  • Add test coverage — the changes to RuntimeConfig and RuntimesConfig structs and the parseRuntimesConfig function should have corresponding test cases. Tests should verify:
    • New ActionRepo and ActionVersion fields are parsed correctly from config maps
    • All 5 new runtime fields (Dotnet, Elixir, Haskell, Java, Ruby) are mapped properly in parseRuntimesConfig
    • The schema updates for rust language clarification work as expected

If you'd like a hand, you can use this prompt to add the tests:

Add test coverage for the RuntimeConfig and RuntimesConfig changes in pkg/workflow/frontmatter_types.go.

Create or update pkg/workflow/frontmatter_types_test.go to include:

1. Test for RuntimeConfig with action-repo and action-version fields:
   - Parse a config map containing {"version": "20", "action-repo": "custom/setup", "action-version": "v5"}
   - Verify all fields are correctly populated in the RuntimeConfig struct

2. Test for all new runtime fields in RuntimesConfig:
   - Parse runtime configs for dotnet, elixir, haskell, java, and ruby
   - Verify each runtime is correctly assigned to its corresponding field in RuntimesConfig
   - Use table-driven test pattern following the existing test patterns in the codebase

3. Test for rust Serena language behavior:
   - Verify that rust is recognized as a valid Serena language identifier
   - Confirm it does not generate a runtime setup step (no knownRuntime entry)

Follow the testing patterns from scratchpad/testing.md and use assert for non-fatal checks, require for fatal ones.
Run make test to verify all tests pass.

Also, please remove the smoke-test-pr-push-22306576814.sh file from this PR as it's unrelated to the runtime config changes.

Generated by Contribution Check

@pelikhan pelikhan marked this pull request as ready for review February 23, 2026 15:19
Copilot AI review requested due to automatic review settings February 23, 2026 15:19
@pelikhan pelikhan merged commit 566df67 into main Feb 23, 2026
1 check passed
@pelikhan pelikhan deleted the copilot/expand-runtime-config-structs branch February 23, 2026 15:19
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands the RuntimeConfig and RuntimesConfig typed structs to ensure completeness with the schema and runtime definitions, addressing issues where certain fields and runtime types were being silently dropped during typed config parsing.

Changes:

  • Added ActionRepo and ActionVersion fields to RuntimeConfig struct for action override support
  • Added 5 missing runtime types to RuntimesConfig: Dotnet, Elixir, Haskell, Java, Ruby
  • Updated parseRuntimesConfig to extract and populate the new action override fields and handle all runtime types
  • Clarified in schema and code comments that rust is a valid Serena language but generates no setup step

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
smoke-test-pr-push-22306576814.sh Smoke test file for PR verification
pkg/workflow/runtime_detection.go Updated comment to clarify that rust has no knownRuntime entry
pkg/workflow/frontmatter_types.go Added ActionRepo/ActionVersion fields to RuntimeConfig; added 5 new runtime fields to RuntimesConfig; updated parseRuntimesConfig to handle all fields and runtimes
pkg/parser/schemas/main_workflow_schema.json Added notes clarifying that rust does not generate a runtime setup step

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +328 to +337
case "dotnet":
config.Dotnet = runtimeConfig
case "elixir":
config.Elixir = runtimeConfig
case "haskell":
config.Haskell = runtimeConfig
case "java":
config.Java = runtimeConfig
case "ruby":
config.Ruby = runtimeConfig
Copy link

Copilot AI Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The changes to parseRuntimesConfig correctly extract and populate the new ActionRepo and ActionVersion fields, and add support for the five new runtime types. However, the corresponding runtimesConfigToMap function (lines 699-785) also needs to be updated to:

  1. Include action-repo and action-version fields when converting each runtime config back to a map
  2. Add support for the five new runtime types: dotnet, elixir, haskell, java, ruby

Without these updates, the new fields and runtime types will be lost during round-trip conversion (parse → typed struct → map), breaking functionality that relies on ToMap() for serialization or backward compatibility.

Similarly, the countRuntimes helper function (lines 449-474) needs to include the five new runtime types in its count logic.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[plan] Expand RuntimeConfig and RuntimesConfig typed structs to cover all supported runtimes and fields

2 participants