attio-mcp 1.1.1 → 1.1.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/CHANGELOG.md +31 -0
- package/README.md +3 -2
- package/dist/api/client-context.d.ts.map +1 -1
- package/dist/api/client-context.js +39 -1
- package/dist/api/client-context.js.map +1 -1
- package/dist/api/operations/search.d.ts +5 -2
- package/dist/api/operations/search.d.ts.map +1 -1
- package/dist/api/operations/search.js +469 -9
- package/dist/api/operations/search.js.map +1 -1
- package/dist/handlers/tool-configs/openai/index.d.ts +2 -2
- package/dist/handlers/tool-configs/openai/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/openai/index.js +13 -2
- package/dist/handlers/tool-configs/openai/index.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-operations.js +22 -3
- package/dist/handlers/tool-configs/universal/core/crud-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/index.d.ts +26 -2
- package/dist/handlers/tool-configs/universal/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/index.js +10 -1
- package/dist/handlers/tool-configs/universal/index.js.map +1 -1
- package/dist/handlers/tool-configs/universal/smithery-diagnostics.d.ts +37 -0
- package/dist/handlers/tool-configs/universal/smithery-diagnostics.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/smithery-diagnostics.js +103 -0
- package/dist/handlers/tool-configs/universal/smithery-diagnostics.js.map +1 -0
- package/dist/handlers/tools/registry.d.ts +26 -2
- package/dist/handlers/tools/registry.d.ts.map +1 -1
- package/dist/objects/deals/index.d.ts +1 -0
- package/dist/objects/deals/index.d.ts.map +1 -1
- package/dist/objects/deals/index.js +2 -0
- package/dist/objects/deals/index.js.map +1 -1
- package/dist/objects/deals/search.d.ts +16 -0
- package/dist/objects/deals/search.d.ts.map +1 -0
- package/dist/objects/deals/search.js +59 -0
- package/dist/objects/deals/search.js.map +1 -0
- package/dist/server/createServer.d.ts.map +1 -1
- package/dist/server/createServer.js +27 -4
- package/dist/server/createServer.js.map +1 -1
- package/dist/services/CachingService.d.ts +57 -0
- package/dist/services/CachingService.d.ts.map +1 -1
- package/dist/services/CachingService.js +112 -0
- package/dist/services/CachingService.js.map +1 -1
- package/dist/services/UniversalSearchService.d.ts +0 -12
- package/dist/services/UniversalSearchService.d.ts.map +1 -1
- package/dist/services/UniversalSearchService.js +19 -133
- package/dist/services/UniversalSearchService.js.map +1 -1
- package/dist/services/search-strategies/CompanySearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/CompanySearchStrategy.js +13 -11
- package/dist/services/search-strategies/CompanySearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/DealSearchStrategy.d.ts +38 -0
- package/dist/services/search-strategies/DealSearchStrategy.d.ts.map +1 -0
- package/dist/services/search-strategies/DealSearchStrategy.js +119 -0
- package/dist/services/search-strategies/DealSearchStrategy.js.map +1 -0
- package/dist/services/search-strategies/NoteSearchStrategy.d.ts +62 -0
- package/dist/services/search-strategies/NoteSearchStrategy.d.ts.map +1 -0
- package/dist/services/search-strategies/NoteSearchStrategy.js +224 -0
- package/dist/services/search-strategies/NoteSearchStrategy.js.map +1 -0
- package/dist/services/search-strategies/PeopleSearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/PeopleSearchStrategy.js +13 -15
- package/dist/services/search-strategies/PeopleSearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/index.d.ts +2 -0
- package/dist/services/search-strategies/index.d.ts.map +1 -1
- package/dist/services/search-strategies/index.js +2 -0
- package/dist/services/search-strategies/index.js.map +1 -1
- package/dist/services/search-strategies/interfaces.d.ts +6 -0
- package/dist/services/search-strategies/interfaces.d.ts.map +1 -1
- package/dist/services/search-utilities/SearchScorer.d.ts +4 -0
- package/dist/services/search-utilities/SearchScorer.d.ts.map +1 -0
- package/dist/services/search-utilities/SearchScorer.js +243 -0
- package/dist/services/search-utilities/SearchScorer.js.map +1 -0
- package/dist/services/search-utilities/SearchUtilities.d.ts +5 -0
- package/dist/services/search-utilities/SearchUtilities.d.ts.map +1 -1
- package/dist/services/search-utilities/SearchUtilities.js +20 -0
- package/dist/services/search-utilities/SearchUtilities.js.map +1 -1
- package/dist/smithery.d.ts +1 -1
- package/dist/smithery.d.ts.map +1 -1
- package/dist/smithery.js +45 -11
- package/dist/smithery.js.map +1 -1
- package/dist/utils/client-resolver.d.ts.map +1 -1
- package/dist/utils/client-resolver.js +30 -2
- package/dist/utils/client-resolver.js.map +1 -1
- package/dist/utils/mcp-discovery.d.ts.map +1 -1
- package/dist/utils/mcp-discovery.js +19 -1
- package/dist/utils/mcp-discovery.js.map +1 -1
- package/package.json +5 -1
|
@@ -34,16 +34,29 @@ export const configSchema = z.object({
|
|
|
34
34
|
*/
|
|
35
35
|
export function createServer(context) {
|
|
36
36
|
const startTime = Date.now();
|
|
37
|
-
createScopedLogger('mcp.init', 'createServer')
|
|
37
|
+
const logger = createScopedLogger('mcp.init', 'createServer');
|
|
38
|
+
logger.info('Server creation started');
|
|
38
39
|
// For backward compatibility: if no context provided (STDIO mode),
|
|
39
40
|
// create one that reads from environment variables
|
|
40
41
|
const ctx = context || {
|
|
41
42
|
getApiKey: () => process.env.ATTIO_API_KEY,
|
|
42
43
|
getWorkspaceId: () => process.env.ATTIO_WORKSPACE_ID,
|
|
43
44
|
};
|
|
45
|
+
// Debug logging for Issue #891: Track context setup
|
|
46
|
+
if (process.env.MCP_LOG_LEVEL === 'DEBUG') {
|
|
47
|
+
const typedContext = ctx;
|
|
48
|
+
console.error('[createServer:init] Context configuration:', {
|
|
49
|
+
hasContext: Boolean(context),
|
|
50
|
+
contextKeys: context ? Object.keys(context) : [],
|
|
51
|
+
hasGetApiKey: typeof typedContext.getApiKey === 'function',
|
|
52
|
+
hasGetWorkspaceId: typeof typedContext.getWorkspaceId === 'function',
|
|
53
|
+
mode: context ? 'smithery' : 'stdio',
|
|
54
|
+
timestamp: new Date().toISOString(),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
44
57
|
// Set the global context so lazy client can access it
|
|
45
58
|
setGlobalContext(ctx);
|
|
46
|
-
|
|
59
|
+
logger.info('Global context set');
|
|
47
60
|
// Create MCP server with proper capabilities declaration
|
|
48
61
|
// Note: No API key validation here - it's checked when tools are invoked
|
|
49
62
|
const mcpServer = new Server({
|
|
@@ -61,14 +74,24 @@ export function createServer(context) {
|
|
|
61
74
|
});
|
|
62
75
|
// Register all handlers with the context
|
|
63
76
|
// The handlers will use the context to get API key when needed
|
|
64
|
-
|
|
77
|
+
logger.info('Registering handlers');
|
|
65
78
|
registerResourceHandlers(mcpServer, ctx);
|
|
66
79
|
registerToolHandlers(mcpServer, ctx);
|
|
67
80
|
registerPromptHandlers(mcpServer, ctx);
|
|
68
81
|
const duration = Date.now() - startTime;
|
|
69
|
-
|
|
82
|
+
logger.info('Server created', {
|
|
70
83
|
durationMs: duration,
|
|
71
84
|
});
|
|
85
|
+
// Final debug summary for Issue #891
|
|
86
|
+
if (process.env.MCP_LOG_LEVEL === 'DEBUG') {
|
|
87
|
+
console.error('[createServer:complete] Server initialization complete:', {
|
|
88
|
+
duration: `${duration}ms`,
|
|
89
|
+
serverVersion: '1.1.2',
|
|
90
|
+
capabilities: ['resources', 'tools', 'prompts'],
|
|
91
|
+
hasContext: Boolean(context),
|
|
92
|
+
timestamp: new Date().toISOString(),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
72
95
|
return mcpServer;
|
|
73
96
|
}
|
|
74
97
|
//# sourceMappingURL=createServer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createServer.js","sourceRoot":"","sources":["../../src/server/createServer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAWzD;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IACrE,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,oBAAoB,CAAC;IACjC,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACrE,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,kBAAkB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"createServer.js","sourceRoot":"","sources":["../../src/server/createServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,11 @@ interface CacheStats {
|
|
|
16
16
|
misses: number;
|
|
17
17
|
entries: number;
|
|
18
18
|
};
|
|
19
|
+
notes: {
|
|
20
|
+
hits: number;
|
|
21
|
+
misses: number;
|
|
22
|
+
entries: number;
|
|
23
|
+
};
|
|
19
24
|
attributes: {
|
|
20
25
|
hits: number;
|
|
21
26
|
misses: number;
|
|
@@ -32,6 +37,7 @@ interface CacheStats {
|
|
|
32
37
|
*/
|
|
33
38
|
export declare class CachingService {
|
|
34
39
|
private static tasksCache;
|
|
40
|
+
private static notesCache;
|
|
35
41
|
private static attributesCache;
|
|
36
42
|
private static notFoundCache;
|
|
37
43
|
private static stats;
|
|
@@ -129,6 +135,10 @@ export declare class CachingService {
|
|
|
129
135
|
* Clear all 404 cache entries
|
|
130
136
|
*/
|
|
131
137
|
static clearNotFoundCache(): void;
|
|
138
|
+
/**
|
|
139
|
+
* Clear all notes cache entries
|
|
140
|
+
*/
|
|
141
|
+
static clearNotesCache(): void;
|
|
132
142
|
/**
|
|
133
143
|
* Clear all cache entries
|
|
134
144
|
*/
|
|
@@ -172,8 +182,11 @@ export declare class CachingService {
|
|
|
172
182
|
totalEntries: number;
|
|
173
183
|
tasksCacheSize: number;
|
|
174
184
|
tasksCacheEntries: string[];
|
|
185
|
+
notesCacheSize: number;
|
|
186
|
+
notesCacheEntries: string[];
|
|
175
187
|
cacheEfficiency: {
|
|
176
188
|
tasks: number;
|
|
189
|
+
notes: number;
|
|
177
190
|
attributes: number;
|
|
178
191
|
notFound: number;
|
|
179
192
|
overall: number;
|
|
@@ -196,6 +209,50 @@ export declare class CachingService {
|
|
|
196
209
|
data: AttioRecord[];
|
|
197
210
|
fromCache: boolean;
|
|
198
211
|
}>;
|
|
212
|
+
/**
|
|
213
|
+
* Get cached notes with automatic TTL management
|
|
214
|
+
*/
|
|
215
|
+
static getCachedNotes(cacheKey: string, ttl?: number): AttioRecord[] | undefined;
|
|
216
|
+
/**
|
|
217
|
+
* Set cached notes with timestamp
|
|
218
|
+
*/
|
|
219
|
+
static setCachedNotes(cacheKey: string, data: AttioRecord[]): void;
|
|
220
|
+
/**
|
|
221
|
+
* Generate cache key for notes list
|
|
222
|
+
* Includes parent filter context to prevent cache collisions between different parent records.
|
|
223
|
+
*
|
|
224
|
+
* IMPORTANT: Unlike tasks (which use static 'tasks_list_all' key), notes MUST use
|
|
225
|
+
* context-specific keys because Attio API requires parent filters to return any notes.
|
|
226
|
+
* Without parent context in the cache key, we'd incorrectly return cached notes
|
|
227
|
+
* from one parent when searching another parent's notes.
|
|
228
|
+
*
|
|
229
|
+
* Examples:
|
|
230
|
+
* - Workspace-wide: 'notes:list:all:all'
|
|
231
|
+
* - Company-specific: 'notes:list:companies:abc-123'
|
|
232
|
+
* - Deal-specific: 'notes:list:deals:xyz-789'
|
|
233
|
+
*/
|
|
234
|
+
static getNotesListCacheKey(filters?: Record<string, unknown>): string;
|
|
235
|
+
/**
|
|
236
|
+
* Clear expired notes cache entries
|
|
237
|
+
*/
|
|
238
|
+
static clearExpiredNotesCache(ttl?: number): void;
|
|
239
|
+
/**
|
|
240
|
+
* Manage note caching with automatic data loading
|
|
241
|
+
*
|
|
242
|
+
* This method encapsulates the common pattern of:
|
|
243
|
+
* 1. Check cache for valid data
|
|
244
|
+
* 2. Load data if cache miss
|
|
245
|
+
* 3. Cache the loaded data
|
|
246
|
+
*
|
|
247
|
+
* @param dataLoader - Function to load data when cache miss occurs
|
|
248
|
+
* @param cacheKey - Cache key (default: standard notes list key)
|
|
249
|
+
* @param ttl - Time to live in milliseconds
|
|
250
|
+
* @returns Cached or freshly loaded data
|
|
251
|
+
*/
|
|
252
|
+
static getOrLoadNotes(dataLoader: () => Promise<AttioRecord[]>, cacheKey?: string, ttl?: number): Promise<{
|
|
253
|
+
data: AttioRecord[];
|
|
254
|
+
fromCache: boolean;
|
|
255
|
+
}>;
|
|
199
256
|
}
|
|
200
257
|
export {};
|
|
201
258
|
//# sourceMappingURL=CachingService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachingService.d.ts","sourceRoot":"","sources":["../../src/services/CachingService.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAmCpF;;GAEG;AACH,UAAU,UAAU;IAClB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,cAAc;IAEzB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAiC;IAG1D,OAAO,CAAC,MAAM,CAAC,eAAe,CAA0C;IAGxE,OAAO,CAAC,MAAM,CAAC,aAAa,CAAyC;IAGrE,OAAO,CAAC,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"CachingService.d.ts","sourceRoot":"","sources":["../../src/services/CachingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ import { DEFAULT_TASKS_CACHE_TTL, DEFAULT_404_CACHE_TTL, DEFAULT_ATTRIBUTES_CACH
|
|
|
14
14
|
export class CachingService {
|
|
15
15
|
// Simple in-memory cache for tasks pagination performance optimization
|
|
16
16
|
static tasksCache = new Map();
|
|
17
|
+
// Simple in-memory cache for notes pagination performance optimization
|
|
18
|
+
static notesCache = new Map();
|
|
17
19
|
// Attribute discovery cache for performance optimization
|
|
18
20
|
static attributesCache = new Map();
|
|
19
21
|
// 404 response cache to prevent repeated failed lookups
|
|
@@ -21,6 +23,7 @@ export class CachingService {
|
|
|
21
23
|
// Cache statistics for monitoring
|
|
22
24
|
static stats = {
|
|
23
25
|
tasks: { hits: 0, misses: 0, entries: 0 },
|
|
26
|
+
notes: { hits: 0, misses: 0, entries: 0 },
|
|
24
27
|
attributes: { hits: 0, misses: 0, entries: 0 },
|
|
25
28
|
notFound: { hits: 0, misses: 0, entries: 0 },
|
|
26
29
|
};
|
|
@@ -226,16 +229,25 @@ export class CachingService {
|
|
|
226
229
|
this.notFoundCache.clear();
|
|
227
230
|
this.stats.notFound.entries = 0;
|
|
228
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Clear all notes cache entries
|
|
234
|
+
*/
|
|
235
|
+
static clearNotesCache() {
|
|
236
|
+
this.notesCache.clear();
|
|
237
|
+
this.stats.notes = { hits: 0, misses: 0, entries: 0 };
|
|
238
|
+
}
|
|
229
239
|
/**
|
|
230
240
|
* Clear all cache entries
|
|
231
241
|
*/
|
|
232
242
|
static clearAllCache() {
|
|
233
243
|
this.clearTasksCache();
|
|
244
|
+
this.clearNotesCache();
|
|
234
245
|
this.clearAttributesCache();
|
|
235
246
|
this.clearNotFoundCache();
|
|
236
247
|
// Reset stats
|
|
237
248
|
this.stats = {
|
|
238
249
|
tasks: { hits: 0, misses: 0, entries: 0 },
|
|
250
|
+
notes: { hits: 0, misses: 0, entries: 0 },
|
|
239
251
|
attributes: { hits: 0, misses: 0, entries: 0 },
|
|
240
252
|
notFound: { hits: 0, misses: 0, entries: 0 },
|
|
241
253
|
};
|
|
@@ -362,24 +374,33 @@ export class CachingService {
|
|
|
362
374
|
*/
|
|
363
375
|
static getCacheStats() {
|
|
364
376
|
const totalHits = this.stats.tasks.hits +
|
|
377
|
+
this.stats.notes.hits +
|
|
365
378
|
this.stats.attributes.hits +
|
|
366
379
|
this.stats.notFound.hits;
|
|
367
380
|
const totalRequests = totalHits +
|
|
368
381
|
this.stats.tasks.misses +
|
|
382
|
+
this.stats.notes.misses +
|
|
369
383
|
this.stats.attributes.misses +
|
|
370
384
|
this.stats.notFound.misses;
|
|
371
385
|
return {
|
|
372
386
|
...this.stats,
|
|
373
387
|
totalEntries: this.tasksCache.size +
|
|
388
|
+
this.notesCache.size +
|
|
374
389
|
this.attributesCache.size +
|
|
375
390
|
this.notFoundCache.size,
|
|
376
391
|
tasksCacheSize: this.tasksCache.size,
|
|
377
392
|
tasksCacheEntries: Array.from(this.tasksCache.keys()),
|
|
393
|
+
notesCacheSize: this.notesCache.size,
|
|
394
|
+
notesCacheEntries: Array.from(this.notesCache.keys()),
|
|
378
395
|
cacheEfficiency: {
|
|
379
396
|
tasks: this.stats.tasks.hits + this.stats.tasks.misses > 0
|
|
380
397
|
? this.stats.tasks.hits /
|
|
381
398
|
(this.stats.tasks.hits + this.stats.tasks.misses)
|
|
382
399
|
: 0,
|
|
400
|
+
notes: this.stats.notes.hits + this.stats.notes.misses > 0
|
|
401
|
+
? this.stats.notes.hits /
|
|
402
|
+
(this.stats.notes.hits + this.stats.notes.misses)
|
|
403
|
+
: 0,
|
|
383
404
|
attributes: this.stats.attributes.hits + this.stats.attributes.misses > 0
|
|
384
405
|
? this.stats.attributes.hits /
|
|
385
406
|
(this.stats.attributes.hits + this.stats.attributes.misses)
|
|
@@ -417,5 +438,96 @@ export class CachingService {
|
|
|
417
438
|
this.setCachedTasks(cacheKey, freshData);
|
|
418
439
|
return { data: freshData, fromCache: false };
|
|
419
440
|
}
|
|
441
|
+
/**
|
|
442
|
+
* Get cached notes with automatic TTL management
|
|
443
|
+
*/
|
|
444
|
+
static getCachedNotes(cacheKey, ttl = DEFAULT_TASKS_CACHE_TTL) {
|
|
445
|
+
const entry = this.notesCache.get(cacheKey);
|
|
446
|
+
if (!entry) {
|
|
447
|
+
this.stats.notes.misses++;
|
|
448
|
+
return undefined;
|
|
449
|
+
}
|
|
450
|
+
const now = Date.now();
|
|
451
|
+
if (now - entry.timestamp > ttl) {
|
|
452
|
+
this.notesCache.delete(cacheKey);
|
|
453
|
+
this.stats.notes.misses++;
|
|
454
|
+
return undefined;
|
|
455
|
+
}
|
|
456
|
+
this.stats.notes.hits++;
|
|
457
|
+
return entry.data;
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Set cached notes with timestamp
|
|
461
|
+
*/
|
|
462
|
+
static setCachedNotes(cacheKey, data) {
|
|
463
|
+
// Enforce maximum cache size
|
|
464
|
+
if (this.notesCache.size >= MAX_CACHE_ENTRIES) {
|
|
465
|
+
const firstKey = this.notesCache.keys().next().value;
|
|
466
|
+
if (firstKey) {
|
|
467
|
+
this.notesCache.delete(firstKey);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
this.notesCache.set(cacheKey, {
|
|
471
|
+
data,
|
|
472
|
+
timestamp: Date.now(),
|
|
473
|
+
});
|
|
474
|
+
this.stats.notes.entries = this.notesCache.size;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Generate cache key for notes list
|
|
478
|
+
* Includes parent filter context to prevent cache collisions between different parent records.
|
|
479
|
+
*
|
|
480
|
+
* IMPORTANT: Unlike tasks (which use static 'tasks_list_all' key), notes MUST use
|
|
481
|
+
* context-specific keys because Attio API requires parent filters to return any notes.
|
|
482
|
+
* Without parent context in the cache key, we'd incorrectly return cached notes
|
|
483
|
+
* from one parent when searching another parent's notes.
|
|
484
|
+
*
|
|
485
|
+
* Examples:
|
|
486
|
+
* - Workspace-wide: 'notes:list:all:all'
|
|
487
|
+
* - Company-specific: 'notes:list:companies:abc-123'
|
|
488
|
+
* - Deal-specific: 'notes:list:deals:xyz-789'
|
|
489
|
+
*/
|
|
490
|
+
static getNotesListCacheKey(filters) {
|
|
491
|
+
const parentObject = filters?.parent_object || 'all';
|
|
492
|
+
const parentRecordId = filters?.parent_record_id || 'all';
|
|
493
|
+
return `notes:list:${parentObject}:${parentRecordId}`;
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Clear expired notes cache entries
|
|
497
|
+
*/
|
|
498
|
+
static clearExpiredNotesCache(ttl = DEFAULT_TASKS_CACHE_TTL) {
|
|
499
|
+
const now = Date.now();
|
|
500
|
+
for (const [key, entry] of this.notesCache.entries()) {
|
|
501
|
+
if (now - entry.timestamp > ttl) {
|
|
502
|
+
this.notesCache.delete(key);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
this.stats.notes.entries = this.notesCache.size;
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Manage note caching with automatic data loading
|
|
509
|
+
*
|
|
510
|
+
* This method encapsulates the common pattern of:
|
|
511
|
+
* 1. Check cache for valid data
|
|
512
|
+
* 2. Load data if cache miss
|
|
513
|
+
* 3. Cache the loaded data
|
|
514
|
+
*
|
|
515
|
+
* @param dataLoader - Function to load data when cache miss occurs
|
|
516
|
+
* @param cacheKey - Cache key (default: standard notes list key)
|
|
517
|
+
* @param ttl - Time to live in milliseconds
|
|
518
|
+
* @returns Cached or freshly loaded data
|
|
519
|
+
*/
|
|
520
|
+
static async getOrLoadNotes(dataLoader, cacheKey = this.getNotesListCacheKey(), ttl = DEFAULT_TASKS_CACHE_TTL) {
|
|
521
|
+
// Check cache first
|
|
522
|
+
const cachedNotes = this.getCachedNotes(cacheKey, ttl);
|
|
523
|
+
if (cachedNotes) {
|
|
524
|
+
return { data: cachedNotes, fromCache: true };
|
|
525
|
+
}
|
|
526
|
+
// Load fresh data
|
|
527
|
+
const freshData = await dataLoader();
|
|
528
|
+
// Cache the fresh data
|
|
529
|
+
this.setCachedNotes(cacheKey, freshData);
|
|
530
|
+
return { data: freshData, fromCache: false };
|
|
531
|
+
}
|
|
420
532
|
}
|
|
421
533
|
//# sourceMappingURL=CachingService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CachingService.js","sourceRoot":"","sources":["../../src/services/CachingService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CachingService.js","sourceRoot":"","sources":["../../src/services/CachingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,18 +29,6 @@ export declare class UniversalSearchService {
|
|
|
29
29
|
* Search records using object records API with filter support
|
|
30
30
|
*/
|
|
31
31
|
private static searchRecords_ObjectType;
|
|
32
|
-
/**
|
|
33
|
-
* Search deals using query endpoint with filtering support
|
|
34
|
-
*/
|
|
35
|
-
private static searchDeals;
|
|
36
|
-
/**
|
|
37
|
-
* Query deal records using the proper Attio API endpoint
|
|
38
|
-
*/
|
|
39
|
-
private static queryDealRecords;
|
|
40
|
-
/**
|
|
41
|
-
* Search notes with filtering and pagination
|
|
42
|
-
*/
|
|
43
|
-
private static searchNotes;
|
|
44
32
|
static searchByRelationship(sourceResourceType: UniversalResourceType, targetResourceType: UniversalResourceType, targetRecordId: string, limit?: number, offset?: number): Promise<AttioRecord[]>;
|
|
45
33
|
static searchByTimeframe(resourceType: UniversalResourceType, timeframeConfig: TimeframeQuery, limit?: number, offset?: number): Promise<AttioRecord[]>;
|
|
46
34
|
static searchByContent(resourceType: UniversalResourceType, query: string, searchFields?: string[], useOrLogic?: boolean, limit?: number, offset?: number): Promise<AttioRecord[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalSearchService.d.ts","sourceRoot":"","sources":["../../src/services/UniversalSearchService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,qBAAqB,EAItB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"UniversalSearchService.d.ts","sourceRoot":"","sources":["../../src/services/UniversalSearchService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,qBAAqB,EAItB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA+DhD,OAAO,EAAqB,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA6B9E;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAqD;IAE9E;;OAEG;mBACkB,oBAAoB;IAiFzC;;OAEG;WACU,aAAa,CACxB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC;IAkLzB;;OAEG;mBACkB,2BAA2B;IAwIhD;;OAEG;mBACkB,wBAAwB;WAyBhC,oBAAoB,CAC/B,kBAAkB,EAAE,qBAAqB,EACzC,kBAAkB,EAAE,qBAAqB,EACzC,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC;WA4DZ,iBAAiB,CAC5B,YAAY,EAAE,qBAAqB,EACnC,eAAe,EAAE,cAAc,EAC/B,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC;WAiDZ,eAAe,CAC1B,YAAY,EAAE,qBAAqB,EACnC,KAAK,EAAE,MAAM,EACb,YAAY,GAAE,MAAM,EAAO,EAC3B,UAAU,GAAE,OAAc,EAC1B,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC;WAiEZ,oBAAoB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;WAIzC,cAAc,CACzB,aAAa,EAAE,qBAAqB,GACnC,OAAO,CAAC,MAAM,CAAC;IAWlB,MAAM,CAAC,yBAAyB,CAC9B,aAAa,EAAE,qBAAqB,GACnC,OAAO;IAeV,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,qBAAqB,GAAG,OAAO;CAc1E"}
|
|
@@ -17,10 +17,11 @@ import { AuthenticationError, AuthorizationError, NetworkError, RateLimitError,
|
|
|
17
17
|
// Import resource-specific search functions
|
|
18
18
|
import { advancedSearchCompanies } from '../objects/companies/index.js';
|
|
19
19
|
import { advancedSearchPeople } from '../objects/people/index.js';
|
|
20
|
+
import { advancedSearchDeals } from '../objects/deals/index.js';
|
|
20
21
|
import { searchLists } from '../objects/lists.js';
|
|
21
22
|
import { listObjectRecords } from '../objects/records/index.js';
|
|
22
23
|
import { listTasks } from '../objects/tasks.js';
|
|
23
|
-
import { listNotes
|
|
24
|
+
import { listNotes } from '../objects/notes.js';
|
|
24
25
|
// Import guardrails
|
|
25
26
|
// Import Attio client for deal queries
|
|
26
27
|
import { getLazyAttioClient } from '../api/lazy-client.js';
|
|
@@ -41,12 +42,13 @@ import { createRelationshipQuery, createTimeframeQuery, createContentSearchQuery
|
|
|
41
42
|
// Import timeframe utility functions for Issue #475
|
|
42
43
|
import { convertDateParamsToTimeframeQuery } from '../utils/filters/timeframe-utils.js';
|
|
43
44
|
// Import search strategies
|
|
44
|
-
import { CompanySearchStrategy, PeopleSearchStrategy, TaskSearchStrategy, ListSearchStrategy, } from './search-strategies/index.js';
|
|
45
|
+
import { CompanySearchStrategy, PeopleSearchStrategy, DealSearchStrategy, TaskSearchStrategy, ListSearchStrategy, NoteSearchStrategy, } from './search-strategies/index.js';
|
|
45
46
|
import { SearchUtilities } from './search-utilities/SearchUtilities.js';
|
|
46
47
|
import { ensureFunctionAvailability } from './search-utilities/FunctionValidator.js';
|
|
47
48
|
// Dynamic imports for better error handling using extracted utility pattern
|
|
48
49
|
const ensureAdvancedSearchCompanies = () => ensureFunctionAvailability(advancedSearchCompanies, 'advancedSearchCompanies');
|
|
49
50
|
const ensureAdvancedSearchPeople = () => ensureFunctionAvailability(advancedSearchPeople, 'advancedSearchPeople');
|
|
51
|
+
const ensureAdvancedSearchDeals = () => ensureFunctionAvailability(advancedSearchDeals, 'advancedSearchDeals');
|
|
50
52
|
/**
|
|
51
53
|
* UniversalSearchService provides centralized record search functionality
|
|
52
54
|
*/
|
|
@@ -74,6 +76,13 @@ export class UniversalSearchService {
|
|
|
74
76
|
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
75
77
|
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
76
78
|
};
|
|
79
|
+
const dealDependencies = {
|
|
80
|
+
advancedSearchFunction: await ensureAdvancedSearchDeals(),
|
|
81
|
+
createDateFilter: SearchUtilities.createDateFilter,
|
|
82
|
+
mergeFilters: SearchUtilities.mergeFilters,
|
|
83
|
+
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
84
|
+
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
85
|
+
};
|
|
77
86
|
const listDependencies = {
|
|
78
87
|
listFunction: (query, limit, offset) => searchLists(query || '', limit, offset),
|
|
79
88
|
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
@@ -84,11 +93,18 @@ export class UniversalSearchService {
|
|
|
84
93
|
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
85
94
|
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
86
95
|
};
|
|
96
|
+
const noteDependencies = {
|
|
97
|
+
noteFunction: (query) => listNotes(query || {}),
|
|
98
|
+
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
99
|
+
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
100
|
+
};
|
|
87
101
|
// Initialize strategies
|
|
88
102
|
this.strategies.set(UniversalResourceType.COMPANIES, new CompanySearchStrategy(companyDependencies));
|
|
89
103
|
this.strategies.set(UniversalResourceType.PEOPLE, new PeopleSearchStrategy(peopleDependencies));
|
|
104
|
+
this.strategies.set(UniversalResourceType.DEALS, new DealSearchStrategy(dealDependencies));
|
|
90
105
|
this.strategies.set(UniversalResourceType.LISTS, new ListSearchStrategy(listDependencies));
|
|
91
106
|
this.strategies.set(UniversalResourceType.TASKS, new TaskSearchStrategy(taskDependencies));
|
|
107
|
+
this.strategies.set(UniversalResourceType.NOTES, new NoteSearchStrategy(noteDependencies));
|
|
92
108
|
}
|
|
93
109
|
/**
|
|
94
110
|
* Universal search handler with performance tracking
|
|
@@ -264,14 +280,10 @@ export class UniversalSearchService {
|
|
|
264
280
|
},
|
|
265
281
|
});
|
|
266
282
|
}
|
|
267
|
-
// Fallback for resources without strategies (RECORDS
|
|
283
|
+
// Fallback for resources without strategies (RECORDS only)
|
|
268
284
|
switch (resource_type) {
|
|
269
285
|
case UniversalResourceType.RECORDS:
|
|
270
286
|
return this.searchRecords_ObjectType(limit, offset, filters);
|
|
271
|
-
case UniversalResourceType.DEALS:
|
|
272
|
-
return this.searchDeals(limit, offset, query);
|
|
273
|
-
case UniversalResourceType.NOTES:
|
|
274
|
-
return this.searchNotes(perfId, apiStart, query, filters, limit, offset);
|
|
275
287
|
default:
|
|
276
288
|
throw new Error(`Unsupported resource type for search: ${resource_type}`);
|
|
277
289
|
}
|
|
@@ -294,132 +306,6 @@ export class UniversalSearchService {
|
|
|
294
306
|
page: Math.floor((offset || 0) / (limit || 10)) + 1,
|
|
295
307
|
});
|
|
296
308
|
}
|
|
297
|
-
/**
|
|
298
|
-
* Search deals using query endpoint with filtering support
|
|
299
|
-
*/
|
|
300
|
-
static async searchDeals(limit, offset, query) {
|
|
301
|
-
return this.queryDealRecords({ limit, offset, query });
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Query deal records using the proper Attio API endpoint
|
|
305
|
-
*/
|
|
306
|
-
static async queryDealRecords(params) {
|
|
307
|
-
const { limit = 10, offset = 0, query } = params;
|
|
308
|
-
const client = getLazyAttioClient();
|
|
309
|
-
try {
|
|
310
|
-
// First try exact match if query provided
|
|
311
|
-
if (query && query.trim()) {
|
|
312
|
-
try {
|
|
313
|
-
const exactMatchResponse = await client.post('/objects/deals/records/query', {
|
|
314
|
-
filter: {
|
|
315
|
-
$and: [
|
|
316
|
-
{
|
|
317
|
-
path: [['deals', 'name']],
|
|
318
|
-
constraints: {
|
|
319
|
-
value: query.trim(),
|
|
320
|
-
},
|
|
321
|
-
},
|
|
322
|
-
],
|
|
323
|
-
},
|
|
324
|
-
limit: Math.min(limit || 10, 100),
|
|
325
|
-
offset: offset || 0,
|
|
326
|
-
});
|
|
327
|
-
const exactResults = exactMatchResponse?.data?.data || [];
|
|
328
|
-
if (exactResults.length > 0) {
|
|
329
|
-
return exactResults;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
catch {
|
|
333
|
-
createScopedLogger('UniversalSearchService', 'dealExactMatch').debug('Exact match failed, trying client-side filtering');
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
// Fetch all deals for client-side filtering
|
|
337
|
-
const allDealsResponse = await client.post('/objects/deals/records/query', {
|
|
338
|
-
limit: 100,
|
|
339
|
-
offset: 0,
|
|
340
|
-
});
|
|
341
|
-
let allDeals = allDealsResponse?.data?.data || [];
|
|
342
|
-
// Apply client-side filtering if query provided
|
|
343
|
-
if (query && query.trim()) {
|
|
344
|
-
const queryLower = query.trim().toLowerCase();
|
|
345
|
-
allDeals = allDeals.filter((deal) => {
|
|
346
|
-
const nameField = deal.values?.name;
|
|
347
|
-
const name = Array.isArray(nameField) && nameField[0]?.value
|
|
348
|
-
? String(nameField[0].value)
|
|
349
|
-
: '';
|
|
350
|
-
return name.toLowerCase().includes(queryLower);
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
// Apply pagination to filtered results
|
|
354
|
-
const start = offset || 0;
|
|
355
|
-
const end = start + (limit || 10);
|
|
356
|
-
return allDeals.slice(start, end);
|
|
357
|
-
}
|
|
358
|
-
catch (error) {
|
|
359
|
-
createScopedLogger('UniversalSearchService', 'dealQuery').error('Failed to query deal records', error);
|
|
360
|
-
if (error && typeof error === 'object' && 'response' in error) {
|
|
361
|
-
const httpError = error;
|
|
362
|
-
if (httpError.response.status === 404) {
|
|
363
|
-
createScopedLogger('UniversalSearchService', 'dealQuery').error('Deal query endpoint not found, falling back to empty results');
|
|
364
|
-
return [];
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
createScopedLogger('UniversalSearchService', 'dealQuery').warn('Deal query failed with unexpected error, returning empty results');
|
|
368
|
-
return [];
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
/**
|
|
372
|
-
* Search notes with filtering and pagination
|
|
373
|
-
*/
|
|
374
|
-
static async searchNotes(perfId, apiStart, query, filters, limit, offset) {
|
|
375
|
-
try {
|
|
376
|
-
// Build query parameters for Attio Notes API
|
|
377
|
-
const queryParams = {};
|
|
378
|
-
// Apply filters (mapped from universal filter names)
|
|
379
|
-
if (filters) {
|
|
380
|
-
if (filters.parent_object || filters.linked_record_type) {
|
|
381
|
-
queryParams.parent_object =
|
|
382
|
-
filters.parent_object || filters.linked_record_type;
|
|
383
|
-
}
|
|
384
|
-
if (filters.parent_record_id || filters.linked_record_id) {
|
|
385
|
-
queryParams.parent_record_id =
|
|
386
|
-
filters.parent_record_id || filters.linked_record_id;
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
// Add pagination parameters
|
|
390
|
-
if (limit)
|
|
391
|
-
queryParams.limit = limit;
|
|
392
|
-
if (offset)
|
|
393
|
-
queryParams.offset = offset;
|
|
394
|
-
// Call Notes API
|
|
395
|
-
const response = await listNotes(queryParams);
|
|
396
|
-
const notes = response.data || [];
|
|
397
|
-
// Log performance metrics
|
|
398
|
-
enhancedPerformanceTracker.markTiming(perfId, 'attioApi', performance.now() - apiStart);
|
|
399
|
-
// Normalize notes to AttioRecord format
|
|
400
|
-
const normalizedNotes = notes.map((note) => normalizeNoteResponse(note));
|
|
401
|
-
// Apply query-based filtering if query provided
|
|
402
|
-
let results = normalizedNotes;
|
|
403
|
-
if (query && query.trim()) {
|
|
404
|
-
const queryLower = query.toLowerCase().trim();
|
|
405
|
-
results = normalizedNotes.filter((record) => {
|
|
406
|
-
const title = record.values?.title?.toString()?.toLowerCase() || '';
|
|
407
|
-
const contentMarkdown = record.values?.content_markdown?.toString()?.toLowerCase() || '';
|
|
408
|
-
const contentPlaintext = record.values?.content_plaintext?.toString()?.toLowerCase() || '';
|
|
409
|
-
return (title.includes(queryLower) ||
|
|
410
|
-
contentMarkdown.includes(queryLower) ||
|
|
411
|
-
contentPlaintext.includes(queryLower));
|
|
412
|
-
});
|
|
413
|
-
}
|
|
414
|
-
enhancedPerformanceTracker.markTiming(perfId, 'serialization', performance.now() - apiStart);
|
|
415
|
-
return results;
|
|
416
|
-
}
|
|
417
|
-
catch (error) {
|
|
418
|
-
createScopedLogger('UniversalSearchService', 'searchNotes', OperationType.API_CALL).error('Failed to search notes', error);
|
|
419
|
-
enhancedPerformanceTracker.markTiming(perfId, 'other', performance.now() - apiStart);
|
|
420
|
-
return [];
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
309
|
// Query API methods remain unchanged
|
|
424
310
|
static async searchByRelationship(sourceResourceType, targetResourceType, targetRecordId, limit, offset) {
|
|
425
311
|
const relationshipQuery = {
|