ci(copilot): add cloud-agent setup-steps to default branch#9
Conversation
GitHub reads copilot-setup-steps.yml only from the default branch, so the Copilot cloud agent's environment (Deno 2.x + .NET 10 + Aspire CLI + Docker, plus pre-warmed deno/NuGet caches for the firewalled session) is not provisioned until this lands on main. Validated against GitHub's canonical spec and current action majors (checkout@v6, setup-deno@v2, setup-dotnet@v5).
🤖 Augment PR SummarySummary: Adds a dedicated Copilot cloud-agent bootstrap workflow on the default branch so S1 evaluation/audit runs have a pre-provisioned toolchain. Changes:
🤖 Was this summary useful? React with 👍 or 👎 |
| # --- Aspire CLI (standalone install script; adds $HOME/.aspire/bin to PATH) --- | ||
| - name: Install Aspire CLI | ||
| run: | | ||
| curl -fsSL https://aspire.dev/install.sh | bash |
There was a problem hiding this comment.
.github/workflows/copilot-setup-steps.yml:53 Piping a remote install.sh directly into bash makes the setup non-reproducible and increases supply-chain risk if the script changes or is compromised. Consider adding some integrity/version pinning so Copilot sessions don’t unpredictably break (or run unexpected code).
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| run: | | ||
| deno --version | ||
| # Resolve + cache all workspace deps (jsr: + npm:) from the lockfile. | ||
| deno install || echo "deno install non-fatal during setup" |
There was a problem hiding this comment.
.github/workflows/copilot-setup-steps.yml:72 deno install without arguments typically exits non-zero (help/usage), so this step is likely a no-op and won’t actually warm the dependency cache as the comment suggests. This could leave the subsequent firewalled Copilot session still needing network fetches for deps.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
|
@copilot ensure the yaml is perfectly valid according to augment some commands are either unsafe or incorrect do broader search to ensure everything works perfectly and respond back to augment comments on this pr |
Addressed in |
#8 #9 #10 #15) - reference/ai: explicit note that AI provider keys have no typed config surface; raw Deno.env.get is the supported path (#8). - reference/queue + reference/kv: See-it-live link blocks to the queue-kv-cron how-to and data-persistence concept page (#9). - reference/contracts + reference/sdk: showcase sentence per lede — contracts obviate manual req.json() validation; defineServices() wires the whole typed stack in one call (#10). - durable-workflows/streams: one sentence reframing no in-process subscribe() as an intentional single HTTP/SSE surface (#15). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM
…-tos, auth example (#686) * docs: clarify PORT/typed-config relationship across 8 pages (#660 #7) Aspire injects PORT at runtime; netscript.config.ts services.<name>.port (apps.<name>.port for Fresh apps) is the typed source of truth the scaffold wires as the fallback default. One shared sentence at each first parseInt occurrence so the raw-env read no longer reads as the canonical pattern. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM * docs: reference showcase ledes, see-it-live links, streams framing (#660 #8 #9 #10 #15) - reference/ai: explicit note that AI provider keys have no typed config surface; raw Deno.env.get is the supported path (#8). - reference/queue + reference/kv: See-it-live link blocks to the queue-kv-cron how-to and data-persistence concept page (#9). - reference/contracts + reference/sdk: showcase sentence per lede — contracts obviate manual req.json() validation; defineServices() wires the whole typed stack in one call (#10). - durable-workflows/streams: one sentence reframing no in-process subscribe() as an intentional single HTTP/SSE surface (#15). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM * docs: add runnable end-to-end blocks to three decision how-tos (#660 #11) discover-services, choose-a-queue-provider, and add-a-task-runtime-adapter each gain one copy-pasteable end-to-end block (resulting file + full command sequence) at deploy-local-aspire density, demonstrating the pluggability the pages previously only asserted. All commands/APIs grounded in package source. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM * docs: add complete route-protection example to better-auth-plugins (#660 #12) A real Fresh routes/*.tsx handler gated on an active session and an admin role, at sibling auth.md's depth: resolves the session via backend.sessions.getSession, maps to a Principal with principalMapper, and fails closed on both checks. Grounded in packages/auth-better-auth + @netscript/service/auth exports. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM * chore(run): docs-660b sweep worklog (#660) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VifzAytcxBk5odEMaCXihM --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Why
GitHub's Copilot cloud agent reads
copilot-setup-steps.ymlonly from the repository's default branch (main). The file currently lives onfeat/package-quality(and the Wave 2 branch) but not onmain— so the agent's environment is not provisioned for S1 evaluation / audit-fix runs until this lands here.This is a workflow-only PR (single file, no code) so the setup can take effect immediately, independent of the S1 wave merges.
What it provisions
The setup job (full network, runs before each firewalled agent session) prepares the toolchain the S1 passes need:
deno publish --dry-run,deno doc --lint,deno task check)AppHost/ServiceDefaultstargetnet10.0dotnet/aspireinstaller script at the release tag commit, with SHA-256 verification before executiondeno cacheover package/plugin sources, plus NuGet inspection, so allowlist-firewalled sessions run fasterValidation (state-of-the-art check)
copilot-setup-steps.ymlspec: job named exactlycopilot-setup-steps,runs-on: ubuntu-latest(supported runner), and theworkflow_dispatch+push+pull_requestpath triggers from the canonical example.actions/checkout@v6,denoland/setup-deno@v2,actions/setup-dotnet@v5.dotnet/aspirev13.4.2 release tag target and verified by SHA-256 before running.deno cache --config deno.json --no-lockinstead ofdeno installwith no arguments.actionlint, shell syntax checks, targeted installer checks, and CodeQL security scan.🤖 Generated with Claude Code