@sparkleideas/shared 3.0.0-alpha.7
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 +323 -0
- package/__tests__/hooks/bash-safety.test.ts +289 -0
- package/__tests__/hooks/file-organization.test.ts +335 -0
- package/__tests__/hooks/git-commit.test.ts +336 -0
- package/__tests__/hooks/index.ts +23 -0
- package/__tests__/hooks/session-hooks.test.ts +357 -0
- package/__tests__/hooks/task-hooks.test.ts +193 -0
- package/docs/EVENTS_IMPLEMENTATION_SUMMARY.md +388 -0
- package/docs/EVENTS_QUICK_REFERENCE.md +470 -0
- package/docs/EVENTS_README.md +352 -0
- package/package.json +39 -0
- package/src/core/config/defaults.ts +207 -0
- package/src/core/config/index.ts +15 -0
- package/src/core/config/loader.ts +271 -0
- package/src/core/config/schema.ts +188 -0
- package/src/core/config/validator.ts +209 -0
- package/src/core/event-bus.ts +236 -0
- package/src/core/index.ts +22 -0
- package/src/core/interfaces/agent.interface.ts +251 -0
- package/src/core/interfaces/coordinator.interface.ts +363 -0
- package/src/core/interfaces/event.interface.ts +267 -0
- package/src/core/interfaces/index.ts +19 -0
- package/src/core/interfaces/memory.interface.ts +332 -0
- package/src/core/interfaces/task.interface.ts +223 -0
- package/src/core/orchestrator/event-coordinator.ts +122 -0
- package/src/core/orchestrator/health-monitor.ts +214 -0
- package/src/core/orchestrator/index.ts +89 -0
- package/src/core/orchestrator/lifecycle-manager.ts +263 -0
- package/src/core/orchestrator/session-manager.ts +279 -0
- package/src/core/orchestrator/task-manager.ts +317 -0
- package/src/events/domain-events.ts +584 -0
- package/src/events/event-store.test.ts +387 -0
- package/src/events/event-store.ts +588 -0
- package/src/events/example-usage.ts +293 -0
- package/src/events/index.ts +90 -0
- package/src/events/projections.ts +561 -0
- package/src/events/state-reconstructor.ts +349 -0
- package/src/events.ts +367 -0
- package/src/hooks/INTEGRATION.md +658 -0
- package/src/hooks/README.md +532 -0
- package/src/hooks/example-usage.ts +499 -0
- package/src/hooks/executor.ts +379 -0
- package/src/hooks/hooks.test.ts +421 -0
- package/src/hooks/index.ts +131 -0
- package/src/hooks/registry.ts +333 -0
- package/src/hooks/safety/bash-safety.ts +604 -0
- package/src/hooks/safety/file-organization.ts +473 -0
- package/src/hooks/safety/git-commit.ts +623 -0
- package/src/hooks/safety/index.ts +46 -0
- package/src/hooks/session-hooks.ts +559 -0
- package/src/hooks/task-hooks.ts +513 -0
- package/src/hooks/types.ts +357 -0
- package/src/hooks/verify-exports.test.ts +125 -0
- package/src/index.ts +195 -0
- package/src/mcp/connection-pool.ts +438 -0
- package/src/mcp/index.ts +183 -0
- package/src/mcp/server.ts +774 -0
- package/src/mcp/session-manager.ts +428 -0
- package/src/mcp/tool-registry.ts +566 -0
- package/src/mcp/transport/http.ts +557 -0
- package/src/mcp/transport/index.ts +294 -0
- package/src/mcp/transport/stdio.ts +324 -0
- package/src/mcp/transport/websocket.ts +484 -0
- package/src/mcp/types.ts +565 -0
- package/src/plugin-interface.ts +663 -0
- package/src/plugin-loader.ts +638 -0
- package/src/plugin-registry.ts +604 -0
- package/src/plugins/index.ts +34 -0
- package/src/plugins/official/hive-mind-plugin.ts +330 -0
- package/src/plugins/official/index.ts +24 -0
- package/src/plugins/official/maestro-plugin.ts +508 -0
- package/src/plugins/types.ts +108 -0
- package/src/resilience/bulkhead.ts +277 -0
- package/src/resilience/circuit-breaker.ts +326 -0
- package/src/resilience/index.ts +26 -0
- package/src/resilience/rate-limiter.ts +420 -0
- package/src/resilience/retry.ts +224 -0
- package/src/security/index.ts +39 -0
- package/src/security/input-validation.ts +265 -0
- package/src/security/secure-random.ts +159 -0
- package/src/services/index.ts +16 -0
- package/src/services/v3-progress.service.ts +505 -0
- package/src/types/agent.types.ts +144 -0
- package/src/types/index.ts +22 -0
- package/src/types/mcp.types.ts +300 -0
- package/src/types/memory.types.ts +263 -0
- package/src/types/swarm.types.ts +255 -0
- package/src/types/task.types.ts +205 -0
- package/src/types.ts +367 -0
- package/src/utils/secure-logger.d.ts +69 -0
- package/src/utils/secure-logger.d.ts.map +1 -0
- package/src/utils/secure-logger.js +208 -0
- package/src/utils/secure-logger.js.map +1 -0
- package/src/utils/secure-logger.ts +257 -0
- package/tmp.json +0 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 MCP Types
|
|
3
|
+
* Model Context Protocol type definitions
|
|
4
|
+
* Aligned with ADR-005 (MCP-first API design)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* MCP tool definition
|
|
9
|
+
*/
|
|
10
|
+
export interface MCPTool {
|
|
11
|
+
name: string;
|
|
12
|
+
description: string;
|
|
13
|
+
inputSchema: MCPInputSchema;
|
|
14
|
+
handler: MCPToolHandler;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* MCP input schema (JSON Schema)
|
|
19
|
+
*/
|
|
20
|
+
export interface MCPInputSchema {
|
|
21
|
+
type: 'object';
|
|
22
|
+
properties: Record<string, MCPPropertySchema>;
|
|
23
|
+
required?: string[];
|
|
24
|
+
additionalProperties?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* MCP property schema
|
|
29
|
+
*/
|
|
30
|
+
export interface MCPPropertySchema {
|
|
31
|
+
type: 'string' | 'number' | 'boolean' | 'array' | 'object';
|
|
32
|
+
description?: string;
|
|
33
|
+
enum?: unknown[];
|
|
34
|
+
default?: unknown;
|
|
35
|
+
items?: MCPPropertySchema;
|
|
36
|
+
properties?: Record<string, MCPPropertySchema>;
|
|
37
|
+
required?: string[];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* MCP tool handler
|
|
42
|
+
*/
|
|
43
|
+
export type MCPToolHandler = (params: Record<string, unknown>) => Promise<MCPToolResult>;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* MCP tool result
|
|
47
|
+
*/
|
|
48
|
+
export interface MCPToolResult {
|
|
49
|
+
content: MCPContent[];
|
|
50
|
+
isError?: boolean;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* MCP content types
|
|
55
|
+
*/
|
|
56
|
+
export type MCPContent =
|
|
57
|
+
| MCPTextContent
|
|
58
|
+
| MCPImageContent
|
|
59
|
+
| MCPResourceContent;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* MCP text content
|
|
63
|
+
*/
|
|
64
|
+
export interface MCPTextContent {
|
|
65
|
+
type: 'text';
|
|
66
|
+
text: string;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* MCP image content
|
|
71
|
+
*/
|
|
72
|
+
export interface MCPImageContent {
|
|
73
|
+
type: 'image';
|
|
74
|
+
data: string;
|
|
75
|
+
mimeType: string;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* MCP resource content
|
|
80
|
+
*/
|
|
81
|
+
export interface MCPResourceContent {
|
|
82
|
+
type: 'resource';
|
|
83
|
+
resource: {
|
|
84
|
+
uri: string;
|
|
85
|
+
mimeType?: string;
|
|
86
|
+
text?: string;
|
|
87
|
+
blob?: string;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* MCP server configuration
|
|
93
|
+
*/
|
|
94
|
+
export interface MCPServerConfig {
|
|
95
|
+
name: string;
|
|
96
|
+
version: string;
|
|
97
|
+
transport: MCPTransportConfig;
|
|
98
|
+
tools?: MCPTool[];
|
|
99
|
+
resources?: MCPResource[];
|
|
100
|
+
prompts?: MCPPrompt[];
|
|
101
|
+
capabilities?: MCPCapabilities;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* MCP transport configuration
|
|
106
|
+
*/
|
|
107
|
+
export interface MCPTransportConfig {
|
|
108
|
+
type: 'stdio' | 'http' | 'websocket';
|
|
109
|
+
port?: number;
|
|
110
|
+
host?: string;
|
|
111
|
+
path?: string;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* MCP resource definition
|
|
116
|
+
*/
|
|
117
|
+
export interface MCPResource {
|
|
118
|
+
uri: string;
|
|
119
|
+
name: string;
|
|
120
|
+
description?: string;
|
|
121
|
+
mimeType?: string;
|
|
122
|
+
handler: () => Promise<MCPResourceContent['resource']>;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* MCP prompt definition
|
|
127
|
+
*/
|
|
128
|
+
export interface MCPPrompt {
|
|
129
|
+
name: string;
|
|
130
|
+
description?: string;
|
|
131
|
+
arguments?: MCPPromptArgument[];
|
|
132
|
+
handler: (args: Record<string, string>) => Promise<MCPPromptResult>;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* MCP prompt argument
|
|
137
|
+
*/
|
|
138
|
+
export interface MCPPromptArgument {
|
|
139
|
+
name: string;
|
|
140
|
+
description?: string;
|
|
141
|
+
required?: boolean;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* MCP prompt result
|
|
146
|
+
*/
|
|
147
|
+
export interface MCPPromptResult {
|
|
148
|
+
messages: MCPPromptMessage[];
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* MCP prompt message
|
|
153
|
+
*/
|
|
154
|
+
export interface MCPPromptMessage {
|
|
155
|
+
role: 'user' | 'assistant';
|
|
156
|
+
content: MCPContent;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* MCP capabilities
|
|
161
|
+
*/
|
|
162
|
+
export interface MCPCapabilities {
|
|
163
|
+
tools?: boolean;
|
|
164
|
+
resources?: boolean;
|
|
165
|
+
prompts?: boolean;
|
|
166
|
+
logging?: boolean;
|
|
167
|
+
experimental?: Record<string, boolean>;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* MCP request types
|
|
172
|
+
*/
|
|
173
|
+
export type MCPRequest =
|
|
174
|
+
| MCPInitializeRequest
|
|
175
|
+
| MCPToolCallRequest
|
|
176
|
+
| MCPResourceReadRequest
|
|
177
|
+
| MCPPromptGetRequest
|
|
178
|
+
| MCPListRequest;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* MCP initialize request
|
|
182
|
+
*/
|
|
183
|
+
export interface MCPInitializeRequest {
|
|
184
|
+
method: 'initialize';
|
|
185
|
+
params: {
|
|
186
|
+
protocolVersion: string;
|
|
187
|
+
capabilities: MCPCapabilities;
|
|
188
|
+
clientInfo: {
|
|
189
|
+
name: string;
|
|
190
|
+
version: string;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* MCP tool call request
|
|
197
|
+
*/
|
|
198
|
+
export interface MCPToolCallRequest {
|
|
199
|
+
method: 'tools/call';
|
|
200
|
+
params: {
|
|
201
|
+
name: string;
|
|
202
|
+
arguments: Record<string, unknown>;
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* MCP resource read request
|
|
208
|
+
*/
|
|
209
|
+
export interface MCPResourceReadRequest {
|
|
210
|
+
method: 'resources/read';
|
|
211
|
+
params: {
|
|
212
|
+
uri: string;
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* MCP prompt get request
|
|
218
|
+
*/
|
|
219
|
+
export interface MCPPromptGetRequest {
|
|
220
|
+
method: 'prompts/get';
|
|
221
|
+
params: {
|
|
222
|
+
name: string;
|
|
223
|
+
arguments?: Record<string, string>;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* MCP list request
|
|
229
|
+
*/
|
|
230
|
+
export interface MCPListRequest {
|
|
231
|
+
method: 'tools/list' | 'resources/list' | 'prompts/list';
|
|
232
|
+
params?: Record<string, unknown>;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* MCP response types
|
|
237
|
+
*/
|
|
238
|
+
export interface MCPResponse<T = unknown> {
|
|
239
|
+
id: string | number;
|
|
240
|
+
result?: T;
|
|
241
|
+
error?: MCPError;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* MCP error
|
|
246
|
+
*/
|
|
247
|
+
export interface MCPError {
|
|
248
|
+
code: number;
|
|
249
|
+
message: string;
|
|
250
|
+
data?: unknown;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* MCP event payloads
|
|
255
|
+
*/
|
|
256
|
+
export interface MCPEventPayloads {
|
|
257
|
+
'mcp:initialized': {
|
|
258
|
+
serverName: string;
|
|
259
|
+
version: string;
|
|
260
|
+
capabilities: MCPCapabilities;
|
|
261
|
+
};
|
|
262
|
+
'mcp:tool:called': {
|
|
263
|
+
toolName: string;
|
|
264
|
+
arguments: Record<string, unknown>;
|
|
265
|
+
duration: number;
|
|
266
|
+
success: boolean;
|
|
267
|
+
};
|
|
268
|
+
'mcp:resource:read': {
|
|
269
|
+
uri: string;
|
|
270
|
+
mimeType?: string;
|
|
271
|
+
size: number;
|
|
272
|
+
};
|
|
273
|
+
'mcp:prompt:executed': {
|
|
274
|
+
promptName: string;
|
|
275
|
+
arguments: Record<string, string>;
|
|
276
|
+
messageCount: number;
|
|
277
|
+
};
|
|
278
|
+
'mcp:error': {
|
|
279
|
+
error: MCPError;
|
|
280
|
+
request?: MCPRequest;
|
|
281
|
+
};
|
|
282
|
+
'mcp:shutdown': {
|
|
283
|
+
reason: string;
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* MCP server status
|
|
289
|
+
*/
|
|
290
|
+
export interface MCPServerStatus {
|
|
291
|
+
running: boolean;
|
|
292
|
+
transport: MCPTransportConfig['type'];
|
|
293
|
+
connectedClients: number;
|
|
294
|
+
toolsRegistered: number;
|
|
295
|
+
resourcesRegistered: number;
|
|
296
|
+
promptsRegistered: number;
|
|
297
|
+
requestsHandled: number;
|
|
298
|
+
errorsCount: number;
|
|
299
|
+
uptime: number;
|
|
300
|
+
}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Memory Types
|
|
3
|
+
* Modernized type system for memory management
|
|
4
|
+
* Aligned with AgentDB integration (ADR-006, ADR-009)
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { IMemoryEntry, MemoryType, IVectorSearchParams, IVectorSearchResult } from '../core/interfaces/memory.interface.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Memory backend type
|
|
11
|
+
*/
|
|
12
|
+
export type MemoryBackendType = 'sqlite' | '@sparkleideas/agentdb' | 'hybrid' | 'redis' | 'memory';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Memory backend configuration
|
|
16
|
+
*/
|
|
17
|
+
export interface MemoryBackendConfig {
|
|
18
|
+
type: MemoryBackendType;
|
|
19
|
+
path?: string;
|
|
20
|
+
maxSize?: number;
|
|
21
|
+
ttlMs?: number;
|
|
22
|
+
|
|
23
|
+
// SQLite specific
|
|
24
|
+
sqlite?: {
|
|
25
|
+
filename?: string;
|
|
26
|
+
inMemory?: boolean;
|
|
27
|
+
wal?: boolean;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// AgentDB specific (vector storage)
|
|
31
|
+
@sparkleideas/agentdb?: {
|
|
32
|
+
dimensions?: number;
|
|
33
|
+
indexType?: 'hnsw' | 'flat' | 'ivf';
|
|
34
|
+
efConstruction?: number;
|
|
35
|
+
m?: number;
|
|
36
|
+
quantization?: 'none' | 'scalar' | 'product';
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// Redis specific
|
|
40
|
+
redis?: {
|
|
41
|
+
host?: string;
|
|
42
|
+
port?: number;
|
|
43
|
+
password?: string;
|
|
44
|
+
db?: number;
|
|
45
|
+
keyPrefix?: string;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// Hybrid (SQLite + AgentDB)
|
|
49
|
+
hybrid?: {
|
|
50
|
+
sqliteConfig?: MemoryBackendConfig['sqlite'];
|
|
51
|
+
agentdbConfig?: MemoryBackendConfig['@sparkleideas/agentdb'];
|
|
52
|
+
vectorThreshold?: number;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Memory store options
|
|
58
|
+
*/
|
|
59
|
+
export interface MemoryStoreOptions {
|
|
60
|
+
ttlMs?: number;
|
|
61
|
+
type?: MemoryType;
|
|
62
|
+
tags?: string[];
|
|
63
|
+
embedding?: number[];
|
|
64
|
+
overwrite?: boolean;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Memory retrieve options
|
|
69
|
+
*/
|
|
70
|
+
export interface MemoryRetrieveOptions {
|
|
71
|
+
includeExpired?: boolean;
|
|
72
|
+
updateAccessTime?: boolean;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Memory list options
|
|
77
|
+
*/
|
|
78
|
+
export interface MemoryListOptions {
|
|
79
|
+
type?: MemoryType;
|
|
80
|
+
tags?: string[];
|
|
81
|
+
limit?: number;
|
|
82
|
+
offset?: number;
|
|
83
|
+
sortBy?: 'createdAt' | 'updatedAt' | 'key';
|
|
84
|
+
sortOrder?: 'asc' | 'desc';
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Memory search options (for vector search)
|
|
89
|
+
*/
|
|
90
|
+
export interface MemorySearchOptions extends IVectorSearchParams {
|
|
91
|
+
includeMetadata?: boolean;
|
|
92
|
+
rerank?: boolean;
|
|
93
|
+
rerankModel?: string;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Memory batch operation
|
|
98
|
+
*/
|
|
99
|
+
export interface MemoryBatchOperation {
|
|
100
|
+
operation: 'store' | 'update' | 'delete';
|
|
101
|
+
key: string;
|
|
102
|
+
value?: unknown;
|
|
103
|
+
options?: MemoryStoreOptions;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Memory batch result
|
|
108
|
+
*/
|
|
109
|
+
export interface MemoryBatchResult {
|
|
110
|
+
successful: string[];
|
|
111
|
+
failed: Array<{ key: string; error: Error }>;
|
|
112
|
+
duration: number;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Memory statistics
|
|
117
|
+
*/
|
|
118
|
+
export interface MemoryStats {
|
|
119
|
+
totalEntries: number;
|
|
120
|
+
totalSizeBytes: number;
|
|
121
|
+
memoryUsageMb: number;
|
|
122
|
+
entriesByType: Record<MemoryType, number>;
|
|
123
|
+
oldestEntry?: Date;
|
|
124
|
+
newestEntry?: Date;
|
|
125
|
+
avgEntrySize: number;
|
|
126
|
+
cacheHitRate?: number;
|
|
127
|
+
vectorCount?: number;
|
|
128
|
+
indexSize?: number;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Memory bank statistics
|
|
133
|
+
*/
|
|
134
|
+
export interface MemoryBankStats {
|
|
135
|
+
bankId: string;
|
|
136
|
+
agentId: string;
|
|
137
|
+
entryCount: number;
|
|
138
|
+
sizeMb: number;
|
|
139
|
+
createdAt: Date;
|
|
140
|
+
lastAccess: Date;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Pattern for ReasoningBank integration
|
|
145
|
+
*/
|
|
146
|
+
export interface LearnedPattern {
|
|
147
|
+
id: string;
|
|
148
|
+
sessionId: string;
|
|
149
|
+
task: string;
|
|
150
|
+
input: string;
|
|
151
|
+
output: string;
|
|
152
|
+
reward: number;
|
|
153
|
+
success: boolean;
|
|
154
|
+
critique?: string;
|
|
155
|
+
tokensUsed?: number;
|
|
156
|
+
latencyMs?: number;
|
|
157
|
+
createdAt: Date;
|
|
158
|
+
embedding?: number[];
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Pattern search result
|
|
163
|
+
*/
|
|
164
|
+
export interface PatternSearchResult {
|
|
165
|
+
pattern: LearnedPattern;
|
|
166
|
+
score: number;
|
|
167
|
+
relevance: number;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Memory event payloads
|
|
172
|
+
*/
|
|
173
|
+
export interface MemoryEventPayloads {
|
|
174
|
+
'memory:stored': {
|
|
175
|
+
entry: IMemoryEntry;
|
|
176
|
+
isNew: boolean;
|
|
177
|
+
};
|
|
178
|
+
'memory:retrieved': {
|
|
179
|
+
key: string;
|
|
180
|
+
found: boolean;
|
|
181
|
+
latencyMs: number;
|
|
182
|
+
};
|
|
183
|
+
'memory:updated': {
|
|
184
|
+
entry: IMemoryEntry;
|
|
185
|
+
previousValue: unknown;
|
|
186
|
+
};
|
|
187
|
+
'memory:deleted': {
|
|
188
|
+
key: string;
|
|
189
|
+
entry: IMemoryEntry;
|
|
190
|
+
};
|
|
191
|
+
'memory:cleared': {
|
|
192
|
+
entriesRemoved: number;
|
|
193
|
+
};
|
|
194
|
+
'memory:pruned': {
|
|
195
|
+
entriesRemoved: number;
|
|
196
|
+
durationMs: number;
|
|
197
|
+
};
|
|
198
|
+
'memory:search:completed': {
|
|
199
|
+
query: IVectorSearchParams;
|
|
200
|
+
resultCount: number;
|
|
201
|
+
latencyMs: number;
|
|
202
|
+
};
|
|
203
|
+
'memory:bank:created': {
|
|
204
|
+
bankId: string;
|
|
205
|
+
agentId: string;
|
|
206
|
+
};
|
|
207
|
+
'memory:bank:closed': {
|
|
208
|
+
bankId: string;
|
|
209
|
+
agentId: string;
|
|
210
|
+
entriesCount: number;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Cache configuration
|
|
216
|
+
*/
|
|
217
|
+
export interface CacheConfig {
|
|
218
|
+
enabled: boolean;
|
|
219
|
+
maxSize: number;
|
|
220
|
+
ttlMs: number;
|
|
221
|
+
strategy: 'lru' | 'lfu' | 'fifo';
|
|
222
|
+
warmupKeys?: string[];
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Vector index configuration
|
|
227
|
+
*/
|
|
228
|
+
export interface VectorIndexConfig {
|
|
229
|
+
type: 'hnsw' | 'flat' | 'ivf';
|
|
230
|
+
dimensions: number;
|
|
231
|
+
metric: 'cosine' | 'euclidean' | 'dot';
|
|
232
|
+
|
|
233
|
+
// HNSW specific (150x faster search)
|
|
234
|
+
hnsw?: {
|
|
235
|
+
m: number;
|
|
236
|
+
efConstruction: number;
|
|
237
|
+
efSearch: number;
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
// IVF specific
|
|
241
|
+
ivf?: {
|
|
242
|
+
nlist: number;
|
|
243
|
+
nprobe: number;
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
// Quantization (4-32x memory reduction)
|
|
247
|
+
quantization?: {
|
|
248
|
+
enabled: boolean;
|
|
249
|
+
bits: 4 | 8 | 16;
|
|
250
|
+
type: 'scalar' | 'product';
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Flash Attention configuration (2.49x-7.47x speedup)
|
|
256
|
+
*/
|
|
257
|
+
export interface FlashAttentionConfig {
|
|
258
|
+
enabled: boolean;
|
|
259
|
+
blockSize: number;
|
|
260
|
+
headDim: number;
|
|
261
|
+
causal: boolean;
|
|
262
|
+
softmaxScale?: number;
|
|
263
|
+
}
|