vesper-memory 0.5.1 → 0.5.3
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 +85 -18
- package/config/claude-rules/memory-discipline.md +39 -0
- package/config/claude-rules/vesper.md +218 -0
- package/dist/cli.js +59 -0
- package/dist/cli.js.map +1 -1
- package/dist/router/smart-router.d.ts +9 -3
- package/dist/router/smart-router.d.ts.map +1 -1
- package/dist/router/smart-router.js +236 -57
- package/dist/router/smart-router.js.map +1 -1
- package/dist/server.js +127 -2
- package/dist/server.js.map +1 -1
- package/dist/utils/validation.d.ts +12 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +13 -0
- package/dist/utils/validation.js.map +1 -1
- package/package.json +1 -2
- package/dist/cli 2.js +0 -583
- package/dist/cli.d 2.ts +0 -8
- package/dist/cli.d.ts 2.map +0 -1
- package/dist/cli.js 2.map +0 -1
- package/dist/config 2/rate-limits.d.ts +0 -76
- package/dist/config 2/rate-limits.d.ts.map +0 -1
- package/dist/config 2/rate-limits.js +0 -161
- package/dist/config 2/rate-limits.js.map +0 -1
- package/dist/consolidation 2/pipeline.d.ts +0 -52
- package/dist/consolidation 2/pipeline.d.ts.map +0 -1
- package/dist/consolidation 2/pipeline.js +0 -193
- package/dist/consolidation 2/pipeline.js.map +0 -1
- package/dist/embeddings 2/client.d.ts +0 -94
- package/dist/embeddings 2/client.d.ts.map +0 -1
- package/dist/embeddings 2/client.js +0 -144
- package/dist/embeddings 2/client.js.map +0 -1
- package/dist/memory-layers 2/semantic-memory.d.ts +0 -33
- package/dist/memory-layers 2/semantic-memory.d.ts.map +0 -1
- package/dist/memory-layers 2/semantic-memory.js +0 -114
- package/dist/memory-layers 2/semantic-memory.js.map +0 -1
- package/dist/memory-layers 2/skill-library.d.ts +0 -25
- package/dist/memory-layers 2/skill-library.d.ts.map +0 -1
- package/dist/memory-layers 2/skill-library.js +0 -54
- package/dist/memory-layers 2/skill-library.js.map +0 -1
- package/dist/memory-layers 2/working-memory.d.ts +0 -57
- package/dist/memory-layers 2/working-memory.d.ts.map +0 -1
- package/dist/memory-layers 2/working-memory.js +0 -153
- package/dist/memory-layers 2/working-memory.js.map +0 -1
- package/dist/middleware 2/auth.d.ts +0 -287
- package/dist/middleware 2/auth.d.ts.map +0 -1
- package/dist/middleware 2/auth.js +0 -610
- package/dist/middleware 2/auth.js.map +0 -1
- package/dist/monitoring 2/health.d.ts +0 -241
- package/dist/monitoring 2/health.d.ts.map +0 -1
- package/dist/monitoring 2/health.js +0 -649
- package/dist/monitoring 2/health.js.map +0 -1
- package/dist/monitoring 2/metrics.d.ts +0 -153
- package/dist/monitoring 2/metrics.d.ts.map +0 -1
- package/dist/monitoring 2/metrics.js +0 -349
- package/dist/monitoring 2/metrics.js.map +0 -1
- package/dist/retrieval 2/hybrid-search.d.ts +0 -186
- package/dist/retrieval 2/hybrid-search.d.ts.map +0 -1
- package/dist/retrieval 2/hybrid-search.js +0 -327
- package/dist/retrieval 2/hybrid-search.js.map +0 -1
- package/dist/router 2/smart-router.d.ts +0 -111
- package/dist/router 2/smart-router.d.ts.map +0 -1
- package/dist/router 2/smart-router.js +0 -383
- package/dist/router 2/smart-router.js.map +0 -1
- package/dist/security 2/rate-limit-middleware.d.ts +0 -119
- package/dist/security 2/rate-limit-middleware.d.ts.map +0 -1
- package/dist/security 2/rate-limit-middleware.js +0 -193
- package/dist/security 2/rate-limit-middleware.js.map +0 -1
- package/dist/server 2.js +0 -861
- package/dist/server-wrapper 2.js +0 -170
- package/dist/server-wrapper.d 2.ts +0 -12
- package/dist/server-wrapper.d.ts 2.map +0 -1
- package/dist/server-wrapper.js 2.map +0 -1
- package/dist/server.d 2.ts +0 -14
- package/dist/server.d.ts 2.map +0 -1
- package/dist/server.js 2.map +0 -1
- package/dist/synthesis 2/conflict-detector.d.ts +0 -43
- package/dist/synthesis 2/conflict-detector.d.ts.map +0 -1
- package/dist/synthesis 2/conflict-detector.js +0 -125
- package/dist/synthesis 2/conflict-detector.js.map +0 -1
- package/dist/utils 2/monitoring.d.ts +0 -25
- package/dist/utils 2/monitoring.d.ts.map +0 -1
- package/dist/utils 2/monitoring.js +0 -41
- package/dist/utils 2/monitoring.js.map +0 -1
- package/dist/utils 2/rate-limiter.d.ts +0 -97
- package/dist/utils 2/rate-limiter.d.ts.map +0 -1
- package/dist/utils 2/rate-limiter.js +0 -166
- package/dist/utils 2/rate-limiter.js.map +0 -1
- package/dist/utils 2/validation.d.ts +0 -139
- package/dist/utils 2/validation.d.ts.map +0 -1
- package/dist/utils 2/validation.js +0 -195
- package/dist/utils 2/validation.js.map +0 -1
|
@@ -1,287 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Authentication Middleware
|
|
3
|
-
*
|
|
4
|
-
* Implements API key authentication for MCP tools with:
|
|
5
|
-
* - Bearer token authentication
|
|
6
|
-
* - bcrypt password hashing
|
|
7
|
-
* - Key expiration
|
|
8
|
-
* - IP allowlisting
|
|
9
|
-
* - Scope-based authorization
|
|
10
|
-
* - Audit logging
|
|
11
|
-
*
|
|
12
|
-
* Security Features:
|
|
13
|
-
* - Constant-time comparison via bcrypt
|
|
14
|
-
* - No plaintext key storage
|
|
15
|
-
* - Gradual rollout support (AUTH_ENABLED env var)
|
|
16
|
-
* - Rate limit tier enforcement
|
|
17
|
-
*/
|
|
18
|
-
/** API key format prefix */
|
|
19
|
-
export declare const API_KEY_PREFIX = "mem_v1_";
|
|
20
|
-
/** Number of random bytes for key generation (30 bytes = 40 chars base64url) */
|
|
21
|
-
export declare const API_KEY_BYTES = 30;
|
|
22
|
-
/** bcrypt work factor (12 = ~250ms on modern hardware) */
|
|
23
|
-
export declare const BCRYPT_ROUNDS = 12;
|
|
24
|
-
/** Default key expiration in days */
|
|
25
|
-
export declare const DEFAULT_KEY_EXPIRATION_DAYS = 90;
|
|
26
|
-
/** Maximum allowed key expiration in days */
|
|
27
|
-
export declare const MAX_KEY_EXPIRATION_DAYS = 365;
|
|
28
|
-
/** Maximum grace period for key rotation in hours */
|
|
29
|
-
export declare const MAX_GRACE_PERIOD_HOURS = 168;
|
|
30
|
-
/** Valid scopes for API keys */
|
|
31
|
-
export declare const VALID_SCOPES: readonly ["store_memory", "retrieve_memory", "list_recent", "get_stats", "*"];
|
|
32
|
-
export type ValidScope = (typeof VALID_SCOPES)[number];
|
|
33
|
-
/** Result of API key generation */
|
|
34
|
-
export interface GeneratedApiKey {
|
|
35
|
-
fullKey: string;
|
|
36
|
-
keyPrefix: string;
|
|
37
|
-
keyHash: string;
|
|
38
|
-
}
|
|
39
|
-
/** API key record from database */
|
|
40
|
-
export interface ApiKeyRecord {
|
|
41
|
-
id: string;
|
|
42
|
-
userId: string;
|
|
43
|
-
keyHash: string;
|
|
44
|
-
scopes: string[];
|
|
45
|
-
tier: string;
|
|
46
|
-
expiresAt: Date | null;
|
|
47
|
-
ipAllowlist: string[] | null;
|
|
48
|
-
revokedAt: Date | null;
|
|
49
|
-
lastUsedAt: Date | null;
|
|
50
|
-
}
|
|
51
|
-
/** Authentication result */
|
|
52
|
-
export interface AuthResult {
|
|
53
|
-
authenticated: boolean;
|
|
54
|
-
userId: string;
|
|
55
|
-
keyId: string;
|
|
56
|
-
tier: string;
|
|
57
|
-
scopes: string[];
|
|
58
|
-
}
|
|
59
|
-
/** Audit log actions */
|
|
60
|
-
export declare enum AuditAction {
|
|
61
|
-
AUTHENTICATE = "authenticate",
|
|
62
|
-
RATE_LIMITED = "rate_limited",
|
|
63
|
-
REVOKED = "revoked",
|
|
64
|
-
ROTATED = "rotated",
|
|
65
|
-
CREATED = "created",
|
|
66
|
-
SCOPE_DENIED = "scope_denied",
|
|
67
|
-
IP_DENIED = "ip_denied",
|
|
68
|
-
EXPIRED = "expired"
|
|
69
|
-
}
|
|
70
|
-
/** Audit log entry */
|
|
71
|
-
export interface AuditEntry {
|
|
72
|
-
apiKeyId: string | null;
|
|
73
|
-
action: AuditAction;
|
|
74
|
-
success: boolean;
|
|
75
|
-
ipAddress: string | null;
|
|
76
|
-
userAgent?: string;
|
|
77
|
-
requestPath?: string;
|
|
78
|
-
failureReason?: string;
|
|
79
|
-
metadata?: Record<string, unknown>;
|
|
80
|
-
createdAt: Date;
|
|
81
|
-
}
|
|
82
|
-
/** Key rotation result */
|
|
83
|
-
export interface RotationResult {
|
|
84
|
-
newKey: GeneratedApiKey;
|
|
85
|
-
gracePeriodHours: number;
|
|
86
|
-
oldKeyValidUntil: Date;
|
|
87
|
-
}
|
|
88
|
-
/** Request context for authentication */
|
|
89
|
-
export interface AuthRequest {
|
|
90
|
-
apiKey: string | undefined;
|
|
91
|
-
ip: string;
|
|
92
|
-
toolName: string;
|
|
93
|
-
userAgent?: string;
|
|
94
|
-
}
|
|
95
|
-
/** Database interface for auth operations */
|
|
96
|
-
export interface AuthDatabase {
|
|
97
|
-
getApiKey(prefix: string): Promise<ApiKeyRecord | null>;
|
|
98
|
-
updateLastUsed(keyId: string): Promise<void>;
|
|
99
|
-
createAuditEntry(entry: AuditEntry): Promise<void>;
|
|
100
|
-
}
|
|
101
|
-
/** Rate limits per tier */
|
|
102
|
-
export interface TierRateLimits {
|
|
103
|
-
store_memory: number;
|
|
104
|
-
retrieve_memory: number;
|
|
105
|
-
list_recent: number;
|
|
106
|
-
get_stats: number;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Generate a new API key with cryptographically secure random bytes
|
|
110
|
-
*
|
|
111
|
-
* @returns Generated key with full key, prefix, and hash
|
|
112
|
-
*/
|
|
113
|
-
export declare function generateApiKey(): Promise<GeneratedApiKey>;
|
|
114
|
-
/**
|
|
115
|
-
* Verify an API key against its stored hash
|
|
116
|
-
*
|
|
117
|
-
* Uses bcrypt.compare for constant-time comparison
|
|
118
|
-
*
|
|
119
|
-
* @param providedKey - The API key provided by the client
|
|
120
|
-
* @param storedHash - The bcrypt hash stored in the database
|
|
121
|
-
* @returns true if key is valid
|
|
122
|
-
*/
|
|
123
|
-
export declare function verifyApiKey(providedKey: string, storedHash: string): Promise<boolean>;
|
|
124
|
-
/**
|
|
125
|
-
* Validate API key format without database lookup
|
|
126
|
-
*
|
|
127
|
-
* @param key - API key to validate
|
|
128
|
-
* @returns true if format is valid
|
|
129
|
-
*/
|
|
130
|
-
export declare function validateApiKeyFormat(key: string): boolean;
|
|
131
|
-
/**
|
|
132
|
-
* Extract the prefix from an API key for database lookup
|
|
133
|
-
*
|
|
134
|
-
* @param key - Full API key
|
|
135
|
-
* @returns 8-character prefix or null if invalid
|
|
136
|
-
*/
|
|
137
|
-
export declare function extractKeyPrefix(key: string): string | null;
|
|
138
|
-
/**
|
|
139
|
-
* Check if an API key is expired
|
|
140
|
-
*
|
|
141
|
-
* @param expiresAt - Expiration date (null means never expires)
|
|
142
|
-
* @returns true if key is expired
|
|
143
|
-
*/
|
|
144
|
-
export declare function isKeyExpired(expiresAt: Date | null): boolean;
|
|
145
|
-
/**
|
|
146
|
-
* Calculate default expiration date (90 days from now)
|
|
147
|
-
*
|
|
148
|
-
* @returns Expiration date
|
|
149
|
-
*/
|
|
150
|
-
export declare function calculateDefaultExpiration(): Date;
|
|
151
|
-
/**
|
|
152
|
-
* Calculate expiration date with custom days (capped at max)
|
|
153
|
-
*
|
|
154
|
-
* @param days - Number of days until expiration
|
|
155
|
-
* @returns Expiration date
|
|
156
|
-
*/
|
|
157
|
-
export declare function calculateExpiration(days: number): Date;
|
|
158
|
-
/**
|
|
159
|
-
* Get expiration days from environment or default
|
|
160
|
-
*
|
|
161
|
-
* @returns Number of days for key expiration
|
|
162
|
-
*/
|
|
163
|
-
export declare function getExpirationDays(): number;
|
|
164
|
-
/**
|
|
165
|
-
* Check if an IP address is in the allowlist
|
|
166
|
-
*
|
|
167
|
-
* Supports both individual IPs and CIDR notation
|
|
168
|
-
*
|
|
169
|
-
* @param ip - Client IP address
|
|
170
|
-
* @param allowlist - Array of allowed IPs/CIDRs (empty or null allows all)
|
|
171
|
-
* @returns true if IP is allowed
|
|
172
|
-
*/
|
|
173
|
-
export declare function isIpAllowed(ip: string, allowlist: string[] | null | undefined): boolean;
|
|
174
|
-
/**
|
|
175
|
-
* Check if user has required scope
|
|
176
|
-
*
|
|
177
|
-
* @param userScopes - Scopes granted to user
|
|
178
|
-
* @param requiredScope - Scope required for operation
|
|
179
|
-
* @returns true if user has scope
|
|
180
|
-
*/
|
|
181
|
-
export declare function hasScope(userScopes: string[] | null | undefined, requiredScope: string): boolean;
|
|
182
|
-
/**
|
|
183
|
-
* Rotate an API key with optional grace period
|
|
184
|
-
*
|
|
185
|
-
* @param oldKeyHash - Hash of the old key (unused, for signature compatibility)
|
|
186
|
-
* @param gracePeriodHours - Hours to allow old key (0 = immediate revocation)
|
|
187
|
-
* @returns New key and grace period info
|
|
188
|
-
*/
|
|
189
|
-
export declare function rotateApiKey(_oldKeyHash: string, gracePeriodHours: number): Promise<RotationResult>;
|
|
190
|
-
/**
|
|
191
|
-
* Create an audit log entry
|
|
192
|
-
*
|
|
193
|
-
* @param params - Audit entry parameters
|
|
194
|
-
* @returns Audit entry object
|
|
195
|
-
*/
|
|
196
|
-
export declare function createAuditEntry(params: {
|
|
197
|
-
apiKeyId: string | null;
|
|
198
|
-
action: AuditAction;
|
|
199
|
-
success: boolean;
|
|
200
|
-
ipAddress: string | null;
|
|
201
|
-
userAgent?: string;
|
|
202
|
-
requestPath?: string;
|
|
203
|
-
failureReason?: string;
|
|
204
|
-
metadata?: Record<string, unknown>;
|
|
205
|
-
}): AuditEntry;
|
|
206
|
-
/**
|
|
207
|
-
* Hash an API key for audit logging (never log full key)
|
|
208
|
-
*
|
|
209
|
-
* @param key - Full API key
|
|
210
|
-
* @returns Truncated SHA-256 hash for identification
|
|
211
|
-
*/
|
|
212
|
-
export declare function hashForAudit(key: string): string;
|
|
213
|
-
/**
|
|
214
|
-
* Authenticate an MCP request
|
|
215
|
-
*
|
|
216
|
-
* @param request - Request context
|
|
217
|
-
* @param db - Database interface
|
|
218
|
-
* @returns Authentication result
|
|
219
|
-
* @throws Error if authentication fails
|
|
220
|
-
*/
|
|
221
|
-
export declare function authenticateRequest(request: AuthRequest, db: AuthDatabase): Promise<AuthResult>;
|
|
222
|
-
/**
|
|
223
|
-
* Check if authentication is enabled
|
|
224
|
-
*
|
|
225
|
-
* @returns true if AUTH_ENABLED=true
|
|
226
|
-
*/
|
|
227
|
-
export declare function isAuthEnabled(): boolean;
|
|
228
|
-
/**
|
|
229
|
-
* Get rate limits for a tier
|
|
230
|
-
*
|
|
231
|
-
* @param tier - Rate limit tier
|
|
232
|
-
* @returns Rate limits for the tier
|
|
233
|
-
*/
|
|
234
|
-
export declare function getRateLimitsForTier(tier: string): TierRateLimits;
|
|
235
|
-
/**
|
|
236
|
-
* Create an in-memory cache for auth results
|
|
237
|
-
*
|
|
238
|
-
* @param options - Cache configuration
|
|
239
|
-
* @returns Cache object with get/set methods
|
|
240
|
-
*/
|
|
241
|
-
export declare function createAuthCache(options: {
|
|
242
|
-
maxSize: number;
|
|
243
|
-
ttlSeconds: number;
|
|
244
|
-
}): {
|
|
245
|
-
get(keyId: string): {
|
|
246
|
-
userId: string;
|
|
247
|
-
tier: string;
|
|
248
|
-
} | null;
|
|
249
|
-
set(keyId: string, value: {
|
|
250
|
-
userId: string;
|
|
251
|
-
tier: string;
|
|
252
|
-
}): void;
|
|
253
|
-
/**
|
|
254
|
-
* Invalidate a specific key from the cache
|
|
255
|
-
* HIGH-002: Used to immediately invalidate revoked/rotated keys
|
|
256
|
-
*
|
|
257
|
-
* @param keyId - The key ID (prefix) to invalidate
|
|
258
|
-
* @returns true if key was in cache, false otherwise
|
|
259
|
-
*/
|
|
260
|
-
invalidate(keyId: string): boolean;
|
|
261
|
-
clear(): void;
|
|
262
|
-
size(): number;
|
|
263
|
-
};
|
|
264
|
-
/**
|
|
265
|
-
* Type for cache invalidation callback
|
|
266
|
-
*/
|
|
267
|
-
export type AuthCache = ReturnType<typeof createAuthCache>;
|
|
268
|
-
/**
|
|
269
|
-
* Revoke an API key and invalidate it from cache
|
|
270
|
-
* HIGH-002: Ensures revoked keys cannot be used even if cached
|
|
271
|
-
*
|
|
272
|
-
* @param keyPrefix - The key prefix to revoke
|
|
273
|
-
* @param cache - The auth cache instance
|
|
274
|
-
* @param reason - Reason for revocation (for audit logging)
|
|
275
|
-
* @returns true if key was invalidated from cache
|
|
276
|
-
*/
|
|
277
|
-
export declare function revokeApiKey(keyPrefix: string, cache: AuthCache, reason?: string): boolean;
|
|
278
|
-
/**
|
|
279
|
-
* Invalidate a rotated API key from cache
|
|
280
|
-
* HIGH-002: Ensures old keys cannot be used during rotation
|
|
281
|
-
*
|
|
282
|
-
* @param oldKeyPrefix - The old key prefix being rotated
|
|
283
|
-
* @param cache - The auth cache instance
|
|
284
|
-
* @returns true if old key was invalidated from cache
|
|
285
|
-
*/
|
|
286
|
-
export declare function invalidateRotatedKey(oldKeyPrefix: string, cache: AuthCache): boolean;
|
|
287
|
-
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"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"}
|