attio-mcp 1.3.6 → 1.4.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 +236 -2
- package/README.md +106 -266
- package/dist/api/attio-client.d.ts +13 -3
- package/dist/api/attio-client.d.ts.map +1 -1
- package/dist/api/attio-client.js +37 -7
- package/dist/api/attio-client.js.map +1 -1
- package/dist/api/attribute-types.d.ts.map +1 -1
- package/dist/api/attribute-types.js +42 -20
- package/dist/api/attribute-types.js.map +1 -1
- package/dist/api/client-context.d.ts.map +1 -1
- package/dist/api/client-context.js +28 -42
- package/dist/api/client-context.js.map +1 -1
- package/dist/cli/commands/generate-skill.d.ts +28 -0
- package/dist/cli/commands/generate-skill.d.ts.map +1 -0
- package/dist/cli/commands/generate-skill.js +101 -0
- package/dist/cli/commands/generate-skill.js.map +1 -0
- package/dist/cli/discover.js +65 -0
- package/dist/cli/discover.js.map +1 -1
- package/dist/config/deal-defaults.d.ts +2 -2
- package/dist/config/deal-defaults.d.ts.map +1 -1
- package/dist/config/deal-defaults.js +15 -6
- package/dist/config/deal-defaults.js.map +1 -1
- package/dist/config/tool-aliases.d.ts +12 -0
- package/dist/config/tool-aliases.d.ts.map +1 -1
- package/dist/config/tool-aliases.js +213 -69
- package/dist/config/tool-aliases.js.map +1 -1
- package/dist/constants/tool-names.d.ts +84 -0
- package/dist/constants/tool-names.d.ts.map +1 -0
- package/dist/constants/tool-names.js +81 -0
- package/dist/constants/tool-names.js.map +1 -0
- package/dist/constants/universal.constants.d.ts +24 -0
- package/dist/constants/universal.constants.d.ts.map +1 -1
- package/dist/constants/universal.constants.js +81 -9
- package/dist/constants/universal.constants.js.map +1 -1
- package/dist/handlers/tool-configs/universal/batch-search.js +4 -4
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts +26 -4
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js +181 -21
- package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-operations.js +13 -13
- package/dist/handlers/tool-configs/universal/core/crud-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js +3 -3
- package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts +17 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js +118 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts +14 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js +77 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts +24 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js +35 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts +15 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js +108 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts +14 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js +91 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts +14 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js +118 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts +77 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js +42 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts +15 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts.map +1 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js +109 -0
- package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js.map +1 -0
- package/dist/handlers/tool-configs/universal/core/index.d.ts +63 -22
- package/dist/handlers/tool-configs/universal/core/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/index.js +24 -22
- package/dist/handlers/tool-configs/universal/core/index.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts +43 -1
- package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/metadata-operations.js +117 -11
- package/dist/handlers/tool-configs/universal/core/metadata-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/notes-operations.js +12 -12
- package/dist/handlers/tool-configs/universal/core/notes-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/record-details-operations.js +3 -3
- package/dist/handlers/tool-configs/universal/core/record-details-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.js +4 -4
- package/dist/handlers/tool-configs/universal/core/search-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js +32 -9
- package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js +45 -6
- package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/people.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js +36 -5
- package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js +17 -1
- package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js +3 -1
- package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js.map +1 -1
- package/dist/handlers/tool-configs/universal/index.d.ts +75 -34
- package/dist/handlers/tool-configs/universal/index.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/index.js +58 -58
- package/dist/handlers/tool-configs/universal/index.js.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/advanced-search.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/advanced-search.js +5 -4
- package/dist/handlers/tool-configs/universal/operations/advanced-search.js.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/batch-operations.js +3 -3
- package/dist/handlers/tool-configs/universal/operations/content-search.js +3 -3
- package/dist/handlers/tool-configs/universal/operations/index.d.ts +10 -10
- package/dist/handlers/tool-configs/universal/operations/index.js +15 -15
- package/dist/handlers/tool-configs/universal/operations/relationship-search.js +3 -3
- package/dist/handlers/tool-configs/universal/operations/timeframe-search.js +3 -3
- package/dist/handlers/tool-configs/universal/schemas/utility-schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js +5 -2
- package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts +29 -0
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js +28 -0
- package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas.d.ts +1 -1
- package/dist/handlers/tool-configs/universal/schemas.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/schemas.js +1 -1
- package/dist/handlers/tool-configs/universal/schemas.js.map +1 -1
- package/dist/handlers/tool-configs/universal/shared-handlers.d.ts +20 -1
- package/dist/handlers/tool-configs/universal/shared-handlers.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/shared-handlers.js +216 -0
- package/dist/handlers/tool-configs/universal/shared-handlers.js.map +1 -1
- package/dist/handlers/tool-configs/universal/smithery-diagnostics.js +2 -2
- package/dist/handlers/tool-configs/universal/types.d.ts +9 -0
- package/dist/handlers/tool-configs/universal/types.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts +11 -0
- package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/validators/schema-validator.js +63 -9
- package/dist/handlers/tool-configs/universal/validators/schema-validator.js.map +1 -1
- package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -1
- package/dist/handlers/tools/dispatcher/core.js +5 -1
- package/dist/handlers/tools/dispatcher/core.js.map +1 -1
- package/dist/handlers/tools/formatters.d.ts +8 -1
- package/dist/handlers/tools/formatters.d.ts.map +1 -1
- package/dist/handlers/tools/formatters.js +30 -14
- package/dist/handlers/tools/formatters.js.map +1 -1
- package/dist/handlers/tools/registry.d.ts +125 -84
- package/dist/handlers/tools/registry.d.ts.map +1 -1
- package/dist/handlers/tools/registry.js +14 -9
- package/dist/handlers/tools/registry.js.map +1 -1
- package/dist/handlers/tools/standards/index.d.ts.map +1 -1
- package/dist/handlers/tools/standards/index.js +19 -11
- package/dist/handlers/tools/standards/index.js.map +1 -1
- package/dist/objects/companies/attributes.d.ts +5 -0
- package/dist/objects/companies/attributes.d.ts.map +1 -1
- package/dist/objects/companies/attributes.js +45 -31
- package/dist/objects/companies/attributes.js.map +1 -1
- package/dist/server/createServer.d.ts.map +1 -1
- package/dist/server/createServer.js +4 -3
- package/dist/server/createServer.js.map +1 -1
- package/dist/services/ErrorService.js +3 -3
- package/dist/services/ErrorService.js.map +1 -1
- package/dist/services/UniversalCreateService.d.ts.map +1 -1
- package/dist/services/UniversalCreateService.js +136 -12
- package/dist/services/UniversalCreateService.js.map +1 -1
- package/dist/services/UniversalSearchService.d.ts +4 -25
- package/dist/services/UniversalSearchService.d.ts.map +1 -1
- package/dist/services/UniversalSearchService.js +14 -324
- package/dist/services/UniversalSearchService.js.map +1 -1
- package/dist/services/UniversalUpdateService.d.ts +15 -4
- package/dist/services/UniversalUpdateService.d.ts.map +1 -1
- package/dist/services/UniversalUpdateService.js +79 -151
- package/dist/services/UniversalUpdateService.js.map +1 -1
- package/dist/services/create/factory.d.ts.map +1 -1
- package/dist/services/create/factory.js +2 -1
- package/dist/services/create/factory.js.map +1 -1
- package/dist/services/metadata/AttributeOptionsService.d.ts +38 -0
- package/dist/services/metadata/AttributeOptionsService.d.ts.map +1 -0
- package/dist/services/metadata/AttributeOptionsService.js +92 -0
- package/dist/services/metadata/AttributeOptionsService.js.map +1 -0
- package/dist/services/metadata/index.d.ts +1 -0
- package/dist/services/metadata/index.d.ts.map +1 -1
- package/dist/services/metadata/index.js +1 -0
- package/dist/services/metadata/index.js.map +1 -1
- package/dist/services/search/QueryApiService.d.ts +27 -0
- package/dist/services/search/QueryApiService.d.ts.map +1 -0
- package/dist/services/search/QueryApiService.js +144 -0
- package/dist/services/search/QueryApiService.js.map +1 -0
- package/dist/services/search/RecordsSearchService.d.ts +27 -0
- package/dist/services/search/RecordsSearchService.d.ts.map +1 -0
- package/dist/services/search/RecordsSearchService.js +122 -0
- package/dist/services/search/RecordsSearchService.js.map +1 -0
- package/dist/services/search/SearchCoordinator.d.ts +41 -0
- package/dist/services/search/SearchCoordinator.d.ts.map +1 -0
- package/dist/services/search/SearchCoordinator.js +83 -0
- package/dist/services/search/SearchCoordinator.js.map +1 -0
- package/dist/services/search/StrategyFactory.d.ts +31 -0
- package/dist/services/search/StrategyFactory.d.ts.map +1 -0
- package/dist/services/search/StrategyFactory.js +100 -0
- package/dist/services/search/StrategyFactory.js.map +1 -0
- package/dist/services/skill-generator/OutputWriterService.d.ts +41 -0
- package/dist/services/skill-generator/OutputWriterService.d.ts.map +1 -0
- package/dist/services/skill-generator/OutputWriterService.js +100 -0
- package/dist/services/skill-generator/OutputWriterService.js.map +1 -0
- package/dist/services/skill-generator/SchemaFormatterService.d.ts +61 -0
- package/dist/services/skill-generator/SchemaFormatterService.d.ts.map +1 -0
- package/dist/services/skill-generator/SchemaFormatterService.js +168 -0
- package/dist/services/skill-generator/SchemaFormatterService.js.map +1 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.d.ts +84 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.d.ts.map +1 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.js +292 -0
- package/dist/services/skill-generator/WorkspaceSchemaService.js.map +1 -0
- package/dist/services/skill-generator/index.d.ts +12 -0
- package/dist/services/skill-generator/index.d.ts.map +1 -0
- package/dist/services/skill-generator/index.js +11 -0
- package/dist/services/skill-generator/index.js.map +1 -0
- package/dist/services/skill-generator/types.d.ts +137 -0
- package/dist/services/skill-generator/types.d.ts.map +1 -0
- package/dist/services/skill-generator/types.js +10 -0
- package/dist/services/skill-generator/types.js.map +1 -0
- package/dist/services/update/FieldPersistenceHandler.d.ts +101 -0
- package/dist/services/update/FieldPersistenceHandler.d.ts.map +1 -0
- package/dist/services/update/FieldPersistenceHandler.js +198 -0
- package/dist/services/update/FieldPersistenceHandler.js.map +1 -0
- package/dist/services/update/FieldValidationHandler.d.ts +77 -0
- package/dist/services/update/FieldValidationHandler.d.ts.map +1 -0
- package/dist/services/update/FieldValidationHandler.js +157 -0
- package/dist/services/update/FieldValidationHandler.js.map +1 -0
- package/dist/services/update/MetadataResolver.d.ts +50 -0
- package/dist/services/update/MetadataResolver.d.ts.map +1 -0
- package/dist/services/update/MetadataResolver.js +110 -0
- package/dist/services/update/MetadataResolver.js.map +1 -0
- package/dist/services/update/UpdateOrchestrator.d.ts +37 -0
- package/dist/services/update/UpdateOrchestrator.d.ts.map +1 -0
- package/dist/services/update/UpdateOrchestrator.js +58 -0
- package/dist/services/update/UpdateOrchestrator.js.map +1 -0
- package/dist/services/update/UpdateValidation.d.ts +5 -1
- package/dist/services/update/UpdateValidation.d.ts.map +1 -1
- package/dist/services/update/UpdateValidation.js +46 -14
- package/dist/services/update/UpdateValidation.js.map +1 -1
- package/dist/services/value-transformer/index.d.ts +57 -0
- package/dist/services/value-transformer/index.d.ts.map +1 -0
- package/dist/services/value-transformer/index.js +326 -0
- package/dist/services/value-transformer/index.js.map +1 -0
- package/dist/services/value-transformer/multi-select-transformer.d.ts +63 -0
- package/dist/services/value-transformer/multi-select-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/multi-select-transformer.js +144 -0
- package/dist/services/value-transformer/multi-select-transformer.js.map +1 -0
- package/dist/services/value-transformer/record-reference-transformer.d.ts +43 -0
- package/dist/services/value-transformer/record-reference-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/record-reference-transformer.js +245 -0
- package/dist/services/value-transformer/record-reference-transformer.js.map +1 -0
- package/dist/services/value-transformer/select-transformer.d.ts +48 -0
- package/dist/services/value-transformer/select-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/select-transformer.js +232 -0
- package/dist/services/value-transformer/select-transformer.js.map +1 -0
- package/dist/services/value-transformer/status-transformer.d.ts +32 -0
- package/dist/services/value-transformer/status-transformer.d.ts.map +1 -0
- package/dist/services/value-transformer/status-transformer.js +294 -0
- package/dist/services/value-transformer/status-transformer.js.map +1 -0
- package/dist/services/value-transformer/types.d.ts +100 -0
- package/dist/services/value-transformer/types.d.ts.map +1 -0
- package/dist/services/value-transformer/types.js +6 -0
- package/dist/services/value-transformer/types.js.map +1 -0
- package/dist/templates/skill/SKILL.template.md +78 -0
- package/dist/templates/skill/attribute-reference.template.md +126 -0
- package/dist/templates/skill/complex-types.template.md +255 -0
- package/dist/utils/client-resolver.d.ts.map +1 -1
- package/dist/utils/client-resolver.js +8 -16
- package/dist/utils/client-resolver.js.map +1 -1
- package/dist/utils/complex-type-validation.d.ts +16 -0
- package/dist/utils/complex-type-validation.d.ts.map +1 -0
- package/dist/utils/complex-type-validation.js +196 -0
- package/dist/utils/complex-type-validation.js.map +1 -0
- package/dist/utils/error-utilities.d.ts.map +1 -1
- package/dist/utils/error-utilities.js +16 -9
- package/dist/utils/error-utilities.js.map +1 -1
- package/dist/utils/location-normalizer.d.ts +26 -0
- package/dist/utils/location-normalizer.d.ts.map +1 -0
- package/dist/utils/location-normalizer.js +39 -0
- package/dist/utils/location-normalizer.js.map +1 -0
- package/dist/utils/metadata-utils.d.ts +27 -0
- package/dist/utils/metadata-utils.d.ts.map +1 -0
- package/dist/utils/metadata-utils.js +59 -0
- package/dist/utils/metadata-utils.js.map +1 -0
- package/dist/utils/personal-name-parser.d.ts.map +1 -1
- package/dist/utils/personal-name-parser.js +26 -17
- package/dist/utils/personal-name-parser.js.map +1 -1
- package/dist/validators/company/field_detector.d.ts.map +1 -1
- package/dist/validators/company/field_detector.js +5 -0
- package/dist/validators/company/field_detector.js.map +1 -1
- package/package.json +13 -11
|
@@ -2,110 +2,25 @@
|
|
|
2
2
|
* UniversalSearchService - Centralized record search operations
|
|
3
3
|
*
|
|
4
4
|
* Issue #574: Refactored to use Strategy Pattern for resource-specific search logic
|
|
5
|
-
*
|
|
5
|
+
* Issue #935: Search routing delegated to SearchCoordinator and extracted services
|
|
6
6
|
*/
|
|
7
7
|
import { UniversalResourceType, SearchType, MatchType, SortType, } from '../handlers/tool-configs/universal/types.js';
|
|
8
8
|
import { performance } from 'perf_hooks';
|
|
9
|
-
import { debug
|
|
9
|
+
import { debug } from '../utils/logger.js';
|
|
10
10
|
// Import services
|
|
11
11
|
import { ValidationService } from './ValidationService.js';
|
|
12
12
|
import { CachingService } from './CachingService.js';
|
|
13
13
|
// Import performance tracking
|
|
14
14
|
import { enhancedPerformanceTracker } from '../middleware/performance-enhanced.js';
|
|
15
|
-
// Import error types for validation and proper error handling
|
|
16
|
-
import { AuthenticationError, AuthorizationError, NetworkError, RateLimitError, ServerError, ResourceNotFoundError, createApiErrorFromAxiosError, } from '../errors/api-errors.js';
|
|
17
|
-
// Import resource-specific search functions
|
|
18
|
-
import { advancedSearchCompanies } from '../objects/companies/index.js';
|
|
19
|
-
import { advancedSearchPeople } from '../objects/people/index.js';
|
|
20
|
-
import { advancedSearchDeals } from '../objects/deals/index.js';
|
|
21
|
-
import { searchLists } from '../objects/lists.js';
|
|
22
|
-
import { listObjectRecords } from '../objects/records/index.js';
|
|
23
|
-
import { listTasks } from '../objects/tasks.js';
|
|
24
|
-
import { listNotes } from '../objects/notes.js';
|
|
25
|
-
// Import guardrails
|
|
26
|
-
// Import Attio client for deal queries
|
|
27
|
-
import { getLazyAttioClient } from '../api/lazy-client.js';
|
|
28
|
-
import * as AttioClientModule from '../api/attio-client.js';
|
|
29
|
-
// Note: Attio client resolution is centralized in getLazyAttioClient(),
|
|
30
|
-
// which prefers mocked getAttioClient() during tests/offline.
|
|
31
|
-
// Import factory for guard checks
|
|
32
|
-
// Prefer the module's getAttioClient (enables Vitest mocks). Fallback to lazy client.
|
|
33
|
-
function resolveQueryApiClient() {
|
|
34
|
-
const mod = AttioClientModule;
|
|
35
|
-
if (typeof mod.getAttioClient === 'function') {
|
|
36
|
-
return mod.getAttioClient();
|
|
37
|
-
}
|
|
38
|
-
return getLazyAttioClient();
|
|
39
|
-
}
|
|
40
|
-
// Import new query API utilities
|
|
41
|
-
import { createRelationshipQuery, createTimeframeQuery, createContentSearchQuery, } from '../utils/filters/index.js';
|
|
42
15
|
// Import timeframe utility functions for Issue #475
|
|
43
16
|
import { convertDateParamsToTimeframeQuery } from '../utils/filters/timeframe-utils.js';
|
|
44
|
-
//
|
|
45
|
-
import {
|
|
46
|
-
import { SearchUtilities } from './search-utilities/SearchUtilities.js';
|
|
47
|
-
import { ensureFunctionAvailability } from './search-utilities/FunctionValidator.js';
|
|
48
|
-
// Dynamic imports for better error handling using extracted utility pattern
|
|
49
|
-
const ensureAdvancedSearchCompanies = () => ensureFunctionAvailability(advancedSearchCompanies, 'advancedSearchCompanies');
|
|
50
|
-
const ensureAdvancedSearchPeople = () => ensureFunctionAvailability(advancedSearchPeople, 'advancedSearchPeople');
|
|
51
|
-
const ensureAdvancedSearchDeals = () => ensureFunctionAvailability(advancedSearchDeals, 'advancedSearchDeals');
|
|
17
|
+
// Issue #935: Search routing delegated to SearchCoordinator
|
|
18
|
+
import { SearchCoordinator } from './search/SearchCoordinator.js';
|
|
52
19
|
/**
|
|
53
20
|
* UniversalSearchService provides centralized record search functionality
|
|
21
|
+
* Issue #935: Strategy initialization delegated to StrategyFactory via SearchCoordinator
|
|
54
22
|
*/
|
|
55
23
|
export class UniversalSearchService {
|
|
56
|
-
static strategies = new Map();
|
|
57
|
-
/**
|
|
58
|
-
* Initialize search strategies with their dependencies
|
|
59
|
-
*/
|
|
60
|
-
static async initializeStrategies() {
|
|
61
|
-
if (this.strategies.size > 0) {
|
|
62
|
-
return; // Already initialized
|
|
63
|
-
}
|
|
64
|
-
// Create dependencies for strategies
|
|
65
|
-
const companyDependencies = {
|
|
66
|
-
advancedSearchFunction: await ensureAdvancedSearchCompanies(),
|
|
67
|
-
createDateFilter: SearchUtilities.createDateFilter,
|
|
68
|
-
mergeFilters: SearchUtilities.mergeFilters,
|
|
69
|
-
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
70
|
-
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
71
|
-
};
|
|
72
|
-
const peopleDependencies = {
|
|
73
|
-
paginatedSearchFunction: await ensureAdvancedSearchPeople(),
|
|
74
|
-
createDateFilter: SearchUtilities.createDateFilter,
|
|
75
|
-
mergeFilters: SearchUtilities.mergeFilters,
|
|
76
|
-
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
77
|
-
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
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
|
-
};
|
|
86
|
-
const listDependencies = {
|
|
87
|
-
listFunction: (query, limit, offset) => searchLists(query || '', limit, offset),
|
|
88
|
-
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
89
|
-
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
90
|
-
};
|
|
91
|
-
const taskDependencies = {
|
|
92
|
-
taskFunction: (status, assigneeId, page, pageSize) => listTasks(status, assigneeId, page, pageSize),
|
|
93
|
-
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
94
|
-
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
95
|
-
};
|
|
96
|
-
const noteDependencies = {
|
|
97
|
-
noteFunction: (query) => listNotes(query || {}),
|
|
98
|
-
rankByRelevance: SearchUtilities.rankByRelevance.bind(SearchUtilities),
|
|
99
|
-
getFieldValue: SearchUtilities.getFieldValue.bind(SearchUtilities),
|
|
100
|
-
};
|
|
101
|
-
// Initialize strategies
|
|
102
|
-
this.strategies.set(UniversalResourceType.COMPANIES, new CompanySearchStrategy(companyDependencies));
|
|
103
|
-
this.strategies.set(UniversalResourceType.PEOPLE, new PeopleSearchStrategy(peopleDependencies));
|
|
104
|
-
this.strategies.set(UniversalResourceType.DEALS, new DealSearchStrategy(dealDependencies));
|
|
105
|
-
this.strategies.set(UniversalResourceType.LISTS, new ListSearchStrategy(listDependencies));
|
|
106
|
-
this.strategies.set(UniversalResourceType.TASKS, new TaskSearchStrategy(taskDependencies));
|
|
107
|
-
this.strategies.set(UniversalResourceType.NOTES, new NoteSearchStrategy(noteDependencies));
|
|
108
|
-
}
|
|
109
24
|
/**
|
|
110
25
|
* Universal search handler with performance tracking
|
|
111
26
|
*/
|
|
@@ -205,7 +120,7 @@ export class UniversalSearchService {
|
|
|
205
120
|
date_operator: processedTimeframeParams.date_operator,
|
|
206
121
|
content_fields,
|
|
207
122
|
use_or_logic,
|
|
208
|
-
}
|
|
123
|
+
});
|
|
209
124
|
enhancedPerformanceTracker.markApiEnd(perfId, apiStart);
|
|
210
125
|
enhancedPerformanceTracker.endOperation(perfId, true, undefined, 200, {
|
|
211
126
|
recordCount: results.length,
|
|
@@ -224,242 +139,17 @@ export class UniversalSearchService {
|
|
|
224
139
|
}
|
|
225
140
|
}
|
|
226
141
|
/**
|
|
227
|
-
* Perform search by resource type
|
|
228
|
-
|
|
229
|
-
static async performSearchByResourceType(resource_type, params, perfId, apiStart) {
|
|
230
|
-
const { query, filters, limit, offset, search_type, fields, match_type, sort, relationship_target_type, relationship_target_id, timeframe_attribute, start_date, end_date, date_operator, content_fields, use_or_logic, } = params;
|
|
231
|
-
// Handle new search types first (unchanged from original)
|
|
232
|
-
switch (search_type) {
|
|
233
|
-
case SearchType.RELATIONSHIP:
|
|
234
|
-
if (relationship_target_type && relationship_target_id) {
|
|
235
|
-
return this.searchByRelationship(resource_type, relationship_target_type, relationship_target_id, limit, offset);
|
|
236
|
-
}
|
|
237
|
-
throw new Error('Relationship search requires target_type and target_id parameters');
|
|
238
|
-
case SearchType.TIMEFRAME:
|
|
239
|
-
if (timeframe_attribute) {
|
|
240
|
-
const timeframeConfig = {
|
|
241
|
-
resourceType: resource_type,
|
|
242
|
-
attribute: timeframe_attribute,
|
|
243
|
-
startDate: start_date,
|
|
244
|
-
endDate: end_date,
|
|
245
|
-
operator: date_operator || 'between',
|
|
246
|
-
};
|
|
247
|
-
return this.searchByTimeframe(resource_type, timeframeConfig, limit, offset);
|
|
248
|
-
}
|
|
249
|
-
throw new Error('Timeframe search requires timeframe_attribute parameter');
|
|
250
|
-
case SearchType.CONTENT:
|
|
251
|
-
// Use new Query API if content_fields is explicitly provided
|
|
252
|
-
if (content_fields && content_fields.length > 0) {
|
|
253
|
-
if (!query) {
|
|
254
|
-
throw new Error('Content search requires query parameter');
|
|
255
|
-
}
|
|
256
|
-
return this.searchByContent(resource_type, query, content_fields, use_or_logic !== false, limit, offset);
|
|
257
|
-
}
|
|
258
|
-
// Fall through to strategy-based content search
|
|
259
|
-
break;
|
|
260
|
-
}
|
|
261
|
-
// Initialize strategies if needed
|
|
262
|
-
await this.initializeStrategies();
|
|
263
|
-
// Use strategy pattern for resource-specific searches
|
|
264
|
-
const strategy = this.strategies.get(resource_type);
|
|
265
|
-
if (strategy) {
|
|
266
|
-
return await strategy.search({
|
|
267
|
-
query,
|
|
268
|
-
filters,
|
|
269
|
-
limit,
|
|
270
|
-
offset,
|
|
271
|
-
search_type,
|
|
272
|
-
fields,
|
|
273
|
-
match_type,
|
|
274
|
-
sort,
|
|
275
|
-
timeframeParams: {
|
|
276
|
-
timeframe_attribute,
|
|
277
|
-
start_date,
|
|
278
|
-
end_date,
|
|
279
|
-
date_operator,
|
|
280
|
-
},
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
// Fallback for resources without strategies
|
|
284
|
-
// This handles both 'records' type AND custom objects (e.g., "funds", "investment_opportunities")
|
|
285
|
-
switch (resource_type) {
|
|
286
|
-
case UniversalResourceType.RECORDS:
|
|
287
|
-
return this.searchRecords_ObjectType(limit, offset, filters);
|
|
288
|
-
default:
|
|
289
|
-
// Custom objects: route through generic records API with object slug
|
|
290
|
-
// This enables support for user-defined custom objects (Issue #918)
|
|
291
|
-
return this.searchCustomObject(resource_type, limit, offset, filters);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
// LEGACY METHODS - These remain unchanged for non-strategy resources
|
|
295
|
-
/**
|
|
296
|
-
* Search records using object records API with filter support
|
|
142
|
+
* Perform search by resource type
|
|
143
|
+
* Issue #935: Delegates to SearchCoordinator for routing logic
|
|
297
144
|
*/
|
|
298
|
-
static async
|
|
299
|
-
//
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
return []; // Return empty success for invalid UUID
|
|
304
|
-
}
|
|
305
|
-
createScopedLogger('UniversalSearchService', 'searchRecords_ObjectType', OperationType.DATA_PROCESSING).warn('list_membership filter not yet supported in listObjectRecords');
|
|
306
|
-
}
|
|
307
|
-
return await listObjectRecords('records', {
|
|
308
|
-
pageSize: limit,
|
|
309
|
-
page: Math.floor((offset || 0) / (limit || 10)) + 1,
|
|
145
|
+
static async performSearchByResourceType(resource_type, params) {
|
|
146
|
+
// Issue #935: Delegate to SearchCoordinator for all search routing
|
|
147
|
+
return SearchCoordinator.executeSearch({
|
|
148
|
+
resource_type,
|
|
149
|
+
...params,
|
|
310
150
|
});
|
|
311
151
|
}
|
|
312
|
-
|
|
313
|
-
* Search custom objects using generic records API
|
|
314
|
-
* Enables support for user-defined custom objects (Issue #918)
|
|
315
|
-
*
|
|
316
|
-
* @param objectSlug - The custom object type (e.g., "funds", "investment_opportunities")
|
|
317
|
-
* @param limit - Maximum results
|
|
318
|
-
* @param offset - Pagination offset
|
|
319
|
-
* @param filters - Optional filters
|
|
320
|
-
*/
|
|
321
|
-
static async searchCustomObject(objectSlug, limit, offset, filters) {
|
|
322
|
-
// Handle list_membership filters - invalid UUID should return empty array
|
|
323
|
-
if (filters?.list_membership) {
|
|
324
|
-
const listId = String(filters.list_membership);
|
|
325
|
-
if (!ValidationService.validateUUIDForSearch(listId)) {
|
|
326
|
-
return []; // Return empty success for invalid UUID
|
|
327
|
-
}
|
|
328
|
-
createScopedLogger('UniversalSearchService', 'searchCustomObject', OperationType.DATA_PROCESSING).warn('list_membership filter not yet supported for custom objects');
|
|
329
|
-
}
|
|
330
|
-
createScopedLogger('UniversalSearchService', 'searchCustomObject', OperationType.DATA_PROCESSING).info('Searching custom object', {
|
|
331
|
-
objectSlug,
|
|
332
|
-
limit,
|
|
333
|
-
offset,
|
|
334
|
-
hasFilters: !!filters,
|
|
335
|
-
});
|
|
336
|
-
// Custom objects require POST to /objects/{slug}/records/query
|
|
337
|
-
// The GET endpoint (/objects/{slug}/records) returns 404 for custom objects
|
|
338
|
-
const api = getLazyAttioClient();
|
|
339
|
-
const path = `/objects/${objectSlug}/records/query`;
|
|
340
|
-
const requestBody = {
|
|
341
|
-
limit: limit || 20,
|
|
342
|
-
};
|
|
343
|
-
// Add offset if provided
|
|
344
|
-
if (offset && offset > 0) {
|
|
345
|
-
requestBody.offset = offset;
|
|
346
|
-
}
|
|
347
|
-
const response = await api.post(path, requestBody);
|
|
348
|
-
return Array.isArray(response?.data?.data) ? response.data.data : [];
|
|
349
|
-
}
|
|
350
|
-
// Query API methods remain unchanged
|
|
351
|
-
static async searchByRelationship(sourceResourceType, targetResourceType, targetRecordId, limit, offset) {
|
|
352
|
-
const relationshipQuery = {
|
|
353
|
-
sourceObjectType: sourceResourceType,
|
|
354
|
-
targetObjectType: targetResourceType,
|
|
355
|
-
targetAttribute: 'id',
|
|
356
|
-
condition: 'equals',
|
|
357
|
-
value: targetRecordId,
|
|
358
|
-
};
|
|
359
|
-
const queryApiFilter = createRelationshipQuery(relationshipQuery);
|
|
360
|
-
try {
|
|
361
|
-
const client = resolveQueryApiClient();
|
|
362
|
-
const path = `/objects/${sourceResourceType}/records/query`;
|
|
363
|
-
const requestBody = {
|
|
364
|
-
...queryApiFilter,
|
|
365
|
-
limit: limit || 10,
|
|
366
|
-
offset: offset || 0,
|
|
367
|
-
};
|
|
368
|
-
const response = await client.post(path, requestBody);
|
|
369
|
-
return response?.data?.data || [];
|
|
370
|
-
}
|
|
371
|
-
catch (error) {
|
|
372
|
-
const apiError = createApiErrorFromAxiosError(error, `/objects/${sourceResourceType}/records/query`, 'POST');
|
|
373
|
-
if (apiError instanceof AuthenticationError ||
|
|
374
|
-
apiError instanceof AuthorizationError ||
|
|
375
|
-
apiError instanceof NetworkError ||
|
|
376
|
-
apiError instanceof RateLimitError ||
|
|
377
|
-
apiError instanceof ServerError) {
|
|
378
|
-
throw apiError;
|
|
379
|
-
}
|
|
380
|
-
if (apiError instanceof ResourceNotFoundError) {
|
|
381
|
-
debug('UniversalSearchService', `No relationship found between ${sourceResourceType} -> ${targetResourceType}`, { targetRecordId });
|
|
382
|
-
return [];
|
|
383
|
-
}
|
|
384
|
-
createScopedLogger('UniversalSearchService', 'searchByRelationship', OperationType.API_CALL).error(`Relationship search failed for ${sourceResourceType} -> ${targetResourceType}`, error);
|
|
385
|
-
return [];
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
static async searchByTimeframe(resourceType, timeframeConfig, limit, offset) {
|
|
389
|
-
const queryApiFilter = createTimeframeQuery(timeframeConfig);
|
|
390
|
-
try {
|
|
391
|
-
const client = resolveQueryApiClient();
|
|
392
|
-
const path = `/objects/${resourceType}/records/query`;
|
|
393
|
-
const requestBody = {
|
|
394
|
-
...queryApiFilter,
|
|
395
|
-
limit: limit || 10,
|
|
396
|
-
offset: offset || 0,
|
|
397
|
-
};
|
|
398
|
-
const response = await client.post(path, requestBody);
|
|
399
|
-
return response?.data?.data || [];
|
|
400
|
-
}
|
|
401
|
-
catch (error) {
|
|
402
|
-
const apiError = createApiErrorFromAxiosError(error, `/objects/${resourceType}/records/query`, 'POST');
|
|
403
|
-
if (apiError instanceof AuthenticationError ||
|
|
404
|
-
apiError instanceof AuthorizationError ||
|
|
405
|
-
apiError instanceof NetworkError ||
|
|
406
|
-
apiError instanceof RateLimitError ||
|
|
407
|
-
apiError instanceof ServerError) {
|
|
408
|
-
throw apiError;
|
|
409
|
-
}
|
|
410
|
-
if (apiError instanceof ResourceNotFoundError) {
|
|
411
|
-
debug('UniversalSearchService', `No ${resourceType} records found in specified timeframe`, { timeframeConfig });
|
|
412
|
-
return [];
|
|
413
|
-
}
|
|
414
|
-
createScopedLogger('UniversalSearchService', 'searchByTimeframe', OperationType.API_CALL).error(`Timeframe search failed for ${resourceType}`, error);
|
|
415
|
-
return [];
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
static async searchByContent(resourceType, query, searchFields = [], useOrLogic = true, limit, offset) {
|
|
419
|
-
let fields = searchFields;
|
|
420
|
-
if (fields.length === 0) {
|
|
421
|
-
switch (resourceType) {
|
|
422
|
-
case UniversalResourceType.COMPANIES:
|
|
423
|
-
fields = ['name', 'description', 'domains'];
|
|
424
|
-
break;
|
|
425
|
-
case UniversalResourceType.PEOPLE:
|
|
426
|
-
fields = ['name', 'email_addresses', 'job_title'];
|
|
427
|
-
break;
|
|
428
|
-
default:
|
|
429
|
-
fields = ['name'];
|
|
430
|
-
break;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
const queryApiFilter = createContentSearchQuery(fields, query, useOrLogic);
|
|
434
|
-
try {
|
|
435
|
-
const client = getLazyAttioClient();
|
|
436
|
-
const path = `/objects/${resourceType}/records/query`;
|
|
437
|
-
const requestBody = {
|
|
438
|
-
...queryApiFilter,
|
|
439
|
-
limit: limit || 10,
|
|
440
|
-
offset: offset || 0,
|
|
441
|
-
};
|
|
442
|
-
const response = await client.post(path, requestBody);
|
|
443
|
-
return response?.data?.data || [];
|
|
444
|
-
}
|
|
445
|
-
catch (error) {
|
|
446
|
-
const apiError = createApiErrorFromAxiosError(error, `/objects/${resourceType}/records/query`, 'POST');
|
|
447
|
-
if (apiError instanceof AuthenticationError ||
|
|
448
|
-
apiError instanceof AuthorizationError ||
|
|
449
|
-
apiError instanceof NetworkError ||
|
|
450
|
-
apiError instanceof RateLimitError ||
|
|
451
|
-
apiError instanceof ServerError) {
|
|
452
|
-
throw apiError;
|
|
453
|
-
}
|
|
454
|
-
if (apiError instanceof ResourceNotFoundError) {
|
|
455
|
-
debug('UniversalSearchService', `No ${resourceType} records found matching content search`, { query, fields });
|
|
456
|
-
return [];
|
|
457
|
-
}
|
|
458
|
-
createScopedLogger('UniversalSearchService', 'searchByContent', OperationType.API_CALL).error(`Content search failed for ${resourceType}`, error);
|
|
459
|
-
return [];
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
// Utility methods remain unchanged
|
|
152
|
+
// Utility methods
|
|
463
153
|
static async getSearchSuggestions() {
|
|
464
154
|
return [];
|
|
465
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalSearchService.js","sourceRoot":"","sources":["../../src/services/UniversalSearchService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"UniversalSearchService.js","sourceRoot":"","sources":["../../src/services/UniversalSearchService.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,19 +34,30 @@
|
|
|
34
34
|
import type { UniversalUpdateParams } from '../handlers/tool-configs/universal/types.js';
|
|
35
35
|
import { AttioRecord } from '../types/attio.js';
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* Update metadata containing warnings, suggestions, and field verification results
|
|
38
|
+
*
|
|
39
|
+
* Renamed from ValidationResult to avoid confusion with:
|
|
40
|
+
* - FieldValidationHandler.ValidationResult (pre-update validation)
|
|
41
|
+
* - FieldPersistenceHandler.VerificationResult (post-update verification)
|
|
42
|
+
*
|
|
43
|
+
* @see Issue #984 extension - Verification API unification
|
|
38
44
|
*/
|
|
39
|
-
export interface
|
|
45
|
+
export interface UpdateMetadata {
|
|
40
46
|
warnings: string[];
|
|
41
47
|
actualValues: Record<string, unknown>;
|
|
42
48
|
suggestions: string[];
|
|
49
|
+
/** Field verification details (Issue #984 extension) */
|
|
50
|
+
fieldVerification?: {
|
|
51
|
+
verified: boolean;
|
|
52
|
+
discrepancies: string[];
|
|
53
|
+
};
|
|
43
54
|
}
|
|
44
55
|
/**
|
|
45
|
-
* Enhanced update result that includes
|
|
56
|
+
* Enhanced update result that includes update metadata
|
|
46
57
|
*/
|
|
47
58
|
export interface EnhancedUpdateResult {
|
|
48
59
|
record: AttioRecord;
|
|
49
|
-
validation:
|
|
60
|
+
validation: UpdateMetadata;
|
|
50
61
|
}
|
|
51
62
|
/**
|
|
52
63
|
* UniversalUpdateService provides centralized record update functionality
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalUpdateService.d.ts","sourceRoot":"","sources":["../../src/services/UniversalUpdateService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"UniversalUpdateService.d.ts","sourceRoot":"","sources":["../../src/services/UniversalUpdateService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAiB/C;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,wDAAwD;IACxD,iBAAiB,CAAC,EAAE;QAClB,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;CAC5B;AAkBD;;;;;;;;;GASG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;WACU,0BAA0B,CACrC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,oBAAoB,CAAC;WA6DnB,YAAY,CACvB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,WAAW,CAAC;IA6DvB;;OAEG;mBACkB,mCAAmC;IAgKxD;;OAEG;mBACkB,qBAAqB;mBA2OrB,6BAA6B;CA2BnD"}
|