attio-mcp 1.3.6 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +284 -3
- package/README.md +143 -334
- 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/api/operations/batch.d.ts +3 -3
- package/dist/api/operations/batch.d.ts.map +1 -1
- package/dist/api/operations/batch.js.map +1 -1
- package/dist/api/operations/crud.d.ts.map +1 -1
- package/dist/api/operations/crud.js.map +1 -1
- package/dist/api/operations/search.d.ts.map +1 -1
- package/dist/api/operations/search.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/cli.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/errors/value-match-error.js +1 -1
- package/dist/handlers/tool-configs/lists.d.ts +142 -19
- package/dist/handlers/tool-configs/lists.d.ts.map +1 -1
- package/dist/handlers/tool-configs/lists.js +319 -25
- package/dist/handlers/tool-configs/lists.js.map +1 -1
- package/dist/handlers/tool-configs/universal/batch-search.d.ts +1 -1
- package/dist/handlers/tool-configs/universal/batch-search.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/batch-search.js +17 -13
- package/dist/handlers/tool-configs/universal/batch-search.js.map +1 -1
- 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.d.ts +4 -4
- package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/crud-operations.js +37 -24
- 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.d.ts +6 -3
- package/dist/handlers/tool-configs/universal/core/record-details-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/record-details-operations.js +35 -10
- package/dist/handlers/tool-configs/universal/core/record-details-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.d.ts +4 -3
- package/dist/handlers/tool-configs/universal/core/search-operations.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/search-operations.js +31 -12
- package/dist/handlers/tool-configs/universal/core/search-operations.js.map +1 -1
- package/dist/handlers/tool-configs/universal/core/utils.d.ts +1 -0
- package/dist/handlers/tool-configs/universal/core/utils.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/core/utils.js +3 -0
- package/dist/handlers/tool-configs/universal/core/utils.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 +3 -3
- package/dist/handlers/tool-configs/universal/operations/advanced-search.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/advanced-search.js +17 -10
- package/dist/handlers/tool-configs/universal/operations/advanced-search.js.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/batch-format.d.ts +1 -1
- package/dist/handlers/tool-configs/universal/operations/batch-format.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/batch-format.js +31 -10
- package/dist/handlers/tool-configs/universal/operations/batch-format.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.d.ts +3 -3
- package/dist/handlers/tool-configs/universal/operations/content-search.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/content-search.js +15 -9
- package/dist/handlers/tool-configs/universal/operations/content-search.js.map +1 -1
- 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.d.ts +3 -3
- package/dist/handlers/tool-configs/universal/operations/relationship-search.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/relationship-search.js +11 -8
- package/dist/handlers/tool-configs/universal/operations/relationship-search.js.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/timeframe-search.d.ts +3 -3
- package/dist/handlers/tool-configs/universal/operations/timeframe-search.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/operations/timeframe-search.js +16 -10
- package/dist/handlers/tool-configs/universal/operations/timeframe-search.js.map +1 -1
- 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 +27 -7
- package/dist/handlers/tool-configs/universal/shared-handlers.d.ts.map +1 -1
- package/dist/handlers/tool-configs/universal/shared-handlers.js +221 -25
- 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/smithery-diagnostics.js.map +1 -1
- package/dist/handlers/tool-configs/universal/types.d.ts +17 -7
- 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 +80 -17
- 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 +9 -2
- package/dist/handlers/tools/dispatcher/core.js.map +1 -1
- package/dist/handlers/tools/dispatcher/operations/lists.d.ts +20 -1
- package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -1
- package/dist/handlers/tools/dispatcher/operations/lists.js +366 -17
- package/dist/handlers/tools/dispatcher/operations/lists.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 +409 -122
- 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/objects/companies/basic.d.ts.map +1 -1
- package/dist/objects/companies/basic.js.map +1 -1
- package/dist/objects/lists/base.d.ts.map +1 -1
- package/dist/objects/lists/base.js +6 -2
- package/dist/objects/lists/base.js.map +1 -1
- package/dist/objects/lists/shared.d.ts.map +1 -1
- package/dist/objects/lists/shared.js +12 -1
- package/dist/objects/lists/shared.js.map +1 -1
- package/dist/objects/records/index.d.ts.map +1 -1
- package/dist/objects/records/index.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/OpenAiCompatibilityService.d.ts.map +1 -1
- package/dist/services/OpenAiCompatibilityService.js +12 -8
- package/dist/services/OpenAiCompatibilityService.js.map +1 -1
- package/dist/services/UniversalCreateService.d.ts +3 -3
- package/dist/services/UniversalCreateService.d.ts.map +1 -1
- package/dist/services/UniversalCreateService.js +162 -38
- package/dist/services/UniversalCreateService.js.map +1 -1
- package/dist/services/UniversalMetadataService.d.ts +8 -0
- package/dist/services/UniversalMetadataService.d.ts.map +1 -1
- package/dist/services/UniversalMetadataService.js +21 -0
- package/dist/services/UniversalMetadataService.js.map +1 -1
- package/dist/services/UniversalRetrievalService.d.ts +7 -5
- package/dist/services/UniversalRetrievalService.d.ts.map +1 -1
- package/dist/services/UniversalRetrievalService.js +31 -29
- package/dist/services/UniversalRetrievalService.js.map +1 -1
- package/dist/services/UniversalSearchService.d.ts +8 -27
- package/dist/services/UniversalSearchService.d.ts.map +1 -1
- package/dist/services/UniversalSearchService.js +19 -327
- package/dist/services/UniversalSearchService.js.map +1 -1
- package/dist/services/UniversalUpdateService.d.ts +25 -7
- package/dist/services/UniversalUpdateService.d.ts.map +1 -1
- package/dist/services/UniversalUpdateService.js +132 -157
- package/dist/services/UniversalUpdateService.js.map +1 -1
- package/dist/services/UniversalUtilityService.d.ts +9 -1
- package/dist/services/UniversalUtilityService.d.ts.map +1 -1
- package/dist/services/UniversalUtilityService.js +13 -0
- package/dist/services/UniversalUtilityService.js.map +1 -1
- package/dist/services/ValidationService.js +4 -4
- package/dist/services/ValidationService.js.map +1 -1
- package/dist/services/create/attio-create.service.d.ts.map +1 -1
- package/dist/services/create/attio-create.service.js +2 -1
- package/dist/services/create/attio-create.service.js.map +1 -1
- package/dist/services/create/creators/company-creator.js.map +1 -1
- package/dist/services/create/creators/note-creator.d.ts.map +1 -1
- package/dist/services/create/creators/note-creator.js +4 -2
- package/dist/services/create/creators/note-creator.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/create/mock-create.service.d.ts.map +1 -1
- package/dist/services/create/mock-create.service.js.map +1 -1
- package/dist/services/create/strategies/BaseCreateStrategy.d.ts +2 -2
- package/dist/services/create/strategies/BaseCreateStrategy.d.ts.map +1 -1
- package/dist/services/create/strategies/ListCreateStrategy.d.ts +3 -3
- package/dist/services/create/strategies/ListCreateStrategy.d.ts.map +1 -1
- package/dist/services/create/strategies/ListCreateStrategy.js +2 -16
- package/dist/services/create/strategies/ListCreateStrategy.js.map +1 -1
- package/dist/services/create/strategies/TaskCreateStrategy.d.ts.map +1 -1
- package/dist/services/create/strategies/TaskCreateStrategy.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/MetadataDiscoveryService.d.ts.map +1 -1
- package/dist/services/metadata/MetadataDiscoveryService.js.map +1 -1
- package/dist/services/metadata/MetadataTransformService.d.ts.map +1 -1
- package/dist/services/metadata/MetadataTransformService.js.map +1 -1
- 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/search-strategies/BaseSearchStrategy.d.ts +5 -5
- package/dist/services/search-strategies/BaseSearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/BaseSearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/CompanySearchStrategy.d.ts +4 -4
- package/dist/services/search-strategies/CompanySearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/CompanySearchStrategy.js +1 -1
- package/dist/services/search-strategies/CompanySearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/DealSearchStrategy.d.ts +4 -4
- package/dist/services/search-strategies/DealSearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/DealSearchStrategy.js +1 -1
- package/dist/services/search-strategies/DealSearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/ListSearchStrategy.d.ts +34 -7
- package/dist/services/search-strategies/ListSearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/ListSearchStrategy.js +65 -24
- package/dist/services/search-strategies/ListSearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/NoteSearchStrategy.d.ts +4 -4
- package/dist/services/search-strategies/NoteSearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/NoteSearchStrategy.js +6 -7
- package/dist/services/search-strategies/NoteSearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/PeopleSearchStrategy.d.ts +4 -4
- package/dist/services/search-strategies/PeopleSearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/PeopleSearchStrategy.js +1 -1
- package/dist/services/search-strategies/PeopleSearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/TaskSearchStrategy.d.ts +4 -4
- package/dist/services/search-strategies/TaskSearchStrategy.d.ts.map +1 -1
- package/dist/services/search-strategies/TaskSearchStrategy.js +7 -8
- package/dist/services/search-strategies/TaskSearchStrategy.js.map +1 -1
- package/dist/services/search-strategies/interfaces.d.ts +7 -6
- package/dist/services/search-strategies/interfaces.d.ts.map +1 -1
- package/dist/services/search-utilities/SearchUtilities.d.ts +22 -7
- package/dist/services/search-utilities/SearchUtilities.d.ts.map +1 -1
- package/dist/services/search-utilities/SearchUtilities.js +52 -4
- package/dist/services/search-utilities/SearchUtilities.js.map +1 -1
- 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 +207 -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/ResponseNormalizer.d.ts +4 -4
- package/dist/services/update/ResponseNormalizer.d.ts.map +1 -1
- package/dist/services/update/ResponseNormalizer.js +18 -9
- package/dist/services/update/ResponseNormalizer.js.map +1 -1
- 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 +7 -3
- package/dist/services/update/UpdateValidation.d.ts.map +1 -1
- package/dist/services/update/UpdateValidation.js +56 -32
- package/dist/services/update/UpdateValidation.js.map +1 -1
- package/dist/services/update/strategies/BaseUpdateStrategy.d.ts +2 -2
- package/dist/services/update/strategies/BaseUpdateStrategy.d.ts.map +1 -1
- package/dist/services/update/strategies/ListUpdateStrategy.d.ts +3 -3
- package/dist/services/update/strategies/ListUpdateStrategy.d.ts.map +1 -1
- package/dist/services/update/strategies/ListUpdateStrategy.js +4 -14
- package/dist/services/update/strategies/ListUpdateStrategy.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 +329 -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/types/attio.d.ts +55 -0
- package/dist/types/attio.d.ts.map +1 -1
- package/dist/types/attio.js +36 -0
- package/dist/types/attio.js.map +1 -1
- 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-response-utils.js +3 -3
- package/dist/utils/error-response-utils.js.map +1 -1
- 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/normalization/record-data-normalization.d.ts +47 -0
- package/dist/utils/normalization/record-data-normalization.d.ts.map +1 -0
- package/dist/utils/normalization/record-data-normalization.js +103 -0
- package/dist/utils/normalization/record-data-normalization.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 +35 -33
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAkIlE;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,aAevC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribute Not Found Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Detects "Cannot find attribute with slug/ID" errors and provides
|
|
6
|
+
* suggestions using Levenshtein distance algorithm.
|
|
7
|
+
*
|
|
8
|
+
* CRITICAL: This enhancer caused PR #1048 to fail due to missing
|
|
9
|
+
* function signatures. All functions must have COMPLETE declarations.
|
|
10
|
+
*/
|
|
11
|
+
import { sanitizedLog } from '../pii-sanitizer.js';
|
|
12
|
+
import { createScopedLogger } from '../../../../../utils/logger.js';
|
|
13
|
+
const logger = createScopedLogger('attribute-enhancer');
|
|
14
|
+
/**
|
|
15
|
+
* Calculate Levenshtein distance between two strings
|
|
16
|
+
* Used for suggesting similar attribute names
|
|
17
|
+
*
|
|
18
|
+
* PR #1048 FAILURE POINT: Must include COMPLETE function signature
|
|
19
|
+
* NOT: const matrix: number[][] = []
|
|
20
|
+
* BUT: const levenshteinDistance = (a: string, b: string): number => { const matrix... }
|
|
21
|
+
*/
|
|
22
|
+
const levenshteinDistance = (a, b) => {
|
|
23
|
+
const matrix = [];
|
|
24
|
+
// Initialize first column
|
|
25
|
+
for (let i = 0; i <= a.length; i++) {
|
|
26
|
+
matrix[i] = [i];
|
|
27
|
+
}
|
|
28
|
+
// Initialize first row
|
|
29
|
+
for (let j = 0; j <= b.length; j++) {
|
|
30
|
+
matrix[0][j] = j;
|
|
31
|
+
}
|
|
32
|
+
// Fill in the rest of the matrix
|
|
33
|
+
for (let i = 1; i <= a.length; i++) {
|
|
34
|
+
for (let j = 1; j <= b.length; j++) {
|
|
35
|
+
if (a[i - 1] === b[j - 1]) {
|
|
36
|
+
matrix[i][j] = matrix[i - 1][j - 1];
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
|
|
40
|
+
matrix[i][j - 1] + 1, // insertion
|
|
41
|
+
matrix[i - 1][j] + 1 // deletion
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return matrix[a.length][b.length];
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Find similar attribute names using Levenshtein distance
|
|
50
|
+
*/
|
|
51
|
+
const findSimilarAttributes = (target, candidates, maxResults) => {
|
|
52
|
+
const scored = candidates.map((c) => ({
|
|
53
|
+
name: c,
|
|
54
|
+
distance: levenshteinDistance(target.toLowerCase(), c.toLowerCase()),
|
|
55
|
+
}));
|
|
56
|
+
return scored
|
|
57
|
+
.filter((s) => s.distance <= 3) // Max 3 edits
|
|
58
|
+
.sort((a, b) => a.distance - b.distance)
|
|
59
|
+
.slice(0, maxResults)
|
|
60
|
+
.map((s) => s.name);
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Enhance error messages for attribute-not-found errors
|
|
64
|
+
* Detects "Cannot find attribute with slug/ID" errors and provides suggestions
|
|
65
|
+
*/
|
|
66
|
+
const enhanceAttributeNotFoundError = async (error, resourceType) => {
|
|
67
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
68
|
+
// Pattern: "Cannot find attribute with slug/ID "X"."
|
|
69
|
+
const attrMatch = msg.match(/Cannot find attribute with slug\/ID "(.+?)"/);
|
|
70
|
+
if (!attrMatch)
|
|
71
|
+
return null;
|
|
72
|
+
const invalidAttr = attrMatch[1];
|
|
73
|
+
try {
|
|
74
|
+
// Fetch valid attributes and find similar ones
|
|
75
|
+
const { handleUniversalDiscoverAttributes } = await import('../../shared-handlers.js');
|
|
76
|
+
const schema = await handleUniversalDiscoverAttributes(resourceType);
|
|
77
|
+
const allAttrs = (schema.all || []);
|
|
78
|
+
const attrNames = allAttrs
|
|
79
|
+
.flatMap((a) => [a.name, a.title, a.api_slug])
|
|
80
|
+
.filter(Boolean);
|
|
81
|
+
// Find similar attribute names using Levenshtein distance
|
|
82
|
+
const suggestions = findSimilarAttributes(invalidAttr, attrNames, 3);
|
|
83
|
+
let message = `Attribute "${invalidAttr}" does not exist on ${resourceType}.\n\n`;
|
|
84
|
+
if (suggestions.length > 0) {
|
|
85
|
+
message += `Did you mean: ${suggestions.map((s) => `"${s}"`).join(', ')}?\n\n`;
|
|
86
|
+
}
|
|
87
|
+
message += `Next step: Call records_discover_attributes with\n`;
|
|
88
|
+
message += ` resource_type: "${resourceType}"\n`;
|
|
89
|
+
message += `to see all valid attributes.`;
|
|
90
|
+
return message;
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
sanitizedLog(logger, 'debug', 'Failed to discover attributes for suggestions', {
|
|
94
|
+
enhancerName: 'attribute-not-found',
|
|
95
|
+
resourceType,
|
|
96
|
+
invalidAttribute: invalidAttr,
|
|
97
|
+
error: err instanceof Error ? err.message : String(err),
|
|
98
|
+
});
|
|
99
|
+
return (`Attribute "${invalidAttr}" does not exist on ${resourceType}.\n\n` +
|
|
100
|
+
`Next step: Use records_discover_attributes to see valid attributes.`);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Attribute Not Found Enhancer
|
|
105
|
+
* Uses Levenshtein distance to suggest similar attribute names
|
|
106
|
+
*/
|
|
107
|
+
export const attributeNotFoundEnhancer = {
|
|
108
|
+
name: 'attribute-not-found',
|
|
109
|
+
errorName: 'attribute_not_found',
|
|
110
|
+
matches: (error, _context) => {
|
|
111
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
112
|
+
return msg.includes('Cannot find attribute with slug/ID');
|
|
113
|
+
},
|
|
114
|
+
enhance: async (error, context) => {
|
|
115
|
+
return enhanceAttributeNotFoundError(error, context.resourceType);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=attribute-enhancer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complex Type Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Enhances errors for complex type fields: location, phone-number, personal-name
|
|
6
|
+
* Provides example structures and usage tips.
|
|
7
|
+
*/
|
|
8
|
+
import type { ErrorEnhancer } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Complex Type Enhancer
|
|
11
|
+
* Handles location, phone-number, and personal-name field errors
|
|
12
|
+
*/
|
|
13
|
+
export declare const complexTypeEnhancer: ErrorEnhancer;
|
|
14
|
+
//# sourceMappingURL=complex-type-enhancer.d.ts.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complex-type-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAqFlE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAoBjC,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complex Type Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Enhances errors for complex type fields: location, phone-number, personal-name
|
|
6
|
+
* Provides example structures and usage tips.
|
|
7
|
+
*/
|
|
8
|
+
import { getErrorMessage, isAxiosError } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Enhance complex type errors (location, personal-name, phone-number)
|
|
11
|
+
*/
|
|
12
|
+
const enhanceComplexTypeError = (error, recordData) => {
|
|
13
|
+
const locationExample = '{\n' +
|
|
14
|
+
' "line_1": "123 Main St",\n' +
|
|
15
|
+
' "locality": "City",\n' +
|
|
16
|
+
' "region": "State",\n' +
|
|
17
|
+
' "postcode": "12345",\n' +
|
|
18
|
+
' "country_code": "US",\n' +
|
|
19
|
+
' "latitude": null,\n' +
|
|
20
|
+
' "longitude": null,\n' +
|
|
21
|
+
' "line_2": null,\n' +
|
|
22
|
+
' "line_3": null,\n' +
|
|
23
|
+
' "line_4": null\n' +
|
|
24
|
+
'}';
|
|
25
|
+
const phoneExample = '{ "phone_number": "+15551234567", "country_code": "US" }';
|
|
26
|
+
const nameExample = '{ "first_name": "Jane", "last_name": "Doe" }';
|
|
27
|
+
const msg = getErrorMessage(error);
|
|
28
|
+
const validationErrors = isAxiosError(error)
|
|
29
|
+
? error.response?.data?.validation_errors
|
|
30
|
+
: null;
|
|
31
|
+
const recordFields = recordData ? Object.keys(recordData) : [];
|
|
32
|
+
const containsLocation = /location/i.test(msg) ||
|
|
33
|
+
recordFields.some((f) => /location/i.test(f)) ||
|
|
34
|
+
(validationErrors &&
|
|
35
|
+
validationErrors.some((ve) => /location/i.test(String(ve?.field || ve?.path || ve?.message || ''))));
|
|
36
|
+
if (containsLocation) {
|
|
37
|
+
return (`Invalid location value. Expected an object with all required fields.\n\n` +
|
|
38
|
+
`Expected structure:\n${locationExample}\n\n` +
|
|
39
|
+
`Tip: Missing fields are auto-filled with null; pass an object, not a string.`);
|
|
40
|
+
}
|
|
41
|
+
const containsPhone = /phone/.test(msg) ||
|
|
42
|
+
(validationErrors &&
|
|
43
|
+
validationErrors.some((ve) => /phone/.test(String(ve?.field || ve?.path || ve?.message || ''))));
|
|
44
|
+
if (containsPhone) {
|
|
45
|
+
return (`Invalid phone-number value. Provide phone_number or original_phone_number strings.\n\n` +
|
|
46
|
+
`Example: ${phoneExample}\n\n` +
|
|
47
|
+
`Tip: Strings are normalized to E.164; keep label/type fields if needed.`);
|
|
48
|
+
}
|
|
49
|
+
const containsPersonalName = /personal-name/.test(msg) ||
|
|
50
|
+
(validationErrors &&
|
|
51
|
+
validationErrors.some((ve) => /name/.test(String(ve?.field || ve?.path || ve?.message || ''))));
|
|
52
|
+
if (containsPersonalName) {
|
|
53
|
+
return (`Invalid personal-name value. Provide first_name/last_name or full_name.\n\n` +
|
|
54
|
+
`Example: ${nameExample}\n\n` +
|
|
55
|
+
`Tip: Strings are parsed automatically; empty strings are rejected.`);
|
|
56
|
+
}
|
|
57
|
+
return null;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Complex Type Enhancer
|
|
61
|
+
* Handles location, phone-number, and personal-name field errors
|
|
62
|
+
*/
|
|
63
|
+
export const complexTypeEnhancer = {
|
|
64
|
+
name: 'complex-type',
|
|
65
|
+
errorName: 'validation_error',
|
|
66
|
+
matches: (error, _context) => {
|
|
67
|
+
const msg = getErrorMessage(error);
|
|
68
|
+
return (/location/i.test(msg) ||
|
|
69
|
+
/phone/.test(msg) ||
|
|
70
|
+
/personal-name/.test(msg) ||
|
|
71
|
+
msg.includes('Invalid value'));
|
|
72
|
+
},
|
|
73
|
+
enhance: async (error, context) => {
|
|
74
|
+
return enhanceComplexTypeError(error, context.recordData);
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=complex-type-enhancer.js.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complex-type-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Enhancers - Centralized Exports & Pipelines
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*/
|
|
5
|
+
import { requiredFieldsEnhancer } from './required-fields-enhancer.js';
|
|
6
|
+
import { uniquenessEnhancer } from './uniqueness-enhancer.js';
|
|
7
|
+
import { attributeNotFoundEnhancer } from './attribute-enhancer.js';
|
|
8
|
+
import { selectStatusEnhancer } from './select-status-enhancer.js';
|
|
9
|
+
import { complexTypeEnhancer } from './complex-type-enhancer.js';
|
|
10
|
+
import { recordReferenceEnhancer } from './record-reference-enhancer.js';
|
|
11
|
+
/**
|
|
12
|
+
* Enhancer pipeline for CREATE operations
|
|
13
|
+
* Order matters: more specific errors before generic ones
|
|
14
|
+
*/
|
|
15
|
+
export declare const CREATE_ERROR_ENHANCERS: readonly [import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer];
|
|
16
|
+
/**
|
|
17
|
+
* Enhancer pipeline for UPDATE operations
|
|
18
|
+
* Note: Required fields and uniqueness checks not needed for updates
|
|
19
|
+
*/
|
|
20
|
+
export declare const UPDATE_ERROR_ENHANCERS: readonly [import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer, import("./types.js").ErrorEnhancer];
|
|
21
|
+
export { requiredFieldsEnhancer, uniquenessEnhancer, attributeNotFoundEnhancer, selectStatusEnhancer, complexTypeEnhancer, recordReferenceEnhancer, };
|
|
22
|
+
export type { CrudErrorContext, ErrorEnhancer, ValidationMetadata, AxiosError, AxiosErrorResponse, } from './types.js';
|
|
23
|
+
export { isAxiosError } from './types.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,mOAOzB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sBAAsB,2JAKzB,CAAC;AAEX,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,CAAC;AAEF,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Enhancers - Centralized Exports & Pipelines
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*/
|
|
5
|
+
import { requiredFieldsEnhancer } from './required-fields-enhancer.js';
|
|
6
|
+
import { uniquenessEnhancer } from './uniqueness-enhancer.js';
|
|
7
|
+
import { attributeNotFoundEnhancer } from './attribute-enhancer.js';
|
|
8
|
+
import { selectStatusEnhancer } from './select-status-enhancer.js';
|
|
9
|
+
import { complexTypeEnhancer } from './complex-type-enhancer.js';
|
|
10
|
+
import { recordReferenceEnhancer } from './record-reference-enhancer.js';
|
|
11
|
+
/**
|
|
12
|
+
* Enhancer pipeline for CREATE operations
|
|
13
|
+
* Order matters: more specific errors before generic ones
|
|
14
|
+
*/
|
|
15
|
+
export const CREATE_ERROR_ENHANCERS = [
|
|
16
|
+
requiredFieldsEnhancer,
|
|
17
|
+
uniquenessEnhancer,
|
|
18
|
+
attributeNotFoundEnhancer,
|
|
19
|
+
complexTypeEnhancer,
|
|
20
|
+
selectStatusEnhancer,
|
|
21
|
+
recordReferenceEnhancer,
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Enhancer pipeline for UPDATE operations
|
|
25
|
+
* Note: Required fields and uniqueness checks not needed for updates
|
|
26
|
+
*/
|
|
27
|
+
export const UPDATE_ERROR_ENHANCERS = [
|
|
28
|
+
attributeNotFoundEnhancer,
|
|
29
|
+
complexTypeEnhancer,
|
|
30
|
+
selectStatusEnhancer,
|
|
31
|
+
recordReferenceEnhancer,
|
|
32
|
+
];
|
|
33
|
+
export { requiredFieldsEnhancer, uniquenessEnhancer, attributeNotFoundEnhancer, selectStatusEnhancer, complexTypeEnhancer, recordReferenceEnhancer, };
|
|
34
|
+
export { isAxiosError } from './types.js';
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,sBAAsB;IACtB,kBAAkB;IAClB,yBAAyB;IACzB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;CACf,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,yBAAyB;IACzB,mBAAmB;IACnB,oBAAoB;IACpB,uBAAuB;CACf,CAAC;AAEX,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,GACxB,CAAC;AAUF,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record Reference Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
* Issue #997 - Enhanced record-reference attribute error handling
|
|
5
|
+
*
|
|
6
|
+
* Detects "Missing target_object on record reference value" and similar errors
|
|
7
|
+
* Provides format guidance for record-reference fields.
|
|
8
|
+
*/
|
|
9
|
+
import type { ErrorEnhancer } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Record Reference Enhancer
|
|
12
|
+
* Handles record-reference field format errors (Issue #997)
|
|
13
|
+
*/
|
|
14
|
+
export declare const recordReferenceEnhancer: ErrorEnhancer;
|
|
15
|
+
//# sourceMappingURL=record-reference-enhancer.d.ts.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-reference-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AA8ElE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,aAyCrC,CAAC"}
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Record Reference Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
* Issue #997 - Enhanced record-reference attribute error handling
|
|
5
|
+
*
|
|
6
|
+
* Detects "Missing target_object on record reference value" and similar errors
|
|
7
|
+
* Provides format guidance for record-reference fields.
|
|
8
|
+
*/
|
|
9
|
+
import { getErrorMessage, isAxiosError } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Enhance error messages for record-reference attribute errors
|
|
12
|
+
*/
|
|
13
|
+
const enhanceRecordReferenceError = (error, recordData) => {
|
|
14
|
+
const msg = getErrorMessage(error);
|
|
15
|
+
// Also check for validation_errors in axios response
|
|
16
|
+
let fullErrorText = msg;
|
|
17
|
+
if (isAxiosError(error)) {
|
|
18
|
+
const data = error.response?.data;
|
|
19
|
+
if (data?.message) {
|
|
20
|
+
fullErrorText += ' ' + data.message;
|
|
21
|
+
}
|
|
22
|
+
if (data?.validation_errors) {
|
|
23
|
+
fullErrorText +=
|
|
24
|
+
' ' +
|
|
25
|
+
data.validation_errors.map((e) => String(e.message || e)).join(' ');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Pattern detection for record-reference errors
|
|
29
|
+
const isRecordRefError = fullErrorText.includes('Missing target_object') ||
|
|
30
|
+
fullErrorText.includes('record reference') ||
|
|
31
|
+
fullErrorText.includes('target_record_id') ||
|
|
32
|
+
(fullErrorText.includes('Invalid value was passed to attribute') &&
|
|
33
|
+
(fullErrorText.includes('company') ||
|
|
34
|
+
fullErrorText.includes('associated_people') ||
|
|
35
|
+
fullErrorText.includes('associated_company') ||
|
|
36
|
+
fullErrorText.includes('main_contact')));
|
|
37
|
+
if (!isRecordRefError)
|
|
38
|
+
return null;
|
|
39
|
+
// Try to identify which field might be the issue
|
|
40
|
+
const potentialRefFields = [
|
|
41
|
+
'company',
|
|
42
|
+
'associated_company',
|
|
43
|
+
'associated_people',
|
|
44
|
+
'main_contact',
|
|
45
|
+
'person',
|
|
46
|
+
'people',
|
|
47
|
+
];
|
|
48
|
+
let affectedField = null;
|
|
49
|
+
if (recordData) {
|
|
50
|
+
for (const field of potentialRefFields) {
|
|
51
|
+
if (field in recordData) {
|
|
52
|
+
affectedField = field;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
let message = `Record reference format error`;
|
|
58
|
+
if (affectedField) {
|
|
59
|
+
message += ` on field "${affectedField}"`;
|
|
60
|
+
}
|
|
61
|
+
message += `.\n\n`;
|
|
62
|
+
message += `The Attio API expects record-reference fields in this format:\n`;
|
|
63
|
+
message += ` [{ "target_object": "object_type", "target_record_id": "uuid" }]\n\n`;
|
|
64
|
+
message += `Simplified formats (auto-transformed by this server):\n`;
|
|
65
|
+
message += ` • String: "company": "record-uuid"\n`;
|
|
66
|
+
message += ` • Legacy object: "company": {"record_id": "uuid"}\n\n`;
|
|
67
|
+
message += `If you're seeing this error, the auto-transformation may have failed.\n`;
|
|
68
|
+
message += `Ensure the record ID is valid and the field name is correct.`;
|
|
69
|
+
return message;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Record Reference Enhancer
|
|
73
|
+
* Handles record-reference field format errors (Issue #997)
|
|
74
|
+
*/
|
|
75
|
+
export const recordReferenceEnhancer = {
|
|
76
|
+
name: 'record-reference',
|
|
77
|
+
errorName: 'record_reference_error',
|
|
78
|
+
matches: (error, _context) => {
|
|
79
|
+
const msg = getErrorMessage(error);
|
|
80
|
+
// Check for axios validation errors
|
|
81
|
+
let fullText = msg;
|
|
82
|
+
if (isAxiosError(error)) {
|
|
83
|
+
const data = error.response?.data;
|
|
84
|
+
if (data?.message) {
|
|
85
|
+
fullText += ' ' + data.message;
|
|
86
|
+
}
|
|
87
|
+
// CRITICAL: Also check validation_errors array for record-reference patterns
|
|
88
|
+
if (data?.validation_errors) {
|
|
89
|
+
fullText +=
|
|
90
|
+
' ' +
|
|
91
|
+
data.validation_errors.map((e) => String(e.message || e)).join(' ');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return (fullText.includes('Missing target_object') ||
|
|
95
|
+
fullText.includes('record reference') ||
|
|
96
|
+
fullText.includes('target_record_id') ||
|
|
97
|
+
// CRITICAL: Match "Invalid value was passed to attribute" pattern (from enhanceRecordReferenceError)
|
|
98
|
+
(fullText.includes('Invalid value was passed to attribute') &&
|
|
99
|
+
(fullText.includes('company') ||
|
|
100
|
+
fullText.includes('associated_people') ||
|
|
101
|
+
fullText.includes('associated_company') ||
|
|
102
|
+
fullText.includes('main_contact'))));
|
|
103
|
+
},
|
|
104
|
+
enhance: async (error, context) => {
|
|
105
|
+
return enhanceRecordReferenceError(error, context.recordData);
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
//# sourceMappingURL=record-reference-enhancer.js.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-reference-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Required Fields Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Detects missing required fields and provides specific guidance,
|
|
6
|
+
* especially for deal-specific required fields like "stage".
|
|
7
|
+
*/
|
|
8
|
+
import type { ErrorEnhancer } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Required Fields Enhancer
|
|
11
|
+
* Detects missing required field errors and provides context-specific guidance
|
|
12
|
+
*/
|
|
13
|
+
export declare const requiredFieldsEnhancer: ErrorEnhancer;
|
|
14
|
+
//# sourceMappingURL=required-fields-enhancer.d.ts.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"required-fields-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAuFlE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,aA0BpC,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Required Fields Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Detects missing required fields and provides specific guidance,
|
|
6
|
+
* especially for deal-specific required fields like "stage".
|
|
7
|
+
*/
|
|
8
|
+
import { UniversalResourceType } from '../../../../../handlers/tool-configs/universal/types.js';
|
|
9
|
+
import { sanitizedLog } from '../pii-sanitizer.js';
|
|
10
|
+
import { createScopedLogger } from '../../../../../utils/logger.js';
|
|
11
|
+
const logger = createScopedLogger('required-fields-enhancer');
|
|
12
|
+
/**
|
|
13
|
+
* Normalize field names for comparison
|
|
14
|
+
*/
|
|
15
|
+
const normalizeFieldName = (field) => field.trim().toLowerCase();
|
|
16
|
+
/**
|
|
17
|
+
* Check if recordData contains a stage field (for deals)
|
|
18
|
+
*/
|
|
19
|
+
const hasStageField = (recordData) => {
|
|
20
|
+
const directKeys = Object.keys(recordData).map(normalizeFieldName);
|
|
21
|
+
if (directKeys.includes('stage') ||
|
|
22
|
+
directKeys.includes('deal stage') ||
|
|
23
|
+
directKeys.includes('status')) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
const values = recordData.values &&
|
|
27
|
+
typeof recordData.values === 'object' &&
|
|
28
|
+
recordData.values !== null
|
|
29
|
+
? recordData.values
|
|
30
|
+
: null;
|
|
31
|
+
if (!values)
|
|
32
|
+
return false;
|
|
33
|
+
const valueKeys = Object.keys(values).map(normalizeFieldName);
|
|
34
|
+
return (valueKeys.includes('stage') ||
|
|
35
|
+
valueKeys.includes('deal stage') ||
|
|
36
|
+
valueKeys.includes('status'));
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Build enhanced error message for missing deal stage
|
|
40
|
+
*/
|
|
41
|
+
const buildMissingDealStageMessage = async (recordData) => {
|
|
42
|
+
if (hasStageField(recordData))
|
|
43
|
+
return null;
|
|
44
|
+
try {
|
|
45
|
+
const { AttributeOptionsService } = await import('../../../../../services/metadata/index.js');
|
|
46
|
+
const { options } = await AttributeOptionsService.getOptions('deals', 'stage');
|
|
47
|
+
const preview = options
|
|
48
|
+
.slice(0, 5)
|
|
49
|
+
.map((option) => `"${option.title}"`)
|
|
50
|
+
.join(', ');
|
|
51
|
+
const hasMore = options.length > 5 ? ` (+${options.length - 5} more)` : '';
|
|
52
|
+
return (`Required field "stage" is missing for deals.\n\n` +
|
|
53
|
+
`Common stage values: ${preview}${hasMore}\n\n` +
|
|
54
|
+
`For the full list, call: records_get_attribute_options(resource_type="deals", attribute="stage").`);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
sanitizedLog(logger, 'debug', 'Failed to fetch stage options for enhanced error message', {
|
|
58
|
+
enhancerName: 'required-fields',
|
|
59
|
+
resourceType: 'deals',
|
|
60
|
+
attribute: 'stage',
|
|
61
|
+
error: err instanceof Error ? err.message : String(err),
|
|
62
|
+
});
|
|
63
|
+
return (`Required field "stage" is missing for deals.\n\n` +
|
|
64
|
+
`Call records_get_attribute_options(resource_type="deals", attribute="stage") to retrieve valid stage values, then retry.`);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Required Fields Enhancer
|
|
69
|
+
* Detects missing required field errors and provides context-specific guidance
|
|
70
|
+
*/
|
|
71
|
+
export const requiredFieldsEnhancer = {
|
|
72
|
+
name: 'required-fields',
|
|
73
|
+
errorName: 'validation_error',
|
|
74
|
+
matches: (error, _context) => {
|
|
75
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
76
|
+
return msg.includes('required field') || msg.includes('Missing required');
|
|
77
|
+
},
|
|
78
|
+
enhance: async (_error, context) => {
|
|
79
|
+
const { resourceType, recordData } = context;
|
|
80
|
+
// Deal-specific required field handling
|
|
81
|
+
if (resourceType === UniversalResourceType.DEALS && recordData) {
|
|
82
|
+
const stageMessage = await buildMissingDealStageMessage(recordData);
|
|
83
|
+
if (stageMessage) {
|
|
84
|
+
return stageMessage;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Generic required field message
|
|
88
|
+
return 'Missing required fields. Please check that all mandatory fields are provided.';
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=required-fields-enhancer.js.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"required-fields-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Select/Status Error Enhancer
|
|
3
|
+
* Issue #1001 - Strategy Pattern for CRUD error handling
|
|
4
|
+
*
|
|
5
|
+
* Detects "Cannot find select option" or "Cannot find Status" errors
|
|
6
|
+
* and provides valid options from AttributeOptionsService.
|
|
7
|
+
*/
|
|
8
|
+
import type { ErrorEnhancer } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Select/Status Enhancer
|
|
11
|
+
* Provides valid options for select and status field errors
|
|
12
|
+
*/
|
|
13
|
+
export declare const selectStatusEnhancer: ErrorEnhancer;
|
|
14
|
+
//# sourceMappingURL=select-status-enhancer.d.ts.map
|
package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-status-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAmIlE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAqBlC,CAAC"}
|