Skip to content

fix(safe-outputs): emit created_issue_* outputs from handler manager#20130

Merged
pelikhan merged 2 commits intomainfrom
copilot/fix-safe-outputs-emission
Mar 8, 2026
Merged

fix(safe-outputs): emit created_issue_* outputs from handler manager#20130
pelikhan merged 2 commits intomainfrom
copilot/fix-safe-outputs-emission

Conversation

Copy link
Contributor

Copilot AI commented Mar 8, 2026

safe_output_handler_manager.cjs never called emitSafeOutputActionOutputs, so created_issue_number and created_issue_url were silently dropped after a successful create_issue — breaking any workflow gating on needs.<job>.outputs.created_issue_number.

Changes

  • safe_output_handler_manager.cjs: Import and call emitSafeOutputActionOutputs(processingResult) after all other core.setOutput calls in main(). This also covers the other outputs the function handles: created_pr_number, created_pr_url, comment_id, comment_url, push_commit_sha, push_commit_url.

  • safe_output_handler_manager.test.cjs: Add regression tests asserting that processMessages produces correctly shaped results for create_issue, and that core.setOutput is invoked with created_issue_number/created_issue_url when emission runs.

// Previously missing in main() — now added after other setOutput calls
emitSafeOutputActionOutputs(processingResult);

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 GO111MODULE x_amd64/vet git rev-�� --show-toplevel x_amd64/vet /usr/bin/git ty-test.md GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
    • 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 git /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git --show-toplevel ache/node/24.14.rev-parse /usr/bin/git 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 /tmp/TestHashConsistency_GoAndJavaScript1847545457/001/test-frontmatter-with-env-template-expresgit node ache/node/24.14.0/x64/bin/node --check scripts/**/*.js 64/bin/go ache/node/24.14.0/x64/bin/node -338�� xterm-color go /usr/bin/git ays.md GO111MODULE x_amd64/vet git (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/ai-inference/git/ref/tags/v1 --jq .object.sha /tmp/compile-all-instructions-test-4096072456/.github/workflows rev-parse /usr/bin/git --show-toplevel /opt/hostedtoolcrev-parse /usr/bin/git git rev-�� --show-toplevel git /usr/bin/git js/**/*.json&#39; --git /opt/hostedtoolcrev-parse /usr/bin/git git (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 runs/20260308-231609-29540/test-988675162/.github/workflows /tmp/go-build2611110124/b034/vet.cfg ache/node/24.14.0/x64/bin/node heck &#39;**/*.cjs&#39; git GO111MODULE 64/bin/go /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet t-25�� sistency_GoAndJavaScript1847545457/001/test-complex-frontmatter-with-tools.md /tmp/go-build2611110124/b249/vet.cfg ache/node/24.14.0/x64/bin/node -json GO111MODULE 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/v3 --jq .object.sha &#34;prettier&#34; --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pret.prettierignore git /usr/sbin/sh --show-toplevel 64/pkg/tool/linurev-parse /usr/bin/git sh -c npx prettier --write &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path 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 g_.a GO111MODULE 64/pkg/tool/linux_amd64/vet GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env 2q52YtJo5 .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 GOMODCACHE x_amd64/link /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)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v5 --jq .object.sha --show-toplevel /tmp/go-build2611110124/b433/_testmain.go /usr/bin/git -json GO111MODULE x_amd64/compile git rev-�� --show-toplevel x_amd64/compile /usr/bin/git -json GO111MODULE 64/pkg/tool/linu--show-toplevel git (http block)
  • https://api.github.com/repos/actions/checkout/git/ref/tags/v6
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha /tmp/gh-aw-test-runs/20260308-231609-29540/test-2896315878/.github/workflows rev-parse /tmp/go-build2611110124/b416/sliceutil.test run lint:cjs 64/bin/go /tmp/go-build2611110124/b416/sliceutil.test -tes�� -test.paniconexit0 -test.v=true (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/checkout/git/ref/tags/v6 --jq .object.sha /tmp/gh-aw-test-runs/20260308-231609-29540/test-3666778042/.github/workflows config /usr/bin/infocmp remote.origin.urgit GOPROXY 64/bin/go infocmp -1 xterm-color sh /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet &#34;prettier&#34; --chegit node 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/v6 --jq .object.sha --show-toplevel 64/pkg/tool/linux_amd64/vet /usr/bin/git 2896315878/.githgit .cfg x_amd64/compile git rev-�� --show-toplevel x_amd64/compile /usr/bin/git -json .cfg 64/pkg/tool/linu--show-toplevel 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 zFlP/RO9tO9mCxDWGOSUMDB GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 3461099/b375/imp-buildtags -c che/go-build/80/-errorsas GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolc/tmp/go-build2611110124/b309/vet.cfg (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/github-script/git/ref/tags/v8 --jq .object.sha --check **/*.cjs 64/bin/go **/*.json --ignore-path ../../../.pretti-unreachable=false node /hom�� --check scripts/**/*.js 64/bin/go -d (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 **/*.ts **/*.json --ignore-path git stat�� --porcelain sh 64/bin/go -d (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 k/gh-aw/gh-aw/.github/workflows/ace-editor.md rev-parse /opt/hostedtoolcache/node/24.14.0/x64/bin/node npx prettier --cgit GOPROXY 64/bin/go node /tmp�� /tmp/TestHashConsistency_GoAndJavaScript1847545457/001/test-empty-frontmatter.md (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-go/git/ref/tags/v4 --jq .object.sha &#34;prettier&#34; --check &#39;scripts/**/*.js&#39; --ignore-path .prettierignore git /usr/bin/git tierignore ache/go/1.25.0/xrev-parse /usr/bin/gh git rev-�� --show-toplevel gh /usr/bin/git /repos/actions/cgit --jq modules/@npmcli/--show-toplevel git (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 k/gh-aw/gh-aw/pkg/stringutil/ansi.go k/gh-aw/gh-aw/pkg/stringutil/identifiers.go /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile npx prettier --cgit GOPROXY 64/bin/go /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/compile -o /tmp/go-build2611110124/b421/_pkg_.a -trimpath om/testorg/testrepo.git -p github.com/githurev-parse -lang=go1.25 /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/setup-node/git/ref/tags/v4 --jq .object.sha &#34;prettier&#34; --check &#39;scripts/**/*.js&#39; --ignore-path .prettierignore git /usr/bin/git tierignore ache/go/1.25.0/xrev-parse /node git -C /tmp/gh-aw-test-runs/20260308-231703-34185/test-3489167628/.github/workflows config /usr/bin/git remote.origin.urgit /opt/hostedtoolcrev-parse /usr/bin/git git (http block)
  • https://api.github.com/repos/actions/upload-artifact/git/ref/tags/v4
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha -json stmain.go ache/go/1.25.0/x64/pkg/tool/linux_amd64/link GOINSECURE GOMOD GOMODCACHE ache/go/1.25.0/x64/pkg/tool/linux_amd64/link -uns�� 1110124/b413/repoutil.test /tmp/go-build2611110124/b174/vet.cfg 1110124/b413/importcfg.link GOSUMDB GOWORK 64/bin/go gUIYjN6c4lmkV/4fownHncp26b6DL2LBDN/N6GE9dzJuLpfUe9tz4e_/aZSvDGNgtest@example.com (http block)
    • Triggering command: /usr/bin/gh gh api /repos/actions/upload-artifact/git/ref/tags/v4 --jq .object.sha --show-toplevel on es/.bin/node /../../.prettiergit erignore /usr/bin/git sh k/gh�� npx prettier --write &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pr**/*.json git (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/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 1 --dir test-logs/run-1 git ules/.bin/node ignore x_amd64/vet /opt/hostedtoolc--show-toplevel git tion�� rite &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-p-errorsas /opt/hostedtoolcTest User nfig/composer/vendor/bin/sh -bool -buildtags /usr/bin/git git (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 x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_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 run download 12345 --dir test-logs/run-12345 git /usr/bin/git --show-toplevel tDxh6_4/9rUbv3kNrev-parse /usr/bin/git git rev-�� */*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pret-run=^Test /usr/bin/git 64/pkg/tool/linux_amd64/vet -v x_amd64/vet /usr/bin/git 64/pkg/tool/linux_amd64/vet (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 x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link env -json .cfg x_amd64/link GOINSECURE GOMOD GOMODCACHE x_amd64/link (http block)
    • Triggering command: /usr/bin/gh gh run download 12346 --dir test-logs/run-12346 git /usr/bin/git --show-toplevel x_amd64/vet /usr/bin/git git rev-�� */*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.prettierignore git m/_npx/b388654678d519d9/node_modules/.bin/sh --show-toplevel x_amd64/vet /usr/bin/git git (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/linux_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh run download 2 --dir test-logs/run-2 git tions/setup/node_modules/.bin/node ignore x_amd64/vet /opt/hostedtoolc--get git tion�� rite &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-p-errorsas /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linu-ifaceassert cal/bin/sh /tmp/go-build261git -trimpath /usr/bin/git git (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)
    • Triggering command: /usr/bin/gh gh run download 3 --dir test-logs/run-3 git tions/node_modules/.bin/node ignore 1110124/b433/_terev-parse /opt/hostedtoolc--show-toplevel git tion�� rite &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-p-errorsas /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linu-ifaceassert (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/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 run download 4 --dir test-logs/run-4 git tions/setup/js/node_modules/.bin/node ignore x_amd64/vet /usr/bin/docker git tion�� rite &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-p-errorsas docker 64/pkg/tool/linux_amd64/vet test/concurrent-git x_amd64/vet /usr/bin/git 64/pkg/tool/linux_amd64/vet (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)
    • Triggering command: /usr/bin/gh gh run download 5 --dir test-logs/run-5 git de_modules/.bin/node ignore x_amd64/vet /opt/hostedtoolc--show-toplevel git tion�� rite &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-p-test.timeout=10m0s /opt/hostedtoolctest@example.com rgo/bin/sh -bool -buildtags /usr/bin/git git (http block)
  • https://api.github.com/repos/github/gh-aw/actions/workflows
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path _Y1K/n0fNf3nuaPR-errorsas GO111MODULE 64/bin/go GOINSECURE GOMOD run-script/lib/n-bool 3461099/b401/imp-buildtags /hom�� 3461099/b401/emb-errorsas **/*.cjs 64/bin/go **/*.json --ignore-path ../../../.pretti-bool /opt/hostedtoolc-buildtags (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 --ignore-path ../../../.pretti-bool /opt/hostedtoolc-buildtags -o /tmp/go-build125-errorsas -trimpath 64/bin/go -p main -lang=go1.25 go (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/vet env ty-test.md GO111MODULE 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/contents/.github%2Fworkflows%2Faudit-workflows.md
    • Triggering command: /opt/hostedtoolcache/node/24.14.0/x64/bin/node /opt/hostedtoolcache/node/24.14.0/x64/bin/node --conditions node --conditions development --experimental-import-meta-resolve --require /home/REDACTED/.npm/_npx/69c381f8ad94b576/node_modules/vitest/suppress-warnings.cjs /home/REDACTED/.npm/_npx/69c381f8ad94b576/node_modules/vitest/dist/workers/forks.js git git git chec�� -b (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 -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/github/gh-aw/git/ref/tags/v1.0.0 --jq .object.sha w/js/**/*.json&#39; --ignore-path /opt/hostedtoolc../../../.prettierignore /usr/bin/git -unreachable=falnode /tmp/go-build261/home/REDACTED/work/gh-aw/gh-aw/actions/setup/js/node_modules/.bin/pre�� ache/go/1.25.0/x--check git rev-�� ath ../../../.pr**/*.json ache/go/1.25.0/x--ignore-path sh -bool -buildtags /usr/bin/infocmp--show-toplevel git (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v1.2.3
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha &#34;prettier&#34; --check &#39;scripts/**/*GOINSECURE sh 64/bin/go npx prettier --w/opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet on 64/bin/go go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v1.2.3 --jq .object.sha js/**/*.json&#39; --ignore-path ../../../.prettierignore /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v2.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha &#34;prettier&#34; --check &#39;scripts/**/*GOINSECURE node 64/bin/go tierignore --write 64/bin/go go env -json GO111MODULE x_amd64/compile GOINSECURE GOMOD GOMODCACHE x_amd64/compile (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha --check scripts/**/*.js 64/bin/go .prettierignore --write 64/bin/go go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v2.0.0 --jq .object.sha --check scripts/**/*.js 64/bin/go .prettierignore (http block)
  • https://api.github.com/repos/github/gh-aw/git/ref/tags/v3.0.0
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha &#34;prettier&#34; --check &#39;scripts/**/*GOINSECURE node 64/bin/go tierignore --write 64/bin/go go env -json GO111MODULE x_amd64/vet GOINSECURE GOMOD GOMODCACHE x_amd64/vet (http block)
    • Triggering command: /usr/bin/gh gh api /repos/github/gh-aw/git/ref/tags/v3.0.0 --jq .object.sha js/**/*.json&#39; --**/*.ts ache/go/1.25.0/x**/*.json /usr/bin/git 1110124/b427/_pkgo /tmp/go-build261test 1110124/b427=&gt; git rev-�� h ../../../.pret-run=^Test 4f90fa083cccb5c8./... /usr/bin/git bW5I/-pOH6J5YoELgit -buildtags /usr/bin/git git (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 GO111MODULE At,event,headBranch,headSha,displayTitle GOINSECURE GOMOD GOMODCACHE 64/pkg/tool/linux_amd64/vet env 2896315878/.github/workflows .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/nonexistent/action/git/ref/tags/v999.999.999 --jq .object.sha --show-toplevel ache/go/1.25.0/x64/pkg/tool/linux_amd64/vet /usr/bin/git -unreachable=falrun-parts /tmp/go-build261--report /opt/hostedtoolc/etc/cron.hourly git rev-�� --show-toplevel /opt/hostedtoolcache/go/1.25.0/x**/*.json /usr/bin/git r-test660202685/git -buildtags 1110124/b411/vet/tmp/gh-aw-test-runs/20260308-231703-34185/test-2670685870/.github/workflows git (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/linutest@example.com 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 run view 12345 --repo nonexistent/repo --json status,conclusion nore x_amd64/vet /usr/bin/git git 8d51�� te &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.pret.prettierignore git (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 GOINSECURE GOMOD GOMODCACHE 3461099/b384/imp/tmp/go-build2611110124/b119/vet.cfg /hom�� che/go-build/56/564903296cf114edGOINSECURE **/*.cjs 64/bin/go **/*.json --ignore-path ../../../.pretti-bool /opt/hostedtoolc-buildtags (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo 64/bin/go GOINSECURE GOMOD GOMODCACHE 3461099/b418/imp/tmp/go-build2611110124/b199/vet.cfg /hom�� che/go-build/e1/-c=4 **/*.cjs 64/bin/go **/*.json --ignore-path ../../../.pretti-bool go (http block)
    • Triggering command: /usr/bin/gh gh workflow list --json name,state,path --repo owner/repo /usr/bin/git -bool resolved$ 1110124/b332/vet--write git rev-�� w/js/**/*.json&#39; --ignore-path /opt/hostedtoolc../../../.prettierignore /usr/bin/git -bool -buildtags 0/x64/bin/node git (http block)
  • https://api.github.com/repos/owner/repo/contents/file.md
    • Triggering command: /tmp/go-build2611110124/b383/cli.test /tmp/go-build2611110124/b383/cli.test -test.testlogfile=/tmp/go-build2611110124/b383/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true GOINSECURE GOMOD GOMODCACHE 3461099/b358/imp/tmp/go-build2611110124/b145/vet.cfg -c k/gh-aw/gh-aw/pkg/mathutil/mathuGOINSECURE GOPROXY 64/bin/go GOSUMDB GOWORK 64/bin/go /opt/hostedtoolc-buildtags (http block)
    • Triggering command: /tmp/go-build2311965115/b383/cli.test /tmp/go-build2311965115/b383/cli.test -test.testlogfile=/tmp/go-build2311965115/b383/testlog.txt -test.paniconexit0 -test.v=true -test.parallel=4 -test.timeout=10m0s -test.run=^Test -test.short=true -unreachable=falsh /tmp/go-build261-c /opt/hostedtoolc&#34;prettier&#34; --write &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --ignore-path ../../../.prettierignore git rev-�� re --log-level=error /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet modules/@npmcli/run-script/lib/node-gyp-bin/node runs/20260308-23sh -buildtags /opt/hostedtoolc&#34;prettier&#34; --check &#39;**/*.cjs&#39; &#39;**/*.ts&#39; &#39;**/*.json&#39; --ignore-path ../../../.prettierignore git (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 aGAo/O8L5cCkzjtoGOSUMDB GO111MODULE 64/bin/go GOINSECURE GOMOD GOMODCACHE 3461099/b382/imp-buildtags /hom�� pkg/mod/github.c-errorsas pkg/mod/github.c-ifaceassert 64/bin/go **/*.json --ignore-path ../../../.pretti-bool /opt/hostedtoolc-buildtags (http block)
    • Triggering command: /usr/bin/gh gh api /repos/test-owner/test-repo/actions/secrets --jq .secrets[].name --show-toplevel /opt/hostedtoolcache/go/1.25.0/x64/pkg/tool/linux_amd64/vet ache/uv/0.10.9/x86_64/node 1609-29540/test-sh -buildtags 1110124/b182/vet&#34;prettier&#34; --write &#39;../../../**/*.json&#39; &#39;!../../../pkg/workflow/js/**/*.json&#39; --**/*.ts git ache�� --show-toplevel nly /usr/bin/git -bool -buildtags ache/go/1.25.0/x--check git (http block)

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


💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

…fe-outputs)

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix missing emission of created issue outputs in safe outputs fix(safe-outputs): emit created_issue_* outputs from handler manager Mar 8, 2026
@pelikhan pelikhan marked this pull request as ready for review March 8, 2026 23:24
Copilot AI review requested due to automatic review settings March 8, 2026 23:24
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

Fixes missing GitHub Actions step outputs in the safe-outputs handler manager by invoking the action-output emitter so downstream jobs can reliably consume outputs like needs.<job>.outputs.created_issue_number.

Changes:

  • Call emitSafeOutputActionOutputs(processingResult) from safe_output_handler_manager.cjs after existing core.setOutput calls.
  • Add regression tests around create_issue results and output emission behavior in safe_output_handler_manager.test.cjs.

Reviewed changes

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

File Description
actions/setup/js/safe_output_handler_manager.cjs Imports and invokes emitSafeOutputActionOutputs so created issue/PR/comment/push outputs are actually emitted.
actions/setup/js/safe_output_handler_manager.test.cjs Adds tests intended to prevent regressions around create_issue output emission wiring.
Comments suppressed due to low confidence (1)

actions/setup/js/safe_output_handler_manager.test.cjs:989

  • This block duplicates coverage that already exists elsewhere: safe_outputs_action_outputs.test.cjs already asserts created_issue_number/created_issue_url emission, and processMessages is already heavily tested above for create_issue success/failure. To keep the suite lean and focused, consider removing these redundant assertions and concentrating this new section on verifying the handler manager wiring (i.e., that main() calls the emitter).
  describe("output emission via emitSafeOutputActionOutputs", () => {
    it("processMessages result includes create_issue result with number and url for emission", async () => {
      const messages = [{ type: "create_issue", title: "My Issue" }];
      const mockHandler = vi.fn().mockResolvedValue({ number: 42, url: "https://github.com/owner/repo/issues/42" });
      const handlers = new Map([["create_issue", mockHandler]]);

      const result = await processMessages(handlers, messages);

      const issueResult = result.results.find(r => r.type === "create_issue" && r.success);
      expect(issueResult).toBeDefined();
      expect(issueResult.result.number).toBe(42);
      expect(issueResult.result.url).toBe("https://github.com/owner/repo/issues/42");
    });

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

You can also share your feedback on Copilot code review. Take the survey.


expect(global.core.setOutput).toHaveBeenCalledWith("created_issue_number", "7");
expect(global.core.setOutput).toHaveBeenCalledWith("created_issue_url", "https://github.com/owner/repo/issues/7");
});
Copy link

Copilot AI Mar 8, 2026

Choose a reason for hiding this comment

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

These tests don't actually verify the regression described in the PR (that safe_output_handler_manager.main() invokes emitSafeOutputActionOutputs). Because the test calls emitSafeOutputActionOutputs(result) directly, it would still pass even if the call were removed from main(). Consider adding an integration-style test that exercises main() (or mocking/spying on ./safe_outputs_action_outputs.cjs) to assert the emitter is invoked during normal handler-manager execution.

This issue also appears on line 977 of the same file.

Suggested change
});
});
it("main invokes emitSafeOutputActionOutputs during normal handler-manager execution", async () => {
// Spy on the real emitSafeOutputActionOutputs implementation
const outputsModule = await import("./safe_outputs_action_outputs.cjs");
const emitSpy = vi.spyOn(outputsModule, "emitSafeOutputActionOutputs");
const { main } = await import("./safe_output_handler_manager.cjs");
await main();
expect(emitSpy).toHaveBeenCalled();
const [firstCallArg] = emitSpy.mock.calls[0] || [];
expect(firstCallArg).toBeDefined();
expect(firstCallArg).toHaveProperty("results");
});

Copilot uses AI. Check for mistakes.
@pelikhan pelikhan merged commit 4728d84 into main Mar 8, 2026
111 checks passed
@pelikhan pelikhan deleted the copilot/fix-safe-outputs-emission branch March 8, 2026 23:29
github-actions bot added a commit that referenced this pull request Mar 8, 2026
Update Output Variables bullets in github-agentic-workflows.md to list
the named step outputs emitted by the safe-outputs handler manager for
downstream job consumption:

  - create-issue     → created_issue_number, created_issue_url
  - create-pull-request → created_pr_number, created_pr_url
  - add-comment      → comment_id, comment_url
  - push-to-pull-request-branch → push_commit_sha, push_commit_url

Mirrors the fix in #20130 (4728d84) that properly emits these outputs
from the handler manager via emitSafeOutputActionOutputs().

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.

safe_outputs: created_issue_* outputs missing because emitter is never called

3 participants