@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.
Files changed (57) hide show
  1. package/README.md +356 -14
  2. package/_bin/aarch64-apple-darwin/libsochdb_storage.dylib +0 -0
  3. package/_bin/aarch64-apple-darwin/sochdb-bulk +0 -0
  4. package/_bin/aarch64-apple-darwin/sochdb-grpc-server +0 -0
  5. package/_bin/aarch64-apple-darwin/sochdb-server +0 -0
  6. package/_bin/x86_64-pc-windows-msvc/sochdb-bulk.exe +0 -0
  7. package/_bin/x86_64-pc-windows-msvc/sochdb-grpc-server.exe +0 -0
  8. package/_bin/x86_64-pc-windows-msvc/sochdb_storage.dll +0 -0
  9. package/_bin/x86_64-unknown-linux-gnu/libsochdb_storage.so +0 -0
  10. package/_bin/x86_64-unknown-linux-gnu/sochdb-bulk +0 -0
  11. package/_bin/x86_64-unknown-linux-gnu/sochdb-grpc-server +0 -0
  12. package/_bin/x86_64-unknown-linux-gnu/sochdb-server +0 -0
  13. package/dist/cjs/embedded/database.js +98 -4
  14. package/dist/cjs/embedded/ffi/bindings.js +46 -8
  15. package/dist/cjs/index.js +28 -6
  16. package/dist/cjs/mcp/client.js +115 -0
  17. package/dist/cjs/mcp/index.js +28 -0
  18. package/dist/cjs/mcp/server.js +242 -0
  19. package/dist/cjs/mcp/types.js +32 -0
  20. package/dist/cjs/namespace.js +147 -19
  21. package/dist/cjs/policy/index.js +26 -0
  22. package/dist/cjs/policy/service.js +394 -0
  23. package/dist/cjs/policy/types.js +8 -0
  24. package/dist/esm/embedded/database.js +98 -4
  25. package/dist/esm/embedded/ffi/bindings.js +48 -8
  26. package/dist/esm/index.js +28 -6
  27. package/dist/esm/mcp/client.js +116 -0
  28. package/dist/esm/mcp/index.js +28 -0
  29. package/dist/esm/mcp/server.js +244 -0
  30. package/dist/esm/mcp/types.js +34 -0
  31. package/dist/esm/namespace.js +150 -19
  32. package/dist/esm/policy/index.js +26 -0
  33. package/dist/esm/policy/service.js +396 -0
  34. package/dist/esm/policy/types.js +8 -0
  35. package/dist/types/embedded/database.d.ts +66 -1
  36. package/dist/types/embedded/database.d.ts.map +1 -1
  37. package/dist/types/embedded/ffi/bindings.d.ts +7 -0
  38. package/dist/types/embedded/ffi/bindings.d.ts.map +1 -1
  39. package/dist/types/index.d.ts +23 -5
  40. package/dist/types/index.d.ts.map +1 -1
  41. package/dist/types/mcp/client.d.ts +69 -0
  42. package/dist/types/mcp/client.d.ts.map +1 -0
  43. package/dist/types/mcp/index.d.ts +9 -0
  44. package/dist/types/mcp/index.d.ts.map +1 -0
  45. package/dist/types/mcp/server.d.ts +87 -0
  46. package/dist/types/mcp/server.d.ts.map +1 -0
  47. package/dist/types/mcp/types.d.ts +124 -0
  48. package/dist/types/mcp/types.d.ts.map +1 -0
  49. package/dist/types/namespace.d.ts +13 -0
  50. package/dist/types/namespace.d.ts.map +1 -1
  51. package/dist/types/policy/index.d.ts +8 -0
  52. package/dist/types/policy/index.d.ts.map +1 -0
  53. package/dist/types/policy/service.d.ts +115 -0
  54. package/dist/types/policy/service.d.ts.map +1 -0
  55. package/dist/types/policy/types.d.ts +102 -0
  56. package/dist/types/policy/types.d.ts.map +1 -0
  57. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAGH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9D,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,IAAI,qBAAqB,GACtC,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,aAAa,EACb,SAAS,EACT,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,YAAY,EACV,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,eAAe,GAChB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,GACf,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,OAAO,EACL,UAAU,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EACL,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,aAAa,EAEb,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC"}
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":"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"}
1
+ {"version":3,"file":"namespace.d.ts","sourceRoot":"","sources":["../../src/namespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Policy Service Module
3
+ *
4
+ * Policy-based access control and namespace governance for SochDB.
5
+ */
6
+ export * from './types';
7
+ export { PolicyService } from './service';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -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":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sochdb/sochdb",
3
- "version": "0.4.2",
4
- "description": "SochDB is an AI-native database with token-optimized output, O(|path|) lookups, built-in vector search, and durable transactions.",
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",