attio-mcp 1.1.9 → 1.2.0
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 +104 -2
- 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/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/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
|
@@ -15,10 +15,14 @@
|
|
|
15
15
|
import { FilterValidationError, FilterErrorCategory, } from '../../errors/api-errors.js';
|
|
16
16
|
// Internal module dependencies
|
|
17
17
|
import { FilterConditionType, FIELD_SPECIAL_HANDLING, } from './types.js';
|
|
18
|
+
import { validateSelectOrStatusValue } from './value-validators.js';
|
|
19
|
+
import { getAttributeTypeInfo } from '../../api/attribute-types.js';
|
|
18
20
|
import { validateFilterStructure } from './validators.js';
|
|
19
21
|
import { validateFilters, collectInvalidFilters, formatInvalidFiltersError, ERROR_MESSAGES, getFilterExample, } from './validation-utils.js';
|
|
20
22
|
import { isListSpecificAttribute } from './utils.js';
|
|
21
23
|
import { createScopedLogger, OperationType } from '../logger.js';
|
|
24
|
+
import { isReferenceAttribute, getReferenceFieldForAttribute, KNOWN_ACTOR_REFERENCE_SLUGS, UUID_PATTERN, } from './reference-attribute-helper.js';
|
|
25
|
+
import { resolveWorkspaceMemberUUID, createWorkspaceMemberCache, } from '../../services/workspace-member-resolver.js';
|
|
22
26
|
/**
|
|
23
27
|
* Transforms list entry filters to the format expected by the Attio API
|
|
24
28
|
*
|
|
@@ -83,7 +87,28 @@ import { createScopedLogger, OperationType } from '../logger.js';
|
|
|
83
87
|
* ]
|
|
84
88
|
* };
|
|
85
89
|
*/
|
|
86
|
-
|
|
90
|
+
/**
|
|
91
|
+
* Validates select/status field values against allowed options
|
|
92
|
+
* Uses per-call memoization to avoid repeated lookups
|
|
93
|
+
*
|
|
94
|
+
* @param resourceType - Object type (e.g., 'deals', 'companies')
|
|
95
|
+
* @param filters - Array of filters to validate
|
|
96
|
+
* @throws FilterValidationError if any value is invalid
|
|
97
|
+
*/
|
|
98
|
+
async function validateFilterValues(resourceType, filters) {
|
|
99
|
+
// Per-call cache for options (keyed by "${resourceType}:${slug}")
|
|
100
|
+
const optionsCache = new Map();
|
|
101
|
+
for (const filter of filters) {
|
|
102
|
+
const { slug } = filter.attribute;
|
|
103
|
+
// Get attribute type info
|
|
104
|
+
const typeInfo = await getAttributeTypeInfo(resourceType, slug);
|
|
105
|
+
// Only validate select/status attributes
|
|
106
|
+
if (typeInfo.attioType === 'select' || typeInfo.attioType === 'status') {
|
|
107
|
+
await validateSelectOrStatusValue(resourceType, slug, filter.value, filter.condition, optionsCache);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export async function transformFiltersToApiFormat(filters, validateConditions = true, isListEntryContext = false, resourceType) {
|
|
87
112
|
// Handle undefined/null filters gracefully
|
|
88
113
|
if (!filters) {
|
|
89
114
|
return {};
|
|
@@ -104,6 +129,11 @@ export function transformFiltersToApiFormat(filters, validateConditions = true,
|
|
|
104
129
|
// dev-only: skip logging to avoid top-level await in non-async function
|
|
105
130
|
return {};
|
|
106
131
|
}
|
|
132
|
+
// Validate select/status field values if resourceType is available
|
|
133
|
+
// Skip validation for list entries (resourceType undefined)
|
|
134
|
+
if (resourceType) {
|
|
135
|
+
await validateFilterValues(resourceType, validatedFilters.filters);
|
|
136
|
+
}
|
|
107
137
|
}
|
|
108
138
|
catch (error) {
|
|
109
139
|
// Check if this is a FilterValidationError
|
|
@@ -114,6 +144,11 @@ export function transformFiltersToApiFormat(filters, validateConditions = true,
|
|
|
114
144
|
error.message.includes('Invalid filter condition'))) {
|
|
115
145
|
throw error;
|
|
116
146
|
}
|
|
147
|
+
// For value validation errors (invalid stage/select values), always re-throw
|
|
148
|
+
if (error.message.includes('Invalid value') &&
|
|
149
|
+
error.message.includes('Valid options are')) {
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
117
152
|
// For structure errors (missing properties), return empty result instead of throwing
|
|
118
153
|
// dev-only: skip logging to avoid top-level await in non-async function
|
|
119
154
|
return {};
|
|
@@ -123,16 +158,22 @@ export function transformFiltersToApiFormat(filters, validateConditions = true,
|
|
|
123
158
|
}
|
|
124
159
|
// Re-validate for the actual processing (this should not throw since we already validated)
|
|
125
160
|
const validatedFilters = validateFilters(filters, validateConditions);
|
|
161
|
+
// Create per-request cache for attribute type info lookups
|
|
162
|
+
// This avoids repeated getAttributeTypeInfo calls for the same attribute within a single transformation
|
|
163
|
+
const attributeTypeCache = new Map();
|
|
164
|
+
// Create per-request cache for workspace member UUID resolution (PR #904 Phase 2)
|
|
165
|
+
// This avoids repeated API calls when the same email/name appears in multiple filters
|
|
166
|
+
const memberCache = createWorkspaceMemberCache();
|
|
126
167
|
// Determine if we need to use the $or operator based on matchAny
|
|
127
168
|
// matchAny: true = use $or logic, matchAny: false (or undefined) = use standard AND logic
|
|
128
169
|
const useOrLogic = validatedFilters.matchAny === true;
|
|
129
170
|
// dev-only: skip logging to avoid top-level await in non-async function
|
|
130
171
|
// For OR logic, we need a completely different structure with filter objects in an array
|
|
131
172
|
if (useOrLogic) {
|
|
132
|
-
return createOrFilterStructure(validatedFilters.filters, validateConditions, isListEntryContext);
|
|
173
|
+
return await createOrFilterStructure(validatedFilters.filters, validateConditions, isListEntryContext, resourceType, attributeTypeCache, memberCache);
|
|
133
174
|
}
|
|
134
175
|
// Standard AND logic
|
|
135
|
-
return createAndFilterStructure(validatedFilters.filters, validateConditions, isListEntryContext);
|
|
176
|
+
return await createAndFilterStructure(validatedFilters.filters, validateConditions, isListEntryContext, resourceType, attributeTypeCache, memberCache);
|
|
136
177
|
}
|
|
137
178
|
/**
|
|
138
179
|
* Transforms list entry filters to the new Query API format with path and constraints
|
|
@@ -241,10 +282,12 @@ export function transformFiltersToQueryApiFormat(filters, validateConditions = t
|
|
|
241
282
|
*
|
|
242
283
|
* @param filters - Array of filters to combine with OR logic
|
|
243
284
|
* @param validateConditions - Whether to validate condition types
|
|
285
|
+
* @param isListEntryContext - Whether this is a list entry context
|
|
286
|
+
* @param resourceType - The resource type for attribute metadata lookup
|
|
244
287
|
* @returns Filter object with $or structure
|
|
245
288
|
* @throws FilterValidationError for invalid filter structures or when all filters are invalid
|
|
246
289
|
*/
|
|
247
|
-
function createOrFilterStructure(filters, validateConditions, isListEntryContext = false) {
|
|
290
|
+
async function createOrFilterStructure(filters, validateConditions, isListEntryContext = false, resourceType, attributeTypeCache, memberCache) {
|
|
248
291
|
const log = createScopedLogger('filters.translators', 'createOrFilterStructure', OperationType.TRANSFORMATION);
|
|
249
292
|
const orConditions = [];
|
|
250
293
|
// Use centralized validation utility to collect invalid filters with consistent messages
|
|
@@ -267,11 +310,12 @@ function createOrFilterStructure(filters, validateConditions, isListEntryContext
|
|
|
267
310
|
'\n\nExample of valid OR filter structure: \n' + getFilterExample('or');
|
|
268
311
|
throw new FilterValidationError(errorMessage, FilterErrorCategory.TRANSFORMATION);
|
|
269
312
|
}
|
|
270
|
-
// Process valid filters
|
|
271
|
-
filters.
|
|
313
|
+
// Process valid filters - use for loop instead of forEach to support await
|
|
314
|
+
for (let index = 0; index < filters.length; index++) {
|
|
315
|
+
const filter = filters[index];
|
|
272
316
|
// Skip if this filter was found invalid
|
|
273
317
|
if (invalidFilters.some((invalid) => invalid.index === index)) {
|
|
274
|
-
|
|
318
|
+
continue;
|
|
275
319
|
}
|
|
276
320
|
// Debug log each filter
|
|
277
321
|
if (process.env.NODE_ENV === 'development') {
|
|
@@ -295,7 +339,7 @@ function createOrFilterStructure(filters, validateConditions, isListEntryContext
|
|
|
295
339
|
});
|
|
296
340
|
}
|
|
297
341
|
// List-specific attributes use direct field access
|
|
298
|
-
const operator = filter.condition === 'equals' ? '$
|
|
342
|
+
const operator = filter.condition === 'equals' ? '$eq' : `$${filter.condition}`;
|
|
299
343
|
condition[slug] = {
|
|
300
344
|
[operator]: filter.value,
|
|
301
345
|
};
|
|
@@ -311,23 +355,101 @@ function createOrFilterStructure(filters, validateConditions, isListEntryContext
|
|
|
311
355
|
}
|
|
312
356
|
else {
|
|
313
357
|
// Standard operator handling for normal fields
|
|
314
|
-
const operator = filter.condition === 'equals' ? '$
|
|
358
|
+
const operator = filter.condition === 'equals' ? '$eq' : `$${filter.condition}`;
|
|
359
|
+
// Check if this is a reference attribute that needs nested field specification
|
|
360
|
+
const isReference = await isReferenceAttribute(resourceType, slug, attributeTypeCache);
|
|
361
|
+
// Auto-resolve actor-reference email/name values to UUIDs (PR #904 Phase 2)
|
|
362
|
+
// This enables natural filtering syntax like owner="martin@shapescale.com"
|
|
363
|
+
// Attio's API requires UUIDs for actor-references, not emails/names
|
|
364
|
+
if (isReference &&
|
|
365
|
+
KNOWN_ACTOR_REFERENCE_SLUGS.has(slug) &&
|
|
366
|
+
typeof filter.value === 'string' &&
|
|
367
|
+
!UUID_PATTERN.test(filter.value)) {
|
|
368
|
+
// Value is email or name - resolve to UUID
|
|
369
|
+
try {
|
|
370
|
+
const resolvedUUID = await resolveWorkspaceMemberUUID(filter.value, memberCache);
|
|
371
|
+
log.debug('Auto-resolved actor-reference value to UUID (OR logic)', {
|
|
372
|
+
attribute: slug,
|
|
373
|
+
originalValue: filter.value,
|
|
374
|
+
resolvedUUID,
|
|
375
|
+
});
|
|
376
|
+
// Update filter value in place
|
|
377
|
+
filter.value = resolvedUUID;
|
|
378
|
+
}
|
|
379
|
+
catch (error) {
|
|
380
|
+
// Resolution failed - let it propagate as FilterValidationError
|
|
381
|
+
throw error;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
// Validate that arrays aren't used with 'equals' operator on reference attributes (PR #904 Phase 2)
|
|
385
|
+
// Attio API expects $in/$not_in for array values, not $eq
|
|
386
|
+
// This addresses PR feedback [HIGH] issue
|
|
387
|
+
if (isReference &&
|
|
388
|
+
filter.condition === 'equals' &&
|
|
389
|
+
Array.isArray(filter.value)) {
|
|
390
|
+
throw new FilterValidationError(`Arrays not supported with 'equals' operator for reference attribute "${slug}". ` +
|
|
391
|
+
`Use 'in' operator instead (coming soon) or filter by single value.`, FilterErrorCategory.VALUE);
|
|
392
|
+
}
|
|
315
393
|
// For parent record attributes in list context, we need to use the record path
|
|
316
394
|
if (isListEntryContext && !isListSpecificAttribute(slug)) {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
395
|
+
if (isReference) {
|
|
396
|
+
// Get the appropriate field for this reference type (email/name/UUID)
|
|
397
|
+
const refField = await getReferenceFieldForAttribute(resourceType, slug, filter.value, attributeTypeCache);
|
|
398
|
+
// Actor-reference with UUID uses special structure (no operator nesting)
|
|
399
|
+
// Email/name use standard nested field specification
|
|
400
|
+
if (refField === 'referenced_actor_id') {
|
|
401
|
+
condition[`record.values.${slug}`] = {
|
|
402
|
+
referenced_actor_type: 'workspace-member',
|
|
403
|
+
referenced_actor_id: filter.value,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
// Standard nested field specification for email/name/record_id
|
|
408
|
+
condition[`record.values.${slug}`] = {
|
|
409
|
+
[refField]: {
|
|
410
|
+
[operator]: filter.value,
|
|
411
|
+
},
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
condition[`record.values.${slug}`] = {
|
|
417
|
+
[operator]: filter.value,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
320
420
|
}
|
|
321
421
|
else {
|
|
322
422
|
// Standard field access for non-list contexts
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
423
|
+
if (isReference) {
|
|
424
|
+
// Get the appropriate field for this reference type (email/name/UUID)
|
|
425
|
+
const refField = await getReferenceFieldForAttribute(resourceType, slug, filter.value, attributeTypeCache);
|
|
426
|
+
// Actor-reference with UUID uses special structure (no operator nesting)
|
|
427
|
+
// Email/name use standard nested field specification
|
|
428
|
+
if (refField === 'referenced_actor_id') {
|
|
429
|
+
condition[slug] = {
|
|
430
|
+
referenced_actor_type: 'workspace-member',
|
|
431
|
+
referenced_actor_id: filter.value,
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
// Standard nested field specification for email/name/record_id
|
|
436
|
+
condition[slug] = {
|
|
437
|
+
[refField]: {
|
|
438
|
+
[operator]: filter.value,
|
|
439
|
+
},
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
else {
|
|
444
|
+
condition[slug] = {
|
|
445
|
+
[operator]: filter.value,
|
|
446
|
+
};
|
|
447
|
+
}
|
|
326
448
|
}
|
|
327
449
|
}
|
|
328
450
|
// Add to the OR conditions array
|
|
329
451
|
orConditions.push(condition);
|
|
330
|
-
}
|
|
452
|
+
}
|
|
331
453
|
// Return the $or structure with valid conditions
|
|
332
454
|
if (orConditions.length > 0) {
|
|
333
455
|
return {
|
|
@@ -342,10 +464,12 @@ function createOrFilterStructure(filters, validateConditions, isListEntryContext
|
|
|
342
464
|
*
|
|
343
465
|
* @param filters - Array of filters to combine with AND logic
|
|
344
466
|
* @param validateConditions - Whether to validate condition types
|
|
467
|
+
* @param isListEntryContext - Whether this is a list entry context
|
|
468
|
+
* @param resourceType - The resource type for attribute metadata lookup
|
|
345
469
|
* @returns Filter object with standard AND structure
|
|
346
470
|
* @throws FilterValidationError for invalid filter structures or when all filters are invalid
|
|
347
471
|
*/
|
|
348
|
-
function createAndFilterStructure(filters, validateConditions, isListEntryContext = false) {
|
|
472
|
+
async function createAndFilterStructure(filters, validateConditions, isListEntryContext = false, resourceType, attributeTypeCache, memberCache) {
|
|
349
473
|
const log = createScopedLogger('filters.translators', 'createAndFilterStructure', OperationType.TRANSFORMATION);
|
|
350
474
|
// Use simple merged object for AND logic instead of $and wrapper
|
|
351
475
|
const mergedConditions = {};
|
|
@@ -370,11 +494,12 @@ function createAndFilterStructure(filters, validateConditions, isListEntryContex
|
|
|
370
494
|
getFilterExample('multiple');
|
|
371
495
|
throw new FilterValidationError(errorMessage, FilterErrorCategory.TRANSFORMATION);
|
|
372
496
|
}
|
|
373
|
-
// Process valid filters by merging into single object
|
|
374
|
-
filters.
|
|
497
|
+
// Process valid filters by merging into single object - use for loop to support await
|
|
498
|
+
for (let index = 0; index < filters.length; index++) {
|
|
499
|
+
const filter = filters[index];
|
|
375
500
|
// Skip if this filter was found invalid
|
|
376
501
|
if (invalidFilters.some((invalid) => invalid.index === index)) {
|
|
377
|
-
|
|
502
|
+
continue;
|
|
378
503
|
}
|
|
379
504
|
// Debug log each filter
|
|
380
505
|
if (process.env.NODE_ENV === 'development') {
|
|
@@ -386,7 +511,7 @@ function createAndFilterStructure(filters, validateConditions, isListEntryContex
|
|
|
386
511
|
});
|
|
387
512
|
}
|
|
388
513
|
const { slug } = filter.attribute;
|
|
389
|
-
const operator = filter.condition === 'equals' ? '$
|
|
514
|
+
const operator = filter.condition === 'equals' ? '$eq' : `$${filter.condition}`;
|
|
390
515
|
// Build condition object in Attio's expected format
|
|
391
516
|
let fieldPath;
|
|
392
517
|
if (isListEntryContext && isListSpecificAttribute(slug)) {
|
|
@@ -401,18 +526,75 @@ function createAndFilterStructure(filters, validateConditions, isListEntryContex
|
|
|
401
526
|
// Standard field access for non-list contexts
|
|
402
527
|
fieldPath = slug;
|
|
403
528
|
}
|
|
529
|
+
// Check if this is a reference attribute that needs nested field specification
|
|
530
|
+
const isReference = await isReferenceAttribute(resourceType, slug, attributeTypeCache);
|
|
531
|
+
// Auto-resolve actor-reference email/name values to UUIDs (PR #904 Phase 2)
|
|
532
|
+
// This enables natural filtering syntax like owner="martin@shapescale.com"
|
|
533
|
+
// Attio's API requires UUIDs for actor-references, not emails/names
|
|
534
|
+
if (isReference &&
|
|
535
|
+
KNOWN_ACTOR_REFERENCE_SLUGS.has(slug) &&
|
|
536
|
+
typeof filter.value === 'string' &&
|
|
537
|
+
!UUID_PATTERN.test(filter.value)) {
|
|
538
|
+
// Value is email or name - resolve to UUID
|
|
539
|
+
try {
|
|
540
|
+
const resolvedUUID = await resolveWorkspaceMemberUUID(filter.value, memberCache);
|
|
541
|
+
log.debug('Auto-resolved actor-reference value to UUID', {
|
|
542
|
+
attribute: slug,
|
|
543
|
+
originalValue: filter.value,
|
|
544
|
+
resolvedUUID,
|
|
545
|
+
});
|
|
546
|
+
// Update filter value in place
|
|
547
|
+
filter.value = resolvedUUID;
|
|
548
|
+
}
|
|
549
|
+
catch (error) {
|
|
550
|
+
// Resolution failed - let it propagate as FilterValidationError
|
|
551
|
+
throw error;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
// Validate that arrays aren't used with 'equals' operator on reference attributes (PR #904 Phase 2)
|
|
555
|
+
// Attio API expects $in/$not_in for array values, not $eq
|
|
556
|
+
// This addresses PR feedback [HIGH] issue
|
|
557
|
+
if (isReference &&
|
|
558
|
+
filter.condition === 'equals' &&
|
|
559
|
+
Array.isArray(filter.value)) {
|
|
560
|
+
throw new FilterValidationError(`Arrays not supported with 'equals' operator for reference attribute "${slug}". ` +
|
|
561
|
+
`Use 'in' operator instead (coming soon) or filter by single value.`, FilterErrorCategory.VALUE);
|
|
562
|
+
}
|
|
404
563
|
// Merge condition directly into the main object (AND logic)
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
564
|
+
if (isReference) {
|
|
565
|
+
// Get the appropriate field for this reference type (email/name/UUID)
|
|
566
|
+
const refField = await getReferenceFieldForAttribute(resourceType, slug, filter.value, attributeTypeCache);
|
|
567
|
+
// Actor-reference with UUID uses special structure (no operator nesting)
|
|
568
|
+
// Email/name use standard nested field specification
|
|
569
|
+
if (refField === 'referenced_actor_id') {
|
|
570
|
+
mergedConditions[fieldPath] = {
|
|
571
|
+
referenced_actor_type: 'workspace-member',
|
|
572
|
+
referenced_actor_id: filter.value,
|
|
573
|
+
};
|
|
574
|
+
}
|
|
575
|
+
else {
|
|
576
|
+
// Standard nested field specification for email/name/record_id
|
|
577
|
+
mergedConditions[fieldPath] = {
|
|
578
|
+
[refField]: {
|
|
579
|
+
[operator]: filter.value,
|
|
580
|
+
},
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
else {
|
|
585
|
+
mergedConditions[fieldPath] = {
|
|
586
|
+
[operator]: filter.value,
|
|
587
|
+
};
|
|
588
|
+
}
|
|
408
589
|
if (process.env.NODE_ENV === 'development') {
|
|
409
590
|
log.debug('Added AND condition', {
|
|
410
591
|
fieldPath,
|
|
411
592
|
operator,
|
|
412
593
|
value: filter.value,
|
|
594
|
+
isReference,
|
|
413
595
|
});
|
|
414
596
|
}
|
|
415
|
-
}
|
|
597
|
+
}
|
|
416
598
|
// Return merged conditions if we have any
|
|
417
599
|
if (Object.keys(mergedConditions).length === 0) {
|
|
418
600
|
return {};
|
|
@@ -423,7 +605,7 @@ function createAndFilterStructure(filters, validateConditions, isListEntryContex
|
|
|
423
605
|
* Converts a single filter operator to API format
|
|
424
606
|
*
|
|
425
607
|
* @param operator - The operator to convert (e.g., 'equals', 'contains')
|
|
426
|
-
* @returns The operator in API format (e.g., '$
|
|
608
|
+
* @returns The operator in API format (e.g., '$eq', '$contains')
|
|
427
609
|
*/
|
|
428
610
|
export function convertOperatorToApiFormat(operator) {
|
|
429
611
|
// Ensure the operator starts with $ for Attio API format
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translators.js","sourceRoot":"","sources":["../../../src/utils/filters/translators.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"translators.js","sourceRoot":"","sources":["../../../src/utils/filters/translators.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Value validation utilities for filter transformation
|
|
3
|
+
* Validates select/status field values against allowed options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Select/status option interface
|
|
7
|
+
*/
|
|
8
|
+
interface SelectOption {
|
|
9
|
+
id: string;
|
|
10
|
+
title: string;
|
|
11
|
+
value?: string;
|
|
12
|
+
is_archived?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Per-call cache for options to avoid repeated lookups
|
|
16
|
+
* Key format: `${resourceType}:${attributeSlug}`
|
|
17
|
+
*/
|
|
18
|
+
type OptionsCache = Map<string, SelectOption[]>;
|
|
19
|
+
/**
|
|
20
|
+
* Validates select or status field values against allowed options
|
|
21
|
+
*
|
|
22
|
+
* Strategy:
|
|
23
|
+
* 1. Try metadata options first (cached, no network call)
|
|
24
|
+
* 2. Fall back to API call (getStatusOptions/getSelectOptions) if metadata lacks options
|
|
25
|
+
* 3. Check if value matches any active option (by title or id, case-insensitive)
|
|
26
|
+
* 4. Throw clear error with valid options if invalid
|
|
27
|
+
*
|
|
28
|
+
* @param resourceType - Object type (e.g., 'deals', 'companies')
|
|
29
|
+
* @param attributeSlug - Attribute slug (e.g., 'stage', 'category')
|
|
30
|
+
* @param value - Value to validate
|
|
31
|
+
* @param condition - Filter condition ('equals', 'in', etc.)
|
|
32
|
+
* @param optionsCache - Per-call cache to avoid repeated lookups
|
|
33
|
+
* @throws FilterValidationError if value is invalid
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateSelectOrStatusValue(resourceType: string, attributeSlug: string, value: unknown, condition: string, optionsCache: OptionsCache): Promise<void>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=value-validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-validators.d.ts","sourceRoot":"","sources":["../../../src/utils/filters/value-validators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,KAAK,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,2BAA2B,CAC/C,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,IAAI,CAAC,CAwEf"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Value validation utilities for filter transformation
|
|
3
|
+
* Validates select/status field values against allowed options
|
|
4
|
+
*/
|
|
5
|
+
import { FilterValidationError, FilterErrorCategory, } from '../../errors/api-errors.js';
|
|
6
|
+
import { getAttributeTypeInfo } from '../../api/attribute-types.js';
|
|
7
|
+
import { getStatusOptions, getSelectOptions } from '../../api/attio-client.js';
|
|
8
|
+
/**
|
|
9
|
+
* Validates select or status field values against allowed options
|
|
10
|
+
*
|
|
11
|
+
* Strategy:
|
|
12
|
+
* 1. Try metadata options first (cached, no network call)
|
|
13
|
+
* 2. Fall back to API call (getStatusOptions/getSelectOptions) if metadata lacks options
|
|
14
|
+
* 3. Check if value matches any active option (by title or id, case-insensitive)
|
|
15
|
+
* 4. Throw clear error with valid options if invalid
|
|
16
|
+
*
|
|
17
|
+
* @param resourceType - Object type (e.g., 'deals', 'companies')
|
|
18
|
+
* @param attributeSlug - Attribute slug (e.g., 'stage', 'category')
|
|
19
|
+
* @param value - Value to validate
|
|
20
|
+
* @param condition - Filter condition ('equals', 'in', etc.)
|
|
21
|
+
* @param optionsCache - Per-call cache to avoid repeated lookups
|
|
22
|
+
* @throws FilterValidationError if value is invalid
|
|
23
|
+
*/
|
|
24
|
+
export async function validateSelectOrStatusValue(resourceType, attributeSlug, value, condition, optionsCache) {
|
|
25
|
+
// Only validate equals and in operators (skip contains/starts_with/etc.)
|
|
26
|
+
if (condition !== 'equals' && condition !== 'in') {
|
|
27
|
+
return; // Skip validation for other operators
|
|
28
|
+
}
|
|
29
|
+
// Check cache first
|
|
30
|
+
const cacheKey = `${resourceType}:${attributeSlug}`;
|
|
31
|
+
let options = optionsCache.get(cacheKey);
|
|
32
|
+
if (!options) {
|
|
33
|
+
// Not in cache, fetch options
|
|
34
|
+
options = await fetchSelectOrStatusOptions(resourceType, attributeSlug);
|
|
35
|
+
optionsCache.set(cacheKey, options);
|
|
36
|
+
}
|
|
37
|
+
// Filter active options only
|
|
38
|
+
const activeOptions = options.filter((opt) => !opt.is_archived);
|
|
39
|
+
// Handle array values for 'in' operator
|
|
40
|
+
const valuesToCheck = Array.isArray(value) ? value : [value];
|
|
41
|
+
// Check each value
|
|
42
|
+
const invalidValues = [];
|
|
43
|
+
for (const val of valuesToCheck) {
|
|
44
|
+
const valueStr = String(val);
|
|
45
|
+
const isValid = activeOptions.some((opt) => opt.title.toLowerCase() === valueStr.toLowerCase() ||
|
|
46
|
+
opt.id === valueStr ||
|
|
47
|
+
opt.value === valueStr);
|
|
48
|
+
if (!isValid) {
|
|
49
|
+
invalidValues.push(val);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Throw error if any invalid values found
|
|
53
|
+
if (invalidValues.length > 0) {
|
|
54
|
+
const validTitles = activeOptions.map((opt) => opt.title);
|
|
55
|
+
// Cap suggestion list at 15 options
|
|
56
|
+
const maxSuggestions = 15;
|
|
57
|
+
const suggestionList = validTitles.length > maxSuggestions
|
|
58
|
+
? `${validTitles.slice(0, maxSuggestions).join(', ')}... and ${validTitles.length - maxSuggestions} more`
|
|
59
|
+
: validTitles.join(', ');
|
|
60
|
+
const invalidValuesStr = invalidValues.length === 1
|
|
61
|
+
? `"${invalidValues[0]}"`
|
|
62
|
+
: `[${invalidValues.map((v) => `"${v}"`).join(', ')}]`;
|
|
63
|
+
throw new FilterValidationError(`Invalid value ${invalidValuesStr} for field "${attributeSlug}". ` +
|
|
64
|
+
`Valid options are: [${suggestionList}]`, FilterErrorCategory.VALUE);
|
|
65
|
+
}
|
|
66
|
+
// Log validation success in development
|
|
67
|
+
if (process.env.NODE_ENV === 'development') {
|
|
68
|
+
const validatedStr = valuesToCheck.length === 1
|
|
69
|
+
? `"${valuesToCheck[0]}"`
|
|
70
|
+
: `[${valuesToCheck.map((v) => `"${v}"`).join(', ')}]`;
|
|
71
|
+
// eslint-disable-next-line no-console
|
|
72
|
+
console.debug(`[value-validators] Validated ${attributeSlug}: ${validatedStr} (${activeOptions.length} options available)`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Fetches select/status options for an attribute
|
|
77
|
+
* Prefers metadata options (cached), falls back to API call
|
|
78
|
+
*/
|
|
79
|
+
async function fetchSelectOrStatusOptions(resourceType, attributeSlug) {
|
|
80
|
+
// Try metadata first (cached, no network call)
|
|
81
|
+
const typeInfo = await getAttributeTypeInfo(resourceType, attributeSlug);
|
|
82
|
+
// Check if metadata has options
|
|
83
|
+
const metadataOptions = typeInfo.metadata?.config?.select?.options;
|
|
84
|
+
if (metadataOptions &&
|
|
85
|
+
Array.isArray(metadataOptions) &&
|
|
86
|
+
metadataOptions.length > 0) {
|
|
87
|
+
// Use metadata options (already cached)
|
|
88
|
+
if (process.env.NODE_ENV === 'development') {
|
|
89
|
+
// eslint-disable-next-line no-console
|
|
90
|
+
console.debug(`[value-validators] Using metadata options for ${resourceType}.${attributeSlug} (${metadataOptions.length} options)`);
|
|
91
|
+
}
|
|
92
|
+
return metadataOptions;
|
|
93
|
+
}
|
|
94
|
+
// Metadata lacks options, fall back to API call
|
|
95
|
+
if (process.env.NODE_ENV === 'development') {
|
|
96
|
+
// eslint-disable-next-line no-console
|
|
97
|
+
console.debug(`[value-validators] Fetching options via API for ${resourceType}.${attributeSlug}`);
|
|
98
|
+
}
|
|
99
|
+
if (typeInfo.attioType === 'status') {
|
|
100
|
+
return (await getStatusOptions(resourceType, attributeSlug));
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Assume select
|
|
104
|
+
return (await getSelectOptions(resourceType, attributeSlug));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=value-validators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-validators.js","sourceRoot":"","sources":["../../../src/utils/filters/value-validators.ts"],"names":[],"mappings":"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"}
|