@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.
Files changed (96) hide show
  1. package/README.md +323 -0
  2. package/__tests__/hooks/bash-safety.test.ts +289 -0
  3. package/__tests__/hooks/file-organization.test.ts +335 -0
  4. package/__tests__/hooks/git-commit.test.ts +336 -0
  5. package/__tests__/hooks/index.ts +23 -0
  6. package/__tests__/hooks/session-hooks.test.ts +357 -0
  7. package/__tests__/hooks/task-hooks.test.ts +193 -0
  8. package/docs/EVENTS_IMPLEMENTATION_SUMMARY.md +388 -0
  9. package/docs/EVENTS_QUICK_REFERENCE.md +470 -0
  10. package/docs/EVENTS_README.md +352 -0
  11. package/package.json +39 -0
  12. package/src/core/config/defaults.ts +207 -0
  13. package/src/core/config/index.ts +15 -0
  14. package/src/core/config/loader.ts +271 -0
  15. package/src/core/config/schema.ts +188 -0
  16. package/src/core/config/validator.ts +209 -0
  17. package/src/core/event-bus.ts +236 -0
  18. package/src/core/index.ts +22 -0
  19. package/src/core/interfaces/agent.interface.ts +251 -0
  20. package/src/core/interfaces/coordinator.interface.ts +363 -0
  21. package/src/core/interfaces/event.interface.ts +267 -0
  22. package/src/core/interfaces/index.ts +19 -0
  23. package/src/core/interfaces/memory.interface.ts +332 -0
  24. package/src/core/interfaces/task.interface.ts +223 -0
  25. package/src/core/orchestrator/event-coordinator.ts +122 -0
  26. package/src/core/orchestrator/health-monitor.ts +214 -0
  27. package/src/core/orchestrator/index.ts +89 -0
  28. package/src/core/orchestrator/lifecycle-manager.ts +263 -0
  29. package/src/core/orchestrator/session-manager.ts +279 -0
  30. package/src/core/orchestrator/task-manager.ts +317 -0
  31. package/src/events/domain-events.ts +584 -0
  32. package/src/events/event-store.test.ts +387 -0
  33. package/src/events/event-store.ts +588 -0
  34. package/src/events/example-usage.ts +293 -0
  35. package/src/events/index.ts +90 -0
  36. package/src/events/projections.ts +561 -0
  37. package/src/events/state-reconstructor.ts +349 -0
  38. package/src/events.ts +367 -0
  39. package/src/hooks/INTEGRATION.md +658 -0
  40. package/src/hooks/README.md +532 -0
  41. package/src/hooks/example-usage.ts +499 -0
  42. package/src/hooks/executor.ts +379 -0
  43. package/src/hooks/hooks.test.ts +421 -0
  44. package/src/hooks/index.ts +131 -0
  45. package/src/hooks/registry.ts +333 -0
  46. package/src/hooks/safety/bash-safety.ts +604 -0
  47. package/src/hooks/safety/file-organization.ts +473 -0
  48. package/src/hooks/safety/git-commit.ts +623 -0
  49. package/src/hooks/safety/index.ts +46 -0
  50. package/src/hooks/session-hooks.ts +559 -0
  51. package/src/hooks/task-hooks.ts +513 -0
  52. package/src/hooks/types.ts +357 -0
  53. package/src/hooks/verify-exports.test.ts +125 -0
  54. package/src/index.ts +195 -0
  55. package/src/mcp/connection-pool.ts +438 -0
  56. package/src/mcp/index.ts +183 -0
  57. package/src/mcp/server.ts +774 -0
  58. package/src/mcp/session-manager.ts +428 -0
  59. package/src/mcp/tool-registry.ts +566 -0
  60. package/src/mcp/transport/http.ts +557 -0
  61. package/src/mcp/transport/index.ts +294 -0
  62. package/src/mcp/transport/stdio.ts +324 -0
  63. package/src/mcp/transport/websocket.ts +484 -0
  64. package/src/mcp/types.ts +565 -0
  65. package/src/plugin-interface.ts +663 -0
  66. package/src/plugin-loader.ts +638 -0
  67. package/src/plugin-registry.ts +604 -0
  68. package/src/plugins/index.ts +34 -0
  69. package/src/plugins/official/hive-mind-plugin.ts +330 -0
  70. package/src/plugins/official/index.ts +24 -0
  71. package/src/plugins/official/maestro-plugin.ts +508 -0
  72. package/src/plugins/types.ts +108 -0
  73. package/src/resilience/bulkhead.ts +277 -0
  74. package/src/resilience/circuit-breaker.ts +326 -0
  75. package/src/resilience/index.ts +26 -0
  76. package/src/resilience/rate-limiter.ts +420 -0
  77. package/src/resilience/retry.ts +224 -0
  78. package/src/security/index.ts +39 -0
  79. package/src/security/input-validation.ts +265 -0
  80. package/src/security/secure-random.ts +159 -0
  81. package/src/services/index.ts +16 -0
  82. package/src/services/v3-progress.service.ts +505 -0
  83. package/src/types/agent.types.ts +144 -0
  84. package/src/types/index.ts +22 -0
  85. package/src/types/mcp.types.ts +300 -0
  86. package/src/types/memory.types.ts +263 -0
  87. package/src/types/swarm.types.ts +255 -0
  88. package/src/types/task.types.ts +205 -0
  89. package/src/types.ts +367 -0
  90. package/src/utils/secure-logger.d.ts +69 -0
  91. package/src/utils/secure-logger.d.ts.map +1 -0
  92. package/src/utils/secure-logger.js +208 -0
  93. package/src/utils/secure-logger.js.map +1 -0
  94. package/src/utils/secure-logger.ts +257 -0
  95. package/tmp.json +0 -0
  96. 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
+ }