attio-mcp 1.1.10 → 1.2.1
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 +108 -1
- package/README.md +14 -8
- package/dist/api/attribute-types.d.ts.map +1 -1
- package/dist/api/attribute-types.js +7 -2
- package/dist/api/attribute-types.js.map +1 -1
- package/dist/api/operations/lists.d.ts.map +1 -1
- package/dist/api/operations/lists.js +4 -3
- package/dist/api/operations/lists.js.map +1 -1
- package/dist/api/operations/search.d.ts.map +1 -1
- package/dist/api/operations/search.js +1 -1
- package/dist/api/operations/search.js.map +1 -1
- package/dist/config/deal-defaults.d.ts +3 -0
- package/dist/config/deal-defaults.d.ts.map +1 -1
- package/dist/config/deal-defaults.js +35 -31
- package/dist/config/deal-defaults.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/index.d.ts +22 -2
- package/dist/handlers/tool-configs/universal/core/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.d.ts +22 -2
- package/dist/handlers/tool-configs/universal/core/search-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.js +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/index.d.ts +22 -2
- package/dist/handlers/tool-configs/universal/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/index.js +2 -2
- package/dist/handlers/tool-configs/universal/operations/index.js.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/advanced-schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/advanced-schemas.js +1 -0
- package/dist/handlers/tool-configs/universal/schemas/advanced-schemas.js.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/common/properties.js +1 -1
- package/dist/handlers/tool-configs/universal/schemas/common/properties.js.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/core-schemas.d.ts +22 -2
- package/dist/handlers/tool-configs/universal/schemas/core-schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/core-schemas.js +65 -1
- package/dist/handlers/tool-configs/universal/schemas/core-schemas.js.map +1 -1
- package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -1
- package/dist/handlers/tools/dispatcher/core.js +13 -0
- package/dist/handlers/tools/dispatcher/core.js.map +1 -1
- package/dist/handlers/tools/registry.d.ts +22 -2
- package/dist/handlers/tools/registry.d.ts.map +1 -1
- package/dist/prompts/v1/create-task.v1.d.ts +1 -1
- package/dist/prompts/v1/pipeline-health.v1.d.ts +2 -2
- package/dist/server/createServer.d.ts.map +1 -1
- package/dist/server/createServer.js +1 -2
- package/dist/server/createServer.js.map +1 -1
- package/dist/services/workspace-member-resolver.d.ts +55 -0
- package/dist/services/workspace-member-resolver.d.ts.map +1 -0
- package/dist/services/workspace-member-resolver.js +146 -0
- package/dist/services/workspace-member-resolver.js.map +1 -0
- package/dist/utils/client-resolver.d.ts +4 -1
- package/dist/utils/client-resolver.d.ts.map +1 -1
- package/dist/utils/client-resolver.js +57 -33
- package/dist/utils/client-resolver.js.map +1 -1
- package/dist/utils/filters/reference-attribute-helper.d.ts +69 -0
- package/dist/utils/filters/reference-attribute-helper.d.ts.map +1 -0
- package/dist/utils/filters/reference-attribute-helper.js +262 -0
- package/dist/utils/filters/reference-attribute-helper.js.map +1 -0
- package/dist/utils/filters/translators.d.ts +3 -67
- package/dist/utils/filters/translators.d.ts.map +1 -1
- package/dist/utils/filters/translators.js +208 -26
- package/dist/utils/filters/translators.js.map +1 -1
- package/dist/utils/filters/value-validators.d.ts +37 -0
- package/dist/utils/filters/value-validators.d.ts.map +1 -0
- package/dist/utils/filters/value-validators.js +107 -0
- package/dist/utils/filters/value-validators.js.map +1 -0
- package/dist/utils/ttl-cache.d.ts +69 -0
- package/dist/utils/ttl-cache.d.ts.map +1 -0
- package/dist/utils/ttl-cache.js +113 -0
- package/dist/utils/ttl-cache.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple TTL (Time-To-Live) Cache Implementation
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic expiration of cached entries after a specified duration.
|
|
5
|
+
* Used for workspace-level caching of attribute metadata to reduce API calls
|
|
6
|
+
* while preventing stale data issues.
|
|
7
|
+
*/
|
|
8
|
+
export interface TTLCacheEntry<T> {
|
|
9
|
+
value: T;
|
|
10
|
+
expiresAt: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class TTLCache<K, V> {
|
|
13
|
+
private cache;
|
|
14
|
+
private readonly ttlMs;
|
|
15
|
+
private cleanupInterval?;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a new TTL cache
|
|
18
|
+
*
|
|
19
|
+
* @param ttlMs - Time-to-live in milliseconds (default: 15 minutes)
|
|
20
|
+
* @param cleanupIntervalMs - How often to check for expired entries (default: 5 minutes)
|
|
21
|
+
*/
|
|
22
|
+
constructor(ttlMs?: number, cleanupIntervalMs?: number);
|
|
23
|
+
/**
|
|
24
|
+
* Gets a value from the cache
|
|
25
|
+
*
|
|
26
|
+
* @param key - The cache key
|
|
27
|
+
* @returns The cached value, or undefined if not found or expired
|
|
28
|
+
*/
|
|
29
|
+
get(key: K): V | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Sets a value in the cache with TTL
|
|
32
|
+
*
|
|
33
|
+
* @param key - The cache key
|
|
34
|
+
* @param value - The value to cache
|
|
35
|
+
*/
|
|
36
|
+
set(key: K, value: V): void;
|
|
37
|
+
/**
|
|
38
|
+
* Checks if a key exists and is not expired
|
|
39
|
+
*
|
|
40
|
+
* @param key - The cache key
|
|
41
|
+
* @returns True if the key exists and is not expired
|
|
42
|
+
*/
|
|
43
|
+
has(key: K): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Removes a specific key from the cache
|
|
46
|
+
*
|
|
47
|
+
* @param key - The cache key to remove
|
|
48
|
+
*/
|
|
49
|
+
delete(key: K): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Clears all entries from the cache
|
|
52
|
+
*/
|
|
53
|
+
clear(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Returns the number of entries in the cache (including expired ones)
|
|
56
|
+
*/
|
|
57
|
+
get size(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Removes expired entries from the cache
|
|
60
|
+
* Called automatically by cleanup interval
|
|
61
|
+
*/
|
|
62
|
+
private cleanup;
|
|
63
|
+
/**
|
|
64
|
+
* Stops the cleanup interval
|
|
65
|
+
* Should be called when the cache is no longer needed
|
|
66
|
+
*/
|
|
67
|
+
destroy(): void;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ttl-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ttl-cache.d.ts","sourceRoot":"","sources":["../../src/utils/ttl-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC;;;;;OAKG;gBAED,KAAK,GAAE,MAAuB,EAC9B,iBAAiB,GAAE,MAAsB;IAgB3C;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAgB1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAO3B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;OAGG;IACH,OAAO,CAAC,OAAO;IASf;;;OAGG;IACH,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple TTL (Time-To-Live) Cache Implementation
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic expiration of cached entries after a specified duration.
|
|
5
|
+
* Used for workspace-level caching of attribute metadata to reduce API calls
|
|
6
|
+
* while preventing stale data issues.
|
|
7
|
+
*/
|
|
8
|
+
export class TTLCache {
|
|
9
|
+
cache;
|
|
10
|
+
ttlMs;
|
|
11
|
+
cleanupInterval;
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new TTL cache
|
|
14
|
+
*
|
|
15
|
+
* @param ttlMs - Time-to-live in milliseconds (default: 15 minutes)
|
|
16
|
+
* @param cleanupIntervalMs - How often to check for expired entries (default: 5 minutes)
|
|
17
|
+
*/
|
|
18
|
+
constructor(ttlMs = 15 * 60 * 1000, cleanupIntervalMs = 5 * 60 * 1000) {
|
|
19
|
+
this.cache = new Map();
|
|
20
|
+
this.ttlMs = ttlMs;
|
|
21
|
+
// Start periodic cleanup
|
|
22
|
+
this.cleanupInterval = setInterval(() => {
|
|
23
|
+
this.cleanup();
|
|
24
|
+
}, cleanupIntervalMs);
|
|
25
|
+
// Ensure cleanup interval doesn't keep process alive
|
|
26
|
+
if (this.cleanupInterval.unref) {
|
|
27
|
+
this.cleanupInterval.unref();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Gets a value from the cache
|
|
32
|
+
*
|
|
33
|
+
* @param key - The cache key
|
|
34
|
+
* @returns The cached value, or undefined if not found or expired
|
|
35
|
+
*/
|
|
36
|
+
get(key) {
|
|
37
|
+
const entry = this.cache.get(key);
|
|
38
|
+
if (!entry) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
// Check if expired
|
|
42
|
+
if (Date.now() > entry.expiresAt) {
|
|
43
|
+
this.cache.delete(key);
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
return entry.value;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Sets a value in the cache with TTL
|
|
50
|
+
*
|
|
51
|
+
* @param key - The cache key
|
|
52
|
+
* @param value - The value to cache
|
|
53
|
+
*/
|
|
54
|
+
set(key, value) {
|
|
55
|
+
this.cache.set(key, {
|
|
56
|
+
value,
|
|
57
|
+
expiresAt: Date.now() + this.ttlMs,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Checks if a key exists and is not expired
|
|
62
|
+
*
|
|
63
|
+
* @param key - The cache key
|
|
64
|
+
* @returns True if the key exists and is not expired
|
|
65
|
+
*/
|
|
66
|
+
has(key) {
|
|
67
|
+
return this.get(key) !== undefined;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Removes a specific key from the cache
|
|
71
|
+
*
|
|
72
|
+
* @param key - The cache key to remove
|
|
73
|
+
*/
|
|
74
|
+
delete(key) {
|
|
75
|
+
return this.cache.delete(key);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Clears all entries from the cache
|
|
79
|
+
*/
|
|
80
|
+
clear() {
|
|
81
|
+
this.cache.clear();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Returns the number of entries in the cache (including expired ones)
|
|
85
|
+
*/
|
|
86
|
+
get size() {
|
|
87
|
+
return this.cache.size;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Removes expired entries from the cache
|
|
91
|
+
* Called automatically by cleanup interval
|
|
92
|
+
*/
|
|
93
|
+
cleanup() {
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
96
|
+
if (now > entry.expiresAt) {
|
|
97
|
+
this.cache.delete(key);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Stops the cleanup interval
|
|
103
|
+
* Should be called when the cache is no longer needed
|
|
104
|
+
*/
|
|
105
|
+
destroy() {
|
|
106
|
+
if (this.cleanupInterval) {
|
|
107
|
+
clearInterval(this.cleanupInterval);
|
|
108
|
+
this.cleanupInterval = undefined;
|
|
109
|
+
}
|
|
110
|
+
this.clear();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=ttl-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ttl-cache.js","sourceRoot":"","sources":["../../src/utils/ttl-cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,MAAM,OAAO,QAAQ;IACX,KAAK,CAA2B;IACvB,KAAK,CAAS;IACvB,eAAe,CAAkB;IAEzC;;;;;OAKG;IACH,YACE,QAAgB,EAAE,GAAG,EAAE,GAAG,IAAI,EAC9B,oBAA4B,CAAC,GAAG,EAAE,GAAG,IAAI;QAEzC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,yBAAyB;QACzB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAEtB,qDAAqD;QACrD,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK;SACnC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED;;;OAGG;IACK,OAAO;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAChD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "attio-mcp",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "AI-powered access to Attio CRM. Manage contacts, companies, deals, tasks, and notes. Search records, update pipelines, and automate workflows for sales and GTM teams.",
|
|
5
5
|
"mcpName": "io.github.kesslerio/attio-mcp-server",
|
|
6
6
|
"main": "dist/smithery.js",
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
"handlebars": "^4.7.8",
|
|
203
203
|
"libphonenumber-js": "^1.12.16",
|
|
204
204
|
"lru-cache": "^11.2.2",
|
|
205
|
-
"ora": "^
|
|
205
|
+
"ora": "^9.0.0",
|
|
206
206
|
"safe-stable-stringify": "^2.5.0",
|
|
207
207
|
"sanitize-html": "^2.17.0",
|
|
208
208
|
"user": "^0.0.0",
|