feat(v2): full spec implementation — root SSH, bootstrap sentinel, HMAC webhook, all parametric routes fixed #1

Merged
space merged 9 commits from v2/full-spec-implementation into main 2026-07-26 14:26:39 +02:00
Showing only changes of commit 151a69fb0b - Show all commits
+5 -3
View File
@@ -13,7 +13,7 @@ import {
deleteKeyPairAws, deleteKeyPairAws,
deleteSecurityGroupAws, deleteSecurityGroupAws,
} from "./ec2"; } from "./ec2";
import { connectSsh, waitForBootstrap, type SshSession } from "./ssh"; import { connectSsh, type SshSession } from "./ssh";
import { import {
buildPrCommentBody, buildPrCommentBody,
postComment, postComment,
@@ -232,8 +232,10 @@ async function firstDeploy(
activeSshSessions.set(previewId, sshSession); activeSshSessions.set(previewId, sshSession);
try { try {
await appendLog(previewId, `[PP] SSH connected. Waiting for bootstrap to complete...\n`); // Root SSH is enabled as the final bootstrap step, after the completion
await waitForBootstrap(sshSession, 900_000); // marker is written. A successful root connection is therefore the
// readiness signal; polling the same long-lived SSH connection can leave
// a completed instance stuck when its exec channel goes stale.
await appendLog(previewId, `[PP] Bootstrap complete. Starting setup...\n`); await appendLog(previewId, `[PP] Bootstrap complete. Starting setup...\n`);
if (repoConfig.aptPackages.length > 0) { if (repoConfig.aptPackages.length > 0) {