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
|
@@ -9,6 +9,248 @@ import { FilterValidationError } from '../../errors/api-errors.js';
|
|
|
9
9
|
import { ErrorEnhancer } from '../../errors/enhanced-api-errors.js';
|
|
10
10
|
import { transformFiltersToApiFormat } from '../../utils/record-utils.js';
|
|
11
11
|
import { ResourceType, } from '../../types/attio.js';
|
|
12
|
+
import { LRUCache } from 'lru-cache';
|
|
13
|
+
import { scoreAndRank } from '../../services/search-utilities/SearchScorer.js';
|
|
14
|
+
import { createScopedLogger } from '../../utils/logger.js';
|
|
15
|
+
const logger = createScopedLogger('api.operations', 'search');
|
|
16
|
+
const ENABLE_SEARCH_SCORING = process.env.ENABLE_SEARCH_SCORING !== 'false';
|
|
17
|
+
const SEARCH_CACHE_TTL_MS = Number.parseInt(process.env.SEARCH_CACHE_TTL_MS ?? `${5 * 60 * 1000}`, 10);
|
|
18
|
+
const SEARCH_CACHE_MAX = Number.parseInt(process.env.SEARCH_CACHE_MAX ?? '500', 10);
|
|
19
|
+
const SEARCH_FETCH_MULTIPLIER = Number.parseInt(process.env.SEARCH_FETCH_MULTIPLIER ?? '5', 10);
|
|
20
|
+
const SEARCH_FETCH_MIN = Number.parseInt(process.env.SEARCH_FETCH_MIN ?? '50', 10);
|
|
21
|
+
const SEARCH_FAST_PATH_LIMIT = Number.parseInt(process.env.SEARCH_FAST_PATH_LIMIT ?? '5', 10);
|
|
22
|
+
const DEFAULT_FETCH_LIMIT = Number.parseInt(process.env.SEARCH_DEFAULT_LIMIT ?? '20', 10);
|
|
23
|
+
const searchCache = new LRUCache({
|
|
24
|
+
max: Number.isFinite(SEARCH_CACHE_MAX) ? SEARCH_CACHE_MAX : 500,
|
|
25
|
+
ttl: Number.isFinite(SEARCH_CACHE_TTL_MS)
|
|
26
|
+
? SEARCH_CACHE_TTL_MS
|
|
27
|
+
: 5 * 60 * 1000,
|
|
28
|
+
});
|
|
29
|
+
function getCacheKey(objectType, query, limit) {
|
|
30
|
+
return `${objectType}:${limit}:${query.toLowerCase()}`;
|
|
31
|
+
}
|
|
32
|
+
function normalizeDomainValue(value) {
|
|
33
|
+
return value
|
|
34
|
+
.toLowerCase()
|
|
35
|
+
.replace(/^https?:\/\//, '')
|
|
36
|
+
.replace(/^www\./, '')
|
|
37
|
+
.trim();
|
|
38
|
+
}
|
|
39
|
+
function normalizePlainValue(value) {
|
|
40
|
+
return value.toLowerCase().trim();
|
|
41
|
+
}
|
|
42
|
+
function extractStringsFromField(fieldValue, keys = []) {
|
|
43
|
+
const results = [];
|
|
44
|
+
const pushString = (candidate) => {
|
|
45
|
+
if (typeof candidate === 'string' && candidate.trim()) {
|
|
46
|
+
results.push(candidate);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
if (!fieldValue) {
|
|
50
|
+
return results;
|
|
51
|
+
}
|
|
52
|
+
if (typeof fieldValue === 'string') {
|
|
53
|
+
pushString(fieldValue);
|
|
54
|
+
return results;
|
|
55
|
+
}
|
|
56
|
+
if (Array.isArray(fieldValue)) {
|
|
57
|
+
fieldValue.forEach((item) => {
|
|
58
|
+
if (typeof item === 'string') {
|
|
59
|
+
pushString(item);
|
|
60
|
+
}
|
|
61
|
+
else if (item && typeof item === 'object') {
|
|
62
|
+
keys.forEach((key) => {
|
|
63
|
+
pushString(item[key]);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return results;
|
|
68
|
+
}
|
|
69
|
+
if (fieldValue && typeof fieldValue === 'object') {
|
|
70
|
+
keys.forEach((key) => {
|
|
71
|
+
pushString(fieldValue[key]);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return results;
|
|
75
|
+
}
|
|
76
|
+
function extractNormalizedName(record) {
|
|
77
|
+
const values = (record?.values ?? {});
|
|
78
|
+
const candidates = [];
|
|
79
|
+
if ('name' in values) {
|
|
80
|
+
candidates.push(values.name);
|
|
81
|
+
}
|
|
82
|
+
if ('full_name' in values) {
|
|
83
|
+
candidates.push(values.full_name);
|
|
84
|
+
}
|
|
85
|
+
if ('title' in values) {
|
|
86
|
+
candidates.push(values.title);
|
|
87
|
+
}
|
|
88
|
+
const normalizeCandidate = (candidate) => {
|
|
89
|
+
if (typeof candidate === 'string' && candidate.trim()) {
|
|
90
|
+
return normalizePlainValue(candidate);
|
|
91
|
+
}
|
|
92
|
+
if (Array.isArray(candidate)) {
|
|
93
|
+
for (const item of candidate) {
|
|
94
|
+
const normalized = normalizeCandidate(item);
|
|
95
|
+
if (normalized) {
|
|
96
|
+
return normalized;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (candidate && typeof candidate === 'object') {
|
|
101
|
+
const obj = candidate;
|
|
102
|
+
const nested = obj.full_name ?? obj.formatted ?? obj.value ?? obj.name;
|
|
103
|
+
if (typeof nested === 'string' && nested.trim()) {
|
|
104
|
+
return normalizePlainValue(nested);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
};
|
|
109
|
+
for (const candidate of candidates) {
|
|
110
|
+
const normalized = normalizeCandidate(candidate);
|
|
111
|
+
if (normalized) {
|
|
112
|
+
return normalized;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return '';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Build fast-path candidates for structured queries.
|
|
119
|
+
*
|
|
120
|
+
* Issue #885: Attio API supports $eq operator (verified 2025-10-07)
|
|
121
|
+
* Supported operators: $eq, $contains, $starts_with, $ends_with, $not_empty
|
|
122
|
+
* NOT supported: $equals, $in
|
|
123
|
+
*
|
|
124
|
+
* @see scripts/test-attio-operators.mjs for operator verification tests
|
|
125
|
+
*/
|
|
126
|
+
function buildFastPathCandidates(objectType, parsed, originalQuery) {
|
|
127
|
+
const candidates = [];
|
|
128
|
+
const trimmedQuery = originalQuery.trim();
|
|
129
|
+
if (objectType === ResourceType.COMPANIES && parsed.domains.length === 1) {
|
|
130
|
+
const normalizedDomain = normalizeDomainValue(parsed.domains[0]);
|
|
131
|
+
candidates.push({
|
|
132
|
+
filter: { domains: { $eq: normalizedDomain } },
|
|
133
|
+
kind: 'domain',
|
|
134
|
+
strategy: 'eq',
|
|
135
|
+
value: normalizedDomain,
|
|
136
|
+
});
|
|
137
|
+
candidates.push({
|
|
138
|
+
filter: { domains: { $contains: normalizedDomain } },
|
|
139
|
+
kind: 'domain',
|
|
140
|
+
strategy: 'contains',
|
|
141
|
+
value: normalizedDomain,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
if (parsed.emails.length === 1) {
|
|
145
|
+
const emailValue = parsed.emails[0].toLowerCase();
|
|
146
|
+
candidates.push({
|
|
147
|
+
filter: { email_addresses: { $eq: emailValue } },
|
|
148
|
+
kind: 'email',
|
|
149
|
+
strategy: 'eq',
|
|
150
|
+
value: emailValue,
|
|
151
|
+
});
|
|
152
|
+
candidates.push({
|
|
153
|
+
filter: { email_addresses: { $contains: emailValue } },
|
|
154
|
+
kind: 'email',
|
|
155
|
+
strategy: 'contains',
|
|
156
|
+
value: emailValue,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
// Try all phone variants as fast path candidates (parser creates normalized forms)
|
|
160
|
+
if (parsed.phones.length > 0) {
|
|
161
|
+
parsed.phones.forEach((phoneValue) => {
|
|
162
|
+
candidates.push({
|
|
163
|
+
filter: { phone_numbers: { $eq: phoneValue } },
|
|
164
|
+
kind: 'phone',
|
|
165
|
+
strategy: 'eq',
|
|
166
|
+
value: phoneValue,
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
const hasStructuredQuery = parsed.domains.length > 0 ||
|
|
171
|
+
parsed.emails.length > 0 ||
|
|
172
|
+
parsed.phones.length > 0;
|
|
173
|
+
if (trimmedQuery &&
|
|
174
|
+
!hasStructuredQuery &&
|
|
175
|
+
(objectType === ResourceType.COMPANIES ||
|
|
176
|
+
objectType === ResourceType.PEOPLE ||
|
|
177
|
+
objectType === ResourceType.DEALS)) {
|
|
178
|
+
const normalizedName = normalizePlainValue(trimmedQuery);
|
|
179
|
+
candidates.push({
|
|
180
|
+
filter: { name: { $eq: trimmedQuery } },
|
|
181
|
+
kind: 'name',
|
|
182
|
+
strategy: 'eq',
|
|
183
|
+
value: normalizedName,
|
|
184
|
+
});
|
|
185
|
+
candidates.push({
|
|
186
|
+
filter: { name: { $contains: trimmedQuery } },
|
|
187
|
+
kind: 'name',
|
|
188
|
+
strategy: 'contains',
|
|
189
|
+
value: normalizedName,
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return candidates;
|
|
193
|
+
}
|
|
194
|
+
function recordMatchesFastPath(record, candidate) {
|
|
195
|
+
const values = (record?.values ?? {});
|
|
196
|
+
switch (candidate.kind) {
|
|
197
|
+
case 'domain': {
|
|
198
|
+
const domains = extractStringsFromField(values.domains, [
|
|
199
|
+
'domain',
|
|
200
|
+
'value',
|
|
201
|
+
]).map(normalizeDomainValue);
|
|
202
|
+
if (candidate.strategy === 'eq') {
|
|
203
|
+
return domains.includes(candidate.value);
|
|
204
|
+
}
|
|
205
|
+
return domains.some((domain) => domain.includes(candidate.value));
|
|
206
|
+
}
|
|
207
|
+
case 'email': {
|
|
208
|
+
const emails = extractStringsFromField(values.email_addresses, [
|
|
209
|
+
'email_address',
|
|
210
|
+
'value',
|
|
211
|
+
]).map(normalizePlainValue);
|
|
212
|
+
if (candidate.strategy === 'eq') {
|
|
213
|
+
return emails.includes(candidate.value);
|
|
214
|
+
}
|
|
215
|
+
return emails.some((email) => email.includes(candidate.value));
|
|
216
|
+
}
|
|
217
|
+
case 'phone': {
|
|
218
|
+
const phones = extractStringsFromField(values.phone_numbers, [
|
|
219
|
+
'phone_number', // Main normalized field
|
|
220
|
+
'original_phone_number', // Original input
|
|
221
|
+
'number', // Legacy fallback
|
|
222
|
+
'normalized', // Legacy fallback
|
|
223
|
+
'value', // Legacy fallback
|
|
224
|
+
]);
|
|
225
|
+
const normalizedSet = new Set();
|
|
226
|
+
phones.forEach((phone) => {
|
|
227
|
+
normalizedSet.add(phone);
|
|
228
|
+
normalizedSet.add(phone.replace(/\s+/g, ''));
|
|
229
|
+
// Also try with/without leading +
|
|
230
|
+
if (phone.startsWith('+')) {
|
|
231
|
+
normalizedSet.add(phone.substring(1));
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
normalizedSet.add(`+${phone}`);
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
return (normalizedSet.has(candidate.value) ||
|
|
238
|
+
normalizedSet.has(candidate.value.replace(/\s+/g, '')));
|
|
239
|
+
}
|
|
240
|
+
case 'name': {
|
|
241
|
+
const recordName = extractNormalizedName(record);
|
|
242
|
+
if (!recordName) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
if (candidate.strategy === 'eq') {
|
|
246
|
+
return recordName === candidate.value;
|
|
247
|
+
}
|
|
248
|
+
return recordName.includes(candidate.value);
|
|
249
|
+
}
|
|
250
|
+
default:
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
12
254
|
function createLegacyFilter(objectType, query) {
|
|
13
255
|
if (objectType === ResourceType.PEOPLE) {
|
|
14
256
|
return {
|
|
@@ -28,12 +270,12 @@ function addCondition(collection, seen, condition) {
|
|
|
28
270
|
collection.push(condition);
|
|
29
271
|
}
|
|
30
272
|
}
|
|
31
|
-
function buildSearchFilter(objectType, query) {
|
|
273
|
+
function buildSearchFilter(objectType, query, parsedOverride) {
|
|
32
274
|
const trimmedQuery = query.trim();
|
|
33
275
|
if (!trimmedQuery) {
|
|
34
276
|
return createLegacyFilter(objectType, query);
|
|
35
277
|
}
|
|
36
|
-
const parsed = parseQuery(trimmedQuery);
|
|
278
|
+
const parsed = parsedOverride ?? parseQuery(trimmedQuery);
|
|
37
279
|
const conditions = [];
|
|
38
280
|
const seen = new Set();
|
|
39
281
|
parsed.emails.forEach((email) => {
|
|
@@ -63,6 +305,99 @@ function buildSearchFilter(objectType, query) {
|
|
|
63
305
|
tokenTargets.add('domains');
|
|
64
306
|
}
|
|
65
307
|
const uniqueTokens = Array.from(new Set(parsed.tokens.filter((token) => token.length > 1)));
|
|
308
|
+
// AND-of-OR search strategy (#885 fix):
|
|
309
|
+
// For each token, allow it to match ANY field (name OR domains OR email/phone)
|
|
310
|
+
// But ALL tokens must match SOMEWHERE
|
|
311
|
+
// This provides precision (all tokens required) + cross-field flexibility (name + domain tokens)
|
|
312
|
+
//
|
|
313
|
+
// Example: "Elite Styles Beauty Mindful Program"
|
|
314
|
+
// - "Elite" can match name OR domains
|
|
315
|
+
// - "Styles" can match name OR domains
|
|
316
|
+
// - "Mindful" can match name OR domains (will match domain mindfulbeautyprogram.com)
|
|
317
|
+
// - etc.
|
|
318
|
+
//
|
|
319
|
+
// Result: Company "Elite Styles And Beauty" (mindfulbeautyprogram.com) matches because:
|
|
320
|
+
// - "Elite" matches name ✓
|
|
321
|
+
// - "Styles" matches name ✓
|
|
322
|
+
// - "Beauty" matches name ✓
|
|
323
|
+
// - "Mindful" matches domain ✓
|
|
324
|
+
// - "Program" matches domain ✓
|
|
325
|
+
if (uniqueTokens.length > 0) {
|
|
326
|
+
if (uniqueTokens.length === 1) {
|
|
327
|
+
// Single token: create OR condition across all relevant fields
|
|
328
|
+
const token = uniqueTokens[0];
|
|
329
|
+
tokenTargets.forEach((field) => {
|
|
330
|
+
addCondition(conditions, seen, {
|
|
331
|
+
[field]: { $contains: token },
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
// Multiple tokens: each token must match at least one field (AND of ORs)
|
|
337
|
+
const tokenAndConditions = uniqueTokens.map((token) => {
|
|
338
|
+
const tokenFieldConditions = [];
|
|
339
|
+
tokenTargets.forEach((field) => {
|
|
340
|
+
tokenFieldConditions.push({
|
|
341
|
+
[field]: { $contains: token },
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
return {
|
|
345
|
+
$or: tokenFieldConditions,
|
|
346
|
+
};
|
|
347
|
+
});
|
|
348
|
+
// Combine all token conditions with AND
|
|
349
|
+
addCondition(conditions, seen, {
|
|
350
|
+
$and: tokenAndConditions,
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
if (conditions.length === 0) {
|
|
355
|
+
return createLegacyFilter(objectType, trimmedQuery);
|
|
356
|
+
}
|
|
357
|
+
if (conditions.length === 1) {
|
|
358
|
+
return conditions[0];
|
|
359
|
+
}
|
|
360
|
+
return {
|
|
361
|
+
$or: conditions,
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Build OR-only fallback filter for when AND-of-OR returns zero results
|
|
366
|
+
* Uses the same parsed structure but allows ANY token to match (no AND requirement)
|
|
367
|
+
*/
|
|
368
|
+
function buildORFallbackFilter(objectType, parsed) {
|
|
369
|
+
const conditions = [];
|
|
370
|
+
const seen = new Set();
|
|
371
|
+
// Include all structured fields as before
|
|
372
|
+
parsed.emails.forEach((email) => {
|
|
373
|
+
addCondition(conditions, seen, {
|
|
374
|
+
email_addresses: { $contains: email },
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
parsed.phones.forEach((phone) => {
|
|
378
|
+
addCondition(conditions, seen, {
|
|
379
|
+
phone_numbers: { $contains: phone },
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
if (objectType === ResourceType.COMPANIES) {
|
|
383
|
+
parsed.domains.forEach((domain) => {
|
|
384
|
+
addCondition(conditions, seen, {
|
|
385
|
+
domains: { $contains: domain },
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
const tokenTargets = new Set();
|
|
390
|
+
tokenTargets.add('name');
|
|
391
|
+
if (objectType === ResourceType.PEOPLE) {
|
|
392
|
+
tokenTargets.add('email_addresses');
|
|
393
|
+
tokenTargets.add('phone_numbers');
|
|
394
|
+
}
|
|
395
|
+
if (objectType === ResourceType.COMPANIES) {
|
|
396
|
+
tokenTargets.add('domains');
|
|
397
|
+
}
|
|
398
|
+
const uniqueTokens = Array.from(new Set(parsed.tokens.filter((token) => token.length > 1)));
|
|
399
|
+
// OR-only fallback: each token can match any field (no AND requirement)
|
|
400
|
+
// This provides maximum recall when the stricter AND-of-OR filter returns zero results
|
|
66
401
|
uniqueTokens.forEach((token) => {
|
|
67
402
|
tokenTargets.forEach((field) => {
|
|
68
403
|
addCondition(conditions, seen, {
|
|
@@ -71,7 +406,8 @@ function buildSearchFilter(objectType, query) {
|
|
|
71
406
|
});
|
|
72
407
|
});
|
|
73
408
|
if (conditions.length === 0) {
|
|
74
|
-
|
|
409
|
+
// Shouldn't happen, but return safe fallback
|
|
410
|
+
return { name: { $contains: parsed.tokens.join(' ') } };
|
|
75
411
|
}
|
|
76
412
|
if (conditions.length === 1) {
|
|
77
413
|
return conditions[0];
|
|
@@ -85,27 +421,151 @@ function buildSearchFilter(objectType, query) {
|
|
|
85
421
|
*
|
|
86
422
|
* @param objectType - The type of object to search (people or companies)
|
|
87
423
|
* @param query - Search query string
|
|
88
|
-
* @param
|
|
424
|
+
* @param options - Optional search options (limit, retryConfig)
|
|
89
425
|
* @returns Array of matching records
|
|
90
426
|
*/
|
|
91
|
-
export async function searchObject(objectType, query,
|
|
427
|
+
export async function searchObject(objectType, query, options) {
|
|
428
|
+
const retryConfig = options?.retryConfig;
|
|
92
429
|
const api = getLazyAttioClient();
|
|
93
430
|
const path = `/objects/${objectType}/records/query`;
|
|
94
|
-
const
|
|
431
|
+
const trimmedQuery = query.trim();
|
|
432
|
+
const scoringEnabled = ENABLE_SEARCH_SCORING && trimmedQuery.length > 0;
|
|
433
|
+
// Use caller's limit if provided, otherwise fall back to default
|
|
434
|
+
const requestedLimit = options?.limit;
|
|
435
|
+
const baseLimit = requestedLimit !== undefined && requestedLimit > 0
|
|
436
|
+
? requestedLimit
|
|
437
|
+
: Number.isFinite(DEFAULT_FETCH_LIMIT) && DEFAULT_FETCH_LIMIT > 0
|
|
438
|
+
? DEFAULT_FETCH_LIMIT
|
|
439
|
+
: 20;
|
|
440
|
+
const multiplier = Number.isFinite(SEARCH_FETCH_MULTIPLIER) && SEARCH_FETCH_MULTIPLIER > 0
|
|
441
|
+
? SEARCH_FETCH_MULTIPLIER
|
|
442
|
+
: 5;
|
|
443
|
+
const minimumFetch = Number.isFinite(SEARCH_FETCH_MIN) && SEARCH_FETCH_MIN > 0
|
|
444
|
+
? SEARCH_FETCH_MIN
|
|
445
|
+
: 50;
|
|
446
|
+
const fastPathLimit = Number.isFinite(SEARCH_FAST_PATH_LIMIT) && SEARCH_FAST_PATH_LIMIT > 0
|
|
447
|
+
? Math.max(baseLimit, SEARCH_FAST_PATH_LIMIT)
|
|
448
|
+
: baseLimit;
|
|
449
|
+
const parsedQuery = trimmedQuery ? parseQuery(trimmedQuery) : null;
|
|
450
|
+
const cacheKey = scoringEnabled && trimmedQuery
|
|
451
|
+
? getCacheKey(objectType, trimmedQuery, baseLimit)
|
|
452
|
+
: null;
|
|
453
|
+
if (scoringEnabled && cacheKey) {
|
|
454
|
+
const cached = searchCache.get(cacheKey);
|
|
455
|
+
if (cached) {
|
|
456
|
+
return cached;
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
if (scoringEnabled && parsedQuery) {
|
|
460
|
+
const fastCandidates = buildFastPathCandidates(objectType, parsedQuery, trimmedQuery);
|
|
461
|
+
for (const candidate of fastCandidates) {
|
|
462
|
+
const candidateLimit = candidate.kind === 'name' && candidate.strategy === 'contains'
|
|
463
|
+
? Math.min(100, Math.max(minimumFetch, baseLimit * multiplier))
|
|
464
|
+
: candidate.kind === 'name' && candidate.strategy === 'eq'
|
|
465
|
+
? baseLimit
|
|
466
|
+
: fastPathLimit;
|
|
467
|
+
logger.debug('[FastPath] Trying candidate', {
|
|
468
|
+
kind: candidate.kind,
|
|
469
|
+
strategy: candidate.strategy,
|
|
470
|
+
filter: candidate.filter,
|
|
471
|
+
limit: candidateLimit,
|
|
472
|
+
});
|
|
473
|
+
try {
|
|
474
|
+
const fastResponse = await callWithRetry(async () => {
|
|
475
|
+
return api.post(path, {
|
|
476
|
+
filter: candidate.filter,
|
|
477
|
+
limit: candidateLimit,
|
|
478
|
+
});
|
|
479
|
+
}, retryConfig);
|
|
480
|
+
const fastData = Array.isArray(fastResponse?.data?.data)
|
|
481
|
+
? fastResponse?.data?.data
|
|
482
|
+
: [];
|
|
483
|
+
logger.debug('[FastPath] Received results', {
|
|
484
|
+
count: fastData.length,
|
|
485
|
+
});
|
|
486
|
+
if (!fastData.length) {
|
|
487
|
+
logger.debug('[FastPath] No results for candidate');
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
const hasMatch = fastData.some((record) => recordMatchesFastPath(record, candidate));
|
|
491
|
+
if (!hasMatch) {
|
|
492
|
+
logger.debug('[FastPath] Validation failed', {
|
|
493
|
+
candidateKind: candidate.kind,
|
|
494
|
+
candidateStrategy: candidate.strategy,
|
|
495
|
+
candidateValue: candidate.value,
|
|
496
|
+
resultCount: fastData.length,
|
|
497
|
+
});
|
|
498
|
+
continue;
|
|
499
|
+
}
|
|
500
|
+
logger.debug('[FastPath] Validation passed, ranking');
|
|
501
|
+
const rankedFast = scoreAndRank(trimmedQuery, fastData, parsedQuery);
|
|
502
|
+
const truncatedFast = rankedFast.slice(0, baseLimit);
|
|
503
|
+
if (cacheKey) {
|
|
504
|
+
searchCache.set(cacheKey, truncatedFast);
|
|
505
|
+
}
|
|
506
|
+
return truncatedFast;
|
|
507
|
+
}
|
|
508
|
+
catch (error) {
|
|
509
|
+
logger.debug('[FastPath] Error executing candidate', {
|
|
510
|
+
kind: candidate.kind,
|
|
511
|
+
strategy: candidate.strategy,
|
|
512
|
+
filter: candidate.filter,
|
|
513
|
+
error: error instanceof Error ? error.message : String(error),
|
|
514
|
+
});
|
|
515
|
+
void error; // Non-fatal fast-path failure; fall back to next candidate
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
const filter = buildSearchFilter(objectType, query, parsedQuery ?? undefined);
|
|
520
|
+
const fetchLimit = scoringEnabled
|
|
521
|
+
? Math.max(minimumFetch, baseLimit * multiplier)
|
|
522
|
+
: baseLimit;
|
|
95
523
|
return callWithRetry(async () => {
|
|
96
524
|
try {
|
|
97
525
|
const response = await api.post(path, {
|
|
98
526
|
filter,
|
|
527
|
+
limit: fetchLimit,
|
|
99
528
|
});
|
|
100
|
-
|
|
529
|
+
const rawData = response?.data?.data;
|
|
530
|
+
let data = Array.isArray(rawData) ? rawData : [];
|
|
531
|
+
// OR-only fallback when AND-of-OR returns zero results (#885 recall fix)
|
|
532
|
+
// This handles over-constrained queries like "Beauty Glow Aesthetics Frisco"
|
|
533
|
+
// where some tokens don't exist but the record should still match
|
|
534
|
+
// Runs regardless of scoring state - scoring only affects ranking, not recall
|
|
535
|
+
if (data.length === 0 && parsedQuery) {
|
|
536
|
+
logger.debug('[Fallback] Zero results from AND-of-OR, trying OR-only', {
|
|
537
|
+
query: trimmedQuery,
|
|
538
|
+
objectType,
|
|
539
|
+
});
|
|
540
|
+
const fallbackFilter = buildORFallbackFilter(objectType, parsedQuery);
|
|
541
|
+
const fallbackResponse = await api.post(path, {
|
|
542
|
+
filter: fallbackFilter,
|
|
543
|
+
limit: fetchLimit,
|
|
544
|
+
});
|
|
545
|
+
const fallbackRawData = fallbackResponse?.data?.data;
|
|
546
|
+
data = Array.isArray(fallbackRawData)
|
|
547
|
+
? fallbackRawData
|
|
548
|
+
: [];
|
|
549
|
+
logger.debug('[Fallback] OR-only results', {
|
|
550
|
+
count: data.length,
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
if (!scoringEnabled || data.length <= 1) {
|
|
554
|
+
const truncated = data.slice(0, baseLimit);
|
|
555
|
+
return truncated;
|
|
556
|
+
}
|
|
557
|
+
const ranked = scoreAndRank(trimmedQuery, data, parsedQuery ?? undefined);
|
|
558
|
+
const truncated = ranked.slice(0, baseLimit);
|
|
559
|
+
if (cacheKey) {
|
|
560
|
+
searchCache.set(cacheKey, truncated);
|
|
561
|
+
}
|
|
562
|
+
return truncated;
|
|
101
563
|
}
|
|
102
564
|
catch (error) {
|
|
103
565
|
const apiError = error;
|
|
104
|
-
// Handle 404 errors with custom message
|
|
105
566
|
if (apiError.response && apiError.response.status === 404) {
|
|
106
567
|
throw new Error(`No ${objectType} found matching '${query}'`);
|
|
107
568
|
}
|
|
108
|
-
// Let upstream handlers create specific, rich error objects from the original Axios error.
|
|
109
569
|
throw error;
|
|
110
570
|
}
|
|
111
571
|
}, retryConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/api/operations/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/api/operations/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export declare const openAiToolConfigs: {
|
|
|
6
6
|
export declare const openAiToolDefinitions: {
|
|
7
7
|
readonly 'openai-search': {
|
|
8
8
|
readonly name: "search";
|
|
9
|
-
readonly description:
|
|
9
|
+
readonly description: string;
|
|
10
10
|
readonly inputSchema: {
|
|
11
11
|
type: "object";
|
|
12
12
|
properties: {
|
|
@@ -36,7 +36,7 @@ export declare const openAiToolDefinitions: {
|
|
|
36
36
|
};
|
|
37
37
|
readonly 'openai-fetch': {
|
|
38
38
|
readonly name: "fetch";
|
|
39
|
-
readonly description:
|
|
39
|
+
readonly description: string;
|
|
40
40
|
readonly inputSchema: {
|
|
41
41
|
type: "object";
|
|
42
42
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/handlers/tool-configs/openai/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/handlers/tool-configs/openai/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAmIjD,eAAO,MAAM,iBAAiB;;;CAGpB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCxB,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { OpenAiCompatibilityService, } from '../../../services/OpenAiCompatibilityService.js';
|
|
3
|
+
import { formatToolDescription } from '../../../handlers/tools/standards/index.js';
|
|
3
4
|
const searchParamsValidator = z.object({
|
|
4
5
|
query: z.string().min(1, 'Query is required'),
|
|
5
6
|
type: z.enum(['companies', 'people', 'lists', 'tasks', 'all']).optional(),
|
|
@@ -122,7 +123,12 @@ export const openAiToolConfigs = {
|
|
|
122
123
|
export const openAiToolDefinitions = {
|
|
123
124
|
'openai-search': {
|
|
124
125
|
name: 'search',
|
|
125
|
-
description:
|
|
126
|
+
description: formatToolDescription({
|
|
127
|
+
capability: 'Run lightweight compatibility search across companies, people, lists, and tasks for ChatGPT MCP.',
|
|
128
|
+
boundaries: 'support complex filters, batch queries, or return rich record payloads (use records_search* tools).',
|
|
129
|
+
constraints: 'Requires query string (min 1 char); optional type filter; limit up to 25 results per call.',
|
|
130
|
+
recoveryHint: 'When you need pagination or attribute filtering, switch to records_search or records_search_advanced.',
|
|
131
|
+
}),
|
|
126
132
|
inputSchema: searchInputSchema,
|
|
127
133
|
annotations: {
|
|
128
134
|
readOnlyHint: true,
|
|
@@ -131,7 +137,12 @@ export const openAiToolDefinitions = {
|
|
|
131
137
|
},
|
|
132
138
|
'openai-fetch': {
|
|
133
139
|
name: 'fetch',
|
|
134
|
-
description:
|
|
140
|
+
description: formatToolDescription({
|
|
141
|
+
capability: 'Return the canonical Attio record payload for a search connector reference.',
|
|
142
|
+
boundaries: 'perform write operations or resolve IDs not emitted by the search tool.',
|
|
143
|
+
constraints: 'Accepts identifier generated by search (<resource>:<uuid>) and returns JSON serialized as text.',
|
|
144
|
+
recoveryHint: 'If fetch fails, rerun search to refresh the identifier or verify the record still exists.',
|
|
145
|
+
}),
|
|
135
146
|
inputSchema: fetchInputSchema,
|
|
136
147
|
annotations: {
|
|
137
148
|
readOnlyHint: true,
|