@sochdb/sochdb 0.4.2 → 0.4.4
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/README.md +356 -14
- package/_bin/aarch64-apple-darwin/libsochdb_storage.dylib +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-bulk +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-grpc-server +0 -0
- package/_bin/aarch64-apple-darwin/sochdb-server +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb-bulk.exe +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb-grpc-server.exe +0 -0
- package/_bin/x86_64-pc-windows-msvc/sochdb_storage.dll +0 -0
- package/_bin/x86_64-unknown-linux-gnu/libsochdb_storage.so +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-bulk +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-grpc-server +0 -0
- package/_bin/x86_64-unknown-linux-gnu/sochdb-server +0 -0
- package/dist/cjs/embedded/database.js +98 -4
- package/dist/cjs/embedded/ffi/bindings.js +46 -8
- package/dist/cjs/index.js +28 -6
- package/dist/cjs/mcp/client.js +115 -0
- package/dist/cjs/mcp/index.js +28 -0
- package/dist/cjs/mcp/server.js +242 -0
- package/dist/cjs/mcp/types.js +32 -0
- package/dist/cjs/namespace.js +147 -19
- package/dist/cjs/policy/index.js +26 -0
- package/dist/cjs/policy/service.js +394 -0
- package/dist/cjs/policy/types.js +8 -0
- package/dist/esm/embedded/database.js +98 -4
- package/dist/esm/embedded/ffi/bindings.js +48 -8
- package/dist/esm/index.js +28 -6
- package/dist/esm/mcp/client.js +116 -0
- package/dist/esm/mcp/index.js +28 -0
- package/dist/esm/mcp/server.js +244 -0
- package/dist/esm/mcp/types.js +34 -0
- package/dist/esm/namespace.js +150 -19
- package/dist/esm/policy/index.js +26 -0
- package/dist/esm/policy/service.js +396 -0
- package/dist/esm/policy/types.js +8 -0
- package/dist/types/embedded/database.d.ts +66 -1
- package/dist/types/embedded/database.d.ts.map +1 -1
- package/dist/types/embedded/ffi/bindings.d.ts +7 -0
- package/dist/types/embedded/ffi/bindings.d.ts.map +1 -1
- package/dist/types/index.d.ts +23 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/mcp/client.d.ts +69 -0
- package/dist/types/mcp/client.d.ts.map +1 -0
- package/dist/types/mcp/index.d.ts +9 -0
- package/dist/types/mcp/index.d.ts.map +1 -0
- package/dist/types/mcp/server.d.ts +87 -0
- package/dist/types/mcp/server.d.ts.map +1 -0
- package/dist/types/mcp/types.d.ts +124 -0
- package/dist/types/mcp/types.d.ts.map +1 -0
- package/dist/types/namespace.d.ts +13 -0
- package/dist/types/namespace.d.ts.map +1 -1
- package/dist/types/policy/index.d.ts +8 -0
- package/dist/types/policy/index.d.ts.map +1 -0
- package/dist/types/policy/service.d.ts +115 -0
- package/dist/types/policy/service.d.ts.map +1 -0
- package/dist/types/policy/types.d.ts +102 -0
- package/dist/types/policy/types.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Implementation
|
|
3
|
+
*
|
|
4
|
+
* Client for connecting to MCP servers.
|
|
5
|
+
*/
|
|
6
|
+
import { McpTool, McpToolResult, McpResource, McpResourceContent, McpPrompt, McpPromptMessage, McpClientConfig } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* MCP Client for connecting to MCP servers
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { McpClient } from '@sochdb/sochdb';
|
|
13
|
+
*
|
|
14
|
+
* const client = new McpClient({
|
|
15
|
+
* serverUri: 'stdio://./mcp-server',
|
|
16
|
+
* transport: 'stdio'
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // List available tools
|
|
20
|
+
* const tools = await client.listTools();
|
|
21
|
+
*
|
|
22
|
+
* // Call a tool
|
|
23
|
+
* const result = await client.callTool('db_get', { key: 'user:123' });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class McpClient {
|
|
27
|
+
private config;
|
|
28
|
+
private connected;
|
|
29
|
+
private requestId;
|
|
30
|
+
constructor(config: McpClientConfig);
|
|
31
|
+
/**
|
|
32
|
+
* Connect to the MCP server
|
|
33
|
+
*/
|
|
34
|
+
connect(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Disconnect from the MCP server
|
|
37
|
+
*/
|
|
38
|
+
disconnect(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if connected
|
|
41
|
+
*/
|
|
42
|
+
isConnected(): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* List available tools
|
|
45
|
+
*/
|
|
46
|
+
listTools(): Promise<McpTool[]>;
|
|
47
|
+
/**
|
|
48
|
+
* Call a tool
|
|
49
|
+
*/
|
|
50
|
+
callTool(name: string, args: Record<string, any>): Promise<McpToolResult>;
|
|
51
|
+
/**
|
|
52
|
+
* List available resources
|
|
53
|
+
*/
|
|
54
|
+
listResources(): Promise<McpResource[]>;
|
|
55
|
+
/**
|
|
56
|
+
* Read a resource
|
|
57
|
+
*/
|
|
58
|
+
readResource(uri: string): Promise<McpResourceContent | null>;
|
|
59
|
+
/**
|
|
60
|
+
* List available prompts
|
|
61
|
+
*/
|
|
62
|
+
listPrompts(): Promise<McpPrompt[]>;
|
|
63
|
+
/**
|
|
64
|
+
* Get prompt messages
|
|
65
|
+
*/
|
|
66
|
+
getPrompt(name: string, args?: Record<string, any>): Promise<McpPromptMessage[] | null>;
|
|
67
|
+
private ensureConnected;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/mcp/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EAEP,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,eAAe,EAGhB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAK;gBAEV,MAAM,EAAE,eAAe;IAQnC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMrC;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;IAc/E;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAK7C;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKnE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAKzC;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC;IAK7F,OAAO,CAAC,eAAe;CAKxB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) Module
|
|
3
|
+
*
|
|
4
|
+
* Provides MCP server and client implementations for LLM agent integration.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types';
|
|
7
|
+
export { McpServer } from './server';
|
|
8
|
+
export { McpClient } from './client';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Implementation
|
|
3
|
+
*
|
|
4
|
+
* SochDB MCP Server for exposing database operations to LLM agents.
|
|
5
|
+
*/
|
|
6
|
+
import { EmbeddedDatabase } from '../embedded';
|
|
7
|
+
import { McpTool, McpToolCall, McpToolResult, McpResource, McpResourceContent, McpPrompt, McpPromptMessage, McpServerConfig } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* MCP Server for SochDB
|
|
10
|
+
*
|
|
11
|
+
* Exposes database operations as MCP tools for LLM agents.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { EmbeddedDatabase, McpServer } from '@sochdb/sochdb';
|
|
16
|
+
*
|
|
17
|
+
* const db = EmbeddedDatabase.open('./mydb');
|
|
18
|
+
* const server = new McpServer(db, {
|
|
19
|
+
* name: 'sochdb-mcp',
|
|
20
|
+
* version: '1.0.0',
|
|
21
|
+
* capabilities: { tools: true, resources: true }
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // List available tools
|
|
25
|
+
* const tools = server.listTools();
|
|
26
|
+
*
|
|
27
|
+
* // Execute a tool call
|
|
28
|
+
* const result = await server.callTool({
|
|
29
|
+
* id: 'call_1',
|
|
30
|
+
* name: 'db_get',
|
|
31
|
+
* arguments: { key: 'user:123' }
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class McpServer {
|
|
36
|
+
private db;
|
|
37
|
+
private config;
|
|
38
|
+
private tools;
|
|
39
|
+
private prompts;
|
|
40
|
+
private customToolHandlers;
|
|
41
|
+
constructor(db: EmbeddedDatabase, config: McpServerConfig);
|
|
42
|
+
/**
|
|
43
|
+
* Register built-in database tools
|
|
44
|
+
*/
|
|
45
|
+
private registerBuiltinTools;
|
|
46
|
+
/**
|
|
47
|
+
* Register a custom tool
|
|
48
|
+
*/
|
|
49
|
+
registerTool(tool: McpTool, handler: (args: Record<string, any>) => Promise<any>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Unregister a tool
|
|
52
|
+
*/
|
|
53
|
+
unregisterTool(name: string): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* List all available tools
|
|
56
|
+
*/
|
|
57
|
+
listTools(): McpTool[];
|
|
58
|
+
/**
|
|
59
|
+
* Call a tool
|
|
60
|
+
*/
|
|
61
|
+
callTool(call: McpToolCall): Promise<McpToolResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Register a prompt template
|
|
64
|
+
*/
|
|
65
|
+
registerPrompt(prompt: McpPrompt): void;
|
|
66
|
+
/**
|
|
67
|
+
* List all available prompts
|
|
68
|
+
*/
|
|
69
|
+
listPrompts(): McpPrompt[];
|
|
70
|
+
/**
|
|
71
|
+
* Get prompt messages
|
|
72
|
+
*/
|
|
73
|
+
getPrompt(name: string, args?: Record<string, any>): McpPromptMessage[] | null;
|
|
74
|
+
/**
|
|
75
|
+
* List available resources
|
|
76
|
+
*/
|
|
77
|
+
listResources(): Promise<McpResource[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Read a resource
|
|
80
|
+
*/
|
|
81
|
+
readResource(uri: string): Promise<McpResourceContent | null>;
|
|
82
|
+
/**
|
|
83
|
+
* Get server info
|
|
84
|
+
*/
|
|
85
|
+
getServerInfo(): McpServerConfig;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,OAAO,EACP,WAAW,EACX,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,eAAe,EAIhB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,kBAAkB,CAAuE;gBAErF,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe;IAMzD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA6F5B;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,GACnD,IAAI;IAKP;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKrC;;OAEG;IACH,SAAS,IAAI,OAAO,EAAE;IAItB;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BzD;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIvC;;OAEG;IACH,WAAW,IAAI,SAAS,EAAE;IAI1B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,IAAI;IAU9E;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAU7C;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAcnE;;OAEG;IACH,aAAa,IAAI,eAAe;CAGjC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP (Model Context Protocol) Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for Model Context Protocol integration with LLM agents.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* MCP Tool definition
|
|
8
|
+
*/
|
|
9
|
+
export interface McpTool {
|
|
10
|
+
name: string;
|
|
11
|
+
description: string;
|
|
12
|
+
inputSchema: Record<string, any>;
|
|
13
|
+
outputSchema?: Record<string, any>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* MCP Tool call request
|
|
17
|
+
*/
|
|
18
|
+
export interface McpToolCall {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
arguments: Record<string, any>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* MCP Tool call result
|
|
25
|
+
*/
|
|
26
|
+
export interface McpToolResult {
|
|
27
|
+
id: string;
|
|
28
|
+
content: any;
|
|
29
|
+
isError?: boolean;
|
|
30
|
+
errorMessage?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* MCP Resource definition
|
|
34
|
+
*/
|
|
35
|
+
export interface McpResource {
|
|
36
|
+
uri: string;
|
|
37
|
+
name: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
mimeType?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* MCP Resource content
|
|
43
|
+
*/
|
|
44
|
+
export interface McpResourceContent {
|
|
45
|
+
uri: string;
|
|
46
|
+
mimeType: string;
|
|
47
|
+
text?: string;
|
|
48
|
+
blob?: Buffer;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* MCP Prompt definition
|
|
52
|
+
*/
|
|
53
|
+
export interface McpPrompt {
|
|
54
|
+
name: string;
|
|
55
|
+
description?: string;
|
|
56
|
+
arguments?: McpPromptArgument[];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* MCP Prompt argument
|
|
60
|
+
*/
|
|
61
|
+
export interface McpPromptArgument {
|
|
62
|
+
name: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
required?: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* MCP Prompt message
|
|
68
|
+
*/
|
|
69
|
+
export interface McpPromptMessage {
|
|
70
|
+
role: 'user' | 'assistant' | 'system';
|
|
71
|
+
content: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* MCP Server capabilities
|
|
75
|
+
*/
|
|
76
|
+
export interface McpServerCapabilities {
|
|
77
|
+
tools?: boolean;
|
|
78
|
+
resources?: boolean;
|
|
79
|
+
prompts?: boolean;
|
|
80
|
+
logging?: boolean;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* MCP Server configuration
|
|
84
|
+
*/
|
|
85
|
+
export interface McpServerConfig {
|
|
86
|
+
name: string;
|
|
87
|
+
version: string;
|
|
88
|
+
capabilities: McpServerCapabilities;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* MCP Client configuration
|
|
92
|
+
*/
|
|
93
|
+
export interface McpClientConfig {
|
|
94
|
+
serverUri?: string;
|
|
95
|
+
transport?: 'stdio' | 'sse' | 'websocket';
|
|
96
|
+
timeout?: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* MCP Transport interface
|
|
100
|
+
*/
|
|
101
|
+
export interface McpTransport {
|
|
102
|
+
send(message: any): Promise<void>;
|
|
103
|
+
receive(): AsyncGenerator<any>;
|
|
104
|
+
close(): Promise<void>;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* MCP Error
|
|
108
|
+
*/
|
|
109
|
+
export declare class McpError extends Error {
|
|
110
|
+
code: number;
|
|
111
|
+
data?: any;
|
|
112
|
+
constructor(message: string, code: number, data?: any);
|
|
113
|
+
}
|
|
114
|
+
export declare const MCP_ERROR_CODES: {
|
|
115
|
+
readonly PARSE_ERROR: -32700;
|
|
116
|
+
readonly INVALID_REQUEST: -32600;
|
|
117
|
+
readonly METHOD_NOT_FOUND: -32601;
|
|
118
|
+
readonly INVALID_PARAMS: -32602;
|
|
119
|
+
readonly INTERNAL_ERROR: -32603;
|
|
120
|
+
readonly TOOL_NOT_FOUND: -32001;
|
|
121
|
+
readonly RESOURCE_NOT_FOUND: -32002;
|
|
122
|
+
readonly PROMPT_NOT_FOUND: -32003;
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,qBAAqB,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;gBAEC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAMtD;AAGD,eAAO,MAAM,eAAe;;;;;;;;;CASlB,CAAC"}
|
|
@@ -64,17 +64,30 @@ export declare class Collection {
|
|
|
64
64
|
private namespace;
|
|
65
65
|
private name;
|
|
66
66
|
private config;
|
|
67
|
+
private vectorIndex;
|
|
68
|
+
private _indexReady;
|
|
67
69
|
constructor(db: any, namespace: string, name: string, config: CollectionConfig);
|
|
68
70
|
/**
|
|
69
71
|
* Insert a vector with optional metadata
|
|
72
|
+
* Vector is immediately indexed (synchronous)
|
|
70
73
|
*/
|
|
71
74
|
insert(vector: number[], metadata?: Record<string, any>, id?: string): Promise<string>;
|
|
72
75
|
/**
|
|
73
76
|
* Insert multiple vectors
|
|
77
|
+
* All vectors are indexed synchronously after insertion
|
|
74
78
|
*/
|
|
75
79
|
insertMany(vectors: number[][], metadatas?: Record<string, any>[], ids?: string[]): Promise<string[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Rebuild index from database (for recovery/startup)
|
|
82
|
+
*/
|
|
83
|
+
rebuildIndex(): Promise<number>;
|
|
84
|
+
/**
|
|
85
|
+
* Check if index is ready (loaded from disk)
|
|
86
|
+
*/
|
|
87
|
+
get isIndexReady(): boolean;
|
|
76
88
|
/**
|
|
77
89
|
* Search for similar vectors
|
|
90
|
+
* Uses synchronous in-memory index - no delay
|
|
78
91
|
*/
|
|
79
92
|
search(request: SearchRequest): Promise<SearchResult[]>;
|
|
80
93
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/namespace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,WAAW,EAAiB,MAAM,UAAU,CAAC;AAMtD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,sBAAuB,SAAQ,WAAW;gBACzC,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,uBAAwB,SAAQ,WAAW;gBAC1C,UAAU,EAAE,MAAM;CAI/B;AAED,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,UAAU,EAAE,MAAM;CAI/B;AAMD,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,UAAU,QAAQ;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/namespace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/policy/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Service Implementation
|
|
3
|
+
*
|
|
4
|
+
* Policy-based access control and namespace governance for SochDB.
|
|
5
|
+
*/
|
|
6
|
+
import { EmbeddedDatabase } from '../embedded';
|
|
7
|
+
import { PolicyRule, PolicyEvaluation, NamespacePolicy, NamespaceGrant, NamespacePermission, PolicyRequest, PolicyAuditEntry } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* Policy Service for access control and governance
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { EmbeddedDatabase, PolicyService } from '@sochdb/sochdb';
|
|
14
|
+
*
|
|
15
|
+
* const db = EmbeddedDatabase.open('./mydb');
|
|
16
|
+
* const policy = new PolicyService(db);
|
|
17
|
+
*
|
|
18
|
+
* // Create a namespace policy
|
|
19
|
+
* await policy.createNamespacePolicy({
|
|
20
|
+
* namespace: 'tenant_123',
|
|
21
|
+
* rules: [{
|
|
22
|
+
* id: 'read_only',
|
|
23
|
+
* name: 'Read Only Access',
|
|
24
|
+
* effect: 'allow',
|
|
25
|
+
* principals: ['user:*'],
|
|
26
|
+
* resources: ['collection:*'],
|
|
27
|
+
* actions: ['read', 'search']
|
|
28
|
+
* }],
|
|
29
|
+
* defaultEffect: 'deny'
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Evaluate access
|
|
33
|
+
* const result = await policy.evaluate({
|
|
34
|
+
* principal: 'user:alice',
|
|
35
|
+
* action: 'read',
|
|
36
|
+
* resource: 'collection:documents'
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare class PolicyService {
|
|
41
|
+
private db;
|
|
42
|
+
private prefix;
|
|
43
|
+
private cache;
|
|
44
|
+
private auditEnabled;
|
|
45
|
+
constructor(db: EmbeddedDatabase, options?: {
|
|
46
|
+
enableAudit?: boolean;
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Create a namespace policy
|
|
50
|
+
*/
|
|
51
|
+
createNamespacePolicy(policy: NamespacePolicy): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Get a namespace policy
|
|
54
|
+
*/
|
|
55
|
+
getNamespacePolicy(namespace: string): Promise<NamespacePolicy | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Update a namespace policy
|
|
58
|
+
*/
|
|
59
|
+
updateNamespacePolicy(namespace: string, updates: Partial<NamespacePolicy>): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Delete a namespace policy
|
|
62
|
+
*/
|
|
63
|
+
deleteNamespacePolicy(namespace: string): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Add a rule to a namespace policy
|
|
66
|
+
*/
|
|
67
|
+
addRule(namespace: string, rule: PolicyRule): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Remove a rule from a namespace policy
|
|
70
|
+
*/
|
|
71
|
+
removeRule(namespace: string, ruleId: string): Promise<boolean>;
|
|
72
|
+
/**
|
|
73
|
+
* Evaluate a policy request
|
|
74
|
+
*/
|
|
75
|
+
evaluate(request: PolicyRequest): Promise<PolicyEvaluation>;
|
|
76
|
+
/**
|
|
77
|
+
* Grant namespace access to a principal
|
|
78
|
+
*/
|
|
79
|
+
grantAccess(grant: NamespaceGrant): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Revoke namespace access from a principal
|
|
82
|
+
*/
|
|
83
|
+
revokeAccess(namespace: string, principal: string): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Check if principal has permission
|
|
86
|
+
*/
|
|
87
|
+
hasPermission(namespace: string, principal: string, permission: NamespacePermission): Promise<boolean>;
|
|
88
|
+
/**
|
|
89
|
+
* List all grants for a namespace
|
|
90
|
+
*/
|
|
91
|
+
listGrants(namespace: string): Promise<NamespaceGrant[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Get audit log entries
|
|
94
|
+
*/
|
|
95
|
+
getAuditLog(options?: {
|
|
96
|
+
namespace?: string;
|
|
97
|
+
principal?: string;
|
|
98
|
+
action?: string;
|
|
99
|
+
since?: number;
|
|
100
|
+
limit?: number;
|
|
101
|
+
}): Promise<PolicyAuditEntry[]>;
|
|
102
|
+
/**
|
|
103
|
+
* Clear policy cache
|
|
104
|
+
*/
|
|
105
|
+
clearCache(): void;
|
|
106
|
+
private policyKey;
|
|
107
|
+
private grantKey;
|
|
108
|
+
private extractNamespace;
|
|
109
|
+
private matchesRule;
|
|
110
|
+
private matchesPatterns;
|
|
111
|
+
private matchesPattern;
|
|
112
|
+
private evaluateCondition;
|
|
113
|
+
private logAudit;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/policy/service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,UAAU,EAEV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,aAAa,EAEb,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,YAAY,CAAQ;gBAEhB,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;IAMrE;;OAEG;IACG,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAkB5E;;OAEG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhG;;OAEG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhE;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAejE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBrE;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuDjE;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM1E;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,OAAO,CAAC;IAuBnB;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgB9D;;OAEG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqC/B;;OAEG;IACH,UAAU,IAAI,IAAI;IAMlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,iBAAiB;YAmCX,QAAQ;CAgBvB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Service Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for policy-based access control and namespace governance.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Policy rule for access control
|
|
8
|
+
*/
|
|
9
|
+
export interface PolicyRule {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
effect: 'allow' | 'deny';
|
|
14
|
+
principals: string[];
|
|
15
|
+
resources: string[];
|
|
16
|
+
actions: string[];
|
|
17
|
+
conditions?: PolicyCondition[];
|
|
18
|
+
priority?: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Policy condition for contextual access control
|
|
22
|
+
*/
|
|
23
|
+
export interface PolicyCondition {
|
|
24
|
+
type: 'time' | 'ip' | 'metadata' | 'custom';
|
|
25
|
+
operator: 'equals' | 'not_equals' | 'contains' | 'starts_with' | 'ends_with' | 'in' | 'not_in' | 'between';
|
|
26
|
+
key: string;
|
|
27
|
+
value: any;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Policy evaluation result
|
|
31
|
+
*/
|
|
32
|
+
export interface PolicyEvaluation {
|
|
33
|
+
allowed: boolean;
|
|
34
|
+
matchedRule?: PolicyRule;
|
|
35
|
+
reason?: string;
|
|
36
|
+
evaluationTime: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Namespace policy for multi-tenant isolation
|
|
40
|
+
*/
|
|
41
|
+
export interface NamespacePolicy {
|
|
42
|
+
namespace: string;
|
|
43
|
+
rules: PolicyRule[];
|
|
44
|
+
defaultEffect: 'allow' | 'deny';
|
|
45
|
+
inheritFrom?: string;
|
|
46
|
+
metadata?: Record<string, any>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Access grant for namespace-level permissions
|
|
50
|
+
*/
|
|
51
|
+
export interface NamespaceGrant {
|
|
52
|
+
namespace: string;
|
|
53
|
+
principal: string;
|
|
54
|
+
permissions: NamespacePermission[];
|
|
55
|
+
expiresAt?: number;
|
|
56
|
+
grantedBy?: string;
|
|
57
|
+
grantedAt?: number;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Namespace permission levels
|
|
61
|
+
*/
|
|
62
|
+
export type NamespacePermission = 'read' | 'write' | 'delete' | 'admin' | 'create_collection' | 'delete_collection' | 'search' | 'manage_policy';
|
|
63
|
+
/**
|
|
64
|
+
* Policy action types
|
|
65
|
+
*/
|
|
66
|
+
export type PolicyAction = 'db:read' | 'db:write' | 'db:delete' | 'db:scan' | 'namespace:create' | 'namespace:delete' | 'namespace:list' | 'collection:create' | 'collection:delete' | 'collection:insert' | 'collection:search' | 'collection:update' | 'policy:read' | 'policy:write' | 'admin:*';
|
|
67
|
+
/**
|
|
68
|
+
* Policy request for evaluation
|
|
69
|
+
*/
|
|
70
|
+
export interface PolicyRequest {
|
|
71
|
+
principal: string;
|
|
72
|
+
action: string;
|
|
73
|
+
resource: string;
|
|
74
|
+
context?: Record<string, any>;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Policy set containing multiple policies
|
|
78
|
+
*/
|
|
79
|
+
export interface PolicySet {
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
description?: string;
|
|
83
|
+
policies: NamespacePolicy[];
|
|
84
|
+
version: number;
|
|
85
|
+
createdAt: number;
|
|
86
|
+
updatedAt: number;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Audit log entry for policy decisions
|
|
90
|
+
*/
|
|
91
|
+
export interface PolicyAuditEntry {
|
|
92
|
+
id: string;
|
|
93
|
+
timestamp: number;
|
|
94
|
+
principal: string;
|
|
95
|
+
action: string;
|
|
96
|
+
resource: string;
|
|
97
|
+
decision: 'allow' | 'deny';
|
|
98
|
+
matchedRule?: string;
|
|
99
|
+
reason?: string;
|
|
100
|
+
context?: Record<string, any>;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/policy/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC5C,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,IAAI,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3G,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,OAAO,GACP,QAAQ,GACR,OAAO,GACP,mBAAmB,GACnB,mBAAmB,GACnB,QAAQ,GACR,eAAe,CAAC;AAEpB;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,UAAU,GACV,WAAW,GACX,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,aAAa,GACb,cAAc,GACd,SAAS,CAAC;AAEd;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sochdb/sochdb",
|
|
3
|
-
"version": "0.4.
|
|
4
|
-
"description": "SochDB
|
|
3
|
+
"version": "0.4.4",
|
|
4
|
+
"description": "SochDB Node.js SDK - AI-native embedded database with concurrent multi-process support",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
7
7
|
"types": "dist/types/index.d.ts",
|