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,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for formatting workspace schemas into various output formats
|
|
3
|
+
*
|
|
4
|
+
* Uses Handlebars templates to transform WorkspaceSchema objects into:
|
|
5
|
+
* - Claude Skills (SKILL.md + resources/)
|
|
6
|
+
* - Plain Markdown (single file)
|
|
7
|
+
* - JSON (machine-readable)
|
|
8
|
+
*
|
|
9
|
+
* @see Issue #983
|
|
10
|
+
*/
|
|
11
|
+
import Handlebars from 'handlebars';
|
|
12
|
+
import * as fs from 'fs/promises';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
import { fileURLToPath } from 'url';
|
|
15
|
+
// Get __dirname equivalent in ES modules
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = path.dirname(__filename);
|
|
18
|
+
/**
|
|
19
|
+
* Service for formatting workspace schemas into various output formats
|
|
20
|
+
*/
|
|
21
|
+
export class SchemaFormatterService {
|
|
22
|
+
templates = new Map();
|
|
23
|
+
helpersRegistered = false;
|
|
24
|
+
constructor() {
|
|
25
|
+
this.registerHelpers();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Formats schema to specified output format
|
|
29
|
+
*
|
|
30
|
+
* @param schema - Complete workspace schema
|
|
31
|
+
* @param format - Output format (skill, markdown, json)
|
|
32
|
+
* @returns Formatted output ready for writing
|
|
33
|
+
*/
|
|
34
|
+
async format(schema, format) {
|
|
35
|
+
switch (format) {
|
|
36
|
+
case 'skill':
|
|
37
|
+
return this.formatAsSkill(schema);
|
|
38
|
+
case 'markdown':
|
|
39
|
+
return this.formatAsMarkdown(schema);
|
|
40
|
+
case 'json':
|
|
41
|
+
return this.formatAsJSON(schema);
|
|
42
|
+
default:
|
|
43
|
+
throw new Error(`Unsupported format: ${format}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Formats as Claude Skill with SKILL.md + resources/
|
|
48
|
+
*
|
|
49
|
+
* @param schema - Workspace schema
|
|
50
|
+
* @returns Skill files ready for writing
|
|
51
|
+
*/
|
|
52
|
+
async formatAsSkill(schema) {
|
|
53
|
+
const skillMd = await this.renderTemplate('SKILL.template.md', schema);
|
|
54
|
+
// Validate Claude Skill description length requirement (≤200 chars)
|
|
55
|
+
const descMatch = skillMd.match(/^description:\s*(.+)$/m);
|
|
56
|
+
if (descMatch && descMatch[1].length > 200) {
|
|
57
|
+
throw new Error(`Skill description exceeds 200 characters (${descMatch[1].length} chars). ` +
|
|
58
|
+
`Claude Skills require descriptions ≤200 chars. ` +
|
|
59
|
+
`Try reducing the number of objects or simplifying the description.`);
|
|
60
|
+
}
|
|
61
|
+
// Validate Claude Skill name length requirement (≤64 chars)
|
|
62
|
+
const nameMatch = skillMd.match(/^name:\s*(.+)$/m);
|
|
63
|
+
if (nameMatch && nameMatch[1].trim().length > 64) {
|
|
64
|
+
throw new Error(`Skill name exceeds 64 characters (${nameMatch[1].trim().length} chars). ` +
|
|
65
|
+
`Claude Skills require names ≤64 chars.`);
|
|
66
|
+
}
|
|
67
|
+
// Generate per-object attribute files for progressive disclosure
|
|
68
|
+
// This enables Claude to load only the object it's working with (~2k tokens)
|
|
69
|
+
// instead of the entire monolithic file (~10k tokens)
|
|
70
|
+
// @see Issue #1014
|
|
71
|
+
const attributeFiles = {};
|
|
72
|
+
for (const obj of schema.objects) {
|
|
73
|
+
const objectSchema = { ...schema, objects: [obj] };
|
|
74
|
+
const attrMd = await this.renderTemplate('attribute-reference.template.md', objectSchema);
|
|
75
|
+
attributeFiles[`resources/${obj.objectSlug}-attributes.md`] = attrMd;
|
|
76
|
+
}
|
|
77
|
+
const complexTypes = await this.renderTemplate('complex-types.template.md', schema);
|
|
78
|
+
return {
|
|
79
|
+
format: 'skill',
|
|
80
|
+
files: {
|
|
81
|
+
'SKILL.md': skillMd,
|
|
82
|
+
...attributeFiles,
|
|
83
|
+
'resources/complex-types.md': complexTypes,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Formats as single markdown file (all-in-one)
|
|
89
|
+
*
|
|
90
|
+
* @param schema - Workspace schema
|
|
91
|
+
* @returns Single markdown file
|
|
92
|
+
*/
|
|
93
|
+
async formatAsMarkdown(schema) {
|
|
94
|
+
// Render all templates and combine them
|
|
95
|
+
const skillMd = await this.renderTemplate('SKILL.template.md', schema);
|
|
96
|
+
const attrRef = await this.renderTemplate('attribute-reference.template.md', schema);
|
|
97
|
+
const complexTypes = await this.renderTemplate('complex-types.template.md', schema);
|
|
98
|
+
// Combine into single document
|
|
99
|
+
const combined = `${skillMd}\n\n---\n\n${attrRef}\n\n---\n\n${complexTypes}`;
|
|
100
|
+
return {
|
|
101
|
+
format: 'markdown',
|
|
102
|
+
files: {
|
|
103
|
+
'attio-workspace-schema.md': combined,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Formats as JSON (machine-readable)
|
|
109
|
+
*
|
|
110
|
+
* @param schema - Workspace schema
|
|
111
|
+
* @returns JSON representation
|
|
112
|
+
*/
|
|
113
|
+
formatAsJSON(schema) {
|
|
114
|
+
return {
|
|
115
|
+
format: 'json',
|
|
116
|
+
files: {
|
|
117
|
+
'attio-workspace-schema.json': JSON.stringify(schema, null, 2),
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Renders a template with the given data
|
|
123
|
+
*
|
|
124
|
+
* @param templateName - Template filename
|
|
125
|
+
* @param data - Data to pass to template
|
|
126
|
+
* @returns Rendered template string
|
|
127
|
+
*/
|
|
128
|
+
async renderTemplate(templateName, data) {
|
|
129
|
+
// Check cache first
|
|
130
|
+
if (!this.templates.has(templateName)) {
|
|
131
|
+
// Load and compile template
|
|
132
|
+
const templatePath = path.join(__dirname, '../../templates/skill', templateName);
|
|
133
|
+
try {
|
|
134
|
+
const templateSource = await fs.readFile(templatePath, 'utf8');
|
|
135
|
+
const compiledTemplate = Handlebars.compile(templateSource);
|
|
136
|
+
this.templates.set(templateName, compiledTemplate);
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
throw new Error(`Failed to load template ${templateName}: ${error instanceof Error ? error.message : String(error)}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Render template
|
|
143
|
+
const template = this.templates.get(templateName);
|
|
144
|
+
return template(data);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Registers custom Handlebars helpers
|
|
148
|
+
*/
|
|
149
|
+
registerHelpers() {
|
|
150
|
+
if (this.helpersRegistered) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Helper: Display checkmark or X for boolean values
|
|
154
|
+
Handlebars.registerHelper('checkmark', (value) => {
|
|
155
|
+
return value ? '✓' : '✗';
|
|
156
|
+
});
|
|
157
|
+
// Helper: Subtract two numbers
|
|
158
|
+
Handlebars.registerHelper('subtract', (a, b) => {
|
|
159
|
+
return a - b;
|
|
160
|
+
});
|
|
161
|
+
// Helper: JSON stringify with formatting
|
|
162
|
+
Handlebars.registerHelper('json', (obj) => {
|
|
163
|
+
return JSON.stringify(obj, null, 2);
|
|
164
|
+
});
|
|
165
|
+
this.helpersRegistered = true;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=SchemaFormatterService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaFormatterService.js","sourceRoot":"","sources":["../../../src/services/skill-generator/SchemaFormatterService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for fetching and aggregating Attio workspace schema data
|
|
3
|
+
*
|
|
4
|
+
* This service orchestrates calls to existing services to build a complete
|
|
5
|
+
* workspace schema including objects, attributes, select options, and metadata.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #983
|
|
8
|
+
*/
|
|
9
|
+
import type { WorkspaceSchema, FetchSchemaOptions } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Service for fetching complete workspace schema data
|
|
12
|
+
*
|
|
13
|
+
* Note: API key flows through getLazyAttioClient() from environment/context,
|
|
14
|
+
* not through constructor dependency injection.
|
|
15
|
+
*/
|
|
16
|
+
export declare class WorkspaceSchemaService {
|
|
17
|
+
/**
|
|
18
|
+
* Creates a new WorkspaceSchemaService
|
|
19
|
+
*/
|
|
20
|
+
constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Fetches the display title for an object from the Attio API
|
|
23
|
+
*
|
|
24
|
+
* @param objectSlug - Object API slug (e.g., 'companies', 'custom_prospecting_list')
|
|
25
|
+
* @returns The object title from Attio, or null if fetch fails
|
|
26
|
+
* @see Issue #1017
|
|
27
|
+
*/
|
|
28
|
+
private fetchObjectTitle;
|
|
29
|
+
private getOptionFetchDelayMs;
|
|
30
|
+
/**
|
|
31
|
+
* Fetches complete workspace schema for specified objects
|
|
32
|
+
*
|
|
33
|
+
* This method implements graceful degradation:
|
|
34
|
+
* - If an object fails to fetch, it logs the error and continues with other objects
|
|
35
|
+
* - If an attribute's options fail to fetch, it includes the attribute without options
|
|
36
|
+
*
|
|
37
|
+
* @param objectSlugs - Array of object slugs to fetch (e.g., ['companies', 'people'])
|
|
38
|
+
* @param options - Fetching options (max options, include archived)
|
|
39
|
+
* @returns Complete workspace schema
|
|
40
|
+
*/
|
|
41
|
+
fetchSchema(objectSlugs: string[], options: FetchSchemaOptions): Promise<WorkspaceSchema>;
|
|
42
|
+
/**
|
|
43
|
+
* Fetches schema for a single object
|
|
44
|
+
*
|
|
45
|
+
* @param objectSlug - Object slug (e.g., 'companies', 'people', 'deals')
|
|
46
|
+
* @param options - Fetching options
|
|
47
|
+
* @returns Object schema with all attributes and metadata
|
|
48
|
+
*/
|
|
49
|
+
private fetchObjectSchema;
|
|
50
|
+
/**
|
|
51
|
+
* Checks if an attribute type supports options (select, status, multi-select)
|
|
52
|
+
*
|
|
53
|
+
* @param type - Attribute type from Attio API
|
|
54
|
+
* @returns True if attribute supports options
|
|
55
|
+
*/
|
|
56
|
+
private isOptionBasedAttribute;
|
|
57
|
+
/**
|
|
58
|
+
* Checks if an attribute type is a complex type requiring structure documentation
|
|
59
|
+
*
|
|
60
|
+
* @param type - Attribute type from Attio API
|
|
61
|
+
* @returns True if attribute is a complex type
|
|
62
|
+
*/
|
|
63
|
+
private isComplexType;
|
|
64
|
+
/**
|
|
65
|
+
* Gets the structure definition for complex attribute types
|
|
66
|
+
*
|
|
67
|
+
* @param type - Complex attribute type
|
|
68
|
+
* @returns Structure definition with field types
|
|
69
|
+
*/
|
|
70
|
+
private getComplexTypeStructure;
|
|
71
|
+
/**
|
|
72
|
+
* Gets human-readable display name for an object slug
|
|
73
|
+
*
|
|
74
|
+
* Uses the fetched title from Attio API if available, otherwise falls back
|
|
75
|
+
* to hardcoded display names for Phase 1 objects or slug capitalization.
|
|
76
|
+
*
|
|
77
|
+
* @param objectSlug - Object API slug
|
|
78
|
+
* @param fetchedTitle - Title fetched from Attio API (optional)
|
|
79
|
+
* @returns Human-readable display name
|
|
80
|
+
* @see Issue #1017
|
|
81
|
+
*/
|
|
82
|
+
private getDisplayName;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=WorkspaceSchemaService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceSchemaService.d.ts","sourceRoot":"","sources":["../../../src/services/skill-generator/WorkspaceSchemaService.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EACV,eAAe,EAGf,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAsCpB;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC;;OAEG;;IAKH;;;;;;OAMG;YACW,gBAAgB;IAgB9B,OAAO,CAAC,qBAAqB;IAa7B;;;;;;;;;;OAUG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC;IA4B3B;;;;;;OAMG;YACW,iBAAiB;IA2G/B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA0C/B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;CAyBvB"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for fetching and aggregating Attio workspace schema data
|
|
3
|
+
*
|
|
4
|
+
* This service orchestrates calls to existing services to build a complete
|
|
5
|
+
* workspace schema including objects, attributes, select options, and metadata.
|
|
6
|
+
*
|
|
7
|
+
* @see Issue #983
|
|
8
|
+
*/
|
|
9
|
+
import { getObjectAttributeMetadata } from '../../api/attribute-types.js';
|
|
10
|
+
import { getLazyAttioClient } from '../../api/lazy-client.js';
|
|
11
|
+
import { AttributeOptionsService } from '../../services/metadata/AttributeOptionsService.js';
|
|
12
|
+
import { debug as logDebug, error as logError, warn as logWarn, } from '../../utils/logger.js';
|
|
13
|
+
/**
|
|
14
|
+
* Type guard to check if an ID is a nested option ID object
|
|
15
|
+
* Attio API returns option IDs as nested objects: {workspace_id, object_id, attribute_id, option_id}
|
|
16
|
+
* @param id - The ID value to check
|
|
17
|
+
* @returns True if the ID is a nested option ID object
|
|
18
|
+
* @see Issue #1014
|
|
19
|
+
*/
|
|
20
|
+
function isNestedOptionId(id) {
|
|
21
|
+
return typeof id === 'object' && id !== null && 'option_id' in id;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generates a slug-style value from an option title
|
|
25
|
+
* Converts "Existing Customer" → "existing_customer"
|
|
26
|
+
* @param title - The option title
|
|
27
|
+
* @returns Slug-style value
|
|
28
|
+
* @see Issue #1014
|
|
29
|
+
*/
|
|
30
|
+
function generateOptionValue(title) {
|
|
31
|
+
return title
|
|
32
|
+
.toLowerCase()
|
|
33
|
+
.replace(/[^a-z0-9]+/g, '_') // Replace non-alphanumeric with underscore
|
|
34
|
+
.replace(/^_+|_+$/g, ''); // Trim leading/trailing underscores
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Service for fetching complete workspace schema data
|
|
38
|
+
*
|
|
39
|
+
* Note: API key flows through getLazyAttioClient() from environment/context,
|
|
40
|
+
* not through constructor dependency injection.
|
|
41
|
+
*/
|
|
42
|
+
export class WorkspaceSchemaService {
|
|
43
|
+
/**
|
|
44
|
+
* Creates a new WorkspaceSchemaService
|
|
45
|
+
*/
|
|
46
|
+
constructor() {
|
|
47
|
+
// No parameters needed - API key flows through getLazyAttioClient()
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Fetches the display title for an object from the Attio API
|
|
51
|
+
*
|
|
52
|
+
* @param objectSlug - Object API slug (e.g., 'companies', 'custom_prospecting_list')
|
|
53
|
+
* @returns The object title from Attio, or null if fetch fails
|
|
54
|
+
* @see Issue #1017
|
|
55
|
+
*/
|
|
56
|
+
async fetchObjectTitle(objectSlug) {
|
|
57
|
+
try {
|
|
58
|
+
const client = getLazyAttioClient();
|
|
59
|
+
const response = await client.get(`/objects/${objectSlug}`);
|
|
60
|
+
const obj = response?.data?.data || response?.data;
|
|
61
|
+
return obj?.title || null;
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
logDebug('WorkspaceSchemaService', `Could not fetch title for ${objectSlug}, using fallback`, { objectSlug });
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
getOptionFetchDelayMs(options) {
|
|
69
|
+
const optionFetchDelayMs = options.optionFetchDelayMs;
|
|
70
|
+
if (optionFetchDelayMs === undefined)
|
|
71
|
+
return 100;
|
|
72
|
+
if (typeof optionFetchDelayMs !== 'number' ||
|
|
73
|
+
!Number.isFinite(optionFetchDelayMs) ||
|
|
74
|
+
optionFetchDelayMs < 0) {
|
|
75
|
+
return 100;
|
|
76
|
+
}
|
|
77
|
+
return optionFetchDelayMs;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Fetches complete workspace schema for specified objects
|
|
81
|
+
*
|
|
82
|
+
* This method implements graceful degradation:
|
|
83
|
+
* - If an object fails to fetch, it logs the error and continues with other objects
|
|
84
|
+
* - If an attribute's options fail to fetch, it includes the attribute without options
|
|
85
|
+
*
|
|
86
|
+
* @param objectSlugs - Array of object slugs to fetch (e.g., ['companies', 'people'])
|
|
87
|
+
* @param options - Fetching options (max options, include archived)
|
|
88
|
+
* @returns Complete workspace schema
|
|
89
|
+
*/
|
|
90
|
+
async fetchSchema(objectSlugs, options) {
|
|
91
|
+
const objects = [];
|
|
92
|
+
for (const objectSlug of objectSlugs) {
|
|
93
|
+
try {
|
|
94
|
+
const objectSchema = await this.fetchObjectSchema(objectSlug, options);
|
|
95
|
+
objects.push(objectSchema);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logError('WorkspaceSchemaService', `Failed to fetch schema for ${objectSlug}`, error instanceof Error ? error : new Error(String(error)), { objectSlug });
|
|
99
|
+
// Continue processing other objects despite error
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
metadata: {
|
|
104
|
+
generatedAt: new Date().toISOString(),
|
|
105
|
+
workspace: 'attio', // Could be enhanced to fetch actual workspace name
|
|
106
|
+
objects: objectSlugs,
|
|
107
|
+
},
|
|
108
|
+
objects,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Fetches schema for a single object
|
|
113
|
+
*
|
|
114
|
+
* @param objectSlug - Object slug (e.g., 'companies', 'people', 'deals')
|
|
115
|
+
* @param options - Fetching options
|
|
116
|
+
* @returns Object schema with all attributes and metadata
|
|
117
|
+
*/
|
|
118
|
+
async fetchObjectSchema(objectSlug, options) {
|
|
119
|
+
const optionFetchDelayMs = this.getOptionFetchDelayMs(options);
|
|
120
|
+
const PHASE1_OBJECTS = ['companies', 'people', 'deals'];
|
|
121
|
+
// 1. Fetch object title from API for custom objects (Issue #1017)
|
|
122
|
+
// Skip API call for Phase 1 objects - they have hardcoded display names
|
|
123
|
+
const objectTitle = PHASE1_OBJECTS.includes(objectSlug)
|
|
124
|
+
? null
|
|
125
|
+
: await this.fetchObjectTitle(objectSlug);
|
|
126
|
+
// 2. Fetch attribute metadata (uses existing 15min TTL cache)
|
|
127
|
+
const metadataMap = await getObjectAttributeMetadata(objectSlug);
|
|
128
|
+
// 3. Convert metadata to AttributeSchema array
|
|
129
|
+
const attributes = [];
|
|
130
|
+
for (const [apiSlug, metadata] of metadataMap.entries()) {
|
|
131
|
+
const attributeSchema = {
|
|
132
|
+
apiSlug,
|
|
133
|
+
displayName: metadata.title,
|
|
134
|
+
type: metadata.type,
|
|
135
|
+
isMultiselect: metadata.is_multiselect || false,
|
|
136
|
+
isUnique: metadata.is_unique || false,
|
|
137
|
+
isRequired: metadata.is_required || false,
|
|
138
|
+
isWritable: metadata.is_writable !== false, // Default to true
|
|
139
|
+
description: metadata.description,
|
|
140
|
+
};
|
|
141
|
+
// 4. Fetch options for select/status attributes
|
|
142
|
+
if (this.isOptionBasedAttribute(metadata.type)) {
|
|
143
|
+
try {
|
|
144
|
+
const optionsResult = await AttributeOptionsService.getOptions(objectSlug, apiSlug, options.includeArchived);
|
|
145
|
+
// Apply truncation
|
|
146
|
+
const totalOptions = optionsResult.options.length;
|
|
147
|
+
const truncated = totalOptions > options.maxOptionsPerAttribute;
|
|
148
|
+
attributeSchema.options = optionsResult.options
|
|
149
|
+
.slice(0, options.maxOptionsPerAttribute)
|
|
150
|
+
.map((opt) => ({
|
|
151
|
+
// Handle nested ID objects from Attio API
|
|
152
|
+
// API returns: { workspace_id, object_id, attribute_id, option_id }
|
|
153
|
+
id: isNestedOptionId(opt.id)
|
|
154
|
+
? opt.id.option_id
|
|
155
|
+
: typeof opt.id === 'string'
|
|
156
|
+
? opt.id
|
|
157
|
+
: '',
|
|
158
|
+
title: opt.title,
|
|
159
|
+
// Generate slug-style value from title since Attio API doesn't provide it
|
|
160
|
+
// "Existing Customer" → "existing_customer"
|
|
161
|
+
value: generateOptionValue(opt.title),
|
|
162
|
+
isArchived: 'is_archived' in opt ? opt.is_archived : false,
|
|
163
|
+
}));
|
|
164
|
+
attributeSchema.optionsTruncated = truncated;
|
|
165
|
+
attributeSchema.totalOptions = totalOptions;
|
|
166
|
+
// Rate limiting: Add delay between option fetches
|
|
167
|
+
if (optionFetchDelayMs > 0) {
|
|
168
|
+
await new Promise((resolve) => setTimeout(resolve, optionFetchDelayMs));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
// Log warning but don't fail - attribute can still be documented
|
|
173
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
174
|
+
logWarn('WorkspaceSchemaService', `No options available for ${objectSlug}.${apiSlug}`, { objectSlug, attributeSlug: apiSlug, errorMessage });
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// 5. Add complex type structures
|
|
178
|
+
if (this.isComplexType(metadata.type)) {
|
|
179
|
+
attributeSchema.complexTypeStructure = this.getComplexTypeStructure(metadata.type);
|
|
180
|
+
}
|
|
181
|
+
// 6. Add relationship metadata (only when we have real data)
|
|
182
|
+
if (metadata.relationship?.object && metadata.relationship?.cardinality) {
|
|
183
|
+
attributeSchema.relationship = {
|
|
184
|
+
targetObject: metadata.relationship.object,
|
|
185
|
+
cardinality: metadata.relationship.cardinality,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
attributes.push(attributeSchema);
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
objectSlug,
|
|
192
|
+
displayName: this.getDisplayName(objectSlug, objectTitle),
|
|
193
|
+
attributes,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Checks if an attribute type supports options (select, status, multi-select)
|
|
198
|
+
*
|
|
199
|
+
* @param type - Attribute type from Attio API
|
|
200
|
+
* @returns True if attribute supports options
|
|
201
|
+
*/
|
|
202
|
+
isOptionBasedAttribute(type) {
|
|
203
|
+
return ['select', 'status', 'multi-select'].includes(type);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Checks if an attribute type is a complex type requiring structure documentation
|
|
207
|
+
*
|
|
208
|
+
* @param type - Attribute type from Attio API
|
|
209
|
+
* @returns True if attribute is a complex type
|
|
210
|
+
*/
|
|
211
|
+
isComplexType(type) {
|
|
212
|
+
return [
|
|
213
|
+
'location',
|
|
214
|
+
'personal-name',
|
|
215
|
+
'phone-number',
|
|
216
|
+
'email-address',
|
|
217
|
+
].includes(type);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Gets the structure definition for complex attribute types
|
|
221
|
+
*
|
|
222
|
+
* @param type - Complex attribute type
|
|
223
|
+
* @returns Structure definition with field types
|
|
224
|
+
*/
|
|
225
|
+
getComplexTypeStructure(type) {
|
|
226
|
+
switch (type) {
|
|
227
|
+
case 'location':
|
|
228
|
+
return {
|
|
229
|
+
line_1: 'string | null (street address)',
|
|
230
|
+
line_2: 'string | null (apt/suite)',
|
|
231
|
+
line_3: 'string | null (additional)',
|
|
232
|
+
line_4: 'string | null (additional)',
|
|
233
|
+
locality: 'string | null (city)',
|
|
234
|
+
region: 'string | null (state/province)',
|
|
235
|
+
postcode: 'string | null (ZIP/postal code)',
|
|
236
|
+
country_code: 'string | null (ISO country code)',
|
|
237
|
+
latitude: 'number | null (coordinates)',
|
|
238
|
+
longitude: 'number | null (coordinates)',
|
|
239
|
+
};
|
|
240
|
+
case 'personal-name':
|
|
241
|
+
return {
|
|
242
|
+
first_name: 'string (required)',
|
|
243
|
+
last_name: 'string | null',
|
|
244
|
+
middle_name: 'string | null',
|
|
245
|
+
title: 'string | null (e.g., "Dr.", "Prof.")',
|
|
246
|
+
full_name: 'string (auto-generated, read-only)',
|
|
247
|
+
};
|
|
248
|
+
case 'phone-number':
|
|
249
|
+
return {
|
|
250
|
+
country_code: 'string (e.g., "+1")',
|
|
251
|
+
number: 'string (digits only)',
|
|
252
|
+
original_number: 'string (as provided)',
|
|
253
|
+
};
|
|
254
|
+
case 'email-address':
|
|
255
|
+
return {
|
|
256
|
+
email_address: 'string (valid email format)',
|
|
257
|
+
};
|
|
258
|
+
default:
|
|
259
|
+
return {};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Gets human-readable display name for an object slug
|
|
264
|
+
*
|
|
265
|
+
* Uses the fetched title from Attio API if available, otherwise falls back
|
|
266
|
+
* to hardcoded display names for Phase 1 objects or slug capitalization.
|
|
267
|
+
*
|
|
268
|
+
* @param objectSlug - Object API slug
|
|
269
|
+
* @param fetchedTitle - Title fetched from Attio API (optional)
|
|
270
|
+
* @returns Human-readable display name
|
|
271
|
+
* @see Issue #1017
|
|
272
|
+
*/
|
|
273
|
+
getDisplayName(objectSlug, fetchedTitle) {
|
|
274
|
+
// Use API-fetched title if available
|
|
275
|
+
if (fetchedTitle) {
|
|
276
|
+
return fetchedTitle;
|
|
277
|
+
}
|
|
278
|
+
// Fallback to hardcoded display names for Phase 1 objects
|
|
279
|
+
const displayNames = {
|
|
280
|
+
companies: 'Companies',
|
|
281
|
+
people: 'People',
|
|
282
|
+
deals: 'Deals',
|
|
283
|
+
};
|
|
284
|
+
// If not in map, title-case the slug (replace underscores with spaces)
|
|
285
|
+
return (displayNames[objectSlug] ||
|
|
286
|
+
objectSlug
|
|
287
|
+
.split('_')
|
|
288
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
289
|
+
.join(' '));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=WorkspaceSchemaService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceSchemaService.js","sourceRoot":"","sources":["../../../src/services/skill-generator/WorkspaceSchemaService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Schema Skill Generator
|
|
3
|
+
*
|
|
4
|
+
* Exports services and types for generating Claude Skills from Attio workspace schemas.
|
|
5
|
+
*
|
|
6
|
+
* @see Issue #983
|
|
7
|
+
*/
|
|
8
|
+
export { WorkspaceSchemaService } from './WorkspaceSchemaService.js';
|
|
9
|
+
export { SchemaFormatterService } from './SchemaFormatterService.js';
|
|
10
|
+
export { OutputWriterService } from './OutputWriterService.js';
|
|
11
|
+
export type { GenerateSkillConfig, WorkspaceSchema, ObjectSchema, AttributeSchema, AttributeOption, FormattedOutput, SkillOutput, FetchSchemaOptions, } from './types.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/skill-generator/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace Schema Skill Generator
|
|
3
|
+
*
|
|
4
|
+
* Exports services and types for generating Claude Skills from Attio workspace schemas.
|
|
5
|
+
*
|
|
6
|
+
* @see Issue #983
|
|
7
|
+
*/
|
|
8
|
+
export { WorkspaceSchemaService } from './WorkspaceSchemaService.js';
|
|
9
|
+
export { SchemaFormatterService } from './SchemaFormatterService.js';
|
|
10
|
+
export { OutputWriterService } from './OutputWriterService.js';
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/skill-generator/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|