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.
Files changed (440) hide show
  1. package/CHANGELOG.md +284 -3
  2. package/README.md +143 -334
  3. package/dist/api/attio-client.d.ts +13 -3
  4. package/dist/api/attio-client.d.ts.map +1 -1
  5. package/dist/api/attio-client.js +37 -7
  6. package/dist/api/attio-client.js.map +1 -1
  7. package/dist/api/attribute-types.d.ts.map +1 -1
  8. package/dist/api/attribute-types.js +42 -20
  9. package/dist/api/attribute-types.js.map +1 -1
  10. package/dist/api/client-context.d.ts.map +1 -1
  11. package/dist/api/client-context.js +28 -42
  12. package/dist/api/client-context.js.map +1 -1
  13. package/dist/api/operations/batch.d.ts +3 -3
  14. package/dist/api/operations/batch.d.ts.map +1 -1
  15. package/dist/api/operations/batch.js.map +1 -1
  16. package/dist/api/operations/crud.d.ts.map +1 -1
  17. package/dist/api/operations/crud.js.map +1 -1
  18. package/dist/api/operations/search.d.ts.map +1 -1
  19. package/dist/api/operations/search.js.map +1 -1
  20. package/dist/cli/commands/generate-skill.d.ts +28 -0
  21. package/dist/cli/commands/generate-skill.d.ts.map +1 -0
  22. package/dist/cli/commands/generate-skill.js +101 -0
  23. package/dist/cli/commands/generate-skill.js.map +1 -0
  24. package/dist/cli/discover.js +65 -0
  25. package/dist/cli/discover.js.map +1 -1
  26. package/dist/cli.js.map +1 -1
  27. package/dist/config/deal-defaults.d.ts +2 -2
  28. package/dist/config/deal-defaults.d.ts.map +1 -1
  29. package/dist/config/deal-defaults.js +15 -6
  30. package/dist/config/deal-defaults.js.map +1 -1
  31. package/dist/config/tool-aliases.d.ts +12 -0
  32. package/dist/config/tool-aliases.d.ts.map +1 -1
  33. package/dist/config/tool-aliases.js +213 -69
  34. package/dist/config/tool-aliases.js.map +1 -1
  35. package/dist/constants/tool-names.d.ts +84 -0
  36. package/dist/constants/tool-names.d.ts.map +1 -0
  37. package/dist/constants/tool-names.js +81 -0
  38. package/dist/constants/tool-names.js.map +1 -0
  39. package/dist/constants/universal.constants.d.ts +24 -0
  40. package/dist/constants/universal.constants.d.ts.map +1 -1
  41. package/dist/constants/universal.constants.js +81 -9
  42. package/dist/constants/universal.constants.js.map +1 -1
  43. package/dist/errors/value-match-error.js +1 -1
  44. package/dist/handlers/tool-configs/lists.d.ts +142 -19
  45. package/dist/handlers/tool-configs/lists.d.ts.map +1 -1
  46. package/dist/handlers/tool-configs/lists.js +319 -25
  47. package/dist/handlers/tool-configs/lists.js.map +1 -1
  48. package/dist/handlers/tool-configs/universal/batch-search.d.ts +1 -1
  49. package/dist/handlers/tool-configs/universal/batch-search.d.ts.map +1 -1
  50. package/dist/handlers/tool-configs/universal/batch-search.js +17 -13
  51. package/dist/handlers/tool-configs/universal/batch-search.js.map +1 -1
  52. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts +26 -4
  53. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.d.ts.map +1 -1
  54. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js +181 -21
  55. package/dist/handlers/tool-configs/universal/core/crud-error-handlers.js.map +1 -1
  56. package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts +4 -4
  57. package/dist/handlers/tool-configs/universal/core/crud-operations.d.ts.map +1 -1
  58. package/dist/handlers/tool-configs/universal/core/crud-operations.js +37 -24
  59. package/dist/handlers/tool-configs/universal/core/crud-operations.js.map +1 -1
  60. package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js +3 -3
  61. package/dist/handlers/tool-configs/universal/core/detailed-info-operations.js.map +1 -1
  62. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts +17 -0
  63. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.d.ts.map +1 -0
  64. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js +118 -0
  65. package/dist/handlers/tool-configs/universal/core/error-enhancers/attribute-enhancer.js.map +1 -0
  66. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts +14 -0
  67. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.d.ts.map +1 -0
  68. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js +77 -0
  69. package/dist/handlers/tool-configs/universal/core/error-enhancers/complex-type-enhancer.js.map +1 -0
  70. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts +24 -0
  71. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.d.ts.map +1 -0
  72. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js +35 -0
  73. package/dist/handlers/tool-configs/universal/core/error-enhancers/index.js.map +1 -0
  74. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts +15 -0
  75. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.d.ts.map +1 -0
  76. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js +108 -0
  77. package/dist/handlers/tool-configs/universal/core/error-enhancers/record-reference-enhancer.js.map +1 -0
  78. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts +14 -0
  79. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.d.ts.map +1 -0
  80. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js +91 -0
  81. package/dist/handlers/tool-configs/universal/core/error-enhancers/required-fields-enhancer.js.map +1 -0
  82. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts +14 -0
  83. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.d.ts.map +1 -0
  84. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js +118 -0
  85. package/dist/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.js.map +1 -0
  86. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts +77 -0
  87. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.d.ts.map +1 -0
  88. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js +42 -0
  89. package/dist/handlers/tool-configs/universal/core/error-enhancers/types.js.map +1 -0
  90. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts +15 -0
  91. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.d.ts.map +1 -0
  92. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js +109 -0
  93. package/dist/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.js.map +1 -0
  94. package/dist/handlers/tool-configs/universal/core/index.d.ts +63 -22
  95. package/dist/handlers/tool-configs/universal/core/index.d.ts.map +1 -1
  96. package/dist/handlers/tool-configs/universal/core/index.js +24 -22
  97. package/dist/handlers/tool-configs/universal/core/index.js.map +1 -1
  98. package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts +43 -1
  99. package/dist/handlers/tool-configs/universal/core/metadata-operations.d.ts.map +1 -1
  100. package/dist/handlers/tool-configs/universal/core/metadata-operations.js +117 -11
  101. package/dist/handlers/tool-configs/universal/core/metadata-operations.js.map +1 -1
  102. package/dist/handlers/tool-configs/universal/core/notes-operations.js +12 -12
  103. package/dist/handlers/tool-configs/universal/core/notes-operations.js.map +1 -1
  104. package/dist/handlers/tool-configs/universal/core/record-details-operations.d.ts +6 -3
  105. package/dist/handlers/tool-configs/universal/core/record-details-operations.d.ts.map +1 -1
  106. package/dist/handlers/tool-configs/universal/core/record-details-operations.js +35 -10
  107. package/dist/handlers/tool-configs/universal/core/record-details-operations.js.map +1 -1
  108. package/dist/handlers/tool-configs/universal/core/search-operations.d.ts +4 -3
  109. package/dist/handlers/tool-configs/universal/core/search-operations.d.ts.map +1 -1
  110. package/dist/handlers/tool-configs/universal/core/search-operations.js +31 -12
  111. package/dist/handlers/tool-configs/universal/core/search-operations.js.map +1 -1
  112. package/dist/handlers/tool-configs/universal/core/utils.d.ts +1 -0
  113. package/dist/handlers/tool-configs/universal/core/utils.d.ts.map +1 -1
  114. package/dist/handlers/tool-configs/universal/core/utils.js +3 -0
  115. package/dist/handlers/tool-configs/universal/core/utils.js.map +1 -1
  116. package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.d.ts.map +1 -1
  117. package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js +32 -9
  118. package/dist/handlers/tool-configs/universal/field-mapper/constants/companies.js.map +1 -1
  119. package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.d.ts.map +1 -1
  120. package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js +45 -6
  121. package/dist/handlers/tool-configs/universal/field-mapper/constants/deals.js.map +1 -1
  122. package/dist/handlers/tool-configs/universal/field-mapper/constants/people.d.ts.map +1 -1
  123. package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js +36 -5
  124. package/dist/handlers/tool-configs/universal/field-mapper/constants/people.js.map +1 -1
  125. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts +1 -1
  126. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.d.ts.map +1 -1
  127. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js +17 -1
  128. package/dist/handlers/tool-configs/universal/field-mapper/transformers/value-transformer.js.map +1 -1
  129. package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.d.ts.map +1 -1
  130. package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js +3 -1
  131. package/dist/handlers/tool-configs/universal/field-mapper/validators/field-validator.js.map +1 -1
  132. package/dist/handlers/tool-configs/universal/index.d.ts +75 -34
  133. package/dist/handlers/tool-configs/universal/index.d.ts.map +1 -1
  134. package/dist/handlers/tool-configs/universal/index.js +58 -58
  135. package/dist/handlers/tool-configs/universal/index.js.map +1 -1
  136. package/dist/handlers/tool-configs/universal/operations/advanced-search.d.ts +3 -3
  137. package/dist/handlers/tool-configs/universal/operations/advanced-search.d.ts.map +1 -1
  138. package/dist/handlers/tool-configs/universal/operations/advanced-search.js +17 -10
  139. package/dist/handlers/tool-configs/universal/operations/advanced-search.js.map +1 -1
  140. package/dist/handlers/tool-configs/universal/operations/batch-format.d.ts +1 -1
  141. package/dist/handlers/tool-configs/universal/operations/batch-format.d.ts.map +1 -1
  142. package/dist/handlers/tool-configs/universal/operations/batch-format.js +31 -10
  143. package/dist/handlers/tool-configs/universal/operations/batch-format.js.map +1 -1
  144. package/dist/handlers/tool-configs/universal/operations/batch-operations.js +3 -3
  145. package/dist/handlers/tool-configs/universal/operations/content-search.d.ts +3 -3
  146. package/dist/handlers/tool-configs/universal/operations/content-search.d.ts.map +1 -1
  147. package/dist/handlers/tool-configs/universal/operations/content-search.js +15 -9
  148. package/dist/handlers/tool-configs/universal/operations/content-search.js.map +1 -1
  149. package/dist/handlers/tool-configs/universal/operations/index.d.ts +10 -10
  150. package/dist/handlers/tool-configs/universal/operations/index.js +15 -15
  151. package/dist/handlers/tool-configs/universal/operations/relationship-search.d.ts +3 -3
  152. package/dist/handlers/tool-configs/universal/operations/relationship-search.d.ts.map +1 -1
  153. package/dist/handlers/tool-configs/universal/operations/relationship-search.js +11 -8
  154. package/dist/handlers/tool-configs/universal/operations/relationship-search.js.map +1 -1
  155. package/dist/handlers/tool-configs/universal/operations/timeframe-search.d.ts +3 -3
  156. package/dist/handlers/tool-configs/universal/operations/timeframe-search.d.ts.map +1 -1
  157. package/dist/handlers/tool-configs/universal/operations/timeframe-search.js +16 -10
  158. package/dist/handlers/tool-configs/universal/operations/timeframe-search.js.map +1 -1
  159. package/dist/handlers/tool-configs/universal/schemas/utility-schemas.d.ts.map +1 -1
  160. package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js +5 -2
  161. package/dist/handlers/tool-configs/universal/schemas/utility-schemas.js.map +1 -1
  162. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts +29 -0
  163. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.d.ts.map +1 -1
  164. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js +28 -0
  165. package/dist/handlers/tool-configs/universal/schemas/validation-schemas.js.map +1 -1
  166. package/dist/handlers/tool-configs/universal/schemas.d.ts +1 -1
  167. package/dist/handlers/tool-configs/universal/schemas.d.ts.map +1 -1
  168. package/dist/handlers/tool-configs/universal/schemas.js +1 -1
  169. package/dist/handlers/tool-configs/universal/schemas.js.map +1 -1
  170. package/dist/handlers/tool-configs/universal/shared-handlers.d.ts +27 -7
  171. package/dist/handlers/tool-configs/universal/shared-handlers.d.ts.map +1 -1
  172. package/dist/handlers/tool-configs/universal/shared-handlers.js +221 -25
  173. package/dist/handlers/tool-configs/universal/shared-handlers.js.map +1 -1
  174. package/dist/handlers/tool-configs/universal/smithery-diagnostics.js +2 -2
  175. package/dist/handlers/tool-configs/universal/smithery-diagnostics.js.map +1 -1
  176. package/dist/handlers/tool-configs/universal/types.d.ts +17 -7
  177. package/dist/handlers/tool-configs/universal/types.d.ts.map +1 -1
  178. package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts +11 -0
  179. package/dist/handlers/tool-configs/universal/validators/schema-validator.d.ts.map +1 -1
  180. package/dist/handlers/tool-configs/universal/validators/schema-validator.js +80 -17
  181. package/dist/handlers/tool-configs/universal/validators/schema-validator.js.map +1 -1
  182. package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -1
  183. package/dist/handlers/tools/dispatcher/core.js +9 -2
  184. package/dist/handlers/tools/dispatcher/core.js.map +1 -1
  185. package/dist/handlers/tools/dispatcher/operations/lists.d.ts +20 -1
  186. package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -1
  187. package/dist/handlers/tools/dispatcher/operations/lists.js +366 -17
  188. package/dist/handlers/tools/dispatcher/operations/lists.js.map +1 -1
  189. package/dist/handlers/tools/formatters.d.ts +8 -1
  190. package/dist/handlers/tools/formatters.d.ts.map +1 -1
  191. package/dist/handlers/tools/formatters.js +30 -14
  192. package/dist/handlers/tools/formatters.js.map +1 -1
  193. package/dist/handlers/tools/registry.d.ts +409 -122
  194. package/dist/handlers/tools/registry.d.ts.map +1 -1
  195. package/dist/handlers/tools/registry.js +14 -9
  196. package/dist/handlers/tools/registry.js.map +1 -1
  197. package/dist/handlers/tools/standards/index.d.ts.map +1 -1
  198. package/dist/handlers/tools/standards/index.js +19 -11
  199. package/dist/handlers/tools/standards/index.js.map +1 -1
  200. package/dist/objects/companies/attributes.d.ts +5 -0
  201. package/dist/objects/companies/attributes.d.ts.map +1 -1
  202. package/dist/objects/companies/attributes.js +45 -31
  203. package/dist/objects/companies/attributes.js.map +1 -1
  204. package/dist/objects/companies/basic.d.ts.map +1 -1
  205. package/dist/objects/companies/basic.js.map +1 -1
  206. package/dist/objects/lists/base.d.ts.map +1 -1
  207. package/dist/objects/lists/base.js +6 -2
  208. package/dist/objects/lists/base.js.map +1 -1
  209. package/dist/objects/lists/shared.d.ts.map +1 -1
  210. package/dist/objects/lists/shared.js +12 -1
  211. package/dist/objects/lists/shared.js.map +1 -1
  212. package/dist/objects/records/index.d.ts.map +1 -1
  213. package/dist/objects/records/index.js.map +1 -1
  214. package/dist/server/createServer.d.ts.map +1 -1
  215. package/dist/server/createServer.js +4 -3
  216. package/dist/server/createServer.js.map +1 -1
  217. package/dist/services/ErrorService.js +3 -3
  218. package/dist/services/ErrorService.js.map +1 -1
  219. package/dist/services/OpenAiCompatibilityService.d.ts.map +1 -1
  220. package/dist/services/OpenAiCompatibilityService.js +12 -8
  221. package/dist/services/OpenAiCompatibilityService.js.map +1 -1
  222. package/dist/services/UniversalCreateService.d.ts +3 -3
  223. package/dist/services/UniversalCreateService.d.ts.map +1 -1
  224. package/dist/services/UniversalCreateService.js +162 -38
  225. package/dist/services/UniversalCreateService.js.map +1 -1
  226. package/dist/services/UniversalMetadataService.d.ts +8 -0
  227. package/dist/services/UniversalMetadataService.d.ts.map +1 -1
  228. package/dist/services/UniversalMetadataService.js +21 -0
  229. package/dist/services/UniversalMetadataService.js.map +1 -1
  230. package/dist/services/UniversalRetrievalService.d.ts +7 -5
  231. package/dist/services/UniversalRetrievalService.d.ts.map +1 -1
  232. package/dist/services/UniversalRetrievalService.js +31 -29
  233. package/dist/services/UniversalRetrievalService.js.map +1 -1
  234. package/dist/services/UniversalSearchService.d.ts +8 -27
  235. package/dist/services/UniversalSearchService.d.ts.map +1 -1
  236. package/dist/services/UniversalSearchService.js +19 -327
  237. package/dist/services/UniversalSearchService.js.map +1 -1
  238. package/dist/services/UniversalUpdateService.d.ts +25 -7
  239. package/dist/services/UniversalUpdateService.d.ts.map +1 -1
  240. package/dist/services/UniversalUpdateService.js +132 -157
  241. package/dist/services/UniversalUpdateService.js.map +1 -1
  242. package/dist/services/UniversalUtilityService.d.ts +9 -1
  243. package/dist/services/UniversalUtilityService.d.ts.map +1 -1
  244. package/dist/services/UniversalUtilityService.js +13 -0
  245. package/dist/services/UniversalUtilityService.js.map +1 -1
  246. package/dist/services/ValidationService.js +4 -4
  247. package/dist/services/ValidationService.js.map +1 -1
  248. package/dist/services/create/attio-create.service.d.ts.map +1 -1
  249. package/dist/services/create/attio-create.service.js +2 -1
  250. package/dist/services/create/attio-create.service.js.map +1 -1
  251. package/dist/services/create/creators/company-creator.js.map +1 -1
  252. package/dist/services/create/creators/note-creator.d.ts.map +1 -1
  253. package/dist/services/create/creators/note-creator.js +4 -2
  254. package/dist/services/create/creators/note-creator.js.map +1 -1
  255. package/dist/services/create/factory.d.ts.map +1 -1
  256. package/dist/services/create/factory.js +2 -1
  257. package/dist/services/create/factory.js.map +1 -1
  258. package/dist/services/create/mock-create.service.d.ts.map +1 -1
  259. package/dist/services/create/mock-create.service.js.map +1 -1
  260. package/dist/services/create/strategies/BaseCreateStrategy.d.ts +2 -2
  261. package/dist/services/create/strategies/BaseCreateStrategy.d.ts.map +1 -1
  262. package/dist/services/create/strategies/ListCreateStrategy.d.ts +3 -3
  263. package/dist/services/create/strategies/ListCreateStrategy.d.ts.map +1 -1
  264. package/dist/services/create/strategies/ListCreateStrategy.js +2 -16
  265. package/dist/services/create/strategies/ListCreateStrategy.js.map +1 -1
  266. package/dist/services/create/strategies/TaskCreateStrategy.d.ts.map +1 -1
  267. package/dist/services/create/strategies/TaskCreateStrategy.js.map +1 -1
  268. package/dist/services/metadata/AttributeOptionsService.d.ts +38 -0
  269. package/dist/services/metadata/AttributeOptionsService.d.ts.map +1 -0
  270. package/dist/services/metadata/AttributeOptionsService.js +92 -0
  271. package/dist/services/metadata/AttributeOptionsService.js.map +1 -0
  272. package/dist/services/metadata/MetadataDiscoveryService.d.ts.map +1 -1
  273. package/dist/services/metadata/MetadataDiscoveryService.js.map +1 -1
  274. package/dist/services/metadata/MetadataTransformService.d.ts.map +1 -1
  275. package/dist/services/metadata/MetadataTransformService.js.map +1 -1
  276. package/dist/services/metadata/index.d.ts +1 -0
  277. package/dist/services/metadata/index.d.ts.map +1 -1
  278. package/dist/services/metadata/index.js +1 -0
  279. package/dist/services/metadata/index.js.map +1 -1
  280. package/dist/services/search/QueryApiService.d.ts +27 -0
  281. package/dist/services/search/QueryApiService.d.ts.map +1 -0
  282. package/dist/services/search/QueryApiService.js +144 -0
  283. package/dist/services/search/QueryApiService.js.map +1 -0
  284. package/dist/services/search/RecordsSearchService.d.ts +27 -0
  285. package/dist/services/search/RecordsSearchService.d.ts.map +1 -0
  286. package/dist/services/search/RecordsSearchService.js +122 -0
  287. package/dist/services/search/RecordsSearchService.js.map +1 -0
  288. package/dist/services/search/SearchCoordinator.d.ts +41 -0
  289. package/dist/services/search/SearchCoordinator.d.ts.map +1 -0
  290. package/dist/services/search/SearchCoordinator.js +83 -0
  291. package/dist/services/search/SearchCoordinator.js.map +1 -0
  292. package/dist/services/search/StrategyFactory.d.ts +31 -0
  293. package/dist/services/search/StrategyFactory.d.ts.map +1 -0
  294. package/dist/services/search/StrategyFactory.js +100 -0
  295. package/dist/services/search/StrategyFactory.js.map +1 -0
  296. package/dist/services/search-strategies/BaseSearchStrategy.d.ts +5 -5
  297. package/dist/services/search-strategies/BaseSearchStrategy.d.ts.map +1 -1
  298. package/dist/services/search-strategies/BaseSearchStrategy.js.map +1 -1
  299. package/dist/services/search-strategies/CompanySearchStrategy.d.ts +4 -4
  300. package/dist/services/search-strategies/CompanySearchStrategy.d.ts.map +1 -1
  301. package/dist/services/search-strategies/CompanySearchStrategy.js +1 -1
  302. package/dist/services/search-strategies/CompanySearchStrategy.js.map +1 -1
  303. package/dist/services/search-strategies/DealSearchStrategy.d.ts +4 -4
  304. package/dist/services/search-strategies/DealSearchStrategy.d.ts.map +1 -1
  305. package/dist/services/search-strategies/DealSearchStrategy.js +1 -1
  306. package/dist/services/search-strategies/DealSearchStrategy.js.map +1 -1
  307. package/dist/services/search-strategies/ListSearchStrategy.d.ts +34 -7
  308. package/dist/services/search-strategies/ListSearchStrategy.d.ts.map +1 -1
  309. package/dist/services/search-strategies/ListSearchStrategy.js +65 -24
  310. package/dist/services/search-strategies/ListSearchStrategy.js.map +1 -1
  311. package/dist/services/search-strategies/NoteSearchStrategy.d.ts +4 -4
  312. package/dist/services/search-strategies/NoteSearchStrategy.d.ts.map +1 -1
  313. package/dist/services/search-strategies/NoteSearchStrategy.js +6 -7
  314. package/dist/services/search-strategies/NoteSearchStrategy.js.map +1 -1
  315. package/dist/services/search-strategies/PeopleSearchStrategy.d.ts +4 -4
  316. package/dist/services/search-strategies/PeopleSearchStrategy.d.ts.map +1 -1
  317. package/dist/services/search-strategies/PeopleSearchStrategy.js +1 -1
  318. package/dist/services/search-strategies/PeopleSearchStrategy.js.map +1 -1
  319. package/dist/services/search-strategies/TaskSearchStrategy.d.ts +4 -4
  320. package/dist/services/search-strategies/TaskSearchStrategy.d.ts.map +1 -1
  321. package/dist/services/search-strategies/TaskSearchStrategy.js +7 -8
  322. package/dist/services/search-strategies/TaskSearchStrategy.js.map +1 -1
  323. package/dist/services/search-strategies/interfaces.d.ts +7 -6
  324. package/dist/services/search-strategies/interfaces.d.ts.map +1 -1
  325. package/dist/services/search-utilities/SearchUtilities.d.ts +22 -7
  326. package/dist/services/search-utilities/SearchUtilities.d.ts.map +1 -1
  327. package/dist/services/search-utilities/SearchUtilities.js +52 -4
  328. package/dist/services/search-utilities/SearchUtilities.js.map +1 -1
  329. package/dist/services/skill-generator/OutputWriterService.d.ts +41 -0
  330. package/dist/services/skill-generator/OutputWriterService.d.ts.map +1 -0
  331. package/dist/services/skill-generator/OutputWriterService.js +100 -0
  332. package/dist/services/skill-generator/OutputWriterService.js.map +1 -0
  333. package/dist/services/skill-generator/SchemaFormatterService.d.ts +61 -0
  334. package/dist/services/skill-generator/SchemaFormatterService.d.ts.map +1 -0
  335. package/dist/services/skill-generator/SchemaFormatterService.js +168 -0
  336. package/dist/services/skill-generator/SchemaFormatterService.js.map +1 -0
  337. package/dist/services/skill-generator/WorkspaceSchemaService.d.ts +84 -0
  338. package/dist/services/skill-generator/WorkspaceSchemaService.d.ts.map +1 -0
  339. package/dist/services/skill-generator/WorkspaceSchemaService.js +292 -0
  340. package/dist/services/skill-generator/WorkspaceSchemaService.js.map +1 -0
  341. package/dist/services/skill-generator/index.d.ts +12 -0
  342. package/dist/services/skill-generator/index.d.ts.map +1 -0
  343. package/dist/services/skill-generator/index.js +11 -0
  344. package/dist/services/skill-generator/index.js.map +1 -0
  345. package/dist/services/skill-generator/types.d.ts +137 -0
  346. package/dist/services/skill-generator/types.d.ts.map +1 -0
  347. package/dist/services/skill-generator/types.js +10 -0
  348. package/dist/services/skill-generator/types.js.map +1 -0
  349. package/dist/services/update/FieldPersistenceHandler.d.ts +101 -0
  350. package/dist/services/update/FieldPersistenceHandler.d.ts.map +1 -0
  351. package/dist/services/update/FieldPersistenceHandler.js +207 -0
  352. package/dist/services/update/FieldPersistenceHandler.js.map +1 -0
  353. package/dist/services/update/FieldValidationHandler.d.ts +77 -0
  354. package/dist/services/update/FieldValidationHandler.d.ts.map +1 -0
  355. package/dist/services/update/FieldValidationHandler.js +157 -0
  356. package/dist/services/update/FieldValidationHandler.js.map +1 -0
  357. package/dist/services/update/MetadataResolver.d.ts +50 -0
  358. package/dist/services/update/MetadataResolver.d.ts.map +1 -0
  359. package/dist/services/update/MetadataResolver.js +110 -0
  360. package/dist/services/update/MetadataResolver.js.map +1 -0
  361. package/dist/services/update/ResponseNormalizer.d.ts +4 -4
  362. package/dist/services/update/ResponseNormalizer.d.ts.map +1 -1
  363. package/dist/services/update/ResponseNormalizer.js +18 -9
  364. package/dist/services/update/ResponseNormalizer.js.map +1 -1
  365. package/dist/services/update/UpdateOrchestrator.d.ts +37 -0
  366. package/dist/services/update/UpdateOrchestrator.d.ts.map +1 -0
  367. package/dist/services/update/UpdateOrchestrator.js +58 -0
  368. package/dist/services/update/UpdateOrchestrator.js.map +1 -0
  369. package/dist/services/update/UpdateValidation.d.ts +7 -3
  370. package/dist/services/update/UpdateValidation.d.ts.map +1 -1
  371. package/dist/services/update/UpdateValidation.js +56 -32
  372. package/dist/services/update/UpdateValidation.js.map +1 -1
  373. package/dist/services/update/strategies/BaseUpdateStrategy.d.ts +2 -2
  374. package/dist/services/update/strategies/BaseUpdateStrategy.d.ts.map +1 -1
  375. package/dist/services/update/strategies/ListUpdateStrategy.d.ts +3 -3
  376. package/dist/services/update/strategies/ListUpdateStrategy.d.ts.map +1 -1
  377. package/dist/services/update/strategies/ListUpdateStrategy.js +4 -14
  378. package/dist/services/update/strategies/ListUpdateStrategy.js.map +1 -1
  379. package/dist/services/value-transformer/index.d.ts +57 -0
  380. package/dist/services/value-transformer/index.d.ts.map +1 -0
  381. package/dist/services/value-transformer/index.js +326 -0
  382. package/dist/services/value-transformer/index.js.map +1 -0
  383. package/dist/services/value-transformer/multi-select-transformer.d.ts +63 -0
  384. package/dist/services/value-transformer/multi-select-transformer.d.ts.map +1 -0
  385. package/dist/services/value-transformer/multi-select-transformer.js +144 -0
  386. package/dist/services/value-transformer/multi-select-transformer.js.map +1 -0
  387. package/dist/services/value-transformer/record-reference-transformer.d.ts +43 -0
  388. package/dist/services/value-transformer/record-reference-transformer.d.ts.map +1 -0
  389. package/dist/services/value-transformer/record-reference-transformer.js +245 -0
  390. package/dist/services/value-transformer/record-reference-transformer.js.map +1 -0
  391. package/dist/services/value-transformer/select-transformer.d.ts +48 -0
  392. package/dist/services/value-transformer/select-transformer.d.ts.map +1 -0
  393. package/dist/services/value-transformer/select-transformer.js +232 -0
  394. package/dist/services/value-transformer/select-transformer.js.map +1 -0
  395. package/dist/services/value-transformer/status-transformer.d.ts +32 -0
  396. package/dist/services/value-transformer/status-transformer.d.ts.map +1 -0
  397. package/dist/services/value-transformer/status-transformer.js +329 -0
  398. package/dist/services/value-transformer/status-transformer.js.map +1 -0
  399. package/dist/services/value-transformer/types.d.ts +100 -0
  400. package/dist/services/value-transformer/types.d.ts.map +1 -0
  401. package/dist/services/value-transformer/types.js +6 -0
  402. package/dist/services/value-transformer/types.js.map +1 -0
  403. package/dist/templates/skill/SKILL.template.md +78 -0
  404. package/dist/templates/skill/attribute-reference.template.md +126 -0
  405. package/dist/templates/skill/complex-types.template.md +255 -0
  406. package/dist/types/attio.d.ts +55 -0
  407. package/dist/types/attio.d.ts.map +1 -1
  408. package/dist/types/attio.js +36 -0
  409. package/dist/types/attio.js.map +1 -1
  410. package/dist/utils/client-resolver.d.ts.map +1 -1
  411. package/dist/utils/client-resolver.js +8 -16
  412. package/dist/utils/client-resolver.js.map +1 -1
  413. package/dist/utils/complex-type-validation.d.ts +16 -0
  414. package/dist/utils/complex-type-validation.d.ts.map +1 -0
  415. package/dist/utils/complex-type-validation.js +196 -0
  416. package/dist/utils/complex-type-validation.js.map +1 -0
  417. package/dist/utils/error-response-utils.js +3 -3
  418. package/dist/utils/error-response-utils.js.map +1 -1
  419. package/dist/utils/error-utilities.d.ts.map +1 -1
  420. package/dist/utils/error-utilities.js +16 -9
  421. package/dist/utils/error-utilities.js.map +1 -1
  422. package/dist/utils/location-normalizer.d.ts +26 -0
  423. package/dist/utils/location-normalizer.d.ts.map +1 -0
  424. package/dist/utils/location-normalizer.js +39 -0
  425. package/dist/utils/location-normalizer.js.map +1 -0
  426. package/dist/utils/metadata-utils.d.ts +27 -0
  427. package/dist/utils/metadata-utils.d.ts.map +1 -0
  428. package/dist/utils/metadata-utils.js +59 -0
  429. package/dist/utils/metadata-utils.js.map +1 -0
  430. package/dist/utils/normalization/record-data-normalization.d.ts +47 -0
  431. package/dist/utils/normalization/record-data-normalization.d.ts.map +1 -0
  432. package/dist/utils/normalization/record-data-normalization.js +103 -0
  433. package/dist/utils/normalization/record-data-normalization.js.map +1 -0
  434. package/dist/utils/personal-name-parser.d.ts.map +1 -1
  435. package/dist/utils/personal-name-parser.js +26 -17
  436. package/dist/utils/personal-name-parser.js.map +1 -1
  437. package/dist/validators/company/field_detector.d.ts.map +1 -1
  438. package/dist/validators/company/field_detector.js +5 -0
  439. package/dist/validators/company/field_detector.js.map +1 -1
  440. package/package.json +35 -33
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Shared metadata utilities
3
+ *
4
+ * Consolidates duplicate convertToMetadataMap() implementations
5
+ * from MetadataResolver and value-transformer.
6
+ *
7
+ * @see Issue #984 - PR #1006 Review Feedback (Phase 2.1)
8
+ */
9
+ /**
10
+ * Type guard for attribute objects
11
+ */
12
+ function isAttributeObject(obj) {
13
+ return typeof obj === 'object' && obj !== null;
14
+ }
15
+ /**
16
+ * Convert schema response to metadata map
17
+ *
18
+ * This function defensively checks both schema.attributes and schema.all
19
+ * to handle variations in API responses across different resource types.
20
+ *
21
+ * @param schema - API response containing attribute definitions
22
+ * @returns Map of attribute slug → metadata for field mapping and validation
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const schema = await fetchAttributes('companies');
27
+ * const metadataMap = convertToMetadataMap(schema);
28
+ * const nameAttr = metadataMap.get('name');
29
+ * ```
30
+ */
31
+ export function convertToMetadataMap(schema) {
32
+ const map = new Map();
33
+ // Defensive: check both schema.attributes and schema.all
34
+ // Different resource types may return attributes in different keys
35
+ const allAttrs = (schema.attributes || schema.all || []);
36
+ for (const attr of allAttrs) {
37
+ if (!isAttributeObject(attr)) {
38
+ continue;
39
+ }
40
+ // Extract slug with fallback
41
+ const slug = (attr.api_slug || attr.slug || '');
42
+ if (!slug) {
43
+ continue;
44
+ }
45
+ // Build metadata object with all relevant fields
46
+ map.set(slug, {
47
+ slug,
48
+ type: attr.type || 'unknown',
49
+ title: attr.title,
50
+ api_slug: attr.api_slug,
51
+ is_system_attribute: attr.is_system_attribute,
52
+ is_writable: attr.is_writable,
53
+ is_multiselect: attr.is_multiselect,
54
+ relationship: attr.relationship,
55
+ });
56
+ }
57
+ return map;
58
+ }
59
+ //# sourceMappingURL=metadata-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata-utils.js","sourceRoot":"","sources":["../../src/utils/metadata-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;GAEG;AACH,SAAS,iBAAiB,CACxB,GAAY;IAEZ,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA+B;IAE/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEjD,yDAAyD;IACzD,mEAAmE;IACnE,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAmB,CAAC;IAE3E,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,6BAA6B;QAC7B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAW,CAAC;QAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,iDAAiD;QACjD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;YACZ,IAAI;YACJ,IAAI,EAAG,IAAI,CAAC,IAAe,IAAI,SAAS;YACxC,KAAK,EAAE,IAAI,CAAC,KAA2B;YACvC,QAAQ,EAAE,IAAI,CAAC,QAA8B;YAC7C,mBAAmB,EAAE,IAAI,CAAC,mBAA0C;YACpE,WAAW,EAAE,IAAI,CAAC,WAAkC;YACpD,cAAc,EAAE,IAAI,CAAC,cAAqC;YAC1D,YAAY,EAAE,IAAI,CAAC,YAEN;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Record Data Input Normalization
3
+ *
4
+ * Handles normalization of record_data inputs for the update_record tool.
5
+ * Converts legacy input shapes (data field, flat fields) to standard format.
6
+ *
7
+ * Note: JSON string parsing and validation is handled by UniversalUpdateService,
8
+ * not here. This normalizer only handles structural transformations.
9
+ *
10
+ * @see Issue #1099 - SRP compliance: separates normalization from validation
11
+ */
12
+ import type { SanitizedObject } from '../../handlers/tool-configs/universal/schemas/common/types.js';
13
+ /**
14
+ * Normalized update parameters - only contains standard fields
15
+ */
16
+ export interface NormalizedParams {
17
+ resource_type?: string;
18
+ record_id?: string;
19
+ record_data?: SanitizedObject;
20
+ return_details?: boolean;
21
+ }
22
+ /**
23
+ * RecordDataNormalizer provides input normalization for update operations.
24
+ *
25
+ * Handles two legacy input patterns:
26
+ * 1. { data: {...} } - Maps to record_data
27
+ * 2. { name: "...", status: "..." } - Collects flat fields into record_data
28
+ *
29
+ * Design: Returns clean normalized object without leftover fields.
30
+ */
31
+ export declare class RecordDataNormalizer {
32
+ /**
33
+ * Check if parameters need normalization.
34
+ *
35
+ * Returns true only when record_data is missing AND there's
36
+ * either a `data` field or extra flat fields to collect.
37
+ */
38
+ static needsNormalization(params: unknown): boolean;
39
+ /**
40
+ * Normalize parameters into standard format.
41
+ *
42
+ * Returns a clean object with ONLY standard fields - no leftover
43
+ * flat fields that were collected into record_data.
44
+ */
45
+ static normalize(params: unknown): NormalizedParams;
46
+ }
47
+ //# sourceMappingURL=record-data-normalization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-data-normalization.d.ts","sourceRoot":"","sources":["../../../src/utils/normalization/record-data-normalization.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAcjG;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAoB;IAC/B;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAsBnD;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB;CAgDpD"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Record Data Input Normalization
3
+ *
4
+ * Handles normalization of record_data inputs for the update_record tool.
5
+ * Converts legacy input shapes (data field, flat fields) to standard format.
6
+ *
7
+ * Note: JSON string parsing and validation is handled by UniversalUpdateService,
8
+ * not here. This normalizer only handles structural transformations.
9
+ *
10
+ * @see Issue #1099 - SRP compliance: separates normalization from validation
11
+ */
12
+ import { UniversalValidationError } from '../../handlers/tool-configs/universal/errors/validation-errors.js';
13
+ /**
14
+ * Keys that are standard params, not record data fields
15
+ */
16
+ const STANDARD_KEYS = new Set([
17
+ 'resource_type',
18
+ 'record_id',
19
+ 'return_details',
20
+ 'data',
21
+ 'record_data',
22
+ ]);
23
+ /**
24
+ * RecordDataNormalizer provides input normalization for update operations.
25
+ *
26
+ * Handles two legacy input patterns:
27
+ * 1. { data: {...} } - Maps to record_data
28
+ * 2. { name: "...", status: "..." } - Collects flat fields into record_data
29
+ *
30
+ * Design: Returns clean normalized object without leftover fields.
31
+ */
32
+ export class RecordDataNormalizer {
33
+ /**
34
+ * Check if parameters need normalization.
35
+ *
36
+ * Returns true only when record_data is missing AND there's
37
+ * either a `data` field or extra flat fields to collect.
38
+ */
39
+ static needsNormalization(params) {
40
+ if (!params || typeof params !== 'object' || Array.isArray(params)) {
41
+ return false;
42
+ }
43
+ const p = params;
44
+ // Already has record_data - no normalization needed
45
+ if (p.record_data !== undefined) {
46
+ return false;
47
+ }
48
+ // Has `data` field that should be mapped to record_data
49
+ if (p.data !== undefined) {
50
+ return true;
51
+ }
52
+ // Check for extra fields that could be record data
53
+ const extraFields = Object.keys(p).filter((key) => !STANDARD_KEYS.has(key));
54
+ return extraFields.length > 0;
55
+ }
56
+ /**
57
+ * Normalize parameters into standard format.
58
+ *
59
+ * Returns a clean object with ONLY standard fields - no leftover
60
+ * flat fields that were collected into record_data.
61
+ */
62
+ static normalize(params) {
63
+ if (!params || typeof params !== 'object' || Array.isArray(params)) {
64
+ return {};
65
+ }
66
+ const p = params;
67
+ // Build result with only standard fields
68
+ const result = {};
69
+ if (p.resource_type !== undefined) {
70
+ result.resource_type = p.resource_type;
71
+ }
72
+ if (p.record_id !== undefined) {
73
+ result.record_id = p.record_id;
74
+ }
75
+ if (p.return_details !== undefined) {
76
+ result.return_details = p.return_details;
77
+ }
78
+ // Determine record_data source
79
+ if (p.data !== undefined) {
80
+ // Legacy `data` field - validate it's an object
81
+ if (typeof p.data !== 'object' ||
82
+ p.data === null ||
83
+ Array.isArray(p.data)) {
84
+ throw new UniversalValidationError('`data` must be an object containing the fields to update');
85
+ }
86
+ result.record_data = p.data;
87
+ }
88
+ else {
89
+ // Collect extra fields as record_data
90
+ const recordData = {};
91
+ for (const [key, value] of Object.entries(p)) {
92
+ if (!STANDARD_KEYS.has(key)) {
93
+ recordData[key] = value;
94
+ }
95
+ }
96
+ if (Object.keys(recordData).length > 0) {
97
+ result.record_data = recordData;
98
+ }
99
+ }
100
+ return result;
101
+ }
102
+ }
103
+ //# sourceMappingURL=record-data-normalization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-data-normalization.js","sourceRoot":"","sources":["../../../src/utils/normalization/record-data-normalization.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"personal-name-parser.d.ts","sourceRoot":"","sources":["../../src/utils/personal-name-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAgEhC"}
1
+ {"version":3,"file":"personal-name-parser.d.ts","sourceRoot":"","sources":["../../src/utils/personal-name-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CA2EhC"}
@@ -74,30 +74,39 @@ export function parsePersonalName(value) {
74
74
  // Already structured - ensure it has required fields
75
75
  const structured = value;
76
76
  const result = {};
77
+ // Normalize string values by trimming
78
+ const safeString = (v) => typeof v === 'string' ? v.trim() : undefined;
77
79
  // Copy over known fields
78
- if (structured.first_name)
79
- result.first_name = structured.first_name;
80
- if (structured.last_name)
81
- result.last_name = structured.last_name;
82
- if (structured.middle_name)
83
- result.middle_name = structured.middle_name;
84
- if (structured.title)
85
- result.title = structured.title;
80
+ const firstName = safeString(structured.first_name);
81
+ const lastName = safeString(structured.last_name);
82
+ const middleName = safeString(structured.middle_name);
83
+ const title = safeString(structured.title);
84
+ if (firstName)
85
+ result.first_name = firstName;
86
+ if (lastName)
87
+ result.last_name = lastName;
88
+ if (middleName)
89
+ result.middle_name = middleName;
90
+ if (title)
91
+ result.title = title;
86
92
  // Generate full_name if not provided
87
93
  if (!structured.full_name) {
88
94
  const nameParts = [];
89
- if (structured.title)
90
- nameParts.push(String(structured.title));
91
- if (structured.first_name)
92
- nameParts.push(String(structured.first_name));
93
- if (structured.middle_name)
94
- nameParts.push(String(structured.middle_name));
95
- if (structured.last_name)
96
- nameParts.push(String(structured.last_name));
95
+ if (title)
96
+ nameParts.push(title);
97
+ if (firstName)
98
+ nameParts.push(firstName);
99
+ if (middleName)
100
+ nameParts.push(middleName);
101
+ if (lastName)
102
+ nameParts.push(lastName);
97
103
  result.full_name = nameParts.filter(Boolean).join(' ');
98
104
  }
99
105
  else {
100
- result.full_name = structured.full_name;
106
+ const fullName = safeString(structured.full_name);
107
+ if (fullName) {
108
+ result.full_name = fullName;
109
+ }
101
110
  }
102
111
  return result;
103
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"personal-name-parser.js","sourceRoot":"","sources":["../../src/utils/personal-name-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personal-name-parser.js","sourceRoot":"","sources":["../../src/utils/personal-name-parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"field_detector.d.ts","sourceRoot":"","sources":["../../../src/validators/company/field_detector.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAGnC,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAa/D;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,mBAAmB,CAAC,CA0F9B"}
1
+ {"version":3,"file":"field_detector.d.ts","sourceRoot":"","sources":["../../../src/validators/company/field_detector.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAGnC,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAa/D;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAgG9B"}
@@ -64,6 +64,11 @@ export async function processFieldValue(fieldName, value) {
64
64
  if (fieldType === 'array' && typeof value === 'string') {
65
65
  return [value];
66
66
  }
67
+ // Object fields (like location, primary_location) should pass through as-is
68
+ // Issue #987: Don't convert location objects to strings
69
+ if (fieldType === 'object' && typeof value === 'object' && value !== null) {
70
+ return value;
71
+ }
67
72
  }
68
73
  catch {
69
74
  if (isBooleanFieldByName(fieldName) &&
@@ -1 +1 @@
1
- {"version":3,"file":"field_detector.js","sourceRoot":"","sources":["../../../src/validators/company/field_detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field_detector.js","sourceRoot":"","sources":["../../../src/validators/company/field_detector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "attio-mcp",
3
- "version": "1.3.6",
3
+ "version": "1.4.1",
4
4
  "description": "AI-powered access to Attio CRM. Manage contacts, companies, deals, tasks, and notes. Search records, update pipelines, and automate workflows for sales and GTM teams.",
5
5
  "mcpName": "io.github.kesslerio/attio-mcp-server",
6
6
  "main": "dist/smithery.js",
@@ -25,20 +25,20 @@
25
25
  "scripts": {
26
26
  "clean": "shx rm -rf dist test-dist",
27
27
  "build": "tsc && tsc-alias",
28
- "postbuild": "shx chmod +x dist/*.js",
29
- "prepare": "npm run build",
28
+ "postbuild": "shx chmod +x dist/*.js && shx mkdir -p dist/templates && shx cp -r src/templates/* dist/templates/",
29
+ "prepare": "bun run build",
30
30
  "start:stdio": "node dist/cli.js",
31
31
  "start:http": "node dist/http.js",
32
- "dev": "npx @smithery/cli dev",
32
+ "dev": "bunx @smithery/cli dev",
33
33
  "check": "wireit",
34
34
  "build:watch": "tsc --watch",
35
35
  "lint:check": "wireit",
36
- "lint:src": "npx eslint --cache --cache-location .eslintcache -f compact --max-warnings=1000 \"src/**/*.ts\"",
37
- "lint:test": "npx eslint --cache --cache-location .eslintcache -f compact --max-warnings=800 \"test/**/*.ts\"",
36
+ "lint:src": "bunx eslint --cache --cache-location .eslintcache -f compact --max-warnings=1000 \"src/**/*.ts\"",
37
+ "lint:test": "bunx eslint --cache --cache-location .eslintcache -f compact --max-warnings=800 \"test/**/*.ts\"",
38
38
  "lint:guard": "node scripts/ci/lint-warning-guard.cjs",
39
39
  "lint:fix": "wireit",
40
- "format": "npx prettier --write --config .prettierrc \"src/**/*.ts\" \"test/**/*.ts\"",
41
- "check:format": "npx prettier --check --config .prettierrc \"src/**/*.ts\" \"test/**/*.ts\"",
40
+ "format": "bunx prettier --write --config .prettierrc \"src/**/*.ts\" \"test/**/*.ts\"",
41
+ "check:format": "bunx prettier --check --config .prettierrc \"src/**/*.ts\" \"test/**/*.ts\"",
42
42
  "lint:tools": "wireit",
43
43
  "test": "vitest --config configs/vitest/vitest.config.ts",
44
44
  "test:watch": "vitest --config configs/vitest/vitest.config.ts --watch",
@@ -61,25 +61,26 @@
61
61
  "test:unit": "vitest --run test/handlers/ test/objects/ test/utils/ test/validators/",
62
62
  "test:smoke": "vitest --config configs/vitest/vitest.config.smoke.ts --run --reporter=dot",
63
63
  "test:install-scripts": "vitest --run test/scripts/install-scripts.test.ts",
64
+ "test:extract-text": "node scripts/workflows/claude/extract-text.test.cjs",
64
65
  "test:core": "vitest --config configs/vitest/vitest.config.ts --run test/services/ test/handlers/ --reporter=dot",
65
66
  "test:extended": "SKIP_INTEGRATION_TESTS=true vitest --config configs/vitest/vitest.config.ts --run test/api/ test/objects/ test/utils/ --reporter=dot",
66
67
  "typecheck": "tsc --noEmit",
67
68
  "typecheck:watch": "tsc --noEmit --watch",
68
69
  "test:performance": "vitest --run test/performance/regression.test.ts",
69
- "test:mcp": "vitest run test/e2e/mcp/",
70
- "test:mcp:p0": "vitest run test/e2e/mcp/core-operations/",
71
- "test:mcp:p1:lists": "vitest run test/e2e/mcp/list-management/",
72
- "test:mcp:p1:deals": "vitest run test/e2e/mcp/deal-operations/",
73
- "test:mcp:p1:notes": "vitest run test/e2e/mcp/note-operations/",
74
- "test:mcp:p1": "vitest run test/e2e/mcp/list-management/ test/e2e/mcp/deal-operations/ test/e2e/mcp/note-operations/",
75
- "test:mcp:watch": "vitest test/e2e/mcp/ --watch",
70
+ "test:mcp": "vitest run --config configs/vitest/vitest.config.mcp.ts",
71
+ "test:mcp:p0": "vitest run --config configs/vitest/vitest.config.mcp.ts test/e2e/mcp/core-operations/",
72
+ "test:mcp:p1:lists": "vitest run --config configs/vitest/vitest.config.mcp.ts test/e2e/mcp/list-management/",
73
+ "test:mcp:p1:deals": "vitest run --config configs/vitest/vitest.config.mcp.ts test/e2e/mcp/deal-operations/",
74
+ "test:mcp:p1:notes": "vitest run --config configs/vitest/vitest.config.mcp.ts test/e2e/mcp/note-operations/",
75
+ "test:mcp:p1": "vitest run --config configs/vitest/vitest.config.mcp.ts test/e2e/mcp/list-management/ test/e2e/mcp/deal-operations/ test/e2e/mcp/note-operations/",
76
+ "test:mcp:watch": "vitest --config configs/vitest/vitest.config.mcp.ts --watch",
76
77
  "test:performance:all": "vitest --config configs/vitest/vitest.config.performance.ts --run",
77
78
  "test:performance:tools": "vitest --config configs/vitest/vitest.config.performance.ts --run test/handlers/tool-configs/universal/performance-*.test.ts",
78
- "test:playbooks": "vitest test/e2e/tools/universal/*-playbook-eval.e2e.test.ts --run --reporter=verbose",
79
- "test:playbooks:sales": "vitest test/e2e/tools/universal/sales-playbook-eval.e2e.test.ts --run --reporter=verbose",
80
- "test:playbooks:operations": "vitest test/e2e/tools/universal/operations-playbook-eval.e2e.test.ts --run --reporter=verbose",
79
+ "test:playbooks": "vitest -c configs/vitest/vitest.config.e2e.ts test/e2e/tools/universal/*-playbook-eval.e2e.test.ts --run --reporter=verbose",
80
+ "test:playbooks:sales": "vitest -c configs/vitest/vitest.config.e2e.ts test/e2e/tools/universal/sales-playbook-eval.e2e.test.ts --run --reporter=verbose",
81
+ "test:playbooks:operations": "vitest -c configs/vitest/vitest.config.e2e.ts test/e2e/tools/universal/operations-playbook-eval.e2e.test.ts --run --reporter=verbose",
81
82
  "perf:monitor": "node scripts/performance-monitor.cjs",
82
- "perf:report": "npm run test:performance -- --reporter=json > performance-results.json",
83
+ "perf:report": "bun run test:performance -- --reporter=json > performance-results.json",
83
84
  "perf:budgets": "node scripts/check-performance-budgets.cjs",
84
85
  "test:attio-operators": "tsx scripts/test-attio-operators.mjs",
85
86
  "check:offline": "tsc --project configs/tsconfig/tsconfig.offline.json --noEmit",
@@ -105,15 +106,16 @@
105
106
  "discover:robust": "./scripts/run-discover.sh",
106
107
  "discover:attributes:robust": "./scripts/run-discover.sh attributes",
107
108
  "discover:all-attributes:robust": "./scripts/run-discover.sh attributes --all",
109
+ "skill:generate": "attio-discover generate-skill --all",
108
110
  "debug:list-members": "node --import tsx scripts/debug/list-workspace-members.ts",
109
111
  "debug:create-test-list": "node --import tsx scripts/debug/create-test-list.ts",
110
112
  "debug:cleanup-test-list": "node --import tsx scripts/debug/cleanup-test-list.ts",
111
113
  "syncpack:check": "syncpack list-mismatches",
112
114
  "syncpack:fix": "syncpack fix-mismatches",
113
- "check:all": "npm run check && npm run build && npm run test:offline",
115
+ "check:all": "bun run check && bun run build && bun run test:offline",
114
116
  "e2e:gates": "node scripts/aggregate-ci-quality-gates.mjs --vitest-json vitest-report.json --suite core-workflows",
115
117
  "e2e:gates:enforce": "ENFORCE_GATES=true node scripts/aggregate-ci-quality-gates.mjs --vitest-json vitest-report.json --suite core-workflows",
116
- "setup:dev": "npm install && npm run build",
118
+ "setup:dev": "bun install && bun run build",
117
119
  "setup:tdd": "./scripts/setup-tdd.sh",
118
120
  "test:affected": "node scripts/test-affected.cjs",
119
121
  "ci:local": "./scripts/ci-local.sh",
@@ -143,10 +145,10 @@
143
145
  "cleanup:test-data": "tsx scripts/cleanup/index.ts",
144
146
  "cleanup:test-data:dry": "tsx scripts/cleanup/index.ts --dry-run",
145
147
  "cleanup:test-data:live": "tsx scripts/cleanup/index.ts --live",
146
- "cleanup:test-data:tasks": "npm run cleanup:test-data -- --resources=tasks",
147
- "cleanup:test-data:companies": "npm run cleanup:test-data -- --resources=companies",
148
- "cleanup:test-data:people": "npm run cleanup:test-data -- --resources=people",
149
- "cleanup:test-data:deals": "npm run cleanup:test-data -- --resources=deals",
148
+ "cleanup:test-data:tasks": "bun run cleanup:test-data -- --resources=tasks",
149
+ "cleanup:test-data:companies": "bun run cleanup:test-data -- --resources=companies",
150
+ "cleanup:test-data:people": "bun run cleanup:test-data -- --resources=people",
151
+ "cleanup:test-data:deals": "bun run cleanup:test-data -- --resources=deals",
150
152
  "cleanup:test-data:verbose": "tsx scripts/cleanup/index.ts --verbose",
151
153
  "cleanup:test-data:pattern": "tsx scripts/cleanup/index.ts --pattern=\"TEST_*,E2E_*\"",
152
154
  "oauth:setup": "tsx scripts/attio-oauth.ts",
@@ -166,7 +168,7 @@
166
168
  "e2e:analyze:basic": "python3 ./scripts/e2e_analyze.py test-results --stdout",
167
169
  "e2e:health": "./scripts/e2e-health-check.sh",
168
170
  "verify:staged": "lint-staged",
169
- "lint:ci": "npx eslint --cache --cache-location .eslintcache -f compact --max-warnings=50 \"src/**/*.ts\" \"test/**/*.ts\""
171
+ "lint:ci": "bunx eslint --cache --cache-location .eslintcache -f compact --max-warnings=50 \"src/**/*.ts\" \"test/**/*.ts\""
170
172
  },
171
173
  "files": [
172
174
  "dist",
@@ -198,7 +200,7 @@
198
200
  "dependencies": {
199
201
  "@dqbd/tiktoken": "^1.0.15",
200
202
  "@leeoniya/ufuzzy": "^1.0.14",
201
- "@modelcontextprotocol/sdk": "^1.4.1",
203
+ "@modelcontextprotocol/sdk": "~1.24.0",
202
204
  "@smithery/sdk": "^1.6.6",
203
205
  "axios": "^1.12.0",
204
206
  "chalk": "^5.3.0",
@@ -207,7 +209,7 @@
207
209
  "express": "^5.1.0",
208
210
  "fast-safe-stringify": "^2.1.1",
209
211
  "handlebars": "^4.7.8",
210
- "libphonenumber-js": "^1.12.16",
212
+ "libphonenumber-js": "^1.12.30",
211
213
  "lru-cache": "^11.2.2",
212
214
  "ora": "^9.0.0",
213
215
  "safe-stable-stringify": "^2.5.0",
@@ -218,7 +220,7 @@
218
220
  },
219
221
  "engines": {
220
222
  "node": ">=20.0.0",
221
- "npm": ">=10.0.0"
223
+ "bun": ">=1.1.0"
222
224
  },
223
225
  "author": "@kesslerio",
224
226
  "license": "Apache-2.0",
@@ -264,7 +266,7 @@
264
266
  },
265
267
  "wireit": {
266
268
  "lint:check": {
267
- "command": "npx eslint --cache --cache-location .eslintcache -f compact --max-warnings 800 \"src/**/*.ts\" \"test/**/*.ts\"",
269
+ "command": "bunx eslint --cache --cache-location .eslintcache -f compact --max-warnings 800 \"src/**/*.ts\" \"test/**/*.ts\"",
268
270
  "files": [
269
271
  "src/**/*.ts",
270
272
  "test/**/*.ts",
@@ -276,7 +278,7 @@
276
278
  "output": []
277
279
  },
278
280
  "lint:src": {
279
- "command": "npx eslint --cache --cache-location .eslintcache -f compact --max-warnings 1000 \"src/**/*.ts\"",
281
+ "command": "bunx eslint --cache --cache-location .eslintcache -f compact --max-warnings 1000 \"src/**/*.ts\"",
280
282
  "files": [
281
283
  "src/**/*.ts",
282
284
  "eslint.config.js",
@@ -286,7 +288,7 @@
286
288
  "output": []
287
289
  },
288
290
  "lint:test": {
289
- "command": "npx eslint --cache --cache-location .eslintcache -f compact --max-warnings 800 \"test/**/*.ts\"",
291
+ "command": "bunx eslint --cache --cache-location .eslintcache -f compact --max-warnings 800 \"test/**/*.ts\"",
290
292
  "files": [
291
293
  "test/**/*.ts",
292
294
  "eslint.config.js",
@@ -296,7 +298,7 @@
296
298
  "output": []
297
299
  },
298
300
  "lint:fix": {
299
- "command": "npx eslint --fix",
301
+ "command": "bunx eslint --fix",
300
302
  "files": [
301
303
  "src/**/*.ts",
302
304
  "test/**/*.ts",