feat: initial CodeBoard monorepo scaffold
Turborepo monorepo with npm workspaces: - apps/web: Next.js 14 frontend with Tailwind v4, SSE progress, doc viewer - apps/worker: BullMQ job processor (clone → parse → LLM generate) - packages/shared: TypeScript types - packages/parser: Babel-based AST parser (JS/TS) + regex (Python) - packages/llm: OpenAI/Anthropic provider abstraction + prompt pipeline - packages/diagrams: Mermaid architecture & dependency graph generators - packages/database: Prisma schema (PostgreSQL) - Docker multi-stage build (web + worker targets) All packages compile successfully with tsc and next build.
This commit is contained in:
26
apps/worker/src/jobs/generate.ts
Normal file
26
apps/worker/src/jobs/generate.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import type { CodeStructure, GeneratedDocs } from "@codeboard/shared";
|
||||
import { createProvider, generateDocumentation } from "@codeboard/llm";
|
||||
|
||||
export async function generateDocs(
|
||||
codeStructure: CodeStructure,
|
||||
onProgress?: (stage: string, progress: number) => void
|
||||
): Promise<GeneratedDocs> {
|
||||
const apiKey =
|
||||
process.env.OPENAI_API_KEY ?? process.env.ANTHROPIC_API_KEY ?? "";
|
||||
|
||||
if (!apiKey) {
|
||||
throw new Error(
|
||||
"No LLM API key configured. Set OPENAI_API_KEY or ANTHROPIC_API_KEY."
|
||||
);
|
||||
}
|
||||
|
||||
const providerType = process.env.OPENAI_API_KEY ? "openai" : "anthropic";
|
||||
const provider = createProvider({
|
||||
provider: providerType,
|
||||
apiKey,
|
||||
model: process.env.LLM_MODEL,
|
||||
baseUrl: process.env.LLM_BASE_URL,
|
||||
});
|
||||
|
||||
return generateDocumentation(codeStructure, provider, onProgress);
|
||||
}
|
||||
Reference in New Issue
Block a user