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,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Tools Index
|
|
3
|
+
*
|
|
4
|
+
* Aggregates and exports all tool definitions from category modules.
|
|
5
|
+
*/
|
|
6
|
+
import type { SqliteAdapter } from "../SqliteAdapter.js";
|
|
7
|
+
import type { ToolDefinition, ToolGroup } from "../../../types/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Get all tool definitions for the SQLite adapter
|
|
10
|
+
*/
|
|
11
|
+
export declare function getAllToolDefinitions(adapter: SqliteAdapter): ToolDefinition[];
|
|
12
|
+
/**
|
|
13
|
+
* Get tools filtered by group
|
|
14
|
+
*/
|
|
15
|
+
export declare function getToolsByGroup(adapter: SqliteAdapter, group: ToolGroup): ToolDefinition[];
|
|
16
|
+
/**
|
|
17
|
+
* Get tool count by group
|
|
18
|
+
*/
|
|
19
|
+
export declare function getToolCountByGroup(adapter: SqliteAdapter): Record<ToolGroup, number>;
|
|
20
|
+
export { getCoreTools } from "./core.js";
|
|
21
|
+
export { getJsonHelperTools } from "./json-helpers.js";
|
|
22
|
+
export { getJsonOperationTools } from "./json-operations.js";
|
|
23
|
+
export { getTextTools } from "./text.js";
|
|
24
|
+
export { getFtsTools } from "./fts.js";
|
|
25
|
+
export { getStatsTools } from "./stats.js";
|
|
26
|
+
export { getVirtualTools } from "./virtual.js";
|
|
27
|
+
export { getVectorTools } from "./vector.js";
|
|
28
|
+
export { getGeoTools } from "./geo.js";
|
|
29
|
+
export { getAdminTools } from "./admin.js";
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapters/sqlite/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAYzE;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,GACrB,cAAc,EAAE,CAalB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,SAAS,GACf,cAAc,EAAE,CAElB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,aAAa,GACrB,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAS3B;AAGD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Tools Index
|
|
3
|
+
*
|
|
4
|
+
* Aggregates and exports all tool definitions from category modules.
|
|
5
|
+
*/
|
|
6
|
+
import { getCoreTools } from "./core.js";
|
|
7
|
+
import { getJsonHelperTools } from "./json-helpers.js";
|
|
8
|
+
import { getJsonOperationTools } from "./json-operations.js";
|
|
9
|
+
import { getTextTools } from "./text.js";
|
|
10
|
+
import { getFtsTools } from "./fts.js";
|
|
11
|
+
import { getStatsTools } from "./stats.js";
|
|
12
|
+
import { getVirtualTools } from "./virtual.js";
|
|
13
|
+
import { getVectorTools } from "./vector.js";
|
|
14
|
+
import { getGeoTools } from "./geo.js";
|
|
15
|
+
import { getAdminTools } from "./admin.js";
|
|
16
|
+
/**
|
|
17
|
+
* Get all tool definitions for the SQLite adapter
|
|
18
|
+
*/
|
|
19
|
+
export function getAllToolDefinitions(adapter) {
|
|
20
|
+
return [
|
|
21
|
+
...getCoreTools(adapter),
|
|
22
|
+
...getJsonHelperTools(adapter),
|
|
23
|
+
...getJsonOperationTools(adapter),
|
|
24
|
+
...getTextTools(adapter),
|
|
25
|
+
...getFtsTools(adapter),
|
|
26
|
+
...getStatsTools(adapter),
|
|
27
|
+
...getVirtualTools(adapter),
|
|
28
|
+
...getVectorTools(adapter),
|
|
29
|
+
...getGeoTools(adapter),
|
|
30
|
+
...getAdminTools(adapter),
|
|
31
|
+
];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get tools filtered by group
|
|
35
|
+
*/
|
|
36
|
+
export function getToolsByGroup(adapter, group) {
|
|
37
|
+
return getAllToolDefinitions(adapter).filter((tool) => tool.group === group);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get tool count by group
|
|
41
|
+
*/
|
|
42
|
+
export function getToolCountByGroup(adapter) {
|
|
43
|
+
const tools = getAllToolDefinitions(adapter);
|
|
44
|
+
const counts = {};
|
|
45
|
+
for (const tool of tools) {
|
|
46
|
+
counts[tool.group] = (counts[tool.group] ?? 0) + 1;
|
|
47
|
+
}
|
|
48
|
+
return counts;
|
|
49
|
+
}
|
|
50
|
+
// Re-export individual tool modules
|
|
51
|
+
export { getCoreTools } from "./core.js";
|
|
52
|
+
export { getJsonHelperTools } from "./json-helpers.js";
|
|
53
|
+
export { getJsonOperationTools } from "./json-operations.js";
|
|
54
|
+
export { getTextTools } from "./text.js";
|
|
55
|
+
export { getFtsTools } from "./fts.js";
|
|
56
|
+
export { getStatsTools } from "./stats.js";
|
|
57
|
+
export { getVirtualTools } from "./virtual.js";
|
|
58
|
+
export { getVectorTools } from "./vector.js";
|
|
59
|
+
export { getGeoTools } from "./geo.js";
|
|
60
|
+
export { getAdminTools } from "./admin.js";
|
|
61
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapters/sqlite/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAsB;IAEtB,OAAO;QACL,GAAG,YAAY,CAAC,OAAO,CAAC;QACxB,GAAG,kBAAkB,CAAC,OAAO,CAAC;QAC9B,GAAG,qBAAqB,CAAC,OAAO,CAAC;QACjC,GAAG,YAAY,CAAC,OAAO,CAAC;QACxB,GAAG,WAAW,CAAC,OAAO,CAAC;QACvB,GAAG,aAAa,CAAC,OAAO,CAAC;QACzB,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,GAAG,cAAc,CAAC,OAAO,CAAC;QAC1B,GAAG,WAAW,CAAC,OAAO,CAAC;QACvB,GAAG,aAAa,CAAC,OAAO,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAsB,EACtB,KAAgB;IAEhB,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAsB;IAEtB,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAmC,CAAC;AAC7C,CAAC;AAED,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite JSON Helper Tools
|
|
3
|
+
*
|
|
4
|
+
* High-level JSON operations for common patterns:
|
|
5
|
+
* insert, update, select, query, validate path, merge, analyze schema, create collection.
|
|
6
|
+
* 8 tools total.
|
|
7
|
+
*/
|
|
8
|
+
import type { SqliteAdapter } from "../SqliteAdapter.js";
|
|
9
|
+
import type { ToolDefinition } from "../../../types/index.js";
|
|
10
|
+
/**
|
|
11
|
+
* Get all JSON helper tools
|
|
12
|
+
*/
|
|
13
|
+
export declare function getJsonHelperTools(adapter: SqliteAdapter): ToolDefinition[];
|
|
14
|
+
//# sourceMappingURL=json-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-helpers.d.ts","sourceRoot":"","sources":["../../../../src/adapters/sqlite/tools/json-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAgF9E;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,EAAE,CAW3E"}
|
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite JSON Helper Tools
|
|
3
|
+
*
|
|
4
|
+
* High-level JSON operations for common patterns:
|
|
5
|
+
* insert, update, select, query, validate path, merge, analyze schema, create collection.
|
|
6
|
+
* 8 tools total.
|
|
7
|
+
*/
|
|
8
|
+
import { readOnly, write } from "../../../utils/annotations.js";
|
|
9
|
+
import { sanitizeIdentifier } from "../../../utils/index.js";
|
|
10
|
+
import { JsonInsertSchema, JsonUpdateSchema, JsonSelectSchema, JsonQuerySchema, JsonValidatePathSchema, JsonMergeSchema, AnalyzeJsonSchemaSchema, CreateJsonCollectionSchema, } from "../types.js";
|
|
11
|
+
import { JsonInsertOutputSchema, JsonUpdateOutputSchema, JsonSelectOutputSchema, JsonQueryOutputSchema, JsonValidatePathOutputSchema, JsonMergeOutputSchema, AnalyzeJsonSchemaOutputSchema, CreateJsonCollectionOutputSchema, } from "../output-schemas.js";
|
|
12
|
+
import { normalizeJson } from "../json-utils.js";
|
|
13
|
+
/**
|
|
14
|
+
* Extract a meaningful column name from a JSONPath expression.
|
|
15
|
+
* Examples:
|
|
16
|
+
* $.name -> name
|
|
17
|
+
* $.user.email -> email
|
|
18
|
+
* $[0] -> item_0
|
|
19
|
+
* $[*].name -> name
|
|
20
|
+
* $.items[0].price -> price
|
|
21
|
+
*/
|
|
22
|
+
function extractColumnNameFromPath(path) {
|
|
23
|
+
// Remove leading $
|
|
24
|
+
const remaining = path.slice(1);
|
|
25
|
+
// Find the last meaningful segment
|
|
26
|
+
// Match either .key or [index]
|
|
27
|
+
const segments = [];
|
|
28
|
+
const regex = /\.([a-zA-Z_][a-zA-Z0-9_]*)|\[(\d+|\*)\]/g;
|
|
29
|
+
let match;
|
|
30
|
+
while ((match = regex.exec(remaining)) !== null) {
|
|
31
|
+
if (match[1]) {
|
|
32
|
+
// Property access: .name
|
|
33
|
+
segments.push(match[1]);
|
|
34
|
+
}
|
|
35
|
+
else if (match[2]) {
|
|
36
|
+
// Array index or wildcard: [0] or [*]
|
|
37
|
+
segments.push(match[2] === "*" ? "items" : `item_${match[2]}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Return the last segment, or fallback to "value"
|
|
41
|
+
const lastSegment = segments[segments.length - 1];
|
|
42
|
+
return lastSegment ?? "value";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Given an array of JSONPath expressions, return unique column names.
|
|
46
|
+
* Duplicates get numeric suffixes (e.g., name, name_2, name_3).
|
|
47
|
+
*/
|
|
48
|
+
function getUniqueColumnNames(paths) {
|
|
49
|
+
const names = [];
|
|
50
|
+
const counts = {};
|
|
51
|
+
for (const path of paths) {
|
|
52
|
+
const baseName = extractColumnNameFromPath(path);
|
|
53
|
+
if ((counts[baseName] ?? 0) === 0) {
|
|
54
|
+
counts[baseName] = 1;
|
|
55
|
+
names.push(baseName);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
counts[baseName] = (counts[baseName] ?? 0) + 1;
|
|
59
|
+
names.push(`${baseName}_${counts[baseName]}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return names;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get all JSON helper tools
|
|
66
|
+
*/
|
|
67
|
+
export function getJsonHelperTools(adapter) {
|
|
68
|
+
return [
|
|
69
|
+
createJsonInsertTool(adapter),
|
|
70
|
+
createJsonUpdateTool(adapter),
|
|
71
|
+
createJsonSelectTool(adapter),
|
|
72
|
+
createJsonQueryTool(adapter),
|
|
73
|
+
createJsonValidatePathTool(),
|
|
74
|
+
createJsonMergeTool(adapter),
|
|
75
|
+
createAnalyzeJsonSchemaTool(adapter),
|
|
76
|
+
createJsonCollectionTool(adapter),
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Insert JSON data with auto-normalization
|
|
81
|
+
*/
|
|
82
|
+
function createJsonInsertTool(adapter) {
|
|
83
|
+
return {
|
|
84
|
+
name: "sqlite_json_insert",
|
|
85
|
+
description: "Insert a row with JSON data. Automatically normalizes JSON for consistent storage.",
|
|
86
|
+
group: "json",
|
|
87
|
+
inputSchema: JsonInsertSchema,
|
|
88
|
+
outputSchema: JsonInsertOutputSchema,
|
|
89
|
+
requiredScopes: ["write"],
|
|
90
|
+
annotations: write("JSON Insert"),
|
|
91
|
+
handler: async (params, _context) => {
|
|
92
|
+
const input = JsonInsertSchema.parse(params);
|
|
93
|
+
// Normalize JSON data for consistent storage
|
|
94
|
+
const rawJson = typeof input.data === "string"
|
|
95
|
+
? input.data
|
|
96
|
+
: JSON.stringify(input.data);
|
|
97
|
+
const { normalized: jsonStr } = normalizeJson(rawJson);
|
|
98
|
+
// Build column list
|
|
99
|
+
const columns = [input.column];
|
|
100
|
+
const placeholders = ["?"];
|
|
101
|
+
const values = [jsonStr];
|
|
102
|
+
if (input.additionalColumns) {
|
|
103
|
+
for (const [col, val] of Object.entries(input.additionalColumns)) {
|
|
104
|
+
// Validate column name
|
|
105
|
+
sanitizeIdentifier(col);
|
|
106
|
+
columns.push(col);
|
|
107
|
+
placeholders.push("?");
|
|
108
|
+
values.push(typeof val === "object" ? JSON.stringify(val) : val);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// Validate table name
|
|
112
|
+
sanitizeIdentifier(input.table);
|
|
113
|
+
const sql = `INSERT INTO "${input.table}" (${columns.map((c) => `"${c}"`).join(", ")}) VALUES (${placeholders.join(", ")})`;
|
|
114
|
+
const result = await adapter.executeWriteQuery(sql, values);
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
message: `Inserted row into ${input.table}`,
|
|
118
|
+
rowsAffected: result.rowsAffected,
|
|
119
|
+
};
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Update JSON value at a specific path
|
|
125
|
+
*/
|
|
126
|
+
function createJsonUpdateTool(adapter) {
|
|
127
|
+
return {
|
|
128
|
+
name: "sqlite_json_update",
|
|
129
|
+
description: "Update a value at a specific JSON path using json_set().",
|
|
130
|
+
group: "json",
|
|
131
|
+
inputSchema: JsonUpdateSchema,
|
|
132
|
+
outputSchema: JsonUpdateOutputSchema,
|
|
133
|
+
requiredScopes: ["write"],
|
|
134
|
+
annotations: write("JSON Update"),
|
|
135
|
+
handler: async (params, _context) => {
|
|
136
|
+
const input = JsonUpdateSchema.parse(params);
|
|
137
|
+
// Validate table and column names
|
|
138
|
+
sanitizeIdentifier(input.table);
|
|
139
|
+
sanitizeIdentifier(input.column);
|
|
140
|
+
// Validate JSON path format
|
|
141
|
+
if (!input.path.startsWith("$")) {
|
|
142
|
+
throw new Error("JSON path must start with $");
|
|
143
|
+
}
|
|
144
|
+
// String values must be JSON-stringified to produce valid JSON
|
|
145
|
+
// e.g., "New Title" -> '"New Title"' (with JSON quotes inside SQL quotes)
|
|
146
|
+
const valueStr = typeof input.value === "string"
|
|
147
|
+
? `'${JSON.stringify(input.value).replace(/'/g, "''")}'`
|
|
148
|
+
: JSON.stringify(input.value);
|
|
149
|
+
const sql = `UPDATE "${input.table}" SET "${input.column}" = json_set("${input.column}", '${input.path}', json(${valueStr})) WHERE ${input.whereClause}`;
|
|
150
|
+
const result = await adapter.executeWriteQuery(sql);
|
|
151
|
+
return {
|
|
152
|
+
success: true,
|
|
153
|
+
message: `Updated ${input.path} in ${input.table}.${input.column}`,
|
|
154
|
+
rowsAffected: result.rowsAffected,
|
|
155
|
+
};
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Select and extract JSON data
|
|
161
|
+
*/
|
|
162
|
+
function createJsonSelectTool(adapter) {
|
|
163
|
+
return {
|
|
164
|
+
name: "sqlite_json_select",
|
|
165
|
+
description: "Select rows and optionally extract specific JSON paths.",
|
|
166
|
+
group: "json",
|
|
167
|
+
inputSchema: JsonSelectSchema,
|
|
168
|
+
outputSchema: JsonSelectOutputSchema,
|
|
169
|
+
requiredScopes: ["read"],
|
|
170
|
+
annotations: readOnly("JSON Select"),
|
|
171
|
+
handler: async (params, _context) => {
|
|
172
|
+
const input = JsonSelectSchema.parse(params);
|
|
173
|
+
// Validate names
|
|
174
|
+
sanitizeIdentifier(input.table);
|
|
175
|
+
sanitizeIdentifier(input.column);
|
|
176
|
+
let selectClause;
|
|
177
|
+
if (input.paths && input.paths.length > 0) {
|
|
178
|
+
// Extract specific paths with meaningful column names
|
|
179
|
+
const columnNames = getUniqueColumnNames(input.paths);
|
|
180
|
+
const extracts = input.paths.map((path, i) => {
|
|
181
|
+
if (!path.startsWith("$")) {
|
|
182
|
+
throw new Error(`JSON path must start with $: ${path}`);
|
|
183
|
+
}
|
|
184
|
+
return `json_extract("${input.column}", '${path}') as "${columnNames[i]}"`;
|
|
185
|
+
});
|
|
186
|
+
selectClause = extracts.join(", ");
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
// Wrap with json() to ensure JSONB binary data is returned as readable text
|
|
190
|
+
// This handles both text JSON (no-op) and JSONB (converts to text)
|
|
191
|
+
selectClause = `json("${input.column}") as "${input.column}"`;
|
|
192
|
+
}
|
|
193
|
+
let sql = `SELECT ${selectClause} FROM "${input.table}"`;
|
|
194
|
+
if (input.whereClause) {
|
|
195
|
+
sql += ` WHERE ${input.whereClause}`;
|
|
196
|
+
}
|
|
197
|
+
const result = await adapter.executeReadQuery(sql);
|
|
198
|
+
return {
|
|
199
|
+
success: true,
|
|
200
|
+
rowCount: result.rows?.length ?? 0,
|
|
201
|
+
rows: result.rows,
|
|
202
|
+
};
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Query JSON with path-based filtering
|
|
208
|
+
*/
|
|
209
|
+
function createJsonQueryTool(adapter) {
|
|
210
|
+
return {
|
|
211
|
+
name: "sqlite_json_query",
|
|
212
|
+
description: "Query JSON data with path-based filters and projections.",
|
|
213
|
+
group: "json",
|
|
214
|
+
inputSchema: JsonQuerySchema,
|
|
215
|
+
outputSchema: JsonQueryOutputSchema,
|
|
216
|
+
requiredScopes: ["read"],
|
|
217
|
+
annotations: readOnly("JSON Query"),
|
|
218
|
+
handler: async (params, _context) => {
|
|
219
|
+
const input = JsonQuerySchema.parse(params);
|
|
220
|
+
// Validate names
|
|
221
|
+
sanitizeIdentifier(input.table);
|
|
222
|
+
sanitizeIdentifier(input.column);
|
|
223
|
+
// Build select clause with meaningful column names
|
|
224
|
+
let selectClause;
|
|
225
|
+
if (input.selectPaths && input.selectPaths.length > 0) {
|
|
226
|
+
const columnNames = getUniqueColumnNames(input.selectPaths);
|
|
227
|
+
const extracts = input.selectPaths.map((path, i) => {
|
|
228
|
+
if (!path.startsWith("$")) {
|
|
229
|
+
throw new Error(`JSON path must start with $: ${path}`);
|
|
230
|
+
}
|
|
231
|
+
return `json_extract("${input.column}", '${path}') as "${columnNames[i]}"`;
|
|
232
|
+
});
|
|
233
|
+
selectClause = extracts.join(", ");
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
selectClause = `"${input.column}"`;
|
|
237
|
+
}
|
|
238
|
+
// Build where clause from filters
|
|
239
|
+
const conditions = [];
|
|
240
|
+
if (input.filterPaths) {
|
|
241
|
+
for (const [path, value] of Object.entries(input.filterPaths)) {
|
|
242
|
+
if (!path.startsWith("$")) {
|
|
243
|
+
throw new Error(`JSON path must start with $: ${path}`);
|
|
244
|
+
}
|
|
245
|
+
const valueStr = typeof value === "string"
|
|
246
|
+
? `'${value.replace(/'/g, "''")}'`
|
|
247
|
+
: JSON.stringify(value);
|
|
248
|
+
conditions.push(`json_extract("${input.column}", '${path}') = ${valueStr}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
let sql = `SELECT ${selectClause} FROM "${input.table}"`;
|
|
252
|
+
if (conditions.length > 0) {
|
|
253
|
+
sql += ` WHERE ${conditions.join(" AND ")}`;
|
|
254
|
+
}
|
|
255
|
+
sql += ` LIMIT ${input.limit ?? 100}`;
|
|
256
|
+
const result = await adapter.executeReadQuery(sql);
|
|
257
|
+
return {
|
|
258
|
+
success: true,
|
|
259
|
+
rowCount: result.rows?.length ?? 0,
|
|
260
|
+
rows: result.rows,
|
|
261
|
+
};
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Validate a JSON path syntax
|
|
267
|
+
*/
|
|
268
|
+
function createJsonValidatePathTool() {
|
|
269
|
+
return {
|
|
270
|
+
name: "sqlite_json_validate_path",
|
|
271
|
+
description: "Validate a JSON path syntax without executing a query.",
|
|
272
|
+
group: "json",
|
|
273
|
+
inputSchema: JsonValidatePathSchema,
|
|
274
|
+
outputSchema: JsonValidatePathOutputSchema,
|
|
275
|
+
requiredScopes: ["read"],
|
|
276
|
+
annotations: readOnly("Validate JSON Path"),
|
|
277
|
+
handler: (params, _context) => {
|
|
278
|
+
const input = JsonValidatePathSchema.parse(params);
|
|
279
|
+
const path = input.path;
|
|
280
|
+
const issues = [];
|
|
281
|
+
// Basic validation rules
|
|
282
|
+
if (!path.startsWith("$")) {
|
|
283
|
+
issues.push("Path must start with $");
|
|
284
|
+
}
|
|
285
|
+
// Check for valid path syntax
|
|
286
|
+
const validPattern = /^\$(\.[a-zA-Z_][a-zA-Z0-9_]*|\[\d+\]|\[\*\])*$/;
|
|
287
|
+
if (!validPattern.test(path)) {
|
|
288
|
+
issues.push("Invalid path syntax. Use $.key, $[0], or $[*] patterns");
|
|
289
|
+
}
|
|
290
|
+
return Promise.resolve({
|
|
291
|
+
success: issues.length === 0,
|
|
292
|
+
path,
|
|
293
|
+
valid: issues.length === 0,
|
|
294
|
+
issues: issues.length > 0 ? issues : undefined,
|
|
295
|
+
});
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Merge JSON objects
|
|
301
|
+
*/
|
|
302
|
+
function createJsonMergeTool(adapter) {
|
|
303
|
+
return {
|
|
304
|
+
name: "sqlite_json_merge",
|
|
305
|
+
description: "Merge JSON object into existing JSON column using json_patch().",
|
|
306
|
+
group: "json",
|
|
307
|
+
inputSchema: JsonMergeSchema,
|
|
308
|
+
outputSchema: JsonMergeOutputSchema,
|
|
309
|
+
requiredScopes: ["write"],
|
|
310
|
+
annotations: write("JSON Merge"),
|
|
311
|
+
handler: async (params, _context) => {
|
|
312
|
+
const input = JsonMergeSchema.parse(params);
|
|
313
|
+
// Validate names
|
|
314
|
+
sanitizeIdentifier(input.table);
|
|
315
|
+
sanitizeIdentifier(input.column);
|
|
316
|
+
const mergeJson = JSON.stringify(input.mergeData);
|
|
317
|
+
// Use json_patch for merging (shallow merge)
|
|
318
|
+
const sql = `UPDATE "${input.table}" SET "${input.column}" = json_patch("${input.column}", '${mergeJson.replace(/'/g, "''")}') WHERE ${input.whereClause}`;
|
|
319
|
+
const result = await adapter.executeWriteQuery(sql);
|
|
320
|
+
return {
|
|
321
|
+
success: true,
|
|
322
|
+
message: `Merged JSON into ${input.table}.${input.column}`,
|
|
323
|
+
rowsAffected: result.rowsAffected,
|
|
324
|
+
};
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Analyze JSON schema from column data
|
|
330
|
+
*/
|
|
331
|
+
function createAnalyzeJsonSchemaTool(adapter) {
|
|
332
|
+
return {
|
|
333
|
+
name: "sqlite_json_analyze_schema",
|
|
334
|
+
description: "Analyze JSON data in a column to infer its schema (types, nullability, counts).",
|
|
335
|
+
group: "json",
|
|
336
|
+
inputSchema: AnalyzeJsonSchemaSchema,
|
|
337
|
+
outputSchema: AnalyzeJsonSchemaOutputSchema,
|
|
338
|
+
requiredScopes: ["read"],
|
|
339
|
+
annotations: readOnly("Analyze JSON Schema"),
|
|
340
|
+
handler: async (params, _context) => {
|
|
341
|
+
const input = AnalyzeJsonSchemaSchema.parse(params);
|
|
342
|
+
// Validate names
|
|
343
|
+
sanitizeIdentifier(input.table);
|
|
344
|
+
sanitizeIdentifier(input.column);
|
|
345
|
+
// Sample rows - wrap column with json() to handle both text JSON and JSONB binary data
|
|
346
|
+
const sql = `SELECT json("${input.column}") as json_data FROM "${input.table}" LIMIT ${input.sampleSize}`;
|
|
347
|
+
const result = await adapter.executeReadQuery(sql);
|
|
348
|
+
// Infer schema
|
|
349
|
+
const properties = {};
|
|
350
|
+
let nullCount = 0;
|
|
351
|
+
let errorCount = 0;
|
|
352
|
+
for (const row of result.rows ?? []) {
|
|
353
|
+
const jsonData = row["json_data"];
|
|
354
|
+
if (jsonData === null || jsonData === undefined) {
|
|
355
|
+
nullCount++;
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
try {
|
|
359
|
+
const parsed = typeof jsonData === "string" ? JSON.parse(jsonData) : jsonData;
|
|
360
|
+
if (typeof parsed === "object" &&
|
|
361
|
+
parsed !== null &&
|
|
362
|
+
!Array.isArray(parsed)) {
|
|
363
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
364
|
+
properties[key] ??= {
|
|
365
|
+
type: "unknown",
|
|
366
|
+
nullable: false,
|
|
367
|
+
count: 0,
|
|
368
|
+
};
|
|
369
|
+
properties[key].count++;
|
|
370
|
+
// Determine type
|
|
371
|
+
let valueType;
|
|
372
|
+
if (value === null) {
|
|
373
|
+
valueType = "null";
|
|
374
|
+
properties[key].nullable = true;
|
|
375
|
+
}
|
|
376
|
+
else if (Array.isArray(value)) {
|
|
377
|
+
valueType = "array";
|
|
378
|
+
if (value.length > 0) {
|
|
379
|
+
properties[key].itemType = typeof value[0];
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
valueType = typeof value;
|
|
384
|
+
}
|
|
385
|
+
// Set or merge type
|
|
386
|
+
if (properties[key].type === "unknown") {
|
|
387
|
+
properties[key].type = valueType;
|
|
388
|
+
}
|
|
389
|
+
else if (properties[key].type !== valueType &&
|
|
390
|
+
valueType !== "null") {
|
|
391
|
+
properties[key].type = "mixed";
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
catch {
|
|
397
|
+
errorCount++;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
const sampleSize = result.rows?.length ?? 0;
|
|
401
|
+
// Mark missing properties as nullable
|
|
402
|
+
for (const prop of Object.values(properties)) {
|
|
403
|
+
if (prop.count < sampleSize - nullCount - errorCount) {
|
|
404
|
+
prop.nullable = true;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
return {
|
|
408
|
+
success: true,
|
|
409
|
+
schema: {
|
|
410
|
+
type: "object",
|
|
411
|
+
properties,
|
|
412
|
+
sampleSize,
|
|
413
|
+
nullCount,
|
|
414
|
+
errorCount,
|
|
415
|
+
},
|
|
416
|
+
};
|
|
417
|
+
},
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Create a JSON document collection table
|
|
422
|
+
*/
|
|
423
|
+
function createJsonCollectionTool(adapter) {
|
|
424
|
+
return {
|
|
425
|
+
name: "sqlite_create_json_collection",
|
|
426
|
+
description: "Create an optimized JSON document collection table with ID, data column, optional timestamps, and JSON path indexes.",
|
|
427
|
+
group: "json",
|
|
428
|
+
inputSchema: CreateJsonCollectionSchema,
|
|
429
|
+
outputSchema: CreateJsonCollectionOutputSchema,
|
|
430
|
+
requiredScopes: ["write"],
|
|
431
|
+
annotations: write("Create JSON Collection"),
|
|
432
|
+
handler: async (params, _context) => {
|
|
433
|
+
const input = CreateJsonCollectionSchema.parse(params);
|
|
434
|
+
// Validate table name
|
|
435
|
+
sanitizeIdentifier(input.tableName);
|
|
436
|
+
const idCol = input.idColumn ?? "id";
|
|
437
|
+
const dataCol = input.dataColumn ?? "data";
|
|
438
|
+
const sqls = [];
|
|
439
|
+
// Build CREATE TABLE
|
|
440
|
+
const columns = [
|
|
441
|
+
`"${idCol}" TEXT PRIMARY KEY DEFAULT (lower(hex(randomblob(16))))`,
|
|
442
|
+
// Use json_type() IS NOT NULL instead of json_valid() to support both text JSON and JSONB
|
|
443
|
+
`"${dataCol}" TEXT NOT NULL CHECK(json_type("${dataCol}") IS NOT NULL)`,
|
|
444
|
+
];
|
|
445
|
+
if (input.timestamps) {
|
|
446
|
+
columns.push(`created_at TEXT DEFAULT (datetime('now'))`);
|
|
447
|
+
columns.push(`updated_at TEXT DEFAULT (datetime('now'))`);
|
|
448
|
+
}
|
|
449
|
+
const createSql = `CREATE TABLE IF NOT EXISTS "${input.tableName}" (\n ${columns.join(",\n ")}\n)`;
|
|
450
|
+
sqls.push(createSql);
|
|
451
|
+
// Execute CREATE TABLE
|
|
452
|
+
await adapter.executeWriteQuery(createSql);
|
|
453
|
+
// Create indexes
|
|
454
|
+
let indexCount = 0;
|
|
455
|
+
if (input.indexes) {
|
|
456
|
+
for (const idx of input.indexes) {
|
|
457
|
+
if (!idx.path.startsWith("$")) {
|
|
458
|
+
throw new Error(`JSON path must start with $: ${idx.path}`);
|
|
459
|
+
}
|
|
460
|
+
const indexName = idx.name ??
|
|
461
|
+
`idx_${input.tableName}_${idx.path.replace(/[$.[\]]/g, "_")}`;
|
|
462
|
+
const indexSql = `CREATE INDEX IF NOT EXISTS "${indexName}" ON "${input.tableName}"(json_extract("${dataCol}", '${idx.path}'))`;
|
|
463
|
+
sqls.push(indexSql);
|
|
464
|
+
await adapter.executeWriteQuery(indexSql);
|
|
465
|
+
indexCount++;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
return {
|
|
469
|
+
success: true,
|
|
470
|
+
message: `Created collection '${input.tableName}'${indexCount > 0 ? ` with ${indexCount} index(es)` : ""}`,
|
|
471
|
+
sql: sqls,
|
|
472
|
+
indexCount,
|
|
473
|
+
};
|
|
474
|
+
},
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
//# sourceMappingURL=json-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-helpers.js","sourceRoot":"","sources":["../../../../src/adapters/sqlite/tools/json-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite JSON Operation Tools
|
|
3
|
+
*
|
|
4
|
+
* Low-level JSON functions wrapping SQLite's JSON1 extension:
|
|
5
|
+
* validate, extract, set, remove, type, array/object operations, etc.
|
|
6
|
+
* 12 tools total.
|
|
7
|
+
*/
|
|
8
|
+
import type { SqliteAdapter } from "../SqliteAdapter.js";
|
|
9
|
+
import type { ToolDefinition } from "../../../types/index.js";
|
|
10
|
+
/**
|
|
11
|
+
* Get all JSON operation tools
|
|
12
|
+
*/
|
|
13
|
+
export declare function getJsonOperationTools(adapter: SqliteAdapter): ToolDefinition[];
|
|
14
|
+
//# sourceMappingURL=json-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-operations.d.ts","sourceRoot":"","sources":["../../../../src/adapters/sqlite/tools/json-operations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,yBAAyB,CAAC;AAkI9E;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,GACrB,cAAc,EAAE,CAmBlB"}
|