db-mcp 1.0.1
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.
- package/LICENSE +21 -0
- package/README.md +860 -0
- package/dist/adapters/DatabaseAdapter.d.ts +141 -0
- package/dist/adapters/DatabaseAdapter.d.ts.map +1 -0
- package/dist/adapters/DatabaseAdapter.js +131 -0
- package/dist/adapters/DatabaseAdapter.js.map +1 -0
- package/dist/adapters/sqlite/SchemaManager.d.ts +58 -0
- package/dist/adapters/sqlite/SchemaManager.d.ts.map +1 -0
- package/dist/adapters/sqlite/SchemaManager.js +187 -0
- package/dist/adapters/sqlite/SchemaManager.js.map +1 -0
- package/dist/adapters/sqlite/SqliteAdapter.d.ts +161 -0
- package/dist/adapters/sqlite/SqliteAdapter.d.ts.map +1 -0
- package/dist/adapters/sqlite/SqliteAdapter.js +741 -0
- package/dist/adapters/sqlite/SqliteAdapter.js.map +1 -0
- package/dist/adapters/sqlite/index.d.ts +9 -0
- package/dist/adapters/sqlite/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/index.js +8 -0
- package/dist/adapters/sqlite/index.js.map +1 -0
- package/dist/adapters/sqlite/json-utils.d.ts +100 -0
- package/dist/adapters/sqlite/json-utils.d.ts.map +1 -0
- package/dist/adapters/sqlite/json-utils.js +274 -0
- package/dist/adapters/sqlite/json-utils.js.map +1 -0
- package/dist/adapters/sqlite/output-schemas.d.ts +1187 -0
- package/dist/adapters/sqlite/output-schemas.d.ts.map +1 -0
- package/dist/adapters/sqlite/output-schemas.js +1337 -0
- package/dist/adapters/sqlite/output-schemas.js.map +1 -0
- package/dist/adapters/sqlite/prompts.d.ts +13 -0
- package/dist/adapters/sqlite/prompts.d.ts.map +1 -0
- package/dist/adapters/sqlite/prompts.js +605 -0
- package/dist/adapters/sqlite/prompts.js.map +1 -0
- package/dist/adapters/sqlite/resources.d.ts +13 -0
- package/dist/adapters/sqlite/resources.d.ts.map +1 -0
- package/dist/adapters/sqlite/resources.js +251 -0
- package/dist/adapters/sqlite/resources.js.map +1 -0
- package/dist/adapters/sqlite/tools/admin.d.ts +14 -0
- package/dist/adapters/sqlite/tools/admin.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/admin.js +788 -0
- package/dist/adapters/sqlite/tools/admin.js.map +1 -0
- package/dist/adapters/sqlite/tools/core.d.ts +25 -0
- package/dist/adapters/sqlite/tools/core.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/core.js +359 -0
- package/dist/adapters/sqlite/tools/core.js.map +1 -0
- package/dist/adapters/sqlite/tools/fts.d.ts +13 -0
- package/dist/adapters/sqlite/tools/fts.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/fts.js +347 -0
- package/dist/adapters/sqlite/tools/fts.js.map +1 -0
- package/dist/adapters/sqlite/tools/geo.d.ts +14 -0
- package/dist/adapters/sqlite/tools/geo.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/geo.js +252 -0
- package/dist/adapters/sqlite/tools/geo.js.map +1 -0
- package/dist/adapters/sqlite/tools/index.d.ts +30 -0
- package/dist/adapters/sqlite/tools/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/index.js +61 -0
- package/dist/adapters/sqlite/tools/index.js.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers.d.ts +14 -0
- package/dist/adapters/sqlite/tools/json-helpers.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-helpers.js +477 -0
- package/dist/adapters/sqlite/tools/json-helpers.js.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations.d.ts +14 -0
- package/dist/adapters/sqlite/tools/json-operations.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/json-operations.js +839 -0
- package/dist/adapters/sqlite/tools/json-operations.js.map +1 -0
- package/dist/adapters/sqlite/tools/stats.d.ts +15 -0
- package/dist/adapters/sqlite/tools/stats.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/stats.js +1219 -0
- package/dist/adapters/sqlite/tools/stats.js.map +1 -0
- package/dist/adapters/sqlite/tools/text.d.ts +14 -0
- package/dist/adapters/sqlite/tools/text.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/text.js +1141 -0
- package/dist/adapters/sqlite/tools/text.js.map +1 -0
- package/dist/adapters/sqlite/tools/vector.d.ts +14 -0
- package/dist/adapters/sqlite/tools/vector.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/vector.js +613 -0
- package/dist/adapters/sqlite/tools/vector.js.map +1 -0
- package/dist/adapters/sqlite/tools/virtual.d.ts +13 -0
- package/dist/adapters/sqlite/tools/virtual.d.ts.map +1 -0
- package/dist/adapters/sqlite/tools/virtual.js +930 -0
- package/dist/adapters/sqlite/tools/virtual.js.map +1 -0
- package/dist/adapters/sqlite/types.d.ts +207 -0
- package/dist/adapters/sqlite/types.d.ts.map +1 -0
- package/dist/adapters/sqlite/types.js +186 -0
- package/dist/adapters/sqlite/types.js.map +1 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts +163 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js +748 -0
- package/dist/adapters/sqlite-native/NativeSqliteAdapter.js.map +1 -0
- package/dist/adapters/sqlite-native/index.d.ts +11 -0
- package/dist/adapters/sqlite-native/index.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/index.js +11 -0
- package/dist/adapters/sqlite-native/index.js.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts +19 -0
- package/dist/adapters/sqlite-native/tools/spatialite.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/spatialite.js +628 -0
- package/dist/adapters/sqlite-native/tools/spatialite.js.map +1 -0
- package/dist/adapters/sqlite-native/tools/transactions.d.ts +12 -0
- package/dist/adapters/sqlite-native/tools/transactions.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/transactions.js +255 -0
- package/dist/adapters/sqlite-native/tools/transactions.js.map +1 -0
- package/dist/adapters/sqlite-native/tools/window.d.ts +12 -0
- package/dist/adapters/sqlite-native/tools/window.d.ts.map +1 -0
- package/dist/adapters/sqlite-native/tools/window.js +370 -0
- package/dist/adapters/sqlite-native/tools/window.js.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts +90 -0
- package/dist/auth/AuthorizationServerDiscovery.d.ts.map +1 -0
- package/dist/auth/AuthorizationServerDiscovery.js +204 -0
- package/dist/auth/AuthorizationServerDiscovery.js.map +1 -0
- package/dist/auth/OAuthResourceServer.d.ts +65 -0
- package/dist/auth/OAuthResourceServer.d.ts.map +1 -0
- package/dist/auth/OAuthResourceServer.js +121 -0
- package/dist/auth/OAuthResourceServer.js.map +1 -0
- package/dist/auth/TokenValidator.d.ts +60 -0
- package/dist/auth/TokenValidator.d.ts.map +1 -0
- package/dist/auth/TokenValidator.js +235 -0
- package/dist/auth/TokenValidator.js.map +1 -0
- package/dist/auth/errors.d.ts +74 -0
- package/dist/auth/errors.d.ts.map +1 -0
- package/dist/auth/errors.js +133 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/index.d.ts +13 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +15 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/middleware.d.ts +81 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +291 -0
- package/dist/auth/middleware.js.map +1 -0
- package/dist/auth/scopes.d.ts +136 -0
- package/dist/auth/scopes.d.ts.map +1 -0
- package/dist/auth/scopes.js +349 -0
- package/dist/auth/scopes.js.map +1 -0
- package/dist/auth/types.d.ts +257 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +236 -0
- package/dist/cli.js.map +1 -0
- package/dist/constants/ServerInstructions.d.ts +45 -0
- package/dist/constants/ServerInstructions.d.ts.map +1 -0
- package/dist/constants/ServerInstructions.js +356 -0
- package/dist/constants/ServerInstructions.js.map +1 -0
- package/dist/filtering/ToolConstants.d.ts +34 -0
- package/dist/filtering/ToolConstants.d.ts.map +1 -0
- package/dist/filtering/ToolConstants.js +174 -0
- package/dist/filtering/ToolConstants.js.map +1 -0
- package/dist/filtering/ToolFilter.d.ts +82 -0
- package/dist/filtering/ToolFilter.d.ts.map +1 -0
- package/dist/filtering/ToolFilter.js +296 -0
- package/dist/filtering/ToolFilter.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/server/McpServer.d.ts +61 -0
- package/dist/server/McpServer.d.ts.map +1 -0
- package/dist/server/McpServer.js +270 -0
- package/dist/server/McpServer.js.map +1 -0
- package/dist/transports/http.d.ts +134 -0
- package/dist/transports/http.d.ts.map +1 -0
- package/dist/transports/http.js +516 -0
- package/dist/transports/http.js.map +1 -0
- package/dist/transports/index.d.ts +5 -0
- package/dist/transports/index.d.ts.map +1 -0
- package/dist/transports/index.js +5 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/types/index.d.ts +380 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +68 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/annotations.d.ts +44 -0
- package/dist/utils/annotations.d.ts.map +1 -0
- package/dist/utils/annotations.js +77 -0
- package/dist/utils/annotations.js.map +1 -0
- package/dist/utils/errors.d.ts +155 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +329 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/identifiers.d.ts +121 -0
- package/dist/utils/identifiers.d.ts.map +1 -0
- package/dist/utils/identifiers.js +319 -0
- package/dist/utils/identifiers.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/insightsManager.d.ts +39 -0
- package/dist/utils/insightsManager.d.ts.map +1 -0
- package/dist/utils/insightsManager.js +63 -0
- package/dist/utils/insightsManager.js.map +1 -0
- package/dist/utils/logger.d.ts +189 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +394 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/progress-utils.d.ts +54 -0
- package/dist/utils/progress-utils.d.ts.map +1 -0
- package/dist/utils/progress-utils.js +74 -0
- package/dist/utils/progress-utils.js.map +1 -0
- package/dist/utils/resourceAnnotations.d.ts +36 -0
- package/dist/utils/resourceAnnotations.d.ts.map +1 -0
- package/dist/utils/resourceAnnotations.js +57 -0
- package/dist/utils/resourceAnnotations.js.map +1 -0
- package/dist/utils/where-clause.d.ts +41 -0
- package/dist/utils/where-clause.d.ts.map +1 -0
- package/dist/utils/where-clause.js +116 -0
- package/dist/utils/where-clause.js.map +1 -0
- package/package.json +83 -0
- package/server.json +53 -0
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Vector Search Tools
|
|
3
|
+
*
|
|
4
|
+
* Vector similarity search and embedding operations.
|
|
5
|
+
* Uses JSON arrays for vector storage (no external extensions needed).
|
|
6
|
+
* 11 tools total.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { readOnly, write, idempotent, destructive, } from "../../../utils/annotations.js";
|
|
10
|
+
import { validateWhereClause, sanitizeIdentifier, } from "../../../utils/index.js";
|
|
11
|
+
import { CreateTableOutputSchema, VectorStoreOutputSchema, VectorBatchStoreOutputSchema, VectorGetOutputSchema, VectorSearchOutputSchema, VectorDeleteOutputSchema, VectorCountOutputSchema, VectorStatsOutputSchema, VectorDimensionsOutputSchema, VectorNormalizeOutputSchema, VectorDistanceOutputSchema, } from "../output-schemas.js";
|
|
12
|
+
// Vector schemas
|
|
13
|
+
const VectorStoreSchema = z.object({
|
|
14
|
+
table: z.string().describe("Table name"),
|
|
15
|
+
idColumn: z.string().describe("ID column name"),
|
|
16
|
+
vectorColumn: z.string().describe("Column to store vector (as JSON)"),
|
|
17
|
+
id: z.union([z.string(), z.number()]).describe("Row identifier"),
|
|
18
|
+
vector: z.array(z.number()).describe("Vector as array of numbers"),
|
|
19
|
+
});
|
|
20
|
+
const VectorSearchSchema = z.object({
|
|
21
|
+
table: z.string().describe("Table name"),
|
|
22
|
+
vectorColumn: z.string().describe("Vector column name"),
|
|
23
|
+
queryVector: z.array(z.number()).describe("Query vector"),
|
|
24
|
+
metric: z.enum(["cosine", "euclidean", "dot"]).optional().default("cosine"),
|
|
25
|
+
limit: z.number().optional().default(10),
|
|
26
|
+
whereClause: z.string().optional(),
|
|
27
|
+
returnColumns: z.array(z.string()).optional().describe("Columns to return"),
|
|
28
|
+
});
|
|
29
|
+
const VectorCreateTableSchema = z.object({
|
|
30
|
+
tableName: z.string().describe("Table name"),
|
|
31
|
+
dimensions: z.number().describe("Vector dimensions"),
|
|
32
|
+
additionalColumns: z
|
|
33
|
+
.array(z.object({
|
|
34
|
+
name: z.string(),
|
|
35
|
+
type: z.string(),
|
|
36
|
+
}))
|
|
37
|
+
.optional(),
|
|
38
|
+
});
|
|
39
|
+
const VectorNormalizeSchema = z.object({
|
|
40
|
+
vector: z.array(z.number()).describe("Vector to normalize"),
|
|
41
|
+
});
|
|
42
|
+
const VectorDistanceSchema = z.object({
|
|
43
|
+
vector1: z.array(z.number()).describe("First vector"),
|
|
44
|
+
vector2: z.array(z.number()).describe("Second vector"),
|
|
45
|
+
metric: z.enum(["cosine", "euclidean", "dot"]).optional().default("cosine"),
|
|
46
|
+
});
|
|
47
|
+
const VectorBatchStoreSchema = z.object({
|
|
48
|
+
table: z.string().describe("Table name"),
|
|
49
|
+
idColumn: z.string().describe("ID column name"),
|
|
50
|
+
vectorColumn: z.string().describe("Vector column name"),
|
|
51
|
+
items: z
|
|
52
|
+
.array(z.object({
|
|
53
|
+
id: z.union([z.string(), z.number()]),
|
|
54
|
+
vector: z.array(z.number()),
|
|
55
|
+
}))
|
|
56
|
+
.describe("Items to store"),
|
|
57
|
+
});
|
|
58
|
+
const VectorDeleteSchema = z.object({
|
|
59
|
+
table: z.string().describe("Table name"),
|
|
60
|
+
idColumn: z.string().describe("ID column name"),
|
|
61
|
+
ids: z.array(z.union([z.string(), z.number()])).describe("IDs to delete"),
|
|
62
|
+
});
|
|
63
|
+
const VectorGetSchema = z.object({
|
|
64
|
+
table: z.string().describe("Table name"),
|
|
65
|
+
idColumn: z.string().describe("ID column name"),
|
|
66
|
+
vectorColumn: z.string().describe("Vector column name"),
|
|
67
|
+
id: z.union([z.string(), z.number()]).describe("Row identifier"),
|
|
68
|
+
});
|
|
69
|
+
const VectorCountSchema = z.object({
|
|
70
|
+
table: z.string().describe("Table name"),
|
|
71
|
+
dimensions: z.number().optional().describe("Filter by dimension count"),
|
|
72
|
+
});
|
|
73
|
+
const VectorStatsSchema = z.object({
|
|
74
|
+
table: z.string().describe("Table name"),
|
|
75
|
+
vectorColumn: z.string().describe("Vector column name"),
|
|
76
|
+
sampleSize: z.number().optional().default(100),
|
|
77
|
+
});
|
|
78
|
+
const VectorDimensionsSchema = z.object({
|
|
79
|
+
table: z.string().describe("Table name"),
|
|
80
|
+
vectorColumn: z.string().describe("Vector column name"),
|
|
81
|
+
});
|
|
82
|
+
/**
|
|
83
|
+
* Get all vector tools
|
|
84
|
+
*/
|
|
85
|
+
export function getVectorTools(adapter) {
|
|
86
|
+
return [
|
|
87
|
+
createVectorCreateTableTool(adapter),
|
|
88
|
+
createVectorStoreTool(adapter),
|
|
89
|
+
createVectorBatchStoreTool(adapter),
|
|
90
|
+
createVectorSearchTool(adapter),
|
|
91
|
+
createVectorGetTool(adapter),
|
|
92
|
+
createVectorDeleteTool(adapter),
|
|
93
|
+
createVectorCountTool(adapter),
|
|
94
|
+
createVectorStatsTool(adapter),
|
|
95
|
+
createVectorDimensionsTool(adapter),
|
|
96
|
+
createVectorNormalizeTool(),
|
|
97
|
+
createVectorDistanceTool(),
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
// Helper functions for vector operations
|
|
101
|
+
function cosineSimilarity(a, b) {
|
|
102
|
+
if (a.length !== b.length)
|
|
103
|
+
throw new Error("Vector dimensions must match");
|
|
104
|
+
let dotProd = 0;
|
|
105
|
+
let normA = 0;
|
|
106
|
+
let normB = 0;
|
|
107
|
+
for (let i = 0; i < a.length; i++) {
|
|
108
|
+
const aVal = a[i] ?? 0;
|
|
109
|
+
const bVal = b[i] ?? 0;
|
|
110
|
+
dotProd += aVal * bVal;
|
|
111
|
+
normA += aVal * aVal;
|
|
112
|
+
normB += bVal * bVal;
|
|
113
|
+
}
|
|
114
|
+
const magnitude = Math.sqrt(normA) * Math.sqrt(normB);
|
|
115
|
+
return magnitude === 0 ? 0 : dotProd / magnitude;
|
|
116
|
+
}
|
|
117
|
+
function euclideanDistance(a, b) {
|
|
118
|
+
if (a.length !== b.length)
|
|
119
|
+
throw new Error("Vector dimensions must match");
|
|
120
|
+
let sum = 0;
|
|
121
|
+
for (let i = 0; i < a.length; i++) {
|
|
122
|
+
const aVal = a[i] ?? 0;
|
|
123
|
+
const bVal = b[i] ?? 0;
|
|
124
|
+
const diff = aVal - bVal;
|
|
125
|
+
sum += diff * diff;
|
|
126
|
+
}
|
|
127
|
+
return Math.sqrt(sum);
|
|
128
|
+
}
|
|
129
|
+
function dotProduct(a, b) {
|
|
130
|
+
if (a.length !== b.length)
|
|
131
|
+
throw new Error("Vector dimensions must match");
|
|
132
|
+
let sum = 0;
|
|
133
|
+
for (let i = 0; i < a.length; i++) {
|
|
134
|
+
sum += (a[i] ?? 0) * (b[i] ?? 0);
|
|
135
|
+
}
|
|
136
|
+
return sum;
|
|
137
|
+
}
|
|
138
|
+
function normalizeVector(v) {
|
|
139
|
+
const norm = Math.sqrt(v.reduce((sum, x) => sum + x * x, 0));
|
|
140
|
+
if (norm === 0)
|
|
141
|
+
return v;
|
|
142
|
+
return v.map((x) => x / norm);
|
|
143
|
+
}
|
|
144
|
+
function parseVector(value) {
|
|
145
|
+
if (Array.isArray(value)) {
|
|
146
|
+
return value.map(Number);
|
|
147
|
+
}
|
|
148
|
+
if (typeof value === "string") {
|
|
149
|
+
try {
|
|
150
|
+
const parsed = JSON.parse(value);
|
|
151
|
+
if (Array.isArray(parsed)) {
|
|
152
|
+
return parsed.map(Number);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
// Not valid JSON
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
throw new Error("Invalid vector format");
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Create a table for vector storage
|
|
163
|
+
*/
|
|
164
|
+
function createVectorCreateTableTool(adapter) {
|
|
165
|
+
return {
|
|
166
|
+
name: "sqlite_vector_create_table",
|
|
167
|
+
description: "Create a table optimized for vector storage with JSON vector column.",
|
|
168
|
+
group: "vector",
|
|
169
|
+
inputSchema: VectorCreateTableSchema,
|
|
170
|
+
outputSchema: CreateTableOutputSchema,
|
|
171
|
+
requiredScopes: ["write"],
|
|
172
|
+
annotations: idempotent("Create Vector Table"),
|
|
173
|
+
handler: async (params, _context) => {
|
|
174
|
+
const input = VectorCreateTableSchema.parse(params);
|
|
175
|
+
// Validate and quote table name
|
|
176
|
+
const tableName = sanitizeIdentifier(input.tableName);
|
|
177
|
+
const columns = [
|
|
178
|
+
"id INTEGER PRIMARY KEY",
|
|
179
|
+
"vector TEXT NOT NULL", // JSON array
|
|
180
|
+
`dimensions INTEGER DEFAULT ${input.dimensions}`,
|
|
181
|
+
];
|
|
182
|
+
if (input.additionalColumns) {
|
|
183
|
+
for (const col of input.additionalColumns) {
|
|
184
|
+
const colName = sanitizeIdentifier(col.name);
|
|
185
|
+
columns.push(`${colName} ${col.type}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const sql = `CREATE TABLE IF NOT EXISTS ${tableName} (${columns.join(", ")})`;
|
|
189
|
+
await adapter.executeQuery(sql);
|
|
190
|
+
return {
|
|
191
|
+
success: true,
|
|
192
|
+
message: `Vector table '${input.tableName}' created with ${input.dimensions} dimensions`,
|
|
193
|
+
sql,
|
|
194
|
+
};
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Store a vector
|
|
200
|
+
*/
|
|
201
|
+
function createVectorStoreTool(adapter) {
|
|
202
|
+
return {
|
|
203
|
+
name: "sqlite_vector_store",
|
|
204
|
+
description: "Store or update a vector in the database.",
|
|
205
|
+
group: "vector",
|
|
206
|
+
inputSchema: VectorStoreSchema,
|
|
207
|
+
outputSchema: VectorStoreOutputSchema,
|
|
208
|
+
requiredScopes: ["write"],
|
|
209
|
+
annotations: write("Store Vector"),
|
|
210
|
+
handler: async (params, _context) => {
|
|
211
|
+
const input = VectorStoreSchema.parse(params);
|
|
212
|
+
// Validate and quote identifiers
|
|
213
|
+
const table = sanitizeIdentifier(input.table);
|
|
214
|
+
const idColumn = sanitizeIdentifier(input.idColumn);
|
|
215
|
+
const vectorColumn = sanitizeIdentifier(input.vectorColumn);
|
|
216
|
+
const vectorJson = JSON.stringify(input.vector);
|
|
217
|
+
const idValue = typeof input.id === "string" ? `'${input.id}'` : input.id;
|
|
218
|
+
// Try update first, then insert
|
|
219
|
+
const updateSql = `UPDATE ${table} SET ${vectorColumn} = '${vectorJson}' WHERE ${idColumn} = ${idValue}`;
|
|
220
|
+
const updateResult = await adapter.executeWriteQuery(updateSql);
|
|
221
|
+
if (updateResult.rowsAffected === 0) {
|
|
222
|
+
const insertSql = `INSERT INTO ${table} (${idColumn}, ${vectorColumn}) VALUES (${idValue}, '${vectorJson}')`;
|
|
223
|
+
await adapter.executeWriteQuery(insertSql);
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
success: true,
|
|
227
|
+
id: input.id,
|
|
228
|
+
dimensions: input.vector.length,
|
|
229
|
+
};
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Batch store vectors
|
|
235
|
+
*/
|
|
236
|
+
function createVectorBatchStoreTool(adapter) {
|
|
237
|
+
return {
|
|
238
|
+
name: "sqlite_vector_batch_store",
|
|
239
|
+
description: "Store multiple vectors in a batch operation.",
|
|
240
|
+
group: "vector",
|
|
241
|
+
inputSchema: VectorBatchStoreSchema,
|
|
242
|
+
outputSchema: VectorBatchStoreOutputSchema,
|
|
243
|
+
requiredScopes: ["write"],
|
|
244
|
+
annotations: write("Batch Store Vectors"),
|
|
245
|
+
handler: async (params, _context) => {
|
|
246
|
+
const input = VectorBatchStoreSchema.parse(params);
|
|
247
|
+
// Validate and quote identifiers
|
|
248
|
+
const table = sanitizeIdentifier(input.table);
|
|
249
|
+
const idColumn = sanitizeIdentifier(input.idColumn);
|
|
250
|
+
const vectorColumn = sanitizeIdentifier(input.vectorColumn);
|
|
251
|
+
let stored = 0;
|
|
252
|
+
for (const item of input.items) {
|
|
253
|
+
const vectorJson = JSON.stringify(item.vector);
|
|
254
|
+
const idValue = typeof item.id === "string" ? `'${item.id}'` : item.id;
|
|
255
|
+
const sql = `INSERT OR REPLACE INTO ${table} (${idColumn}, ${vectorColumn}) VALUES (${idValue}, '${vectorJson}')`;
|
|
256
|
+
await adapter.executeWriteQuery(sql);
|
|
257
|
+
stored++;
|
|
258
|
+
}
|
|
259
|
+
return {
|
|
260
|
+
success: true,
|
|
261
|
+
stored,
|
|
262
|
+
dimensions: input.items[0]?.vector.length,
|
|
263
|
+
};
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Vector similarity search
|
|
269
|
+
*/
|
|
270
|
+
function createVectorSearchTool(adapter) {
|
|
271
|
+
return {
|
|
272
|
+
name: "sqlite_vector_search",
|
|
273
|
+
description: "Find similar vectors using cosine, euclidean, or dot product similarity.",
|
|
274
|
+
group: "vector",
|
|
275
|
+
inputSchema: VectorSearchSchema,
|
|
276
|
+
outputSchema: VectorSearchOutputSchema,
|
|
277
|
+
requiredScopes: ["read"],
|
|
278
|
+
annotations: readOnly("Vector Search"),
|
|
279
|
+
handler: async (params, _context) => {
|
|
280
|
+
const input = VectorSearchSchema.parse(params);
|
|
281
|
+
// Validate and quote identifiers
|
|
282
|
+
const table = sanitizeIdentifier(input.table);
|
|
283
|
+
const vectorColumn = sanitizeIdentifier(input.vectorColumn);
|
|
284
|
+
// Build select clause
|
|
285
|
+
// Determine if vector column should be included in final results
|
|
286
|
+
const includeVectorInResults = !input.returnColumns ||
|
|
287
|
+
input.returnColumns.length === 0 ||
|
|
288
|
+
input.returnColumns.includes(input.vectorColumn);
|
|
289
|
+
let selectCols = "*";
|
|
290
|
+
if (input.returnColumns && input.returnColumns.length > 0) {
|
|
291
|
+
const quotedCols = input.returnColumns.map((c) => sanitizeIdentifier(c));
|
|
292
|
+
selectCols = quotedCols.join(", ");
|
|
293
|
+
}
|
|
294
|
+
// Always fetch vector column for similarity calculation, but may remove from results
|
|
295
|
+
let sql = `SELECT ${selectCols}, ${vectorColumn} FROM ${table}`;
|
|
296
|
+
if (input.whereClause) {
|
|
297
|
+
validateWhereClause(input.whereClause);
|
|
298
|
+
sql += ` WHERE ${input.whereClause}`;
|
|
299
|
+
}
|
|
300
|
+
const result = await adapter.executeReadQuery(sql);
|
|
301
|
+
// Calculate similarities in JavaScript
|
|
302
|
+
const queryVector = input.queryVector;
|
|
303
|
+
const scored = (result.rows ?? [])
|
|
304
|
+
.map((row) => {
|
|
305
|
+
try {
|
|
306
|
+
const storedVector = parseVector(row[input.vectorColumn]);
|
|
307
|
+
let score;
|
|
308
|
+
switch (input.metric) {
|
|
309
|
+
case "euclidean":
|
|
310
|
+
// Invert so lower distance = higher score
|
|
311
|
+
score = 1 / (1 + euclideanDistance(queryVector, storedVector));
|
|
312
|
+
break;
|
|
313
|
+
case "dot":
|
|
314
|
+
score = dotProduct(queryVector, storedVector);
|
|
315
|
+
break;
|
|
316
|
+
case "cosine":
|
|
317
|
+
default:
|
|
318
|
+
score = cosineSimilarity(queryVector, storedVector);
|
|
319
|
+
}
|
|
320
|
+
return { ...row, _similarity: Math.round(score * 10000) / 10000 };
|
|
321
|
+
}
|
|
322
|
+
catch {
|
|
323
|
+
return { ...row, _similarity: -1 };
|
|
324
|
+
}
|
|
325
|
+
})
|
|
326
|
+
.filter((r) => r._similarity >= 0);
|
|
327
|
+
// Sort by similarity (descending) and limit
|
|
328
|
+
scored.sort((a, b) => b._similarity - a._similarity);
|
|
329
|
+
const limited = scored.slice(0, input.limit);
|
|
330
|
+
// Apply returnColumns filtering (payload optimization)
|
|
331
|
+
// If returnColumns specified, only include those columns plus _similarity
|
|
332
|
+
const results = limited.map((row) => {
|
|
333
|
+
// Cast row for proper indexing since it's a spread of result row + _similarity
|
|
334
|
+
const rowData = row;
|
|
335
|
+
if (input.returnColumns && input.returnColumns.length > 0) {
|
|
336
|
+
// Build filtered result with only requested columns
|
|
337
|
+
const filtered = {};
|
|
338
|
+
for (const col of input.returnColumns) {
|
|
339
|
+
if (col in rowData) {
|
|
340
|
+
filtered[col] = rowData[col];
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
filtered["_similarity"] = row._similarity;
|
|
344
|
+
return filtered;
|
|
345
|
+
}
|
|
346
|
+
// No returnColumns specified: include all except vector column (for cleaner output)
|
|
347
|
+
if (!includeVectorInResults) {
|
|
348
|
+
return Object.fromEntries(Object.entries(rowData).filter(([key]) => key !== input.vectorColumn));
|
|
349
|
+
}
|
|
350
|
+
return row;
|
|
351
|
+
});
|
|
352
|
+
return {
|
|
353
|
+
success: true,
|
|
354
|
+
metric: input.metric,
|
|
355
|
+
count: results.length,
|
|
356
|
+
results,
|
|
357
|
+
};
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get a vector by ID
|
|
363
|
+
*/
|
|
364
|
+
function createVectorGetTool(adapter) {
|
|
365
|
+
return {
|
|
366
|
+
name: "sqlite_vector_get",
|
|
367
|
+
description: "Retrieve a vector by its ID.",
|
|
368
|
+
group: "vector",
|
|
369
|
+
inputSchema: VectorGetSchema,
|
|
370
|
+
outputSchema: VectorGetOutputSchema,
|
|
371
|
+
requiredScopes: ["read"],
|
|
372
|
+
annotations: readOnly("Get Vector"),
|
|
373
|
+
handler: async (params, _context) => {
|
|
374
|
+
const input = VectorGetSchema.parse(params);
|
|
375
|
+
// Validate and quote identifiers
|
|
376
|
+
const table = sanitizeIdentifier(input.table);
|
|
377
|
+
const idColumn = sanitizeIdentifier(input.idColumn);
|
|
378
|
+
// Keep vectorColumn raw for JS object access, but validate
|
|
379
|
+
sanitizeIdentifier(input.vectorColumn);
|
|
380
|
+
const idValue = typeof input.id === "string" ? `'${input.id}'` : input.id;
|
|
381
|
+
const sql = `SELECT * FROM ${table} WHERE ${idColumn} = ${idValue}`;
|
|
382
|
+
const result = await adapter.executeReadQuery(sql);
|
|
383
|
+
if (!result.rows || result.rows.length === 0) {
|
|
384
|
+
return { success: false, error: "Vector not found" };
|
|
385
|
+
}
|
|
386
|
+
const row = result.rows[0];
|
|
387
|
+
if (!row) {
|
|
388
|
+
return { success: false, error: "Vector not found" };
|
|
389
|
+
}
|
|
390
|
+
const vectorData = parseVector(row[input.vectorColumn]);
|
|
391
|
+
return {
|
|
392
|
+
success: true,
|
|
393
|
+
id: input.id,
|
|
394
|
+
dimensions: vectorData.length,
|
|
395
|
+
vector: vectorData,
|
|
396
|
+
metadata: row,
|
|
397
|
+
};
|
|
398
|
+
},
|
|
399
|
+
};
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Delete vectors by ID
|
|
403
|
+
*/
|
|
404
|
+
function createVectorDeleteTool(adapter) {
|
|
405
|
+
return {
|
|
406
|
+
name: "sqlite_vector_delete",
|
|
407
|
+
description: "Delete vectors by their IDs.",
|
|
408
|
+
group: "vector",
|
|
409
|
+
inputSchema: VectorDeleteSchema,
|
|
410
|
+
outputSchema: VectorDeleteOutputSchema,
|
|
411
|
+
requiredScopes: ["write"],
|
|
412
|
+
annotations: destructive("Delete Vectors"),
|
|
413
|
+
handler: async (params, _context) => {
|
|
414
|
+
const input = VectorDeleteSchema.parse(params);
|
|
415
|
+
// Validate and quote identifiers
|
|
416
|
+
const table = sanitizeIdentifier(input.table);
|
|
417
|
+
const idColumn = sanitizeIdentifier(input.idColumn);
|
|
418
|
+
const idValues = input.ids
|
|
419
|
+
.map((id) => (typeof id === "string" ? `'${id}'` : String(id)))
|
|
420
|
+
.join(", ");
|
|
421
|
+
const sql = `DELETE FROM ${table} WHERE ${idColumn} IN (${idValues})`;
|
|
422
|
+
const result = await adapter.executeWriteQuery(sql);
|
|
423
|
+
return {
|
|
424
|
+
success: true,
|
|
425
|
+
deleted: result.rowsAffected,
|
|
426
|
+
};
|
|
427
|
+
},
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Count vectors
|
|
432
|
+
*/
|
|
433
|
+
function createVectorCountTool(adapter) {
|
|
434
|
+
return {
|
|
435
|
+
name: "sqlite_vector_count",
|
|
436
|
+
description: "Count vectors in a table.",
|
|
437
|
+
group: "vector",
|
|
438
|
+
inputSchema: VectorCountSchema,
|
|
439
|
+
outputSchema: VectorCountOutputSchema,
|
|
440
|
+
requiredScopes: ["read"],
|
|
441
|
+
annotations: readOnly("Count Vectors"),
|
|
442
|
+
handler: async (params, _context) => {
|
|
443
|
+
const input = VectorCountSchema.parse(params);
|
|
444
|
+
// Validate and quote table name
|
|
445
|
+
const table = sanitizeIdentifier(input.table);
|
|
446
|
+
const sql = `SELECT COUNT(*) as count FROM ${table}`;
|
|
447
|
+
const result = await adapter.executeReadQuery(sql);
|
|
448
|
+
return {
|
|
449
|
+
success: true,
|
|
450
|
+
count: result.rows?.[0]?.["count"] ?? 0,
|
|
451
|
+
};
|
|
452
|
+
},
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Vector statistics
|
|
457
|
+
*/
|
|
458
|
+
function createVectorStatsTool(adapter) {
|
|
459
|
+
return {
|
|
460
|
+
name: "sqlite_vector_stats",
|
|
461
|
+
description: "Get statistics about vectors in a table.",
|
|
462
|
+
group: "vector",
|
|
463
|
+
inputSchema: VectorStatsSchema,
|
|
464
|
+
outputSchema: VectorStatsOutputSchema,
|
|
465
|
+
requiredScopes: ["read"],
|
|
466
|
+
annotations: readOnly("Vector Stats"),
|
|
467
|
+
handler: async (params, _context) => {
|
|
468
|
+
const input = VectorStatsSchema.parse(params);
|
|
469
|
+
// Validate and quote identifiers
|
|
470
|
+
const table = sanitizeIdentifier(input.table);
|
|
471
|
+
const vectorColumn = sanitizeIdentifier(input.vectorColumn);
|
|
472
|
+
// Get sample of vectors
|
|
473
|
+
const sql = `SELECT ${vectorColumn} FROM ${table} LIMIT ${input.sampleSize}`;
|
|
474
|
+
const result = await adapter.executeReadQuery(sql);
|
|
475
|
+
const vectors = (result.rows ?? [])
|
|
476
|
+
.map((row) => {
|
|
477
|
+
try {
|
|
478
|
+
return parseVector(row[input.vectorColumn]);
|
|
479
|
+
}
|
|
480
|
+
catch {
|
|
481
|
+
return null;
|
|
482
|
+
}
|
|
483
|
+
})
|
|
484
|
+
.filter((v) => v !== null);
|
|
485
|
+
if (vectors.length === 0) {
|
|
486
|
+
return {
|
|
487
|
+
success: true,
|
|
488
|
+
count: 0,
|
|
489
|
+
message: "No valid vectors found",
|
|
490
|
+
};
|
|
491
|
+
}
|
|
492
|
+
const firstVector = vectors[0];
|
|
493
|
+
if (!firstVector) {
|
|
494
|
+
return {
|
|
495
|
+
success: true,
|
|
496
|
+
count: 0,
|
|
497
|
+
message: "No valid vectors found",
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
const dimensions = firstVector.length;
|
|
501
|
+
const magnitudes = vectors.map((v) => Math.sqrt(v.reduce((s, x) => s + x * x, 0)));
|
|
502
|
+
return {
|
|
503
|
+
success: true,
|
|
504
|
+
sampleSize: vectors.length,
|
|
505
|
+
dimensions,
|
|
506
|
+
magnitudeStats: {
|
|
507
|
+
min: Math.min(...magnitudes),
|
|
508
|
+
max: Math.max(...magnitudes),
|
|
509
|
+
avg: magnitudes.reduce((s, m) => s + m, 0) / magnitudes.length,
|
|
510
|
+
},
|
|
511
|
+
};
|
|
512
|
+
},
|
|
513
|
+
};
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Get vector dimensions
|
|
517
|
+
*/
|
|
518
|
+
function createVectorDimensionsTool(adapter) {
|
|
519
|
+
return {
|
|
520
|
+
name: "sqlite_vector_dimensions",
|
|
521
|
+
description: "Get the dimensions of vectors in a table.",
|
|
522
|
+
group: "vector",
|
|
523
|
+
inputSchema: VectorDimensionsSchema,
|
|
524
|
+
outputSchema: VectorDimensionsOutputSchema,
|
|
525
|
+
requiredScopes: ["read"],
|
|
526
|
+
annotations: readOnly("Vector Dimensions"),
|
|
527
|
+
handler: async (params, _context) => {
|
|
528
|
+
const input = VectorDimensionsSchema.parse(params);
|
|
529
|
+
// Validate and quote identifiers
|
|
530
|
+
const table = sanitizeIdentifier(input.table);
|
|
531
|
+
const vectorColumn = sanitizeIdentifier(input.vectorColumn);
|
|
532
|
+
const sql = `SELECT ${vectorColumn} FROM ${table} LIMIT 1`;
|
|
533
|
+
const result = await adapter.executeReadQuery(sql);
|
|
534
|
+
if (!result.rows || result.rows.length === 0) {
|
|
535
|
+
return { success: true, dimensions: null, message: "No vectors found" };
|
|
536
|
+
}
|
|
537
|
+
const firstRow = result.rows[0];
|
|
538
|
+
if (!firstRow) {
|
|
539
|
+
return { success: true, dimensions: null, message: "No vectors found" };
|
|
540
|
+
}
|
|
541
|
+
const vector = parseVector(firstRow[input.vectorColumn]);
|
|
542
|
+
return {
|
|
543
|
+
success: true,
|
|
544
|
+
dimensions: vector.length,
|
|
545
|
+
};
|
|
546
|
+
},
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
/**
|
|
550
|
+
* Normalize a vector
|
|
551
|
+
*/
|
|
552
|
+
function createVectorNormalizeTool() {
|
|
553
|
+
return {
|
|
554
|
+
name: "sqlite_vector_normalize",
|
|
555
|
+
description: "Normalize a vector to unit length.",
|
|
556
|
+
group: "vector",
|
|
557
|
+
inputSchema: VectorNormalizeSchema,
|
|
558
|
+
outputSchema: VectorNormalizeOutputSchema,
|
|
559
|
+
requiredScopes: ["read"],
|
|
560
|
+
annotations: readOnly("Normalize Vector"),
|
|
561
|
+
handler: (params, _context) => {
|
|
562
|
+
const input = VectorNormalizeSchema.parse(params);
|
|
563
|
+
const normalized = normalizeVector(input.vector);
|
|
564
|
+
return Promise.resolve({
|
|
565
|
+
success: true,
|
|
566
|
+
original: input.vector,
|
|
567
|
+
normalized,
|
|
568
|
+
originalMagnitude: Math.sqrt(input.vector.reduce((s, x) => s + x * x, 0)),
|
|
569
|
+
});
|
|
570
|
+
},
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Calculate distance between two vectors
|
|
575
|
+
*/
|
|
576
|
+
function createVectorDistanceTool() {
|
|
577
|
+
return {
|
|
578
|
+
name: "sqlite_vector_distance",
|
|
579
|
+
description: "Calculate distance or similarity between two vectors.",
|
|
580
|
+
group: "vector",
|
|
581
|
+
inputSchema: VectorDistanceSchema,
|
|
582
|
+
outputSchema: VectorDistanceOutputSchema,
|
|
583
|
+
requiredScopes: ["read"],
|
|
584
|
+
annotations: readOnly("Vector Distance"),
|
|
585
|
+
handler: (params, _context) => {
|
|
586
|
+
const input = VectorDistanceSchema.parse(params);
|
|
587
|
+
if (input.vector1.length !== input.vector2.length) {
|
|
588
|
+
return Promise.resolve({
|
|
589
|
+
success: false,
|
|
590
|
+
error: "Vector dimensions must match",
|
|
591
|
+
});
|
|
592
|
+
}
|
|
593
|
+
let result;
|
|
594
|
+
switch (input.metric) {
|
|
595
|
+
case "euclidean":
|
|
596
|
+
result = euclideanDistance(input.vector1, input.vector2);
|
|
597
|
+
break;
|
|
598
|
+
case "dot":
|
|
599
|
+
result = dotProduct(input.vector1, input.vector2);
|
|
600
|
+
break;
|
|
601
|
+
case "cosine":
|
|
602
|
+
default:
|
|
603
|
+
result = cosineSimilarity(input.vector1, input.vector2);
|
|
604
|
+
}
|
|
605
|
+
return Promise.resolve({
|
|
606
|
+
success: true,
|
|
607
|
+
metric: input.metric,
|
|
608
|
+
value: Math.round(result * 10000) / 10000,
|
|
609
|
+
});
|
|
610
|
+
},
|
|
611
|
+
};
|
|
612
|
+
}
|
|
613
|
+
//# sourceMappingURL=vector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../../../src/adapters/sqlite/tools/vector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Virtual Table Tools
|
|
3
|
+
*
|
|
4
|
+
* Create and manage virtual tables for CSV, R-Tree, generation, etc.
|
|
5
|
+
* 13 tools total.
|
|
6
|
+
*/
|
|
7
|
+
import type { SqliteAdapter } from "../SqliteAdapter.js";
|
|
8
|
+
import type { ToolDefinition } from "../../../types/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Get all virtual table tools
|
|
11
|
+
*/
|
|
12
|
+
export declare function getVirtualTools(adapter: SqliteAdapter): ToolDefinition[];
|
|
13
|
+
//# sourceMappingURL=virtual.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual.d.ts","sourceRoot":"","sources":["../../../../src/adapters/sqlite/tools/virtual.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAuI9E;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,EAAE,CAiBxE"}
|