@sqlrooms/ai-rag 0.26.1-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,140 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { ReasoningBox } from '@sqlrooms/ai-core';
3
+ import { Button } from '@sqlrooms/ui';
4
+ import { useState } from 'react';
5
+ import { z } from 'zod';
6
+ /**
7
+ * Zod schema for the RAG tool parameters
8
+ */
9
+ export const RagToolParameters = z.object({
10
+ query: z
11
+ .string()
12
+ .describe('The search query. Be specific and descriptive. Example: "How to create a table in DuckDB" or "React hooks usage"'),
13
+ database: z
14
+ .string()
15
+ .optional()
16
+ .describe('Which documentation database to search (e.g., "duckdb_docs", "react_docs"). If not specified, searches the default database.'),
17
+ topK: z
18
+ .number()
19
+ .optional()
20
+ .default(5)
21
+ .describe('Number of results to return (default: 5, max: 20)'),
22
+ });
23
+ /**
24
+ * Individual result item with collapsible details
25
+ */
26
+ function RagResultItem({ result, index, }) {
27
+ const [isExpanded, setIsExpanded] = useState(false);
28
+ return (_jsxs("div", { children: [_jsxs(Button, { variant: "ghost", size: "xs", onClick: () => setIsExpanded(!isExpanded), className: "flex w-full items-center justify-between text-left", children: [_jsxs("span", { className: "text-xs font-semibold text-gray-700 dark:text-gray-300", children: [isExpanded ? '▼' : '▶', " Result #", index + 1] }), _jsxs("span", { className: "text-muted-foreground/50 text-xs", children: ["Score: ", result.score.toFixed(3)] })] }), isExpanded && (_jsx("p", { className: "text-muted-foreground/50 whitespace-pre-wrap p-5 font-mono text-xs", children: result.text }))] }));
29
+ }
30
+ /**
31
+ * Result component for displaying RAG search results
32
+ */
33
+ function RagToolResult(result) {
34
+ if (!result?.success) {
35
+ return (_jsxs("div", { className: "rounded border border-red-300 bg-red-50 p-3 text-red-600 dark:border-red-700 dark:bg-red-900/20 dark:text-red-400", children: [_jsx("p", { className: "text-xs font-semibold", children: "RAG Search Failed" }), _jsx("p", { className: "text-xs", children: result?.error || 'Unknown error' })] }));
36
+ }
37
+ const { query, results, database } = result;
38
+ return (_jsx(ReasoningBox, { title: `Found ${results?.length || 0} results`, children: _jsx("div", { className: "space-y-2 p-3", children: _jsx("div", { className: "space-y-2", children: results &&
39
+ results.map((result, i) => (_jsx(RagResultItem, { result: result, index: i }, i))) }) }) }));
40
+ }
41
+ /**
42
+ * Create a RAG (Retrieval Augmented Generation) tool for AI.
43
+ *
44
+ * This tool allows the AI to search through embedded documentation
45
+ * to find relevant context before answering questions.
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const store = createRoomStore({
50
+ * slices: [
51
+ * createRagSlice({embeddingsDatabases: [...]}),
52
+ * createAiSlice({
53
+ * tools: {
54
+ * rag: createRagTool(),
55
+ * }
56
+ * })
57
+ * ]
58
+ * });
59
+ * ```
60
+ */
61
+ export function createRagTool() {
62
+ return {
63
+ name: 'search_documentation',
64
+ description: `Search through documentation and knowledge bases using semantic search.
65
+
66
+ Use this tool when you need to:
67
+ - Find specific information in documentation
68
+ - Look up API references or technical details
69
+ - Get context about features, functions, or concepts
70
+ - Answer questions that require domain knowledge
71
+
72
+ The search uses vector embeddings to find semantically similar content, not just keyword matching.`,
73
+ parameters: RagToolParameters,
74
+ execute: async (params) => {
75
+ const { query, database, topK = 5 } = params;
76
+ // Get the store instance
77
+ const store = globalThis.__ROOM_STORE__;
78
+ if (!store) {
79
+ return {
80
+ llmResult: {
81
+ success: false,
82
+ error: 'Store not available',
83
+ },
84
+ };
85
+ }
86
+ const state = store.getState();
87
+ try {
88
+ // Initialize RAG if not already initialized
89
+ await state.rag.initialize();
90
+ // Clamp topK to reasonable limits
91
+ const clampedTopK = Math.min(Math.max(1, topK), 20);
92
+ // Determine which database to search
93
+ const targetDatabase = database || state.rag.listDatabases()[0];
94
+ if (!targetDatabase) {
95
+ return {
96
+ llmResult: {
97
+ success: false,
98
+ error: 'No RAG databases configured',
99
+ },
100
+ };
101
+ }
102
+ // Perform the search
103
+ const results = await state.rag.queryByText(query, {
104
+ topK: clampedTopK,
105
+ database: targetDatabase,
106
+ });
107
+ // Format results for LLM
108
+ const formattedContext = results
109
+ .map((result, i) => `[Result ${i + 1}] (Score: ${result.score.toFixed(3)})\n${result.text}`)
110
+ .join('\n\n---\n\n');
111
+ return {
112
+ llmResult: {
113
+ success: true,
114
+ query,
115
+ database: targetDatabase,
116
+ results: results.map((r) => ({
117
+ text: r.text,
118
+ score: r.score,
119
+ metadata: r.metadata,
120
+ })),
121
+ // Provide formatted context for the LLM
122
+ context: formattedContext,
123
+ details: `Found ${results.length} relevant documents in ${targetDatabase}`,
124
+ },
125
+ };
126
+ }
127
+ catch (error) {
128
+ console.error('RAG search error:', error);
129
+ return {
130
+ llmResult: {
131
+ success: false,
132
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
133
+ },
134
+ };
135
+ }
136
+ },
137
+ component: RagToolResult,
138
+ };
139
+ }
140
+ //# sourceMappingURL=createRagTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRagTool.js","sourceRoot":"","sources":["../src/createRagTool.tsx"],"names":[],"mappings":"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","sourcesContent":["import {OpenAssistantTool} from '@openassistant/utils';\nimport {ReasoningBox} from '@sqlrooms/ai-core';\nimport {Button} from '@sqlrooms/ui';\nimport {useState} from 'react';\nimport {z} from 'zod';\nimport type {RagSliceState} from './RagSlice';\n\n/**\n * Zod schema for the RAG tool parameters\n */\nexport const RagToolParameters = z.object({\n query: z\n .string()\n .describe(\n 'The search query. Be specific and descriptive. Example: \"How to create a table in DuckDB\" or \"React hooks usage\"',\n ),\n database: z\n .string()\n .optional()\n .describe(\n 'Which documentation database to search (e.g., \"duckdb_docs\", \"react_docs\"). If not specified, searches the default database.',\n ),\n topK: z\n .number()\n .optional()\n .default(5)\n .describe('Number of results to return (default: 5, max: 20)'),\n});\n\nexport type RagToolParameters = z.infer<typeof RagToolParameters>;\n\nexport type RagToolLlmResult = {\n success: boolean;\n error?: string;\n query?: string;\n database?: string;\n results?: Array<{\n text: string;\n score: number;\n metadata?: Record<string, unknown>;\n }>;\n context?: string;\n details?: string;\n};\n\nexport type RagToolAdditionalData = Record<string, never>;\n\nexport type RagToolContext = unknown;\n\n/**\n * Individual result item with collapsible details\n */\nfunction RagResultItem({\n result,\n index,\n}: {\n result: {text: string; score: number; metadata?: Record<string, unknown>};\n index: number;\n}) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n return (\n <div>\n <Button\n variant=\"ghost\"\n size=\"xs\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"flex w-full items-center justify-between text-left\"\n >\n <span className=\"text-xs font-semibold text-gray-700 dark:text-gray-300\">\n {isExpanded ? '▼' : '▶'} Result #{index + 1}\n </span>\n <span className=\"text-muted-foreground/50 text-xs\">\n Score: {result.score.toFixed(3)}\n </span>\n </Button>\n\n {isExpanded && (\n <p className=\"text-muted-foreground/50 whitespace-pre-wrap p-5 font-mono text-xs\">\n {result.text}\n </p>\n )}\n </div>\n );\n}\n\n/**\n * Result component for displaying RAG search results\n */\nfunction RagToolResult(result: RagToolLlmResult) {\n if (!result?.success) {\n return (\n <div className=\"rounded border border-red-300 bg-red-50 p-3 text-red-600 dark:border-red-700 dark:bg-red-900/20 dark:text-red-400\">\n <p className=\"text-xs font-semibold\">RAG Search Failed</p>\n <p className=\"text-xs\">{result?.error || 'Unknown error'}</p>\n </div>\n );\n }\n\n const {query, results, database} = result;\n\n return (\n <ReasoningBox title={`Found ${results?.length || 0} results`}>\n <div className=\"space-y-2 p-3\">\n <div className=\"space-y-2\">\n {results &&\n results.map((result, i) => (\n <RagResultItem key={i} result={result} index={i} />\n ))}\n </div>\n </div>\n </ReasoningBox>\n );\n}\n\n/**\n * Create a RAG (Retrieval Augmented Generation) tool for AI.\n *\n * This tool allows the AI to search through embedded documentation\n * to find relevant context before answering questions.\n *\n * @example\n * ```typescript\n * const store = createRoomStore({\n * slices: [\n * createRagSlice({embeddingsDatabases: [...]}),\n * createAiSlice({\n * tools: {\n * rag: createRagTool(),\n * }\n * })\n * ]\n * });\n * ```\n */\nexport function createRagTool(): OpenAssistantTool<\n typeof RagToolParameters,\n RagToolLlmResult,\n RagToolAdditionalData,\n RagToolContext\n> {\n return {\n name: 'search_documentation',\n description: `Search through documentation and knowledge bases using semantic search.\n \nUse this tool when you need to:\n- Find specific information in documentation\n- Look up API references or technical details\n- Get context about features, functions, or concepts\n- Answer questions that require domain knowledge\n\nThe search uses vector embeddings to find semantically similar content, not just keyword matching.`,\n\n parameters: RagToolParameters,\n\n execute: async (params: RagToolParameters) => {\n const {query, database, topK = 5} = params;\n // Get the store instance\n const store = (globalThis as any).__ROOM_STORE__;\n if (!store) {\n return {\n llmResult: {\n success: false,\n error: 'Store not available',\n } satisfies RagToolLlmResult,\n };\n }\n\n const state = store.getState() as RagSliceState;\n\n try {\n // Initialize RAG if not already initialized\n await state.rag.initialize();\n\n // Clamp topK to reasonable limits\n const clampedTopK = Math.min(Math.max(1, topK), 20);\n\n // Determine which database to search\n const targetDatabase = database || state.rag.listDatabases()[0];\n\n if (!targetDatabase) {\n return {\n llmResult: {\n success: false,\n error: 'No RAG databases configured',\n } satisfies RagToolLlmResult,\n };\n }\n\n // Perform the search\n const results = await state.rag.queryByText(query, {\n topK: clampedTopK,\n database: targetDatabase,\n });\n\n // Format results for LLM\n const formattedContext = results\n .map(\n (result, i) =>\n `[Result ${i + 1}] (Score: ${result.score.toFixed(3)})\\n${result.text}`,\n )\n .join('\\n\\n---\\n\\n');\n\n return {\n llmResult: {\n success: true,\n query,\n database: targetDatabase,\n results: results.map((r) => ({\n text: r.text,\n score: r.score,\n metadata: r.metadata,\n })),\n // Provide formatted context for the LLM\n context: formattedContext,\n details: `Found ${results.length} relevant documents in ${targetDatabase}`,\n } satisfies RagToolLlmResult,\n };\n } catch (error) {\n console.error('RAG search error:', error);\n return {\n llmResult: {\n success: false,\n error:\n error instanceof Error ? error.message : 'Unknown error occurred',\n } satisfies RagToolLlmResult,\n };\n }\n },\n\n component: RagToolResult,\n };\n}\n"]}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * {@include ../README.md}
3
+ * @packageDocumentation
4
+ */
5
+ export { createRagSlice, useStoreWithRag, type RagSliceState, type EmbeddingResult, type EmbeddingDatabase, type EmbeddingProvider, type DatabaseMetadata, type QueryOptions, } from './RagSlice';
6
+ export { createRagTool, RagToolParameters, type RagToolLlmResult, type RagToolAdditionalData, type RagToolContext, } from './createRagTool';
7
+ export { createAiEmbeddingProvider, type AiProvider, type AiProviderFactory, } from './createAiEmbeddingProvider';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EACzB,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,6BAA6B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * {@include ../README.md}
3
+ * @packageDocumentation
4
+ */
5
+ export { createRagSlice, useStoreWithRag, } from './RagSlice';
6
+ export { createRagTool, RagToolParameters, } from './createRagTool';
7
+ export { createAiEmbeddingProvider, } from './createAiEmbeddingProvider';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,cAAc,EACd,eAAe,GAOhB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,iBAAiB,GAIlB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,GAG1B,MAAM,6BAA6B,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\nexport {\n createRagSlice,\n useStoreWithRag,\n type RagSliceState,\n type EmbeddingResult,\n type EmbeddingDatabase,\n type EmbeddingProvider,\n type DatabaseMetadata,\n type QueryOptions,\n} from './RagSlice';\nexport {\n createRagTool,\n RagToolParameters,\n type RagToolLlmResult,\n type RagToolAdditionalData,\n type RagToolContext,\n} from './createRagTool';\nexport {\n createAiEmbeddingProvider,\n type AiProvider,\n type AiProviderFactory,\n} from './createAiEmbeddingProvider';\n"]}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@sqlrooms/ai-rag",
3
+ "version": "0.26.1-rc.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "module": "dist/index.js",
7
+ "type": "module",
8
+ "author": "Ilya Boyandin <ilya@boyandin.me>",
9
+ "license": "MIT",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/sqlrooms/sqlrooms.git"
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "dependencies": {
21
+ "@openassistant/utils": "1.0.0-alpha.0",
22
+ "@sqlrooms/ai-core": "0.26.1-rc.0",
23
+ "@sqlrooms/duckdb": "0.26.1-rc.0",
24
+ "@sqlrooms/room-store": "0.26.1-rc.0",
25
+ "@sqlrooms/ui": "0.26.1-rc.0",
26
+ "ai": "^5.0.44",
27
+ "zod": "^4.1.8"
28
+ },
29
+ "peerDependencies": {
30
+ "apache-arrow": "17.0.0",
31
+ "react": ">=18",
32
+ "react-dom": ">=18"
33
+ },
34
+ "scripts": {
35
+ "dev": "tsc -w",
36
+ "build": "tsc",
37
+ "lint": "eslint .",
38
+ "typecheck": "tsc --noEmit",
39
+ "typedoc": "typedoc"
40
+ },
41
+ "gitHead": "89c252c460ccd29d108cfabf7b34c4a679f85609"
42
+ }