Replace the in-app docs-search.ts and build-docs-index.mjs with the
new sibling lib (@crema/lexical-rag-ui). Wire-up only — same index
shape, same tool response shape, same MiniSearch config, so the agent
sees no behavior change.
- tsconfig + app.css: wire the lib; alias minisearch to consumer's
node_modules so sibling-lib resolution works.
- admin-tools.ts: createRAGClient("/docs-index.json"), keep search_docs
tool's response shape unchanged (collapse tags[] back to category).
- ai.tsx: define DocHit locally — it's the tool-response shape, no
longer the lib's internal type.
- scripts/build-docs-index.mjs: thin wrapper that injects MiniSearch
and calls buildIndex. Per-app sources list and tags live here.
- package.json: add minisearch dep + build:docs script + prebuild hook.
- .gitignore: don't commit the generated /public/docs-index.json.
Delete: app/lib/docs-search.ts (was untracked; its logic moved to lib).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
#!/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 = [
|
|
{ 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"] },
|
|
]
|
|
|
|
buildIndex({
|
|
miniSearch: MiniSearch,
|
|
rootDir: ARCADIA,
|
|
outPath: OUT,
|
|
sources: SOURCES,
|
|
})
|