Fix Foundry Rivet base path and frontend endpoint fallback

This commit is contained in:
Nathan Flurry 2026-03-12 20:31:49 -07:00
parent 9a2c60bf30
commit a8bcfa36bb
3 changed files with 24 additions and 2 deletions

View file

@ -5,9 +5,20 @@ escape_js() {
printf '%s' "${1:-}" | sed 's/\\/\\\\/g; s/"/\\"/g' printf '%s' "${1:-}" | sed 's/\\/\\\\/g; s/"/\\"/g'
} }
normalize_backend_endpoint() {
case "${1:-}" in
*/api/rivet)
printf '%s/v1/rivet' "${1%/api/rivet}"
;;
*)
printf '%s' "${1:-}"
;;
esac
}
cat > /srv/__foundry_runtime_config.js <<EOF cat > /srv/__foundry_runtime_config.js <<EOF
window.__FOUNDRY_RUNTIME_CONFIG__ = { window.__FOUNDRY_RUNTIME_CONFIG__ = {
backendEndpoint: "$(escape_js "${VITE_HF_BACKEND_ENDPOINT:-}")", backendEndpoint: "$(escape_js "$(normalize_backend_endpoint "${VITE_HF_BACKEND_ENDPOINT:-}")")",
defaultWorkspaceId: "$(escape_js "${VITE_HF_WORKSPACE:-}")", defaultWorkspaceId: "$(escape_js "${VITE_HF_WORKSPACE:-}")",
frontendClientMode: "$(escape_js "${FOUNDRY_FRONTEND_CLIENT_MODE:-remote}")" frontendClientMode: "$(escape_js "${FOUNDRY_FRONTEND_CLIENT_MODE:-remote}")"
}; };

View file

@ -9,6 +9,9 @@ import { sandboxInstance } from "./sandbox-instance/index.js";
import { workspace } from "./workspace/index.js"; import { workspace } from "./workspace/index.js";
export const registry = setup({ export const registry = setup({
serverless: {
basePath: "/v1/rivet",
},
use: { use: {
workspace, workspace,
project, project,

View file

@ -273,8 +273,16 @@ function stripTrailingSlash(value: string): string {
return value.replace(/\/$/, ""); return value.replace(/\/$/, "");
} }
function deriveBackendEndpoints(endpoint: string): { appEndpoint: string; rivetEndpoint: string } { function normalizeLegacyBackendEndpoint(endpoint: string): string {
const normalized = stripTrailingSlash(endpoint); const normalized = stripTrailingSlash(endpoint);
if (normalized.endsWith("/api/rivet")) {
return `${normalized.slice(0, -"/api/rivet".length)}/v1/rivet`;
}
return normalized;
}
function deriveBackendEndpoints(endpoint: string): { appEndpoint: string; rivetEndpoint: string } {
const normalized = normalizeLegacyBackendEndpoint(endpoint);
if (normalized.endsWith("/rivet")) { if (normalized.endsWith("/rivet")) {
return { return {
appEndpoint: normalized.slice(0, -"/rivet".length), appEndpoint: normalized.slice(0, -"/rivet".length),