ai: migrate docs-search to @crema/lexical-rag-ui
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>
This commit is contained in:
@@ -69,7 +69,19 @@ import { Avatar, AvatarFallback } from "~/components/ui/avatar"
|
||||
import { pageTitle } from "~/lib/page-meta"
|
||||
import { useArcadiaClient } from "@crema/arcadia-client"
|
||||
import type { Message as LLMMessage, ToolCall } from "@crema/llm-ui"
|
||||
import type { DocHit } from "~/lib/docs-search"
|
||||
// Shape of a single hit returned by the `search_docs` tool. Defined here
|
||||
// rather than imported from the lib because the tool wrapper in
|
||||
// admin-tools.ts intentionally collapses the lib's `tags[]` back to a
|
||||
// single `category` for tool-response stability — this type matches
|
||||
// what the model actually sees.
|
||||
type DocHit = {
|
||||
id: string
|
||||
title: string
|
||||
sourcePath: string
|
||||
category: string
|
||||
excerpt: string
|
||||
score: number
|
||||
}
|
||||
import {
|
||||
AgentAvatar,
|
||||
ToolCallCard,
|
||||
|
||||
Reference in New Issue
Block a user