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
@@ -1,6 +1,7 @@
1
+ import { isAttioList, isAttioRecord, } from '../../types/attio.js';
1
2
  import { FilterValidationError } from '../../errors/api-errors.js';
2
- import { shouldUseMockData } from '../create/index.js';
3
- import { UniversalUtilityService } from '../UniversalUtilityService.js';
3
+ import { shouldUseMockData } from '../../services/create/index.js';
4
+ import { UniversalUtilityService } from '../../services/UniversalUtilityService.js';
4
5
  import { getCompanyDetails } from '../../objects/companies/index.js';
5
6
  import { getListDetails } from '../../objects/lists.js';
6
7
  import { getPersonDetails } from '../../objects/people/basic.js';
@@ -45,7 +46,12 @@ export const UpdateValidation = {
45
46
  discrepancies: [],
46
47
  warnings: [],
47
48
  };
48
- if (shouldUseMockData() || process.env.SKIP_FIELD_VERIFICATION === 'true') {
49
+ // Standardized environment variable (Issue #984 extension)
50
+ // SKIP_FIELD_VERIFICATION is deprecated, use ENABLE_FIELD_VERIFICATION=false instead
51
+ const skipVerification = shouldUseMockData() ||
52
+ process.env.ENABLE_FIELD_VERIFICATION === 'false' ||
53
+ process.env.SKIP_FIELD_VERIFICATION === 'true'; // Deprecated
54
+ if (skipVerification) {
49
55
  result.warnings.push('Field persistence verification skipped in test environment');
50
56
  return result;
51
57
  }
@@ -59,7 +65,11 @@ export const UpdateValidation = {
59
65
  for (const [fieldName, expectedValue] of Object.entries(expectedUpdates)) {
60
66
  if (['created_at', 'updated_at', 'id', 'workspace_id'].includes(fieldName))
61
67
  continue;
62
- const actualValue = verificationRecord.values?.[fieldName];
68
+ const actualValue = isAttioRecord(verificationRecord)
69
+ ? verificationRecord.values?.[fieldName]
70
+ : isAttioList(verificationRecord)
71
+ ? verificationRecord[fieldName]
72
+ : undefined;
63
73
  const comparisonResult = this.compareFieldValues(fieldName, expectedValue, actualValue);
64
74
  if (!comparisonResult.matches) {
65
75
  result.verified = false;
@@ -81,26 +91,13 @@ export const UpdateValidation = {
81
91
  try {
82
92
  switch (resourceType) {
83
93
  case 'companies':
84
- return (await getCompanyDetails(recordId));
94
+ return await getCompanyDetails(recordId);
85
95
  case 'people':
86
- return (await getPersonDetails(recordId));
96
+ return await getPersonDetails(recordId);
87
97
  case 'lists': {
88
98
  const list = await getListDetails(recordId);
89
- return {
90
- id: { record_id: list.id.list_id, list_id: list.id.list_id },
91
- values: {
92
- name: list.name ||
93
- list.title,
94
- description: list.description,
95
- parent_object: list.object_slug ||
96
- list.parent_object,
97
- api_slug: list.api_slug,
98
- workspace_id: list.workspace_id,
99
- workspace_member_access: list
100
- .workspace_member_access,
101
- created_at: list.created_at,
102
- },
103
- };
99
+ const resolvedName = list.name || list.title;
100
+ return resolvedName ? { ...list, name: resolvedName } : list;
104
101
  }
105
102
  case 'tasks': {
106
103
  const task = await getTask(recordId);
@@ -121,10 +118,21 @@ export const UpdateValidation = {
121
118
  }
122
119
  },
123
120
  /**
124
- * Check if a field name represents a status field (like deal stages)
121
+ * Check if a field is a status-type field (stage, status, etc.)
122
+ * Enhanced to recognize more status field variations (Issue #995)
123
+ *
124
+ * Uses exact matching and suffix patterns to avoid false positives
125
+ * from unrelated fields like "status_code" or "status_updated_at"
125
126
  */
126
127
  isStatusField(fieldName) {
127
- return fieldName === 'stage' || fieldName.includes('stage');
128
+ const lowerFieldName = fieldName.toLowerCase();
129
+ // Exact matches for canonical status fields
130
+ if (lowerFieldName === 'stage' || lowerFieldName === 'status') {
131
+ return true;
132
+ }
133
+ // Suffix patterns for common variations
134
+ // e.g., deal_stage, pipeline_stage, company_status, deal_status
135
+ return (lowerFieldName.endsWith('_stage') || lowerFieldName.endsWith('_status'));
128
136
  },
129
137
  /**
130
138
  * Handle null or undefined values
@@ -147,17 +155,33 @@ export const UpdateValidation = {
147
155
  return actualValue;
148
156
  }
149
157
  const firstItem = actualValue[0];
150
- // Handle status fields (like deal stages) - they use 'status' property
151
- if (this.isStatusField(fieldName) && firstItem?.status !== undefined) {
152
- return actualValue.length === 1
153
- ? firstItem.status
154
- : actualValue.map((v) => v.status);
158
+ // Guard: only proceed with status/title logic if firstItem is an object
159
+ // and contains status or title properties
160
+ if (this.isStatusField(fieldName) &&
161
+ firstItem &&
162
+ typeof firstItem === 'object' &&
163
+ !Array.isArray(firstItem)) {
164
+ const firstItemObj = firstItem;
165
+ // Only use status/title extraction if the object actually has those properties
166
+ if ('status' in firstItemObj || 'title' in firstItemObj) {
167
+ const statusValue = firstItemObj.status ?? firstItemObj.title;
168
+ if (statusValue !== undefined) {
169
+ return actualValue.length === 1
170
+ ? statusValue
171
+ : actualValue.map((v) => v.status ?? v.title);
172
+ }
173
+ }
155
174
  }
156
175
  // Handle regular value fields
157
- if (firstItem?.value !== undefined) {
158
- return actualValue.length === 1
159
- ? firstItem.value
160
- : actualValue.map((v) => v.value);
176
+ if (firstItem &&
177
+ typeof firstItem === 'object' &&
178
+ !Array.isArray(firstItem)) {
179
+ const firstItemObj = firstItem;
180
+ if (firstItemObj.value !== undefined) {
181
+ return actualValue.length === 1
182
+ ? firstItemObj.value
183
+ : actualValue.map((v) => v.value);
184
+ }
161
185
  }
162
186
  return actualValue;
163
187
  },
@@ -1 +1 @@
1
- {"version":3,"file":"UpdateValidation.js","sourceRoot":"","sources":["../../../src/services/update/UpdateValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UpdateValidation.js","sourceRoot":"","sources":["../../../src/services/update/UpdateValidation.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,9 @@
5
5
  * given a record_id and mapped values. UniversalUpdateService orchestrates
6
6
  * mapping, sanitization, and post-update verification.
7
7
  */
8
- import type { AttioRecord } from '../../../types/attio.js';
9
8
  import type { UniversalResourceType } from '../../../handlers/tool-configs/universal/types.js';
9
+ import type { UniversalRecord } from '../../../types/attio.js';
10
10
  export interface UpdateStrategy {
11
- update(recordId: string, values: Record<string, unknown>, resourceType: UniversalResourceType, context?: Record<string, unknown>): Promise<AttioRecord>;
11
+ update(recordId: string, values: Record<string, unknown>, resourceType: UniversalResourceType, context?: Record<string, unknown>): Promise<UniversalRecord>;
12
12
  }
13
13
  //# sourceMappingURL=BaseUpdateStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseUpdateStrategy.d.ts","sourceRoot":"","sources":["../../../../src/services/update/strategies/BaseUpdateStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAE/F,MAAM,WAAW,cAAc;IAC7B,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EAAE,qBAAqB,EACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,WAAW,CAAC,CAAC;CACzB"}
1
+ {"version":3,"file":"BaseUpdateStrategy.d.ts","sourceRoot":"","sources":["../../../../src/services/update/strategies/BaseUpdateStrategy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EAAE,qBAAqB,EACnC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7B"}
@@ -1,6 +1,6 @@
1
- import type { AttioRecord } from '../../../types/attio.js';
2
1
  import type { UniversalResourceType } from '../../../handlers/tool-configs/universal/types.js';
3
- import type { UpdateStrategy } from './BaseUpdateStrategy.js';
2
+ import type { AttioList } from '../../../types/attio.js';
3
+ import type { UpdateStrategy } from '../../../services/update/strategies/BaseUpdateStrategy.js';
4
4
  /**
5
5
  * ListUpdateStrategy - Handles updates for Attio Lists
6
6
  *
@@ -8,6 +8,6 @@ import type { UpdateStrategy } from './BaseUpdateStrategy.js';
8
8
  * and isolate resource-specific behavior.
9
9
  */
10
10
  export declare class ListUpdateStrategy implements UpdateStrategy {
11
- update(recordId: string, values: Record<string, unknown>, resourceType: UniversalResourceType): Promise<AttioRecord>;
11
+ update(recordId: string, values: Record<string, unknown>, resourceType: UniversalResourceType): Promise<AttioList>;
12
12
  }
13
13
  //# sourceMappingURL=ListUpdateStrategy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListUpdateStrategy.d.ts","sourceRoot":"","sources":["../../../../src/services/update/strategies/ListUpdateStrategy.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACjD,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,WAAW,CAAC;CAyCxB"}
1
+ {"version":3,"file":"ListUpdateStrategy.d.ts","sourceRoot":"","sources":["../../../../src/services/update/strategies/ListUpdateStrategy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oDAAoD,CAAC;AAEzF;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACjD,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,SAAS,CAAC;CA8BtB"}
@@ -11,23 +11,13 @@ export class ListUpdateStrategy {
11
11
  async update(recordId, values, resourceType) {
12
12
  try {
13
13
  const list = await updateList(recordId, values);
14
- // Convert AttioList to AttioRecord format for consistency with callers
15
- const l = list;
16
- const lid = l.id || {};
17
14
  return {
15
+ ...list,
18
16
  id: {
19
- record_id: lid.list_id,
20
- list_id: lid.list_id,
21
- },
22
- values: {
23
- name: l.name || l.title,
24
- description: l.description,
25
- parent_object: l.object_slug || l.parent_object,
26
- api_slug: l.api_slug,
27
- workspace_id: l.workspace_id,
28
- workspace_member_access: l.workspace_member_access,
29
- created_at: l.created_at,
17
+ ...list.id,
18
+ list_id: list.id.list_id,
30
19
  },
20
+ name: list.name || list.title,
31
21
  };
32
22
  }
33
23
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"ListUpdateStrategy.js","sourceRoot":"","sources":["../../../../src/services/update/strategies/ListUpdateStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,EACL,wBAAwB,EACxB,SAAS,GACV,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAKvD;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,MAAM,CACV,QAAgB,EAChB,MAA+B,EAC/B,YAAmC;QAEnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,uEAAuE;YACvE,MAAM,CAAC,GAAG,IAA0C,CAAC;YACrD,MAAM,GAAG,GAAI,CAAC,CAAC,EAA8B,IAAI,EAAE,CAAC;YACpD,OAAO;gBACL,EAAE,EAAE;oBACF,SAAS,EAAE,GAAG,CAAC,OAAiB;oBAChC,OAAO,EAAE,GAAG,CAAC,OAAiB;iBAC/B;gBACD,MAAM,EAAE;oBACN,IAAI,EAAG,CAAC,CAAC,IAAe,IAAK,CAAC,CAAC,KAAgB;oBAC/C,WAAW,EAAE,CAAC,CAAC,WAAqB;oBACpC,aAAa,EACV,CAAC,CAAC,WAAsB,IAAK,CAAC,CAAC,aAAwB;oBAC1D,QAAQ,EAAE,CAAC,CAAC,QAAkB;oBAC9B,YAAY,EAAE,CAAC,CAAC,YAAsB;oBACtC,uBAAuB,EAAE,CAAC,CAAC,uBAAiC;oBAC5D,UAAU,EAAE,CAAC,CAAC,UAAoB;iBACnC;aACwB,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtE,IAAI,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACvD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,MAAM,IAAI,wBAAwB,CAChC,YAAY,EACZ,SAAS,CAAC,UAAU,EACpB;wBACE,UAAU;wBACV,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;qBAChB,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ListUpdateStrategy.js","sourceRoot":"","sources":["../../../../src/services/update/strategies/ListUpdateStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mDAAmD,CAAC;AACxF,OAAO,EACL,wBAAwB,EACxB,SAAS,GACV,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD;;;;;GAKG;AACH,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,MAAM,CACV,QAAgB,EAChB,MAA+B,EAC/B,YAAmC;QAEnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,OAAO;gBACL,GAAG,IAAI;gBACP,EAAE,EAAE;oBACF,GAAG,IAAI,CAAC,EAAE;oBACV,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO;iBACzB;gBACD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;aAC9B,CAAC;QACJ,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtE,IAAI,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACvD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtB,MAAM,UAAU,GAAG,mBAAmB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC/D,MAAM,IAAI,wBAAwB,CAChC,YAAY,EACZ,SAAS,CAAC,UAAU,EACpB;wBACE,UAAU;wBACV,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;qBAChB,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Value Transformer Service
3
+ *
4
+ * Orchestrates automatic value transformations before API calls to prevent
5
+ * common LLM errors when creating/updating records.
6
+ *
7
+ * Transformations:
8
+ * - Status fields: "Demo Scheduling" → [{status: "uuid"}]
9
+ * - Multi-select fields: "Inbound" → ["Inbound"]
10
+ * - Record-reference fields: "uuid" → [{target_object: "X", target_record_id: "uuid"}] (Issue #997)
11
+ *
12
+ * @module services/value-transformer
13
+ */
14
+ import { TransformContext, RecordTransformResult } from './types.js';
15
+ import { clearStatusCache } from './status-transformer.js';
16
+ import { clearSelectCache } from './select-transformer.js';
17
+ import { UniversalResourceType } from '../../handlers/tool-configs/universal/types.js';
18
+ export * from './types.js';
19
+ export { clearStatusCache, clearSelectCache };
20
+ /**
21
+ * Clear all transformer caches (useful for testing)
22
+ * @see Issue #984 - Now uses CachingService instead of local cache
23
+ */
24
+ export declare function clearAllCaches(): void;
25
+ /**
26
+ * Transform record values before API call
27
+ *
28
+ * @param recordData - The record data to transform
29
+ * @param context - Transformation context (resourceType, operation, recordId)
30
+ * @returns Transformed record data with transformation details
31
+ */
32
+ export declare function transformRecordValues(recordData: Record<string, unknown>, context: TransformContext): Promise<RecordTransformResult>;
33
+ /**
34
+ * Check if a record has fields that may need transformation
35
+ * (Quick check without actually fetching metadata)
36
+ *
37
+ * TRADE-OFF: This function is intentionally PERMISSIVE.
38
+ *
39
+ * Issue #992: We can't know which custom fields are multi-select without fetching
40
+ * metadata from the API. Rather than miss a multi-select field and cause an API
41
+ * error, we trigger transformation for any unknown string field.
42
+ *
43
+ * Issue #997: Record-reference fields also need transformation to format
44
+ * record IDs to [{target_object, target_record_id}] format.
45
+ *
46
+ * Implications:
47
+ * - Some fields will trigger transformation unnecessarily (false positives)
48
+ * - First request per resource type incurs metadata API call (then cached)
49
+ * - This is better than the alternative: silent failures on custom multi-selects
50
+ *
51
+ * Tuning levers if performance becomes an issue:
52
+ * - Expand `definitelyNotMultiSelect` with common text field patterns
53
+ * - Monitor false-positive rate via logging
54
+ * - Consider workspace-specific caching of field types
55
+ */
56
+ export declare function mayNeedTransformation(recordData: Record<string, unknown>, resourceType: UniversalResourceType): boolean;
57
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/value-transformer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EAGtB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEL,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AAQnF,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AA2DD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAiLhC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAiIT"}
@@ -0,0 +1,326 @@
1
+ /**
2
+ * Value Transformer Service
3
+ *
4
+ * Orchestrates automatic value transformations before API calls to prevent
5
+ * common LLM errors when creating/updating records.
6
+ *
7
+ * Transformations:
8
+ * - Status fields: "Demo Scheduling" → [{status: "uuid"}]
9
+ * - Multi-select fields: "Inbound" → ["Inbound"]
10
+ * - Record-reference fields: "uuid" → [{target_object: "X", target_record_id: "uuid"}] (Issue #997)
11
+ *
12
+ * @module services/value-transformer
13
+ */
14
+ import { transformStatusValue, clearStatusCache, } from './status-transformer.js';
15
+ import { transformMultiSelectValue } from './multi-select-transformer.js';
16
+ import { transformSelectValue, clearSelectCache, } from './select-transformer.js';
17
+ import { transformRecordReferenceValue, isCorrectRecordReferenceFormat, } from './record-reference-transformer.js';
18
+ import { convertToMetadataMap } from '../../utils/metadata-utils.js';
19
+ import { handleUniversalDiscoverAttributes } from '../../handlers/tool-configs/universal/shared-handlers.js';
20
+ import { debug, error as logError, OperationType } from '../../utils/logger.js';
21
+ import { CachingService } from '../../services/CachingService.js';
22
+ import { DEFAULT_ATTRIBUTES_CACHE_TTL } from '../../constants/universal.constants.js';
23
+ // Re-export types
24
+ export * from './types.js';
25
+ export { clearStatusCache, clearSelectCache };
26
+ /**
27
+ * Clear all transformer caches (useful for testing)
28
+ * @see Issue #984 - Now uses CachingService instead of local cache
29
+ */
30
+ export function clearAllCaches() {
31
+ CachingService.clearAttributesCache();
32
+ clearStatusCache();
33
+ clearSelectCache();
34
+ }
35
+ /**
36
+ * Get attribute metadata for a resource type with caching
37
+ * @see Issue #984 - Now uses CachingService with TTL and accepts provided metadata
38
+ */
39
+ async function getAttributeMetadata(resourceType, providedMetadata) {
40
+ // Use provided metadata if available (avoid duplicate fetch)
41
+ if (providedMetadata && providedMetadata.size > 0) {
42
+ debug('value-transformer', 'Using pre-fetched metadata from parent', { resourceType, attributeCount: providedMetadata.size }, 'getAttributeMetadata', OperationType.DATA_PROCESSING);
43
+ return providedMetadata;
44
+ }
45
+ try {
46
+ // Use CachingService with TTL instead of local cache
47
+ const result = await CachingService.getOrLoadAttributes(async () => {
48
+ const schema = await handleUniversalDiscoverAttributes(resourceType);
49
+ return schema;
50
+ }, resourceType, undefined, DEFAULT_ATTRIBUTES_CACHE_TTL);
51
+ debug('value-transformer', 'Fetched attribute metadata', {
52
+ resourceType,
53
+ fromCache: result.fromCache,
54
+ }, 'getAttributeMetadata', OperationType.DATA_PROCESSING);
55
+ return convertToMetadataMap(result.data);
56
+ }
57
+ catch (err) {
58
+ logError('value-transformer', `Failed to fetch attribute metadata for ${resourceType}`, err);
59
+ return new Map();
60
+ }
61
+ }
62
+ // Note: convertToMetadataMap() moved to @/utils/metadata-utils.js (PR #1006 Phase 2.1)
63
+ // This eliminates duplication between value-transformer and MetadataResolver
64
+ /**
65
+ * Transform record values before API call
66
+ *
67
+ * @param recordData - The record data to transform
68
+ * @param context - Transformation context (resourceType, operation, recordId)
69
+ * @returns Transformed record data with transformation details
70
+ */
71
+ export async function transformRecordValues(recordData, context) {
72
+ const transformations = [];
73
+ const warnings = [];
74
+ const transformedData = {};
75
+ // Get attribute metadata for this resource type
76
+ // Issue #984: Use provided metadata if available to avoid duplicate API fetch
77
+ const attributeMetadata = await getAttributeMetadata(context.resourceType, context.attributeMetadata);
78
+ debug('value-transformer', `Starting transformation for ${context.resourceType}`, {
79
+ operation: context.operation,
80
+ fieldCount: Object.keys(recordData).length,
81
+ knownAttributes: attributeMetadata.size,
82
+ }, 'transformRecordValues', OperationType.DATA_PROCESSING);
83
+ // Process each field
84
+ for (const [field, value] of Object.entries(recordData)) {
85
+ const attrMeta = attributeMetadata.get(field);
86
+ // If no metadata found, pass through unchanged
87
+ if (!attrMeta) {
88
+ transformedData[field] = value;
89
+ continue;
90
+ }
91
+ // Try status transformation
92
+ try {
93
+ const statusResult = await transformStatusValue(value, field, context, attrMeta);
94
+ if (statusResult.transformed) {
95
+ transformedData[field] = statusResult.transformedValue;
96
+ transformations.push({
97
+ field,
98
+ from: statusResult.originalValue,
99
+ to: statusResult.transformedValue,
100
+ type: 'status_title_to_id',
101
+ description: statusResult.description || 'Status value transformed',
102
+ });
103
+ continue;
104
+ }
105
+ }
106
+ catch (err) {
107
+ // Status transformation threw an error (invalid value)
108
+ throw err;
109
+ }
110
+ // Try multi-select transformation
111
+ try {
112
+ const multiSelectResult = await transformMultiSelectValue(value, field, context, attrMeta);
113
+ if (multiSelectResult.transformed) {
114
+ transformedData[field] = multiSelectResult.transformedValue;
115
+ transformations.push({
116
+ field,
117
+ from: multiSelectResult.originalValue,
118
+ to: multiSelectResult.transformedValue,
119
+ type: 'multi_select_wrap',
120
+ description: multiSelectResult.description || 'Multi-select value wrapped',
121
+ });
122
+ continue;
123
+ }
124
+ }
125
+ catch (err) {
126
+ // Multi-select transformation threw an error
127
+ throw err;
128
+ }
129
+ // Issue #1019: Try single-select transformation
130
+ try {
131
+ const selectResult = await transformSelectValue(value, field, context, attrMeta);
132
+ if (selectResult.transformed) {
133
+ transformedData[field] = selectResult.transformedValue;
134
+ transformations.push({
135
+ field,
136
+ from: selectResult.originalValue,
137
+ to: selectResult.transformedValue,
138
+ type: 'select_title_to_array',
139
+ description: selectResult.description || 'Select value transformed',
140
+ });
141
+ continue;
142
+ }
143
+ }
144
+ catch (err) {
145
+ // Select transformation threw an error
146
+ throw err;
147
+ }
148
+ // Issue #997: Try record-reference transformation
149
+ try {
150
+ const refResult = await transformRecordReferenceValue(value, field, context, attrMeta);
151
+ if (refResult.transformed) {
152
+ transformedData[field] = refResult.transformedValue;
153
+ transformations.push({
154
+ field,
155
+ from: refResult.originalValue,
156
+ to: refResult.transformedValue,
157
+ type: 'record_reference_format',
158
+ description: refResult.description || 'Record reference formatted',
159
+ });
160
+ continue;
161
+ }
162
+ }
163
+ catch (err) {
164
+ // Record-reference transformation threw an error
165
+ throw err;
166
+ }
167
+ // No transformation applied, pass through unchanged
168
+ transformedData[field] = value;
169
+ // Issue #992: Debug logging for false-positive measurement
170
+ // Helps evaluate if mayNeedTransformation() is triggering too often for non-multi-select fields
171
+ if (attrMeta && !attrMeta.is_multiselect && typeof value === 'string') {
172
+ debug('value-transformer', 'Non-multi-select string field passed through unchanged', {
173
+ field,
174
+ resourceType: context.resourceType,
175
+ attrType: attrMeta.type,
176
+ }, 'transformRecordValues', OperationType.DATA_PROCESSING);
177
+ }
178
+ }
179
+ // Log transformation summary
180
+ if (transformations.length > 0) {
181
+ debug('value-transformer', `Completed transformation`, {
182
+ transformationCount: transformations.length,
183
+ transformations: transformations.map((t) => ({
184
+ field: t.field,
185
+ type: t.type,
186
+ })),
187
+ }, 'transformRecordValues', OperationType.DATA_PROCESSING);
188
+ }
189
+ return {
190
+ data: transformedData,
191
+ transformations,
192
+ warnings,
193
+ };
194
+ }
195
+ /**
196
+ * Check if a record has fields that may need transformation
197
+ * (Quick check without actually fetching metadata)
198
+ *
199
+ * TRADE-OFF: This function is intentionally PERMISSIVE.
200
+ *
201
+ * Issue #992: We can't know which custom fields are multi-select without fetching
202
+ * metadata from the API. Rather than miss a multi-select field and cause an API
203
+ * error, we trigger transformation for any unknown string field.
204
+ *
205
+ * Issue #997: Record-reference fields also need transformation to format
206
+ * record IDs to [{target_object, target_record_id}] format.
207
+ *
208
+ * Implications:
209
+ * - Some fields will trigger transformation unnecessarily (false positives)
210
+ * - First request per resource type incurs metadata API call (then cached)
211
+ * - This is better than the alternative: silent failures on custom multi-selects
212
+ *
213
+ * Tuning levers if performance becomes an issue:
214
+ * - Expand `definitelyNotMultiSelect` with common text field patterns
215
+ * - Monitor false-positive rate via logging
216
+ * - Consider workspace-specific caching of field types
217
+ */
218
+ export function mayNeedTransformation(recordData, resourceType) {
219
+ // Known status fields by resource type
220
+ const statusFields = {
221
+ deals: ['stage'],
222
+ tasks: ['status'],
223
+ };
224
+ // Issue #997: Known record-reference fields by resource type
225
+ const recordReferenceFields = {
226
+ people: ['company'],
227
+ deals: ['associated_company', 'associated_people'],
228
+ companies: ['main_contact'],
229
+ };
230
+ // Known multi-select fields (workspace-specific, so we check common patterns)
231
+ // Issue #992: Added 'channel' based on user feedback
232
+ const multiSelectIndicators = [
233
+ 'categories',
234
+ 'tags',
235
+ 'types',
236
+ 'lead_type',
237
+ 'inbound_outbound',
238
+ 'channel', // Added per Issue #992 feedback
239
+ ];
240
+ // Issue #997: Record-reference field name patterns
241
+ const recordReferenceIndicators = [
242
+ 'company',
243
+ 'person',
244
+ 'people',
245
+ 'contact',
246
+ 'owner',
247
+ 'assignee',
248
+ 'associated_',
249
+ ];
250
+ // Fields that are definitely NOT multi-select (optimization to avoid unnecessary API calls)
251
+ const definitelyNotMultiSelect = [
252
+ 'name',
253
+ 'description',
254
+ 'notes',
255
+ 'email',
256
+ 'phone',
257
+ 'website',
258
+ 'domain',
259
+ 'address',
260
+ 'title',
261
+ 'content',
262
+ 'id',
263
+ 'record_id',
264
+ ];
265
+ const resourceKey = resourceType.toLowerCase();
266
+ const knownStatusFields = statusFields[resourceKey] || [];
267
+ const knownRefFields = recordReferenceFields[resourceKey] || [];
268
+ const isAlreadyNormalizedStatusArray = (value) => {
269
+ if (!Array.isArray(value) || value.length === 0)
270
+ return false;
271
+ const first = value[0];
272
+ if (!first || typeof first !== 'object' || Array.isArray(first))
273
+ return false;
274
+ return 'status' in first;
275
+ };
276
+ for (const field of Object.keys(recordData)) {
277
+ const value = recordData[field];
278
+ const fieldLower = field.toLowerCase();
279
+ // Skip null/undefined values - they don't need transformation
280
+ if (value === null || value === undefined) {
281
+ continue;
282
+ }
283
+ // Issue #997: Check if it's a known record-reference field that may need formatting
284
+ // Record-reference fields can be strings, objects, or arrays - all may need transformation
285
+ if (knownRefFields.includes(field)) {
286
+ // Only skip if already in correct format (uses shared helper to avoid duplication)
287
+ if (isCorrectRecordReferenceFormat(value)) {
288
+ continue; // Already in correct format
289
+ }
290
+ return true;
291
+ }
292
+ // Skip arrays for other checks - they don't need multi-select transformation
293
+ if (Array.isArray(value)) {
294
+ continue;
295
+ }
296
+ // Check if it's a known status field (deals.stage, tasks.status) that needs normalization
297
+ if (knownStatusFields.includes(field)) {
298
+ // Strings always need transformation (title → id)
299
+ if (typeof value === 'string')
300
+ return true;
301
+ // Accept already-normalized Attio array shape
302
+ if (isAlreadyNormalizedStatusArray(value))
303
+ continue;
304
+ // Any other non-null shape (object / legacy / wrong array) should trigger normalization
305
+ return true;
306
+ }
307
+ // Check if it matches known multi-select indicator patterns
308
+ if (multiSelectIndicators.some((indicator) => fieldLower.includes(indicator))) {
309
+ return true;
310
+ }
311
+ // Issue #997: Check if field name suggests record-reference
312
+ if (recordReferenceIndicators.some((indicator) => fieldLower.includes(indicator)) &&
313
+ (typeof value === 'string' || typeof value === 'object')) {
314
+ return true;
315
+ }
316
+ // Issue #992: For any string value on a field that's NOT definitely-not-multi-select,
317
+ // trigger transformation to let the actual metadata check determine if it's multi-select
318
+ if (typeof value === 'string' &&
319
+ !definitelyNotMultiSelect.some((safe) => fieldLower.includes(safe))) {
320
+ // This is a potential multi-select field - trigger full transformation
321
+ return true;
322
+ }
323
+ }
324
+ return false;
325
+ }
326
+ //# sourceMappingURL=index.js.map