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,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FieldValidationHandler - Validation orchestration with display name resolution
|
|
3
|
+
*
|
|
4
|
+
* Consolidates validation logic and integrates display name resolution
|
|
5
|
+
* for create/update operations.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #984 - Extend display name resolution to create/update operations
|
|
8
|
+
*/
|
|
9
|
+
import { validateFields } from '../../handlers/tool-configs/universal/field-mapper.js';
|
|
10
|
+
import { ValidationService } from '../../services/ValidationService.js';
|
|
11
|
+
import { debug, OperationType } from '../../utils/logger.js';
|
|
12
|
+
/**
|
|
13
|
+
* FieldValidationHandler - Validation and display name resolution
|
|
14
|
+
*/
|
|
15
|
+
export class FieldValidationHandler {
|
|
16
|
+
/**
|
|
17
|
+
* Validate fields and optionally resolve display names to API slugs
|
|
18
|
+
*
|
|
19
|
+
* Integrates display name resolution (previously only in get_attribute_options)
|
|
20
|
+
* to work for create/update operations.
|
|
21
|
+
*
|
|
22
|
+
* @param resourceType - Resource type being validated
|
|
23
|
+
* @param values - Field values to validate
|
|
24
|
+
* @param objectSlug - Optional object slug for display name resolution
|
|
25
|
+
* @param enableDisplayNameResolution - Whether to attempt display name resolution (default: true)
|
|
26
|
+
* @returns Validation result with warnings, suggestions, and resolved field names
|
|
27
|
+
*/
|
|
28
|
+
static async validateAndResolve(resourceType, values, objectSlug, enableDisplayNameResolution = true) {
|
|
29
|
+
const result = {
|
|
30
|
+
valid: true,
|
|
31
|
+
errors: [],
|
|
32
|
+
warnings: [],
|
|
33
|
+
suggestions: [],
|
|
34
|
+
resolvedFields: new Map(),
|
|
35
|
+
};
|
|
36
|
+
// Pre-validate fields with suggestions
|
|
37
|
+
const fieldValidation = validateFields(resourceType, values);
|
|
38
|
+
// Propagate validation results (PR #1006 Phase 3.1)
|
|
39
|
+
result.valid = fieldValidation.valid;
|
|
40
|
+
result.errors.push(...fieldValidation.errors);
|
|
41
|
+
if (fieldValidation.warnings.length > 0) {
|
|
42
|
+
result.warnings.push(...fieldValidation.warnings);
|
|
43
|
+
debug('FieldValidationHandler', 'Field validation warnings', {
|
|
44
|
+
resourceType,
|
|
45
|
+
warnings: fieldValidation.warnings.join('\n'),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (fieldValidation.suggestions.length > 0) {
|
|
49
|
+
const truncated = ValidationService.truncateSuggestions(fieldValidation.suggestions);
|
|
50
|
+
result.suggestions.push(...truncated);
|
|
51
|
+
debug('FieldValidationHandler', 'Field suggestions', {
|
|
52
|
+
resourceType,
|
|
53
|
+
suggestions: truncated.join('\n'),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// NEW: Attempt display name resolution for unknown fields
|
|
57
|
+
if (enableDisplayNameResolution && objectSlug) {
|
|
58
|
+
await this.resolveDisplayNames(values, objectSlug, result);
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Apply deal-specific validation and defaults
|
|
64
|
+
*
|
|
65
|
+
* @param values - Deal values to validate
|
|
66
|
+
* @param skipApiValidation - Whether to skip API validation
|
|
67
|
+
* @returns Deal validation result with validated data, warnings, and suggestions
|
|
68
|
+
*/
|
|
69
|
+
static async validateDealDefaults(values, skipApiValidation = false) {
|
|
70
|
+
try {
|
|
71
|
+
const { applyDealDefaultsWithValidation } = await import('../../config/deal-defaults.js');
|
|
72
|
+
const dealValidation = await applyDealDefaultsWithValidation(values, skipApiValidation);
|
|
73
|
+
debug('FieldValidationHandler', 'Deal validation applied', {
|
|
74
|
+
warnings: dealValidation.warnings,
|
|
75
|
+
suggestions: dealValidation.suggestions,
|
|
76
|
+
});
|
|
77
|
+
return {
|
|
78
|
+
dealData: dealValidation.dealData,
|
|
79
|
+
warnings: dealValidation.warnings,
|
|
80
|
+
suggestions: dealValidation.suggestions,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
85
|
+
debug('FieldValidationHandler', 'Deal validation failed', {
|
|
86
|
+
error: errorMessage,
|
|
87
|
+
});
|
|
88
|
+
return {
|
|
89
|
+
dealData: values,
|
|
90
|
+
warnings: [`Deal validation warning: ${errorMessage}`],
|
|
91
|
+
suggestions: [],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Attempt to resolve display names to API slugs for unknown fields
|
|
97
|
+
*
|
|
98
|
+
* This extends display name resolution (previously only in get_attribute_options)
|
|
99
|
+
* to work for create/update operations, improving UX consistency.
|
|
100
|
+
*
|
|
101
|
+
* @param values - Field values (may contain display names like "Deal stage")
|
|
102
|
+
* @param objectSlug - Object slug for attribute lookup
|
|
103
|
+
* @param result - Validation result to populate with resolutions
|
|
104
|
+
*/
|
|
105
|
+
static async resolveDisplayNames(values, objectSlug, result) {
|
|
106
|
+
// Import display name resolver (will be exported in Phase 4)
|
|
107
|
+
// For now, we'll use a simplified version until shared-handlers exports it
|
|
108
|
+
try {
|
|
109
|
+
const fieldNames = Object.keys(values);
|
|
110
|
+
for (const fieldName of fieldNames) {
|
|
111
|
+
// Only attempt resolution for fields with spaces or mixed case (likely display names)
|
|
112
|
+
const mightBeDisplayName = fieldName.includes(' ') || /[A-Z]/.test(fieldName);
|
|
113
|
+
if (!mightBeDisplayName) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
// Attempt to resolve display name to API slug
|
|
117
|
+
// Uses the exported resolveAttributeDisplayName from shared-handlers.ts
|
|
118
|
+
const resolved = await this.attemptDisplayNameResolution(objectSlug, fieldName);
|
|
119
|
+
if (resolved && resolved !== fieldName) {
|
|
120
|
+
result.resolvedFields.set(fieldName, resolved);
|
|
121
|
+
debug('FieldValidationHandler', 'Resolved display name', {
|
|
122
|
+
from: fieldName,
|
|
123
|
+
to: resolved,
|
|
124
|
+
objectSlug,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
// Silent fallback - display name resolution is best-effort
|
|
131
|
+
debug('FieldValidationHandler', 'Display name resolution failed', {
|
|
132
|
+
error: error instanceof Error ? error.message : String(error),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Attempt to resolve a display name to an API slug
|
|
138
|
+
*
|
|
139
|
+
* Uses the exported resolveAttributeDisplayName from shared-handlers.ts
|
|
140
|
+
* to support user-friendly field names like "Deal stage" instead of "stage"
|
|
141
|
+
*
|
|
142
|
+
* @param objectSlug - The object slug (e.g., "deals", "companies")
|
|
143
|
+
* @param fieldName - The field name to resolve (e.g., "Deal stage")
|
|
144
|
+
* @returns The resolved API slug if found, or null
|
|
145
|
+
*/
|
|
146
|
+
static async attemptDisplayNameResolution(objectSlug, fieldName) {
|
|
147
|
+
try {
|
|
148
|
+
const { resolveAttributeDisplayName } = await import('../../handlers/tool-configs/universal/shared-handlers.js');
|
|
149
|
+
return await resolveAttributeDisplayName(objectSlug, fieldName);
|
|
150
|
+
}
|
|
151
|
+
catch (err) {
|
|
152
|
+
debug('FieldValidationHandler', 'Display name resolution failed', { objectSlug, fieldName, error: err }, 'attemptDisplayNameResolution', OperationType.DATA_PROCESSING);
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=FieldValidationHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldValidationHandler.js","sourceRoot":"","sources":["../../../src/services/update/FieldValidationHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetadataResolver - Centralized metadata fetching with caching
|
|
3
|
+
*
|
|
4
|
+
* Consolidates duplicate metadata fetching from UniversalUpdateService
|
|
5
|
+
* and value-transformer into a single, cacheable operation.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #984 - Consolidate metadata fetching to reduce API calls by 40-60%
|
|
8
|
+
*/
|
|
9
|
+
import { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
|
|
10
|
+
import type { AttributeMetadata } from '../../services/value-transformer/types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Result of metadata resolution
|
|
13
|
+
*/
|
|
14
|
+
export interface MetadataResolutionResult {
|
|
15
|
+
/** Map of attribute slug → metadata for transformer */
|
|
16
|
+
metadataMap: Map<string, AttributeMetadata>;
|
|
17
|
+
/** Array of attribute slugs (lowercase) for field mapper */
|
|
18
|
+
availableAttributes: string[];
|
|
19
|
+
/** Whether result came from cache (true) or fresh fetch (false) */
|
|
20
|
+
fromCache: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* MetadataResolver - Single source of truth for metadata fetching
|
|
24
|
+
*/
|
|
25
|
+
export declare class MetadataResolver {
|
|
26
|
+
/**
|
|
27
|
+
* Fetch metadata for a resource type with caching
|
|
28
|
+
*
|
|
29
|
+
* This is the single entry point for metadata fetching across
|
|
30
|
+
* UniversalUpdateService, UniversalCreateService, and value-transformer.
|
|
31
|
+
*
|
|
32
|
+
* @param resourceType - The resource type to fetch metadata for
|
|
33
|
+
* @param recordData - Optional record data containing object slug
|
|
34
|
+
* @returns Metadata map and available attributes for field mapping
|
|
35
|
+
*/
|
|
36
|
+
static fetchMetadata(resourceType: UniversalResourceType, recordData?: Record<string, unknown>): Promise<MetadataResolutionResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Fetch fresh metadata from Attio API
|
|
39
|
+
*/
|
|
40
|
+
private static fetchFreshMetadata;
|
|
41
|
+
/**
|
|
42
|
+
* Extract object slug from resource type and record data
|
|
43
|
+
*/
|
|
44
|
+
static extractObjectSlug(resourceType: UniversalResourceType, recordData?: Record<string, unknown>): string | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Extract attribute slugs for field mapper (lowercase)
|
|
47
|
+
*/
|
|
48
|
+
private static extractAttributeSlugs;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=MetadataResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataResolver.d.ts","sourceRoot":"","sources":["../../../src/services/update/MetadataResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAGnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAI/E;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,uDAAuD;IACvD,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC5C,4DAA4D;IAC5D,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mEAAmE;IACnE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;;;;;;;;OASG;WACU,aAAa,CACxB,YAAY,EAAE,qBAAqB,EACnC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,wBAAwB,CAAC;IAkFpC;;OAEG;mBACkB,kBAAkB;IAcvC;;OAEG;WACW,iBAAiB,CAC7B,YAAY,EAAE,qBAAqB,EACnC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,GAAG,SAAS;IAcrB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAarC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetadataResolver - Centralized metadata fetching with caching
|
|
3
|
+
*
|
|
4
|
+
* Consolidates duplicate metadata fetching from UniversalUpdateService
|
|
5
|
+
* and value-transformer into a single, cacheable operation.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #984 - Consolidate metadata fetching to reduce API calls by 40-60%
|
|
8
|
+
*/
|
|
9
|
+
import { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
|
|
10
|
+
import { CachingService } from '../../services/CachingService.js';
|
|
11
|
+
import { DEFAULT_ATTRIBUTES_CACHE_TTL } from '../../constants/universal.constants.js';
|
|
12
|
+
import { debug, error as logError } from '../../utils/logger.js';
|
|
13
|
+
import { convertToMetadataMap } from '../../utils/metadata-utils.js';
|
|
14
|
+
/**
|
|
15
|
+
* MetadataResolver - Single source of truth for metadata fetching
|
|
16
|
+
*/
|
|
17
|
+
export class MetadataResolver {
|
|
18
|
+
/**
|
|
19
|
+
* Fetch metadata for a resource type with caching
|
|
20
|
+
*
|
|
21
|
+
* This is the single entry point for metadata fetching across
|
|
22
|
+
* UniversalUpdateService, UniversalCreateService, and value-transformer.
|
|
23
|
+
*
|
|
24
|
+
* @param resourceType - The resource type to fetch metadata for
|
|
25
|
+
* @param recordData - Optional record data containing object slug
|
|
26
|
+
* @returns Metadata map and available attributes for field mapping
|
|
27
|
+
*/
|
|
28
|
+
static async fetchMetadata(resourceType, recordData) {
|
|
29
|
+
const objectSlug = this.extractObjectSlug(resourceType, recordData);
|
|
30
|
+
try {
|
|
31
|
+
// Try cache first, then load fresh data
|
|
32
|
+
const result = await CachingService.getOrLoadAttributes(() => this.fetchFreshMetadata(resourceType, objectSlug), resourceType, objectSlug, DEFAULT_ATTRIBUTES_CACHE_TTL);
|
|
33
|
+
// Use shared utility from metadata-utils (PR #1006 Phase 2.1)
|
|
34
|
+
const metadataMap = convertToMetadataMap(result.data);
|
|
35
|
+
const availableAttributes = this.extractAttributeSlugs(metadataMap);
|
|
36
|
+
debug('MetadataResolver', 'Metadata fetched', {
|
|
37
|
+
resourceType,
|
|
38
|
+
objectSlug,
|
|
39
|
+
fromCache: result.fromCache,
|
|
40
|
+
attributeCount: metadataMap.size,
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
metadataMap,
|
|
44
|
+
availableAttributes,
|
|
45
|
+
fromCache: result.fromCache,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
50
|
+
// Re-throw critical authentication errors (Issue #984 extension - PR review feedback)
|
|
51
|
+
if (error.message.includes('401') ||
|
|
52
|
+
error.message.includes('403') ||
|
|
53
|
+
error.message.includes('Unauthorized') ||
|
|
54
|
+
error.message.includes('Forbidden')) {
|
|
55
|
+
logError('MetadataResolver', 'Authentication error fetching metadata', error, { resourceType, objectSlug });
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
// Re-throw schema validation errors
|
|
59
|
+
if (error.message.includes('validation') ||
|
|
60
|
+
error.message.includes('schema')) {
|
|
61
|
+
logError('MetadataResolver', 'Schema validation error fetching metadata', error, { resourceType, objectSlug });
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
// Log and return empty for non-critical errors (transient failures, network issues)
|
|
65
|
+
logError('MetadataResolver', 'Non-critical metadata fetch error, using empty metadata', error, { resourceType, objectSlug });
|
|
66
|
+
debug('MetadataResolver', 'Graceful degradation with empty metadata', {
|
|
67
|
+
resourceType,
|
|
68
|
+
objectSlug,
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
metadataMap: new Map(),
|
|
72
|
+
availableAttributes: [],
|
|
73
|
+
fromCache: false,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Fetch fresh metadata from Attio API
|
|
79
|
+
*/
|
|
80
|
+
static async fetchFreshMetadata(resourceType, objectSlug) {
|
|
81
|
+
const { UniversalMetadataService } = await import('../../services/UniversalMetadataService.js');
|
|
82
|
+
const options = objectSlug ? { objectSlug } : undefined;
|
|
83
|
+
return UniversalMetadataService.discoverAttributesForResourceType(resourceType, options);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extract object slug from resource type and record data
|
|
87
|
+
*/
|
|
88
|
+
static extractObjectSlug(resourceType, recordData) {
|
|
89
|
+
if (resourceType === UniversalResourceType.RECORDS) {
|
|
90
|
+
return (recordData?.object ||
|
|
91
|
+
recordData?.object_api_slug ||
|
|
92
|
+
'records');
|
|
93
|
+
}
|
|
94
|
+
if (resourceType === UniversalResourceType.DEALS) {
|
|
95
|
+
return 'deals';
|
|
96
|
+
}
|
|
97
|
+
return undefined;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Extract attribute slugs for field mapper (lowercase)
|
|
101
|
+
*/
|
|
102
|
+
static extractAttributeSlugs(metadataMap) {
|
|
103
|
+
return Array.from(new Set(Array.from(metadataMap.values()).flatMap((attr) => {
|
|
104
|
+
return [attr.api_slug, attr.title, attr.slug]
|
|
105
|
+
.filter((s) => typeof s === 'string')
|
|
106
|
+
.map((s) => s.toLowerCase());
|
|
107
|
+
})));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=MetadataResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataResolver.js","sourceRoot":"","sources":["../../../src/services/update/MetadataResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAcjE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,YAAmC,EACnC,UAAoC;QAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,mBAAmB,CACrD,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,EACvD,YAAY,EACZ,UAAU,EACV,4BAA4B,CAC7B,CAAC;YAEF,8DAA8D;YAC9D,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;YAEpE,KAAK,CAAC,kBAAkB,EAAE,kBAAkB,EAAE;gBAC5C,YAAY;gBACZ,UAAU;gBACV,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,cAAc,EAAE,WAAW,CAAC,IAAI;aACjC,CAAC,CAAC;YAEH,OAAO;gBACL,WAAW;gBACX,mBAAmB;gBACnB,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAElE,sFAAsF;YACtF,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC7B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAC7B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACtC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EACnC,CAAC;gBACD,QAAQ,CACN,kBAAkB,EAClB,wCAAwC,EACxC,KAAK,EACL,EAAE,YAAY,EAAE,UAAU,EAAE,CAC7B,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;YAED,oCAAoC;YACpC,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACpC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAChC,CAAC;gBACD,QAAQ,CACN,kBAAkB,EAClB,2CAA2C,EAC3C,KAAK,EACL,EAAE,YAAY,EAAE,UAAU,EAAE,CAC7B,CAAC;gBACF,MAAM,KAAK,CAAC;YACd,CAAC;YAED,oFAAoF;YACpF,QAAQ,CACN,kBAAkB,EAClB,yDAAyD,EACzD,KAAK,EACL,EAAE,YAAY,EAAE,UAAU,EAAE,CAC7B,CAAC;YAEF,KAAK,CAAC,kBAAkB,EAAE,0CAA0C,EAAE;gBACpE,YAAY;gBACZ,UAAU;aACX,CAAC,CAAC;YAEH,OAAO;gBACL,WAAW,EAAE,IAAI,GAAG,EAAE;gBACtB,mBAAmB,EAAE,EAAE;gBACvB,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACrC,YAAmC,EACnC,UAAmB;QAEnB,MAAM,EAAE,wBAAwB,EAAE,GAChC,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACxD,OAAO,wBAAwB,CAAC,iCAAiC,CAC/D,YAAY,EACZ,OAAO,CACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB,CAC7B,YAAmC,EACnC,UAAoC;QAEpC,IAAI,YAAY,KAAK,qBAAqB,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO,CACJ,UAAU,EAAE,MAAiB;gBAC7B,UAAU,EAAE,eAA0B;gBACvC,SAAS,CACV,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,KAAK,qBAAqB,CAAC,KAAK,EAAE,CAAC;YACjD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,qBAAqB,CAClC,WAA2C;QAE3C,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CACL,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;iBAC1C,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;iBACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CACH,CACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { AttioRecord } from '../../types/attio.js';
|
|
2
|
-
import
|
|
1
|
+
import type { AttioList, AttioRecord, UniversalRecord } from '../../types/attio.js';
|
|
2
|
+
import { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
|
|
3
3
|
export declare const ResponseNormalizer: {
|
|
4
|
-
normalizeResponseFormat(resourceType: UniversalResourceType, record:
|
|
4
|
+
normalizeResponseFormat(resourceType: UniversalResourceType, record: UniversalRecord): UniversalRecord;
|
|
5
5
|
normalizeCompanyRecord(record: AttioRecord): AttioRecord;
|
|
6
6
|
normalizePersonRecord(record: AttioRecord): AttioRecord;
|
|
7
|
-
normalizeListRecord(record:
|
|
7
|
+
normalizeListRecord(record: AttioList): AttioList;
|
|
8
8
|
normalizeTaskRecord(record: AttioRecord): AttioRecord;
|
|
9
9
|
normalizeDealRecord(record: AttioRecord): AttioRecord;
|
|
10
10
|
normalizeGenericRecord(record: AttioRecord): AttioRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseNormalizer.d.ts","sourceRoot":"","sources":["../../../src/services/update/ResponseNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ResponseNormalizer.d.ts","sourceRoot":"","sources":["../../../src/services/update/ResponseNormalizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,eAAO,MAAM,kBAAkB;0CAEb,qBAAqB,UAC3B,eAAe,GACtB,eAAe;mCA4Ca,WAAW,GAAG,WAAW;kCAmB1B,WAAW,GAAG,WAAW;gCAsB3B,SAAS,GAAG,SAAS;gCAYrB,WAAW,GAAG,WAAW;gCAkBzB,WAAW,GAAG,WAAW;mCAgBtB,WAAW,GAAG,WAAW;CAOzD,CAAC"}
|
|
@@ -1,8 +1,19 @@
|
|
|
1
|
+
import { isAttioList, isAttioRecord } from '../../types/attio.js';
|
|
2
|
+
import { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
|
|
1
3
|
export const ResponseNormalizer = {
|
|
2
4
|
normalizeResponseFormat(resourceType, record) {
|
|
3
5
|
if (!record || typeof record !== 'object') {
|
|
4
6
|
throw new Error(`Invalid record format received for ${resourceType}: ${typeof record}`);
|
|
5
7
|
}
|
|
8
|
+
if (resourceType === UniversalResourceType.LISTS) {
|
|
9
|
+
if (!isAttioList(record)) {
|
|
10
|
+
throw new Error(`Invalid list format received for ${resourceType}: ${typeof record}`);
|
|
11
|
+
}
|
|
12
|
+
return this.normalizeListRecord(record);
|
|
13
|
+
}
|
|
14
|
+
if (!isAttioRecord(record)) {
|
|
15
|
+
throw new Error(`Invalid record format received for ${resourceType}: ${typeof record}`);
|
|
16
|
+
}
|
|
6
17
|
const normalized = {
|
|
7
18
|
id: record.id || { record_id: 'unknown' },
|
|
8
19
|
values: record.values || {},
|
|
@@ -10,17 +21,15 @@ export const ResponseNormalizer = {
|
|
|
10
21
|
updated_at: record.updated_at || new Date().toISOString(),
|
|
11
22
|
};
|
|
12
23
|
switch (resourceType) {
|
|
13
|
-
case
|
|
24
|
+
case UniversalResourceType.COMPANIES:
|
|
14
25
|
return this.normalizeCompanyRecord(normalized);
|
|
15
|
-
case
|
|
26
|
+
case UniversalResourceType.PEOPLE:
|
|
16
27
|
return this.normalizePersonRecord(normalized);
|
|
17
|
-
case
|
|
18
|
-
return this.normalizeListRecord(normalized);
|
|
19
|
-
case 'tasks':
|
|
28
|
+
case UniversalResourceType.TASKS:
|
|
20
29
|
return this.normalizeTaskRecord(normalized);
|
|
21
|
-
case
|
|
30
|
+
case UniversalResourceType.DEALS:
|
|
22
31
|
return this.normalizeDealRecord(normalized);
|
|
23
|
-
case
|
|
32
|
+
case UniversalResourceType.RECORDS:
|
|
24
33
|
return this.normalizeGenericRecord(normalized);
|
|
25
34
|
default:
|
|
26
35
|
return normalized;
|
|
@@ -71,9 +80,9 @@ export const ResponseNormalizer = {
|
|
|
71
80
|
...record,
|
|
72
81
|
id: {
|
|
73
82
|
...record.id,
|
|
74
|
-
|
|
75
|
-
list_id: idObj.list_id || idObj.record_id,
|
|
83
|
+
list_id: idObj.list_id || record.id.list_id,
|
|
76
84
|
},
|
|
85
|
+
name: record.name || record.title,
|
|
77
86
|
};
|
|
78
87
|
},
|
|
79
88
|
normalizeTaskRecord(record) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseNormalizer.js","sourceRoot":"","sources":["../../../src/services/update/ResponseNormalizer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ResponseNormalizer.js","sourceRoot":"","sources":["../../../src/services/update/ResponseNormalizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UpdateOrchestrator - Strategy pattern orchestration for updates
|
|
3
|
+
*
|
|
4
|
+
* Extracted from UniversalUpdateService to separate concerns.
|
|
5
|
+
* Delegates to resource-specific update strategies.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #984 - Modularize UniversalUpdateService (831→220 lines)
|
|
8
|
+
*/
|
|
9
|
+
import { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
|
|
10
|
+
import type { UniversalRecord } from '../../types/attio.js';
|
|
11
|
+
/**
|
|
12
|
+
* Context for update orchestration
|
|
13
|
+
*/
|
|
14
|
+
export interface UpdateContext {
|
|
15
|
+
/** Resource type being updated */
|
|
16
|
+
resourceType: UniversalResourceType;
|
|
17
|
+
/** ID of the record to update */
|
|
18
|
+
recordId: string;
|
|
19
|
+
/** Sanitized values to update */
|
|
20
|
+
sanitizedValues: Record<string, unknown>;
|
|
21
|
+
/** Optional object slug for records/deals */
|
|
22
|
+
objectSlug?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* UpdateOrchestrator - Delegates updates to resource-specific strategies
|
|
26
|
+
*/
|
|
27
|
+
export declare class UpdateOrchestrator {
|
|
28
|
+
/**
|
|
29
|
+
* Dispatch update to appropriate strategy based on resource type
|
|
30
|
+
*
|
|
31
|
+
* @param context - Update context with resource type, record ID, values, and options
|
|
32
|
+
* @returns Updated record from Attio API
|
|
33
|
+
* @throws Error if resource type is unsupported
|
|
34
|
+
*/
|
|
35
|
+
static executeUpdate(context: UpdateContext): Promise<UniversalRecord>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=UpdateOrchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/services/update/UpdateOrchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,YAAY,EAAE,qBAAqB,CAAC;IACpC,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B;;;;;;OAMG;WACU,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;CAsE7E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UpdateOrchestrator - Strategy pattern orchestration for updates
|
|
3
|
+
*
|
|
4
|
+
* Extracted from UniversalUpdateService to separate concerns.
|
|
5
|
+
* Delegates to resource-specific update strategies.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #984 - Modularize UniversalUpdateService (831→220 lines)
|
|
8
|
+
*/
|
|
9
|
+
import { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
|
|
10
|
+
import { debug } from '../../utils/logger.js';
|
|
11
|
+
/**
|
|
12
|
+
* UpdateOrchestrator - Delegates updates to resource-specific strategies
|
|
13
|
+
*/
|
|
14
|
+
export class UpdateOrchestrator {
|
|
15
|
+
/**
|
|
16
|
+
* Dispatch update to appropriate strategy based on resource type
|
|
17
|
+
*
|
|
18
|
+
* @param context - Update context with resource type, record ID, values, and options
|
|
19
|
+
* @returns Updated record from Attio API
|
|
20
|
+
* @throws Error if resource type is unsupported
|
|
21
|
+
*/
|
|
22
|
+
static async executeUpdate(context) {
|
|
23
|
+
const { resourceType, recordId, sanitizedValues, objectSlug } = context;
|
|
24
|
+
debug('UpdateOrchestrator', 'Dispatching update', {
|
|
25
|
+
resourceType,
|
|
26
|
+
recordId,
|
|
27
|
+
objectSlug,
|
|
28
|
+
fieldCount: Object.keys(sanitizedValues).length,
|
|
29
|
+
});
|
|
30
|
+
switch (resourceType) {
|
|
31
|
+
case UniversalResourceType.COMPANIES: {
|
|
32
|
+
const { CompanyUpdateStrategy } = await import('../../services/update/strategies/CompanyUpdateStrategy.js');
|
|
33
|
+
return new CompanyUpdateStrategy().update(recordId, sanitizedValues, resourceType);
|
|
34
|
+
}
|
|
35
|
+
case UniversalResourceType.LISTS: {
|
|
36
|
+
const { ListUpdateStrategy } = await import('../../services/update/strategies/ListUpdateStrategy.js');
|
|
37
|
+
return new ListUpdateStrategy().update(recordId, sanitizedValues, resourceType);
|
|
38
|
+
}
|
|
39
|
+
case UniversalResourceType.PEOPLE: {
|
|
40
|
+
const { PersonUpdateStrategy } = await import('../../services/update/strategies/PersonUpdateStrategy.js');
|
|
41
|
+
return new PersonUpdateStrategy().update(recordId, sanitizedValues, resourceType);
|
|
42
|
+
}
|
|
43
|
+
case UniversalResourceType.RECORDS:
|
|
44
|
+
case UniversalResourceType.DEALS: {
|
|
45
|
+
const { RecordUpdateStrategy } = await import('../../services/update/strategies/RecordUpdateStrategy.js');
|
|
46
|
+
return new RecordUpdateStrategy().update(recordId, sanitizedValues, resourceType, { objectSlug: objectSlug || 'records' });
|
|
47
|
+
}
|
|
48
|
+
case UniversalResourceType.TASKS: {
|
|
49
|
+
const { TaskUpdateStrategy } = await import('../../services/update/strategies/TaskUpdateStrategy.js');
|
|
50
|
+
return new TaskUpdateStrategy().update(recordId, sanitizedValues, resourceType);
|
|
51
|
+
}
|
|
52
|
+
default: {
|
|
53
|
+
throw new Error(`Unsupported resource type for update: ${resourceType}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=UpdateOrchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UpdateOrchestrator.js","sourceRoot":"","sources":["../../../src/services/update/UpdateOrchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAEnF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAgB1C;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAC7B;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAsB;QAC/C,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;QAExE,KAAK,CAAC,oBAAoB,EAAE,oBAAoB,EAAE;YAChD,YAAY;YACZ,QAAQ;YACR,UAAU;YACV,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM;SAChD,CAAC,CAAC;QAEH,QAAQ,YAAY,EAAE,CAAC;YACrB,KAAK,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;gBACrC,MAAM,EAAE,qBAAqB,EAAE,GAC7B,MAAM,MAAM,CAAC,uDAAuD,CAAC,CAAC;gBACxE,OAAO,IAAI,qBAAqB,EAAE,CAAC,MAAM,CACvC,QAAQ,EACR,eAAe,EACf,YAAY,CACb,CAAC;YACJ,CAAC;YAED,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjC,MAAM,EAAE,kBAAkB,EAAE,GAC1B,MAAM,MAAM,CAAC,oDAAoD,CAAC,CAAC;gBACrE,OAAO,IAAI,kBAAkB,EAAE,CAAC,MAAM,CACpC,QAAQ,EACR,eAAe,EACf,YAAY,CACb,CAAC;YACJ,CAAC;YAED,KAAK,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClC,MAAM,EAAE,oBAAoB,EAAE,GAC5B,MAAM,MAAM,CAAC,sDAAsD,CAAC,CAAC;gBACvE,OAAO,IAAI,oBAAoB,EAAE,CAAC,MAAM,CACtC,QAAQ,EACR,eAAe,EACf,YAAY,CACb,CAAC;YACJ,CAAC;YAED,KAAK,qBAAqB,CAAC,OAAO,CAAC;YACnC,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjC,MAAM,EAAE,oBAAoB,EAAE,GAC5B,MAAM,MAAM,CAAC,sDAAsD,CAAC,CAAC;gBACvE,OAAO,IAAI,oBAAoB,EAAE,CAAC,MAAM,CACtC,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,EAAE,UAAU,EAAE,UAAU,IAAI,SAAS,EAAE,CACxC,CAAC;YACJ,CAAC;YAED,KAAK,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjC,MAAM,EAAE,kBAAkB,EAAE,GAC1B,MAAM,MAAM,CAAC,oDAAoD,CAAC,CAAC;gBACrE,OAAO,IAAI,kBAAkB,EAAE,CAAC,MAAM,CACpC,QAAQ,EACR,eAAe,EACf,YAAY,CACb,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,KAAK,CACb,yCAAyC,YAAY,EAAE,CACxD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type UniversalRecord } from '../../types/attio.js';
|
|
2
2
|
import type { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
|
|
3
3
|
export declare const UpdateValidation: {
|
|
4
4
|
hasForbiddenContent(values: Record<string, unknown>): boolean;
|
|
@@ -9,9 +9,13 @@ export declare const UpdateValidation: {
|
|
|
9
9
|
discrepancies: string[];
|
|
10
10
|
warnings: string[];
|
|
11
11
|
}>;
|
|
12
|
-
fetchRecordForVerification(resourceType: UniversalResourceType, recordId: string): Promise<
|
|
12
|
+
fetchRecordForVerification(resourceType: UniversalResourceType, recordId: string): Promise<UniversalRecord | null>;
|
|
13
13
|
/**
|
|
14
|
-
* Check if a field
|
|
14
|
+
* Check if a field is a status-type field (stage, status, etc.)
|
|
15
|
+
* Enhanced to recognize more status field variations (Issue #995)
|
|
16
|
+
*
|
|
17
|
+
* Uses exact matching and suffix patterns to avoid false positives
|
|
18
|
+
* from unrelated fields like "status_code" or "status_updated_at"
|
|
15
19
|
*/
|
|
16
20
|
isStatusField(fieldName: string): boolean;
|
|
17
21
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpdateValidation.d.ts","sourceRoot":"","sources":["../../../src/services/update/UpdateValidation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"UpdateValidation.d.ts","sourceRoot":"","sources":["../../../src/services/update/UpdateValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,kBAAkB,CAAC;AAS1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAGxF,eAAO,MAAM,gBAAgB;gCACC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;0CAMvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;oCAU5D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;yCAqBV,qBAAqB,YACzB,MAAM,mBACC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,OAAO,CAAC;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;6CA6Ec,qBAAqB,YACzB,MAAM,GACf,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAyClC;;;;;;OAMG;6BACsB,MAAM,GAAG,OAAO;IAezC;;OAEG;oCAEc,OAAO,eACT,OAAO,GACnB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAU9B;;;OAGG;gCACyB,MAAM,eAAe,OAAO,GAAG,OAAO;IAiDlE;;OAEG;sCAEc,OAAO,EAAE,eACX,OAAO,GACnB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IAevB;;OAEG;mCAEU,MAAM,iBACF,MAAM,eACR,OAAO,GACnB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAczC;;OAEG;oCAEU,MAAM,iBACF,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,eACzB,OAAO,GACnB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IAU9B;;OAEG;0CAEc,OAAO,eACT,OAAO,GACnB;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;kCAgBV,MAAM,iBACF,OAAO,eACT,OAAO,GACnB;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAuC1C,CAAC"}
|