From f25fa083df4e335a860d4f8aeb2de1dc934976d6 Mon Sep 17 00:00:00 2001 From: Deodate-Lawson Date: Sat, 29 Aug 2026 20:21:33 -0400 Subject: [PATCH] =?UTF-8?q?fix(ci):=20unbreak=20main=20after=20the=20#364/?= =?UTF-8?q?#362=20merges=20=E2=80=94=20route=20export=20+=20Docker=20manif?= =?UTF-8?q?ests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Main went red when PR #364 merged at its conflict-resolution commit, before the CI fixes landed on the branch; #362 then stacked a second latent failure on top. Two causes, both fixed here: - next build rejects non-handler exports from route modules (a check plain tsc does not run): OAUTH_STATE_COOKIE moves from the oauth start route into services/google-drive/config, and the callback stops importing from a sibling route file. Fixes the CI `build` job, both Docker image builds, and the Vercel deploy. - the worker and web Dockerfiles enumerate workspace package manifests for their install layer; BOTH new bricks were missing. packages/google-drive (from #364) is what killed compose-smoke ("Cannot find package 'zod'"), and packages/document-conversion-engine (from #362) would have failed the web image build the same way next. Both added to all three Dockerfiles. Verified: SKIP_ENV_VALIDATION next build compiles clean on this branch; google-drive package tests 13/13. Co-Authored-By: Claude Fable 5 --- apps/web/Dockerfile | 2 ++ apps/web/Dockerfile.prebuilt | 2 ++ .../src/app/api/connectors/google/oauth/callback/route.ts | 3 +-- .../web/src/app/api/connectors/google/oauth/start/route.ts | 3 +-- apps/web/src/server/services/google-drive/config.ts | 7 +++++++ apps/worker/Dockerfile | 2 ++ 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile index e6815faec..e16d96498 100644 --- a/apps/web/Dockerfile +++ b/apps/web/Dockerfile @@ -23,6 +23,8 @@ COPY packages/indexing/package.json ./packages/indexing/ COPY packages/search/package.json ./packages/search/ COPY packages/orchestration/package.json ./packages/orchestration/ COPY packages/editing/package.json ./packages/editing/ +COPY packages/google-drive/package.json ./packages/google-drive/ +COPY packages/document-conversion-engine/package.json ./packages/document-conversion-engine/ COPY packages/collab/package.json ./packages/collab/ COPY packages/engine/package.json ./packages/engine/ COPY packages/schema-generator/package.json ./packages/schema-generator/ diff --git a/apps/web/Dockerfile.prebuilt b/apps/web/Dockerfile.prebuilt index 1c3a24abc..88a53fe66 100644 --- a/apps/web/Dockerfile.prebuilt +++ b/apps/web/Dockerfile.prebuilt @@ -28,6 +28,8 @@ COPY packages/indexing/package.json ./packages/indexing/ COPY packages/search/package.json ./packages/search/ COPY packages/orchestration/package.json ./packages/orchestration/ COPY packages/editing/package.json ./packages/editing/ +COPY packages/google-drive/package.json ./packages/google-drive/ +COPY packages/document-conversion-engine/package.json ./packages/document-conversion-engine/ COPY packages/collab/package.json ./packages/collab/ COPY packages/engine/package.json ./packages/engine/ COPY packages/schema-generator/package.json ./packages/schema-generator/ diff --git a/apps/web/src/app/api/connectors/google/oauth/callback/route.ts b/apps/web/src/app/api/connectors/google/oauth/callback/route.ts index 83d444335..ebca89333 100644 --- a/apps/web/src/app/api/connectors/google/oauth/callback/route.ts +++ b/apps/web/src/app/api/connectors/google/oauth/callback/route.ts @@ -16,14 +16,13 @@ import { users } from "~/server/db/schema"; import { isManagementRole, requireWorkspaceContext } from "~/lib/require-workspace-context"; import { GOOGLE_DRIVE_SCOPES, + OAUTH_STATE_COOKIE, getGoogleOAuthApp, getOAuthRedirectUrl, isDriveLinkingEnabled, } from "~/server/services/google-drive/config"; import { upsertGoogleConnection } from "~/server/services/google-drive/connections"; -import { OAUTH_STATE_COOKIE } from "../start/route"; - function redirectToWorkspace(request: Request, flag: string): NextResponse { const response = NextResponse.redirect( new URL(`/employer/documents?googleDrive=${flag}`, request.url) diff --git a/apps/web/src/app/api/connectors/google/oauth/start/route.ts b/apps/web/src/app/api/connectors/google/oauth/start/route.ts index 0e50499da..37bb3972f 100644 --- a/apps/web/src/app/api/connectors/google/oauth/start/route.ts +++ b/apps/web/src/app/api/connectors/google/oauth/start/route.ts @@ -15,13 +15,12 @@ import { buildAuthorizationUrl } from "@launchstack/google-drive"; import { isManagementRole, requireWorkspaceContext } from "~/lib/require-workspace-context"; import { GOOGLE_DRIVE_SCOPES, + OAUTH_STATE_COOKIE, getGoogleOAuthApp, getOAuthRedirectUrl, isDriveLinkingEnabled, } from "~/server/services/google-drive/config"; -export const OAUTH_STATE_COOKIE = "gdrive_oauth_state"; - export async function GET(request: Request) { if (!isDriveLinkingEnabled()) { return NextResponse.json({ error: "feature_disabled" }, { status: 404 }); diff --git a/apps/web/src/server/services/google-drive/config.ts b/apps/web/src/server/services/google-drive/config.ts index 4c8d0c1b3..264f4698f 100644 --- a/apps/web/src/server/services/google-drive/config.ts +++ b/apps/web/src/server/services/google-drive/config.ts @@ -12,6 +12,13 @@ import { env } from "~/env"; export const GOOGLE_DRIVE_PROVIDER = "google-drive"; +/** + * CSRF nonce cookie for the OAuth flow. Lives here, not in the route file: + * Next.js route modules may only export handler fields, and `next build` + * enforces that where plain typechecking does not. + */ +export const OAUTH_STATE_COOKIE = "gdrive_oauth_state"; + /** * drive.file only: the app can touch files it created, nothing else in the * user's Drive. openid+email identify which Google account holds the files. diff --git a/apps/worker/Dockerfile b/apps/worker/Dockerfile index 841e94c95..884e03f8c 100644 --- a/apps/worker/Dockerfile +++ b/apps/worker/Dockerfile @@ -27,6 +27,8 @@ COPY packages/indexing/package.json ./packages/indexing/ COPY packages/search/package.json ./packages/search/ COPY packages/orchestration/package.json ./packages/orchestration/ COPY packages/editing/package.json ./packages/editing/ +COPY packages/google-drive/package.json ./packages/google-drive/ +COPY packages/document-conversion-engine/package.json ./packages/document-conversion-engine/ COPY packages/collab/package.json ./packages/collab/ COPY packages/engine/package.json ./packages/engine/ COPY packages/schema-generator/package.json ./packages/schema-generator/