#!/usr/bin/env node // Build the /docs-index.json bundle consumed by @crema/lexical-rag-ui at // runtime. Thin wrapper — all engine logic lives in the lib's builder.ts; // this file owns the per-app config (which arcadia-app docs to index and // how to tag them). // // Run: npm run build:docs // // Allowlist is intentional. Excluded files are aspirational/stale and // would poison answers (TODO lists, design docs for unshipped features, // sub-app READMEs that aren't part of arcadia-core). To add a file, // append to SOURCES below — don't auto-discover. import { resolve, dirname } from "node:path" import { fileURLToPath } from "node:url" import MiniSearch from "minisearch" import { buildIndex } from "../../lib-lexical-rag-ui/src/builder.mjs" const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..") const ARCADIA = resolve(ROOT, "../reference/arcadia-app") const OUT = resolve(ROOT, "public/docs-index.json") const SOURCES = [ // Arcadia platform docs (resolved against ARCADIA = ../reference/arcadia-app). { path: "README.md", tags: ["core"] }, { path: "docs/ARCADIA.md", tags: ["core"] }, { path: "docs/MODULAR_MONOLITH.md", tags: ["core"] }, { path: "apps/arcadia_core/README.md", tags: ["core"] }, { path: "DEPLOY.md", tags: ["ops"] }, { path: "DEV_DEPLOY.md", tags: ["ops"] }, { path: "DEV_SETUP.md", tags: ["ops"] }, // RAG ecosystem docs — pulled from sibling repos via per-source // rootDir override. Lets the assistant answer "how do I add a // tenant to arcadia-search" or "what does the browser RAG do" // without leaving the chat. { rootDir: "../../arcadia-search", path: "README.md", tags: ["rag", "search-service"] }, { rootDir: "../../arcadia-search", path: "MULTI_TENANT.md", tags: ["rag", "search-service"] }, { rootDir: "../../arcadia-search", path: "ARCADIA_INTEGRATION.md", tags: ["rag", "integration"] }, { rootDir: "../../lib-lexical-rag-ui", path: "README.md", tags: ["rag", "browser"] }, { rootDir: "../../arcadia-admin", path: "docs/RAG.md", tags: ["rag", "overview"] }, ] buildIndex({ miniSearch: MiniSearch, rootDir: ARCADIA, outPath: OUT, sources: SOURCES, })