@soulcraft/brainy 0.20.0 → 0.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/augmentations/conduitAugmentations.js +1158 -0
- package/dist/augmentations/conduitAugmentations.js.map +1 -0
- package/dist/augmentations/memoryAugmentations.js +255 -0
- package/dist/augmentations/memoryAugmentations.js.map +1 -0
- package/dist/augmentations/serverSearchAugmentations.js +531 -0
- package/dist/augmentations/serverSearchAugmentations.js.map +1 -0
- package/dist/coreTypes.d.ts +12 -0
- package/dist/examples/basicUsage.js +128 -0
- package/dist/examples/basicUsage.js.map +1 -0
- package/dist/hnsw/hnswIndex.js +550 -0
- package/dist/hnsw/hnswIndex.js.map +1 -0
- package/dist/hnsw/hnswIndexOptimized.js +441 -0
- package/dist/hnsw/hnswIndexOptimized.js.map +1 -0
- package/dist/mcp/brainyMCPAdapter.js +142 -0
- package/dist/mcp/brainyMCPAdapter.js.map +1 -0
- package/dist/mcp/brainyMCPService.js +248 -0
- package/dist/mcp/brainyMCPService.js.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpAugmentationToolset.js +180 -0
- package/dist/mcp/mcpAugmentationToolset.js.map +1 -0
- package/dist/storage/adapters/baseStorageAdapter.d.ts +14 -0
- package/dist/storage/adapters/baseStorageAdapter.d.ts.map +1 -1
- package/dist/storage/adapters/baseStorageAdapter.js +233 -0
- package/dist/storage/adapters/baseStorageAdapter.js.map +1 -0
- package/dist/storage/adapters/fileSystemStorage.d.ts +27 -27
- package/dist/storage/adapters/fileSystemStorage.d.ts.map +1 -1
- package/dist/storage/adapters/fileSystemStorage.js +568 -0
- package/dist/storage/adapters/fileSystemStorage.js.map +1 -0
- package/dist/storage/adapters/memoryStorage.d.ts +27 -27
- package/dist/storage/adapters/memoryStorage.d.ts.map +1 -1
- package/dist/storage/adapters/memoryStorage.js +300 -0
- package/dist/storage/adapters/memoryStorage.js.map +1 -0
- package/dist/storage/adapters/opfsStorage.d.ts +64 -6
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/opfsStorage.js +778 -0
- package/dist/storage/adapters/opfsStorage.js.map +1 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts +86 -1
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
- package/dist/storage/adapters/s3CompatibleStorage.js +1021 -0
- package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -0
- package/dist/storage/baseStorage.d.ts +24 -24
- package/dist/storage/baseStorage.d.ts.map +1 -1
- package/dist/storage/baseStorage.js +126 -0
- package/dist/storage/baseStorage.js.map +1 -0
- package/dist/storage/storageFactory.js +183 -0
- package/dist/storage/storageFactory.js.map +1 -0
- package/dist/types/augmentations.js +16 -0
- package/dist/types/augmentations.js.map +1 -0
- package/dist/types/brainyDataInterface.js +8 -0
- package/dist/types/brainyDataInterface.js.map +1 -0
- package/dist/types/fileSystemTypes.js +8 -0
- package/dist/types/fileSystemTypes.js.map +1 -0
- package/dist/types/graphTypes.d.ts +2 -1
- package/dist/types/graphTypes.d.ts.map +1 -1
- package/dist/types/graphTypes.js +36 -0
- package/dist/types/graphTypes.js.map +1 -0
- package/dist/types/mcpTypes.js +22 -0
- package/dist/types/mcpTypes.js.map +1 -0
- package/dist/types/pipelineTypes.js +7 -0
- package/dist/types/pipelineTypes.js.map +1 -0
- package/dist/types/tensorflowTypes.js +6 -0
- package/dist/types/tensorflowTypes.js.map +1 -0
- package/dist/unified.js +983 -336
- package/dist/unified.min.js +623 -623
- package/dist/utils/distance.js +239 -0
- package/dist/utils/distance.js.map +1 -0
- package/dist/utils/embedding.js +622 -0
- package/dist/utils/embedding.js.map +1 -0
- package/dist/utils/environment.js +75 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/statistics.js +25 -0
- package/dist/utils/statistics.js.map +1 -0
- package/dist/utils/tensorflowUtils.js +25 -0
- package/dist/utils/tensorflowUtils.js.map +1 -0
- package/dist/utils/textEncoding.js +281 -0
- package/dist/utils/textEncoding.js.map +1 -0
- package/dist/utils/workerUtils.js +458 -0
- package/dist/utils/workerUtils.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrainyMCPService
|
|
3
|
+
*
|
|
4
|
+
* This class provides a unified service for accessing Brainy data and augmentations
|
|
5
|
+
* through the Model Control Protocol (MCP). It integrates the BrainyMCPAdapter and
|
|
6
|
+
* MCPAugmentationToolset classes and provides WebSocket and REST server implementations
|
|
7
|
+
* for external model access.
|
|
8
|
+
*/
|
|
9
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
10
|
+
import { MCPRequestType, MCP_VERSION } from '../types/mcpTypes.js';
|
|
11
|
+
import { BrainyMCPAdapter } from './brainyMCPAdapter.js';
|
|
12
|
+
import { MCPAugmentationToolset } from './mcpAugmentationToolset.js';
|
|
13
|
+
import { isBrowser, isNode } from '../utils/environment.js';
|
|
14
|
+
export class BrainyMCPService {
|
|
15
|
+
/**
|
|
16
|
+
* Creates a new BrainyMCPService
|
|
17
|
+
* @param brainyData The BrainyData instance to wrap
|
|
18
|
+
* @param options Configuration options for the service
|
|
19
|
+
*/
|
|
20
|
+
constructor(brainyData, options = {}) {
|
|
21
|
+
this.dataAdapter = new BrainyMCPAdapter(brainyData);
|
|
22
|
+
this.toolset = new MCPAugmentationToolset();
|
|
23
|
+
this.options = options;
|
|
24
|
+
this.authTokens = new Map();
|
|
25
|
+
this.rateLimits = new Map();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Handles an MCP request
|
|
29
|
+
* @param request The MCP request
|
|
30
|
+
* @returns An MCP response
|
|
31
|
+
*/
|
|
32
|
+
async handleRequest(request) {
|
|
33
|
+
try {
|
|
34
|
+
switch (request.type) {
|
|
35
|
+
case MCPRequestType.DATA_ACCESS:
|
|
36
|
+
return await this.dataAdapter.handleRequest(request);
|
|
37
|
+
case MCPRequestType.TOOL_EXECUTION:
|
|
38
|
+
return await this.toolset.handleRequest(request);
|
|
39
|
+
case MCPRequestType.SYSTEM_INFO:
|
|
40
|
+
return await this.handleSystemInfoRequest(request);
|
|
41
|
+
case MCPRequestType.AUTHENTICATION:
|
|
42
|
+
return await this.handleAuthenticationRequest(request);
|
|
43
|
+
default:
|
|
44
|
+
return this.createErrorResponse(request.requestId, 'UNSUPPORTED_REQUEST_TYPE', `Request type ${request.type} is not supported`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return this.createErrorResponse(request.requestId, 'INTERNAL_ERROR', error instanceof Error ? error.message : String(error));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Handles a system info request
|
|
53
|
+
* @param request The MCP request
|
|
54
|
+
* @returns An MCP response
|
|
55
|
+
*/
|
|
56
|
+
async handleSystemInfoRequest(request) {
|
|
57
|
+
try {
|
|
58
|
+
switch (request.infoType) {
|
|
59
|
+
case 'status':
|
|
60
|
+
return this.createSuccessResponse(request.requestId, {
|
|
61
|
+
status: 'active',
|
|
62
|
+
version: MCP_VERSION,
|
|
63
|
+
environment: isBrowser() ? 'browser' : isNode() ? 'node' : 'unknown'
|
|
64
|
+
});
|
|
65
|
+
case 'availableTools':
|
|
66
|
+
const tools = await this.toolset.getAvailableTools();
|
|
67
|
+
return this.createSuccessResponse(request.requestId, tools);
|
|
68
|
+
case 'version':
|
|
69
|
+
return this.createSuccessResponse(request.requestId, {
|
|
70
|
+
version: MCP_VERSION
|
|
71
|
+
});
|
|
72
|
+
default:
|
|
73
|
+
return this.createErrorResponse(request.requestId, 'UNSUPPORTED_INFO_TYPE', `Info type ${request.infoType} is not supported`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
return this.createErrorResponse(request.requestId, 'INTERNAL_ERROR', error instanceof Error ? error.message : String(error));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Handles an authentication request
|
|
82
|
+
* @param request The MCP request
|
|
83
|
+
* @returns An MCP response
|
|
84
|
+
*/
|
|
85
|
+
async handleAuthenticationRequest(request) {
|
|
86
|
+
try {
|
|
87
|
+
if (!this.options.enableAuth) {
|
|
88
|
+
return this.createSuccessResponse(request.requestId, {
|
|
89
|
+
authenticated: true,
|
|
90
|
+
message: 'Authentication is not enabled'
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const { credentials } = request;
|
|
94
|
+
// Check API key authentication
|
|
95
|
+
if (credentials.apiKey &&
|
|
96
|
+
this.options.apiKeys?.includes(credentials.apiKey)) {
|
|
97
|
+
const token = this.generateAuthToken('api-user');
|
|
98
|
+
return this.createSuccessResponse(request.requestId, {
|
|
99
|
+
authenticated: true,
|
|
100
|
+
token
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
// Check username/password authentication
|
|
104
|
+
// This is a placeholder - in a real implementation, you would check against a database
|
|
105
|
+
if (credentials.username === 'admin' &&
|
|
106
|
+
credentials.password === 'password') {
|
|
107
|
+
const token = this.generateAuthToken(credentials.username);
|
|
108
|
+
return this.createSuccessResponse(request.requestId, {
|
|
109
|
+
authenticated: true,
|
|
110
|
+
token
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return this.createErrorResponse(request.requestId, 'INVALID_CREDENTIALS', 'Invalid credentials');
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
return this.createErrorResponse(request.requestId, 'INTERNAL_ERROR', error instanceof Error ? error.message : String(error));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Checks if a request is valid
|
|
121
|
+
* @param request The request to check
|
|
122
|
+
* @returns Whether the request is valid
|
|
123
|
+
*/
|
|
124
|
+
isValidRequest(request) {
|
|
125
|
+
return (request &&
|
|
126
|
+
typeof request === 'object' &&
|
|
127
|
+
request.type &&
|
|
128
|
+
request.requestId &&
|
|
129
|
+
request.version);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Checks if a request is authenticated
|
|
133
|
+
* @param request The request to check
|
|
134
|
+
* @returns Whether the request is authenticated
|
|
135
|
+
*/
|
|
136
|
+
isAuthenticated(request) {
|
|
137
|
+
if (!this.options.enableAuth) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return request.authToken ? this.isValidToken(request.authToken) : false;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Checks if a token is valid
|
|
144
|
+
* @param token The token to check
|
|
145
|
+
* @returns Whether the token is valid
|
|
146
|
+
*/
|
|
147
|
+
isValidToken(token) {
|
|
148
|
+
const tokenInfo = this.authTokens.get(token);
|
|
149
|
+
if (!tokenInfo) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
if (tokenInfo.expires < Date.now()) {
|
|
153
|
+
this.authTokens.delete(token);
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Generates an authentication token
|
|
160
|
+
* @param userId The user ID to associate with the token
|
|
161
|
+
* @returns The generated token
|
|
162
|
+
*/
|
|
163
|
+
generateAuthToken(userId) {
|
|
164
|
+
const token = uuidv4();
|
|
165
|
+
const expires = Date.now() + 24 * 60 * 60 * 1000; // 24 hours
|
|
166
|
+
this.authTokens.set(token, { userId, expires });
|
|
167
|
+
return token;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Checks if a client has exceeded the rate limit
|
|
171
|
+
* @param clientId The client ID to check
|
|
172
|
+
* @returns Whether the client is within the rate limit
|
|
173
|
+
*/
|
|
174
|
+
checkRateLimit(clientId) {
|
|
175
|
+
if (!this.options.rateLimit) {
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
const now = Date.now();
|
|
179
|
+
const limit = this.rateLimits.get(clientId);
|
|
180
|
+
if (!limit) {
|
|
181
|
+
this.rateLimits.set(clientId, {
|
|
182
|
+
count: 1,
|
|
183
|
+
resetTime: now + this.options.rateLimit.windowMs
|
|
184
|
+
});
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
if (limit.resetTime < now) {
|
|
188
|
+
limit.count = 1;
|
|
189
|
+
limit.resetTime = now + this.options.rateLimit.windowMs;
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
if (limit.count >= this.options.rateLimit.maxRequests) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
limit.count++;
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Creates a success response
|
|
200
|
+
* @param requestId The request ID
|
|
201
|
+
* @param data The response data
|
|
202
|
+
* @returns An MCP response
|
|
203
|
+
*/
|
|
204
|
+
createSuccessResponse(requestId, data) {
|
|
205
|
+
return {
|
|
206
|
+
success: true,
|
|
207
|
+
requestId,
|
|
208
|
+
version: MCP_VERSION,
|
|
209
|
+
data
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Creates an error response
|
|
214
|
+
* @param requestId The request ID
|
|
215
|
+
* @param code The error code
|
|
216
|
+
* @param message The error message
|
|
217
|
+
* @param details Optional error details
|
|
218
|
+
* @returns An MCP response
|
|
219
|
+
*/
|
|
220
|
+
createErrorResponse(requestId, code, message, details) {
|
|
221
|
+
return {
|
|
222
|
+
success: false,
|
|
223
|
+
requestId,
|
|
224
|
+
version: MCP_VERSION,
|
|
225
|
+
error: {
|
|
226
|
+
code,
|
|
227
|
+
message,
|
|
228
|
+
details
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Creates a new request ID
|
|
234
|
+
* @returns A new UUID
|
|
235
|
+
*/
|
|
236
|
+
generateRequestId() {
|
|
237
|
+
return uuidv4();
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Handles an MCP request directly (for in-process models)
|
|
241
|
+
* @param request The MCP request
|
|
242
|
+
* @returns An MCP response
|
|
243
|
+
*/
|
|
244
|
+
async handleMCPRequest(request) {
|
|
245
|
+
return await this.handleRequest(request);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=brainyMCPService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brainyMCPService.js","sourceRoot":"","sources":["../../src/mcp/brainyMCPService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Control Protocol (MCP) for Brainy
|
|
3
|
+
*
|
|
4
|
+
* This module provides a Model Control Protocol (MCP) implementation for Brainy,
|
|
5
|
+
* allowing external models to access Brainy data and use the augmentation pipeline as tools.
|
|
6
|
+
*/
|
|
7
|
+
// Import and re-export the MCP components
|
|
8
|
+
import { BrainyMCPAdapter } from './brainyMCPAdapter.js';
|
|
9
|
+
import { MCPAugmentationToolset } from './mcpAugmentationToolset.js';
|
|
10
|
+
import { BrainyMCPService } from './brainyMCPService.js';
|
|
11
|
+
// Export the MCP components
|
|
12
|
+
export { BrainyMCPAdapter };
|
|
13
|
+
export { MCPAugmentationToolset };
|
|
14
|
+
export { BrainyMCPService };
|
|
15
|
+
// Export the MCP types
|
|
16
|
+
export * from '../types/mcpTypes.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,0CAA0C;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,4BAA4B;AAC5B,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAE,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAE3B,uBAAuB;AACvB,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPAugmentationToolset
|
|
3
|
+
*
|
|
4
|
+
* This class exposes the Brainy augmentation pipeline as tools through the Model Control Protocol (MCP).
|
|
5
|
+
* It provides methods for getting available tools and executing tools.
|
|
6
|
+
*/
|
|
7
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
8
|
+
import { MCP_VERSION } from '../types/mcpTypes.js';
|
|
9
|
+
import { AugmentationType } from '../types/augmentations.js';
|
|
10
|
+
// Import the augmentation pipeline
|
|
11
|
+
import { augmentationPipeline } from '../augmentationPipeline.js';
|
|
12
|
+
export class MCPAugmentationToolset {
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new MCPAugmentationToolset
|
|
15
|
+
*/
|
|
16
|
+
constructor() {
|
|
17
|
+
// No initialization needed
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Handles an MCP tool execution request
|
|
21
|
+
* @param request The MCP request
|
|
22
|
+
* @returns An MCP response
|
|
23
|
+
*/
|
|
24
|
+
async handleRequest(request) {
|
|
25
|
+
try {
|
|
26
|
+
const { toolName, parameters } = request;
|
|
27
|
+
// Extract the augmentation type and method from the tool name
|
|
28
|
+
// Tool names are in the format: brainy_{augmentationType}_{method}
|
|
29
|
+
const parts = toolName.split('_');
|
|
30
|
+
if (parts.length < 3 || parts[0] !== 'brainy') {
|
|
31
|
+
return this.createErrorResponse(request.requestId, 'INVALID_TOOL', `Invalid tool name: ${toolName}. Tool names should be in the format: brainy_{augmentationType}_{method}`);
|
|
32
|
+
}
|
|
33
|
+
const augmentationType = parts[1];
|
|
34
|
+
const method = parts.slice(2).join('_');
|
|
35
|
+
// Validate the augmentation type
|
|
36
|
+
if (!this.isValidAugmentationType(augmentationType)) {
|
|
37
|
+
return this.createErrorResponse(request.requestId, 'INVALID_AUGMENTATION_TYPE', `Invalid augmentation type: ${augmentationType}`);
|
|
38
|
+
}
|
|
39
|
+
// Execute the appropriate pipeline based on the augmentation type
|
|
40
|
+
const result = await this.executePipeline(augmentationType, method, parameters);
|
|
41
|
+
return this.createSuccessResponse(request.requestId, result);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return this.createErrorResponse(request.requestId, 'INTERNAL_ERROR', error instanceof Error ? error.message : String(error));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Gets all available tools
|
|
49
|
+
* @returns An array of MCP tools
|
|
50
|
+
*/
|
|
51
|
+
async getAvailableTools() {
|
|
52
|
+
const tools = [];
|
|
53
|
+
// Get all available augmentation types
|
|
54
|
+
const augmentationTypes = augmentationPipeline.getAvailableAugmentationTypes();
|
|
55
|
+
for (const type of augmentationTypes) {
|
|
56
|
+
// Get all augmentations of this type
|
|
57
|
+
const augmentations = augmentationPipeline.getAugmentationsByType(type);
|
|
58
|
+
for (const augmentation of augmentations) {
|
|
59
|
+
// Get all methods of this augmentation (excluding private methods and base methods)
|
|
60
|
+
const methods = Object.getOwnPropertyNames(Object.getPrototypeOf(augmentation))
|
|
61
|
+
.filter(method => !method.startsWith('_') &&
|
|
62
|
+
method !== 'constructor' &&
|
|
63
|
+
method !== 'initialize' &&
|
|
64
|
+
method !== 'shutDown' &&
|
|
65
|
+
method !== 'getStatus' &&
|
|
66
|
+
typeof augmentation[method] === 'function');
|
|
67
|
+
// Create a tool for each method
|
|
68
|
+
for (const method of methods) {
|
|
69
|
+
tools.push(this.createToolDefinition(type, augmentation.name, method));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return tools;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Creates a tool definition
|
|
77
|
+
* @param type The augmentation type
|
|
78
|
+
* @param augmentationName The augmentation name
|
|
79
|
+
* @param method The method name
|
|
80
|
+
* @returns An MCP tool definition
|
|
81
|
+
*/
|
|
82
|
+
createToolDefinition(type, augmentationName, method) {
|
|
83
|
+
return {
|
|
84
|
+
name: `brainy_${type}_${method}`,
|
|
85
|
+
description: `Access to Brainy's ${type} augmentation '${augmentationName}' method '${method}'`,
|
|
86
|
+
parameters: {
|
|
87
|
+
type: 'object',
|
|
88
|
+
properties: {
|
|
89
|
+
args: {
|
|
90
|
+
type: 'array',
|
|
91
|
+
description: `Arguments for the ${method} method`
|
|
92
|
+
},
|
|
93
|
+
options: {
|
|
94
|
+
type: 'object',
|
|
95
|
+
description: 'Optional execution options'
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
required: ['args']
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Executes the appropriate pipeline based on the augmentation type
|
|
104
|
+
* @param type The augmentation type
|
|
105
|
+
* @param method The method to execute
|
|
106
|
+
* @param parameters The parameters for the method
|
|
107
|
+
* @returns The result of the pipeline execution
|
|
108
|
+
*/
|
|
109
|
+
async executePipeline(type, method, parameters) {
|
|
110
|
+
const { args = [], options = {} } = parameters;
|
|
111
|
+
switch (type) {
|
|
112
|
+
case AugmentationType.SENSE:
|
|
113
|
+
return await augmentationPipeline.executeSensePipeline(method, args, options);
|
|
114
|
+
case AugmentationType.CONDUIT:
|
|
115
|
+
return await augmentationPipeline.executeConduitPipeline(method, args, options);
|
|
116
|
+
case AugmentationType.COGNITION:
|
|
117
|
+
return await augmentationPipeline.executeCognitionPipeline(method, args, options);
|
|
118
|
+
case AugmentationType.MEMORY:
|
|
119
|
+
return await augmentationPipeline.executeMemoryPipeline(method, args, options);
|
|
120
|
+
case AugmentationType.PERCEPTION:
|
|
121
|
+
return await augmentationPipeline.executePerceptionPipeline(method, args, options);
|
|
122
|
+
case AugmentationType.DIALOG:
|
|
123
|
+
return await augmentationPipeline.executeDialogPipeline(method, args, options);
|
|
124
|
+
case AugmentationType.ACTIVATION:
|
|
125
|
+
return await augmentationPipeline.executeActivationPipeline(method, args, options);
|
|
126
|
+
default:
|
|
127
|
+
throw new Error(`Unsupported augmentation type: ${type}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Checks if an augmentation type is valid
|
|
132
|
+
* @param type The augmentation type to check
|
|
133
|
+
* @returns Whether the augmentation type is valid
|
|
134
|
+
*/
|
|
135
|
+
isValidAugmentationType(type) {
|
|
136
|
+
return Object.values(AugmentationType).includes(type);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Creates a success response
|
|
140
|
+
* @param requestId The request ID
|
|
141
|
+
* @param data The response data
|
|
142
|
+
* @returns An MCP response
|
|
143
|
+
*/
|
|
144
|
+
createSuccessResponse(requestId, data) {
|
|
145
|
+
return {
|
|
146
|
+
success: true,
|
|
147
|
+
requestId,
|
|
148
|
+
version: MCP_VERSION,
|
|
149
|
+
data
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Creates an error response
|
|
154
|
+
* @param requestId The request ID
|
|
155
|
+
* @param code The error code
|
|
156
|
+
* @param message The error message
|
|
157
|
+
* @param details Optional error details
|
|
158
|
+
* @returns An MCP response
|
|
159
|
+
*/
|
|
160
|
+
createErrorResponse(requestId, code, message, details) {
|
|
161
|
+
return {
|
|
162
|
+
success: false,
|
|
163
|
+
requestId,
|
|
164
|
+
version: MCP_VERSION,
|
|
165
|
+
error: {
|
|
166
|
+
code,
|
|
167
|
+
message,
|
|
168
|
+
details
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Creates a new request ID
|
|
174
|
+
* @returns A new UUID
|
|
175
|
+
*/
|
|
176
|
+
generateRequestId() {
|
|
177
|
+
return uuidv4();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=mcpAugmentationToolset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcpAugmentationToolset.js","sourceRoot":"","sources":["../../src/mcp/mcpAugmentationToolset.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,12 @@ export declare abstract class BaseStorageAdapter implements StorageAdapter {
|
|
|
29
29
|
quota: number | null;
|
|
30
30
|
details?: Record<string, any>;
|
|
31
31
|
}>;
|
|
32
|
+
protected statisticsCache: StatisticsData | null;
|
|
33
|
+
protected statisticsBatchUpdateTimerId: NodeJS.Timeout | null;
|
|
34
|
+
protected statisticsModified: boolean;
|
|
35
|
+
protected lastStatisticsFlushTime: number;
|
|
36
|
+
protected readonly MIN_FLUSH_INTERVAL_MS = 5000;
|
|
37
|
+
protected readonly MAX_FLUSH_DELAY_MS = 30000;
|
|
32
38
|
protected abstract saveStatisticsData(statistics: StatisticsData): Promise<void>;
|
|
33
39
|
protected abstract getStatisticsData(): Promise<StatisticsData | null>;
|
|
34
40
|
/**
|
|
@@ -41,6 +47,14 @@ export declare abstract class BaseStorageAdapter implements StorageAdapter {
|
|
|
41
47
|
* @returns Promise that resolves to the statistics data
|
|
42
48
|
*/
|
|
43
49
|
getStatistics(): Promise<StatisticsData | null>;
|
|
50
|
+
/**
|
|
51
|
+
* Schedule a batch update of statistics
|
|
52
|
+
*/
|
|
53
|
+
protected scheduleBatchUpdate(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Flush statistics to storage
|
|
56
|
+
*/
|
|
57
|
+
protected flushStatistics(): Promise<void>;
|
|
44
58
|
/**
|
|
45
59
|
* Increment a statistic counter
|
|
46
60
|
* @param type The type of statistic to increment ('noun', 'verb', 'metadata')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/baseStorageAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnE;;GAEG;AACH,8BAAsB,kBAAmB,YAAW,cAAc;IAEhE,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3D,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3D,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC;QACnC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC9B,CAAC;IAGF,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAChF,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAEtE;;;OAGG;IACG,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"baseStorageAdapter.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/baseStorageAdapter.ts"],"names":[],"mappings":"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"}
|