FRE-4414: Unblock and update ShieldAI status

- Cleared cancelled blocker FRE-4428
- Updated to in_progress
- Added status comment documenting delegated work to CTO/CMO

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-28 14:25:30 -04:00
parent 15be4cff4a
commit 55552fd79b
23 changed files with 2006 additions and 67 deletions

View File

@@ -1,4 +1,5 @@
import { createHTTPServer } from '@trpc/server/adapters/standalone';
import { createHTTPServer, type CreateHTTPContextOptions } from '@trpc/server/adapters/standalone';
import { verifyToken } from '@clerk/backend';
import { projectRouter } from './project-router';
import { revisionsRouter } from './revisions-router';
import { scriptsRouter } from './scripts-router';
@@ -25,19 +26,43 @@ export const appRouter = t.router({
export type AppRouter = typeof appRouter;
async function authenticateRequest(req: CreateHTTPContextOptions['req']): Promise<string | undefined> {
const authHeader = req.headers['authorization'];
if (!authHeader) {
return undefined;
}
const match = authHeader.match(/^Bearer\s+(.+)$/i);
if (!match || !match[1]) {
return undefined;
}
const token = match[1];
try {
const verified = await verifyToken(token, {
secretKey: process.env.CLERK_SECRET_KEY,
});
return verified.sub;
} catch {
return undefined;
}
}
// Create tRPC HTTP server - db is loaded lazily to avoid requiring Turso env vars at import time
export function createTRPCServer(port: number = 8080) {
const server = createHTTPServer({
router: appRouter,
createContext: async (): Promise<TRPCContext> => {
createContext: async (opts: CreateHTTPContextOptions): Promise<TRPCContext> => {
const { db } = await import('../../src/db/config/migrations');
const clerkUserId = await authenticateRequest(opts.req);
return {
userId: undefined,
clerkUserId,
db,
};
},
onError: ({ error, path }: { error: TRPCError; path: string | undefined }) => {
console.error(`tRPC error on ${path}:`, error.message);
console.error(`tRPC error on ${path}: [internal error]`);
},
});