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,118 @@
1
+ /**
2
+ * Select/Status Error Enhancer
3
+ * Issue #1001 - Strategy Pattern for CRUD error handling
4
+ *
5
+ * Detects "Cannot find select option" or "Cannot find Status" errors
6
+ * and provides valid options from AttributeOptionsService.
7
+ */
8
+ import { getErrorMessage, isAxiosError } from './types.js';
9
+ import { sanitizedLog } from '../pii-sanitizer.js';
10
+ import { createScopedLogger } from '../../../../../utils/logger.js';
11
+ const logger = createScopedLogger('select-status-enhancer');
12
+ /**
13
+ * Enhance error messages for select/status attribute errors
14
+ */
15
+ const enhanceSelectStatusError = async (error, resourceType, recordData) => {
16
+ const msg = getErrorMessage(error);
17
+ // Attempt to extract validation_errors array for better detail on select fields
18
+ if (isAxiosError(error)) {
19
+ const validationErrors = error.response?.data?.validation_errors;
20
+ if (validationErrors) {
21
+ const selectErr = validationErrors.find((ve) => String(ve?.message || '').includes('select option'));
22
+ if (selectErr?.field) {
23
+ try {
24
+ const { AttributeOptionsService } = await import('../../../../../services/metadata/index.js');
25
+ const { options, attributeType } = await AttributeOptionsService.getOptions(resourceType, selectErr.field);
26
+ const validList = options
27
+ .slice(0, 8)
28
+ .map((o) => o.title)
29
+ .join(', ');
30
+ const hasMore = options.length > 8 ? ` (+${options.length - 8} more)` : '';
31
+ return `Value is not valid for ${attributeType} attribute "${selectErr.field}" on ${resourceType}.
32
+ Expected one of: ${validList}${hasMore}
33
+
34
+ Next step: Call records_get_attribute_options with
35
+ resource_type: "${resourceType}"
36
+ attribute: "${selectErr.field}"
37
+ to list all valid values, then retry.`;
38
+ }
39
+ catch (err) {
40
+ sanitizedLog(logger, 'debug', 'Failed to fetch select/status options for enhanced error message', {
41
+ enhancerName: 'select-status',
42
+ resourceType,
43
+ attribute: selectErr.field,
44
+ error: err instanceof Error ? err.message : String(err),
45
+ });
46
+ return `Value is not valid for attribute "${selectErr.field}" on ${resourceType}.
47
+ Next step: Call records_get_attribute_options with
48
+ resource_type: "${resourceType}"
49
+ attribute: "${selectErr.field}"
50
+ to see valid options, then retry.`;
51
+ }
52
+ }
53
+ }
54
+ }
55
+ // Pattern: "Cannot find select option with title 'X'" or "Cannot find Status with title 'X'"
56
+ const selectMatch = msg.match(/Cannot find (?:select option|Status) with title "(.+?)"/);
57
+ if (!selectMatch)
58
+ return null;
59
+ const invalidValue = selectMatch[1];
60
+ // Try to identify which field has the problem by checking record data
61
+ for (const [fieldName, fieldValue] of Object.entries(recordData)) {
62
+ if (fieldValue === invalidValue ||
63
+ (Array.isArray(fieldValue) && fieldValue.includes(invalidValue))) {
64
+ try {
65
+ const { AttributeOptionsService } = await import('../../../../../services/metadata/index.js');
66
+ const { options, attributeType } = await AttributeOptionsService.getOptions(resourceType, fieldName);
67
+ const validList = options
68
+ .slice(0, 8)
69
+ .map((o) => o.title)
70
+ .join(', ');
71
+ const hasMore = options.length > 8 ? ` (+${options.length - 8} more)` : '';
72
+ return (`Value "${invalidValue}" is not valid for ${attributeType} attribute "${fieldName}" on ${resourceType}.\n\n` +
73
+ `Valid options: ${validList}${hasMore}\n\n` +
74
+ `Next step: Call records_get_attribute_options with\n` +
75
+ ` resource_type: "${resourceType}"\n` +
76
+ ` attribute: "${fieldName}"\n` +
77
+ `to list all valid values, then retry.`);
78
+ }
79
+ catch (err) {
80
+ sanitizedLog(logger, 'debug', 'Failed to fetch attribute options (no invalid value extracted)', {
81
+ enhancerName: 'select-status',
82
+ resourceType,
83
+ attribute: fieldName,
84
+ error: err instanceof Error ? err.message : String(err),
85
+ });
86
+ return (`Value "${invalidValue}" is not valid for attribute "${fieldName}" on ${resourceType}.\n\n` +
87
+ `Next step: Call records_get_attribute_options with\n` +
88
+ ` resource_type: "${resourceType}"\n` +
89
+ ` attribute: "${fieldName}"\n` +
90
+ `to see valid options, then retry.`);
91
+ }
92
+ }
93
+ }
94
+ // Couldn't match to a specific field, return generic hint
95
+ return (`Value "${invalidValue}" is not valid for an attribute on ${resourceType}.\n\n` +
96
+ `Next step: Use records_get_attribute_options to discover valid options for the attribute.`);
97
+ };
98
+ /**
99
+ * Select/Status Enhancer
100
+ * Provides valid options for select and status field errors
101
+ */
102
+ export const selectStatusEnhancer = {
103
+ name: 'select-status',
104
+ errorName: 'value_not_found',
105
+ matches: (error, _context) => {
106
+ const msg = getErrorMessage(error);
107
+ return (msg.includes('Cannot find select option') ||
108
+ msg.includes('Cannot find Status') ||
109
+ msg.includes('select option'));
110
+ },
111
+ enhance: async (error, context) => {
112
+ const { resourceType, recordData } = context;
113
+ if (!recordData)
114
+ return null;
115
+ return enhanceSelectStatusError(error, resourceType, recordData);
116
+ },
117
+ };
118
+ //# sourceMappingURL=select-status-enhancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-status-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/select-status-enhancer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Error Enhancer Strategy Pattern Types
3
+ * Issue #1001 - Refactoring crud-error-handlers.ts
4
+ */
5
+ import type { ValidationMetadata } from '../../../../../handlers/tool-configs/universal/core/utils.js';
6
+ /**
7
+ * Context passed to error enhancers
8
+ */
9
+ export interface CrudErrorContext {
10
+ readonly operation: 'create' | 'update' | 'delete' | 'search';
11
+ readonly resourceType: string;
12
+ readonly recordData?: Readonly<Record<string, unknown>>;
13
+ readonly recordId?: string;
14
+ readonly validationMetadata?: Readonly<ValidationMetadata>;
15
+ }
16
+ /**
17
+ * Strategy interface for error enhancement
18
+ * Each enhancer implements pattern matching and message enhancement
19
+ */
20
+ export interface ErrorEnhancer {
21
+ /** Unique name for the enhancer */
22
+ readonly name: string;
23
+ /** Check if this enhancer can handle the error */
24
+ readonly matches: (error: unknown, context: CrudErrorContext) => boolean;
25
+ /** Enhance the error message with context-specific details */
26
+ readonly enhance: (error: unknown, context: CrudErrorContext) => Promise<string | null>;
27
+ /** Error name to use when throwing the enhanced error */
28
+ readonly errorName: string;
29
+ }
30
+ /**
31
+ * Extract error message from Error instances, axios-style errors, or test mocks
32
+ *
33
+ * Handles three cases:
34
+ * 1. Real Error instances: returns error.message
35
+ * 2. Error-like objects (axios/mocks): extracts message property
36
+ * 3. Primitive values: converts to string
37
+ *
38
+ * This helper was added to fix test compatibility issues where test mocks
39
+ * aren't true Error instances but have message properties. It provides a
40
+ * consistent way to extract error messages across production code and tests.
41
+ *
42
+ * @param error - Any error value (Error, axios error object, string, etc.)
43
+ * @returns Error message as string (never null/undefined)
44
+ *
45
+ * @example
46
+ * getErrorMessage(new Error("test")) // "test"
47
+ * getErrorMessage({ message: "axios error" }) // "axios error"
48
+ * getErrorMessage("string error") // "string error"
49
+ */
50
+ export declare const getErrorMessage: (error: unknown) => string;
51
+ /**
52
+ * Axios-style error response structure
53
+ * Used for type-safe extraction of validation errors from Attio API responses
54
+ */
55
+ export interface AxiosErrorResponse {
56
+ data?: {
57
+ message?: string;
58
+ validation_errors?: Array<{
59
+ field?: string;
60
+ path?: string;
61
+ message?: string;
62
+ }>;
63
+ };
64
+ }
65
+ /**
66
+ * Axios error with response
67
+ * Allows type-safe access to error.response.data.validation_errors
68
+ */
69
+ export interface AxiosError extends Error {
70
+ response?: AxiosErrorResponse;
71
+ }
72
+ /**
73
+ * Type guard to check if error is an Axios error
74
+ */
75
+ export declare function isAxiosError(error: unknown): error is AxiosError;
76
+ export type { ValidationMetadata };
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC;IAEzE,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,gBAAgB,KACtB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE5B,yDAAyD;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,MAMhD,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,KAAK,CAAC;YACxB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAOhE;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Error Enhancer Strategy Pattern Types
3
+ * Issue #1001 - Refactoring crud-error-handlers.ts
4
+ */
5
+ /**
6
+ * Extract error message from Error instances, axios-style errors, or test mocks
7
+ *
8
+ * Handles three cases:
9
+ * 1. Real Error instances: returns error.message
10
+ * 2. Error-like objects (axios/mocks): extracts message property
11
+ * 3. Primitive values: converts to string
12
+ *
13
+ * This helper was added to fix test compatibility issues where test mocks
14
+ * aren't true Error instances but have message properties. It provides a
15
+ * consistent way to extract error messages across production code and tests.
16
+ *
17
+ * @param error - Any error value (Error, axios error object, string, etc.)
18
+ * @returns Error message as string (never null/undefined)
19
+ *
20
+ * @example
21
+ * getErrorMessage(new Error("test")) // "test"
22
+ * getErrorMessage({ message: "axios error" }) // "axios error"
23
+ * getErrorMessage("string error") // "string error"
24
+ */
25
+ export const getErrorMessage = (error) => {
26
+ if (error instanceof Error)
27
+ return error.message;
28
+ if (error && typeof error === 'object' && 'message' in error) {
29
+ return String(error.message);
30
+ }
31
+ return String(error);
32
+ };
33
+ /**
34
+ * Type guard to check if error is an Axios error
35
+ */
36
+ export function isAxiosError(error) {
37
+ return (error !== null &&
38
+ typeof error === 'object' &&
39
+ 'response' in error &&
40
+ typeof error.response === 'object');
41
+ }
42
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoCH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAU,EAAE;IACxD,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAE,KAAiC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAyBF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,CACL,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,UAAU,IAAI,KAAK;QACnB,OAAQ,KAAgC,CAAC,QAAQ,KAAK,QAAQ,CAC/D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Uniqueness Error Enhancer
3
+ * Issue #1001 - Strategy Pattern for CRUD error handling
4
+ * Issue #990 - Enhanced uniqueness constraint violation handling
5
+ *
6
+ * Detects uniqueness/duplicate errors and attempts to find the
7
+ * conflicting record to provide actionable guidance.
8
+ */
9
+ import type { ErrorEnhancer } from './types.js';
10
+ /**
11
+ * Uniqueness Enhancer
12
+ * Detects duplicate/uniqueness constraint violations and finds the conflicting record
13
+ */
14
+ export declare const uniquenessEnhancer: ErrorEnhancer;
15
+ //# sourceMappingURL=uniqueness-enhancer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniqueness-enhancer.d.ts","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,YAAY,CAAC;AAqHlE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAiChC,CAAC"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Uniqueness Error Enhancer
3
+ * Issue #1001 - Strategy Pattern for CRUD error handling
4
+ * Issue #990 - Enhanced uniqueness constraint violation handling
5
+ *
6
+ * Detects uniqueness/duplicate errors and attempts to find the
7
+ * conflicting record to provide actionable guidance.
8
+ */
9
+ import { getSingularResourceType } from '../../../../../handlers/tool-configs/universal/shared-handlers.js';
10
+ import { sanitizedLog } from '../../../../../handlers/tool-configs/universal/core/pii-sanitizer.js';
11
+ import { createScopedLogger } from '../../../../../utils/logger.js';
12
+ const logger = createScopedLogger('uniqueness-enhancer');
13
+ /**
14
+ * Searches for conflicting record when uniqueness constraint violation occurs
15
+ */
16
+ async function enhanceUniquenessErrorWithSearch(resourceType, recordData) {
17
+ const UNIQUE_FIELD_SEARCHERS = {
18
+ companies: {
19
+ fields: ['domains', 'domain'],
20
+ search: async (value) => {
21
+ const { searchCompaniesByDomain } = await import('../../../../../objects/companies/search.js');
22
+ return searchCompaniesByDomain(value);
23
+ },
24
+ },
25
+ people: {
26
+ fields: ['email_addresses', 'email', 'emails'],
27
+ search: async (value) => {
28
+ const { searchPeopleByEmail } = await import('../../../../../objects/people/search.js');
29
+ return searchPeopleByEmail(value);
30
+ },
31
+ },
32
+ };
33
+ const searcher = UNIQUE_FIELD_SEARCHERS[resourceType.toLowerCase()];
34
+ if (!searcher)
35
+ return null;
36
+ // Find which unique field has a value in recordData
37
+ for (const field of searcher.fields) {
38
+ let searchValue = recordData[field];
39
+ // Handle array format (e.g., domains: ["example.com"])
40
+ if (Array.isArray(searchValue) && searchValue.length > 0) {
41
+ searchValue = searchValue[0];
42
+ }
43
+ // Handle object format for emails (e.g., email_addresses: [{email_address: "..."}])
44
+ if (searchValue &&
45
+ typeof searchValue === 'object' &&
46
+ !Array.isArray(searchValue)) {
47
+ const obj = searchValue;
48
+ searchValue = obj.email_address || obj.email || obj.value;
49
+ }
50
+ if (searchValue && typeof searchValue === 'string') {
51
+ try {
52
+ const existing = await searcher.search(searchValue);
53
+ if (existing && existing.length > 0) {
54
+ const recordId = existing[0]?.id?.record_id;
55
+ if (recordId) {
56
+ return formatUniquenessErrorMessage(resourceType, field, searchValue, recordId);
57
+ }
58
+ }
59
+ }
60
+ catch (err) {
61
+ // Search failed, log and continue to fallback
62
+ sanitizedLog(logger, 'debug', 'Uniqueness search failed', {
63
+ resourceType,
64
+ field,
65
+ error: String(err),
66
+ });
67
+ }
68
+ }
69
+ }
70
+ return null;
71
+ }
72
+ /**
73
+ * Formats actionable error message for uniqueness constraint violations
74
+ */
75
+ function formatUniquenessErrorMessage(resourceType, field, value, recordId) {
76
+ const singular = getSingularResourceType(resourceType);
77
+ return (`Uniqueness conflict on "${field}": value "${value}" already exists on ${singular} record.\n\n` +
78
+ `EXISTING RECORD ID: ${recordId}\n\n` +
79
+ `OPTIONS:\n` +
80
+ `1. Update existing: update-record(resource_type="${resourceType}", record_id="${recordId}", record_data={...})\n` +
81
+ `2. View existing: records_get_details(resource_type="${resourceType}", record_id="${recordId}")\n` +
82
+ `3. Use a different ${field} value`);
83
+ }
84
+ /**
85
+ * Uniqueness Enhancer
86
+ * Detects duplicate/uniqueness constraint violations and finds the conflicting record
87
+ */
88
+ export const uniquenessEnhancer = {
89
+ name: 'uniqueness',
90
+ errorName: 'duplicate_error',
91
+ matches: (error, _context) => {
92
+ const msg = error instanceof Error ? error.message : String(error);
93
+ return (msg.includes('duplicate') ||
94
+ msg.toLowerCase().includes('uniqueness constraint'));
95
+ },
96
+ enhance: async (_error, context) => {
97
+ const { resourceType, recordData } = context;
98
+ if (!recordData)
99
+ return null;
100
+ // Try to find and identify the conflicting record
101
+ const enhancedMessage = await enhanceUniquenessErrorWithSearch(resourceType, recordData);
102
+ if (enhancedMessage) {
103
+ return enhancedMessage;
104
+ }
105
+ // Fallback message if we couldn't find the specific record
106
+ return 'A record with similar data already exists. Check unique fields like domains or email_addresses.';
107
+ },
108
+ };
109
+ //# sourceMappingURL=uniqueness-enhancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniqueness-enhancer.js","sourceRoot":"","sources":["../../../../../../src/handlers/tool-configs/universal/core/error-enhancers/uniqueness-enhancer.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,39 @@
1
1
  import { searchRecordsConfig } from './search-operations.js';
2
2
  import { getRecordDetailsConfig } from './record-details-operations.js';
3
3
  import { createRecordConfig, updateRecordConfig, deleteRecordConfig } from './crud-operations.js';
4
- import { getAttributesConfig, discoverAttributesConfig } from './metadata-operations.js';
4
+ import { getAttributesConfig, discoverAttributesConfig, getAttributeOptionsConfig } from './metadata-operations.js';
5
5
  import { getDetailedInfoConfig } from './detailed-info-operations.js';
6
6
  import { createNoteConfig, listNotesConfig } from './notes-operations.js';
7
7
  export declare const coreOperationsToolConfigs: {
8
- 'create-note': import("../types.js").UniversalToolConfig<Record<string, unknown>, Record<string, unknown>>;
9
- 'list-notes': import("../types.js").UniversalToolConfig<Record<string, unknown>, Record<string, unknown>[]>;
10
- records_search: import("../types.js").UniversalToolConfig<import("../types.js").UniversalSearchParams, import("../../../../types/attio.js").AttioRecord[]>;
11
- records_get_details: import("../types.js").UniversalToolConfig<import("../types.js").UniversalRecordDetailsParams, import("../../../../types/attio.js").AttioRecord>;
12
- 'create-record': import("../types.js").UniversalToolConfig<import("../types.js").UniversalCreateParams, import("../../../../types/attio.js").AttioRecord>;
13
- 'update-record': import("../types.js").UniversalToolConfig<import("../types.js").UniversalUpdateParams, import("../../../../types/attio.js").EnhancedAttioRecord>;
14
- 'delete-record': import("../types.js").UniversalToolConfig<import("../types.js").UniversalDeleteParams, {
8
+ create_note: import("../types.js").UniversalToolConfig<Record<string, unknown>, Record<string, unknown>>;
9
+ list_notes: import("../types.js").UniversalToolConfig<Record<string, unknown>, Record<string, unknown>[]>;
10
+ search_records: import("../types.js").UniversalToolConfig<import("../types.js").UniversalSearchParams, import("../../../../types/attio.js").UniversalRecordResult[]>;
11
+ get_record_details: import("../types.js").UniversalToolConfig<import("../types.js").UniversalRecordDetailsParams, import("../../../../types/attio.js").UniversalRecordResult>;
12
+ create_record: import("../types.js").UniversalToolConfig<import("../types.js").UniversalCreateParams, import("./utils.js").UniversalRecord>;
13
+ update_record: import("../types.js").UniversalToolConfig<import("../types.js").UniversalUpdateParams, import("./utils.js").UniversalRecord>;
14
+ delete_record: import("../types.js").UniversalToolConfig<import("../types.js").UniversalDeleteParams, {
15
15
  success: boolean;
16
16
  record_id: string;
17
17
  }>;
18
- records_get_attributes: import("../types.js").UniversalToolConfig<import("../types.js").UniversalAttributesParams, Record<string, unknown> | {
18
+ get_record_attributes: import("../types.js").UniversalToolConfig<import("../types.js").UniversalAttributesParams, Record<string, unknown> | {
19
19
  error: string;
20
20
  success: boolean;
21
21
  }>;
22
- records_discover_attributes: import("../types.js").UniversalToolConfig<{
22
+ discover_record_attributes: import("../types.js").UniversalToolConfig<{
23
23
  resource_type: import("../types.js").UniversalResourceType;
24
24
  categories?: string[];
25
25
  }, Record<string, unknown> | {
26
26
  error: string;
27
27
  success: boolean;
28
28
  }>;
29
- records_get_info: import("../types.js").UniversalToolConfig<import("../types.js").UniversalDetailedInfoParams, Record<string, unknown>>;
29
+ get_record_attribute_options: import("../types.js").UniversalToolConfig<import("../types.js").UniversalGetAttributeOptionsParams, import("../../../../services/metadata/AttributeOptionsService.js").AttributeOptionsResult | {
30
+ error: string;
31
+ success: boolean;
32
+ }>;
33
+ get_record_info: import("../types.js").UniversalToolConfig<import("../types.js").UniversalDetailedInfoParams, Record<string, unknown>>;
30
34
  };
31
35
  export declare const coreOperationsToolDefinitions: {
32
- records_search: {
36
+ search_records: {
33
37
  name: string;
34
38
  description: string;
35
39
  inputSchema: {
@@ -158,7 +162,7 @@ export declare const coreOperationsToolDefinitions: {
158
162
  idempotentHint: boolean;
159
163
  };
160
164
  };
161
- records_get_details: {
165
+ get_record_details: {
162
166
  name: string;
163
167
  description: string;
164
168
  inputSchema: {
@@ -193,7 +197,7 @@ export declare const coreOperationsToolDefinitions: {
193
197
  idempotentHint: boolean;
194
198
  };
195
199
  };
196
- 'create-record': {
200
+ create_record: {
197
201
  name: string;
198
202
  description: string;
199
203
  inputSchema: {
@@ -232,7 +236,7 @@ export declare const coreOperationsToolDefinitions: {
232
236
  destructiveHint: boolean;
233
237
  };
234
238
  };
235
- 'update-record': {
239
+ update_record: {
236
240
  name: string;
237
241
  description: string;
238
242
  inputSchema: {
@@ -273,7 +277,7 @@ export declare const coreOperationsToolDefinitions: {
273
277
  destructiveHint: boolean;
274
278
  };
275
279
  };
276
- 'delete-record': {
280
+ delete_record: {
277
281
  name: string;
278
282
  description: string;
279
283
  inputSchema: {
@@ -300,7 +304,7 @@ export declare const coreOperationsToolDefinitions: {
300
304
  destructiveHint: boolean;
301
305
  };
302
306
  };
303
- records_get_attributes: {
307
+ get_record_attributes: {
304
308
  name: string;
305
309
  description: string;
306
310
  inputSchema: {
@@ -341,7 +345,7 @@ export declare const coreOperationsToolDefinitions: {
341
345
  idempotentHint: boolean;
342
346
  };
343
347
  };
344
- records_discover_attributes: {
348
+ discover_record_attributes: {
345
349
  name: string;
346
350
  description: string;
347
351
  inputSchema: {
@@ -371,7 +375,44 @@ export declare const coreOperationsToolDefinitions: {
371
375
  idempotentHint: boolean;
372
376
  };
373
377
  };
374
- records_get_info: {
378
+ get_record_attribute_options: {
379
+ name: string;
380
+ description: string;
381
+ inputSchema: {
382
+ type: "object";
383
+ properties: {
384
+ resource_type: {
385
+ type: "string";
386
+ description: string;
387
+ };
388
+ attribute: {
389
+ type: "string";
390
+ description: string;
391
+ };
392
+ show_archived: {
393
+ type: "boolean";
394
+ default: boolean;
395
+ description: string;
396
+ };
397
+ };
398
+ required: ("attribute" | "resource_type")[];
399
+ additionalProperties: boolean;
400
+ examples: ({
401
+ resource_type: string;
402
+ attribute: string;
403
+ show_archived?: undefined;
404
+ } | {
405
+ resource_type: string;
406
+ attribute: string;
407
+ show_archived: boolean;
408
+ })[];
409
+ };
410
+ annotations: {
411
+ readOnlyHint: boolean;
412
+ idempotentHint: boolean;
413
+ };
414
+ };
415
+ get_record_info: {
375
416
  name: string;
376
417
  description: string;
377
418
  inputSchema: {
@@ -399,7 +440,7 @@ export declare const coreOperationsToolDefinitions: {
399
440
  idempotentHint: boolean;
400
441
  };
401
442
  };
402
- 'create-note': {
443
+ create_note: {
403
444
  name: string;
404
445
  description: string;
405
446
  inputSchema: {
@@ -437,7 +478,7 @@ export declare const coreOperationsToolDefinitions: {
437
478
  destructiveHint: boolean;
438
479
  };
439
480
  };
440
- 'list-notes': {
481
+ list_notes: {
441
482
  name: string;
442
483
  description: string;
443
484
  inputSchema: {
@@ -478,5 +519,5 @@ export declare const coreOperationsToolDefinitions: {
478
519
  };
479
520
  };
480
521
  };
481
- export { searchRecordsConfig, getRecordDetailsConfig, createRecordConfig, updateRecordConfig, deleteRecordConfig, getAttributesConfig, discoverAttributesConfig, getDetailedInfoConfig, createNoteConfig, listNotesConfig, };
522
+ export { searchRecordsConfig, getRecordDetailsConfig, createRecordConfig, updateRecordConfig, deleteRecordConfig, getAttributesConfig, discoverAttributesConfig, getAttributeOptionsConfig, getDetailedInfoConfig, createNoteConfig, listNotesConfig, };
482
523
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/handlers/tool-configs/universal/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EAEvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAInB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EAGzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EAEtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,eAAe,EAGhB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;CAWrC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWzC,CAAC;AAEF,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,GAChB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/handlers/tool-configs/universal/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,sBAAsB,EAEvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAInB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EAI1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EAEtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,gBAAgB,EAChB,eAAe,EAGhB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYrC,CAAC;AAEF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYzC,CAAC;AAEF,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,GAChB,CAAC"}
@@ -1,32 +1,34 @@
1
1
  import { searchRecordsConfig, searchRecordsDefinition, } from './search-operations.js';
2
2
  import { getRecordDetailsConfig, getRecordDetailsDefinition, } from './record-details-operations.js';
3
3
  import { createRecordConfig, updateRecordConfig, deleteRecordConfig, createRecordDefinition, updateRecordDefinition, deleteRecordDefinition, } from './crud-operations.js';
4
- import { getAttributesConfig, discoverAttributesConfig, getAttributesDefinition, discoverAttributesDefinition, } from './metadata-operations.js';
4
+ import { getAttributesConfig, discoverAttributesConfig, getAttributeOptionsConfig, getAttributesDefinition, discoverAttributesDefinition, getAttributeOptionsDefinition, } from './metadata-operations.js';
5
5
  import { getDetailedInfoConfig, getDetailedInfoDefinition, } from './detailed-info-operations.js';
6
6
  import { createNoteConfig, listNotesConfig, createNoteDefinition, listNotesDefinition, } from './notes-operations.js';
7
7
  export const coreOperationsToolConfigs = {
8
- 'create-note': createNoteConfig,
9
- 'list-notes': listNotesConfig,
10
- records_search: searchRecordsConfig,
11
- records_get_details: getRecordDetailsConfig,
12
- 'create-record': createRecordConfig,
13
- 'update-record': updateRecordConfig,
14
- 'delete-record': deleteRecordConfig,
15
- records_get_attributes: getAttributesConfig,
16
- records_discover_attributes: discoverAttributesConfig,
17
- records_get_info: getDetailedInfoConfig,
8
+ create_note: createNoteConfig,
9
+ list_notes: listNotesConfig,
10
+ search_records: searchRecordsConfig,
11
+ get_record_details: getRecordDetailsConfig,
12
+ create_record: createRecordConfig,
13
+ update_record: updateRecordConfig,
14
+ delete_record: deleteRecordConfig,
15
+ get_record_attributes: getAttributesConfig,
16
+ discover_record_attributes: discoverAttributesConfig,
17
+ get_record_attribute_options: getAttributeOptionsConfig,
18
+ get_record_info: getDetailedInfoConfig,
18
19
  };
19
20
  export const coreOperationsToolDefinitions = {
20
- records_search: searchRecordsDefinition,
21
- records_get_details: getRecordDetailsDefinition,
22
- 'create-record': createRecordDefinition,
23
- 'update-record': updateRecordDefinition,
24
- 'delete-record': deleteRecordDefinition,
25
- records_get_attributes: getAttributesDefinition,
26
- records_discover_attributes: discoverAttributesDefinition,
27
- records_get_info: getDetailedInfoDefinition,
28
- 'create-note': createNoteDefinition,
29
- 'list-notes': listNotesDefinition,
21
+ search_records: searchRecordsDefinition,
22
+ get_record_details: getRecordDetailsDefinition,
23
+ create_record: createRecordDefinition,
24
+ update_record: updateRecordDefinition,
25
+ delete_record: deleteRecordDefinition,
26
+ get_record_attributes: getAttributesDefinition,
27
+ discover_record_attributes: discoverAttributesDefinition,
28
+ get_record_attribute_options: getAttributeOptionsDefinition,
29
+ get_record_info: getDetailedInfoDefinition,
30
+ create_note: createNoteDefinition,
31
+ list_notes: listNotesDefinition,
30
32
  };
31
- export { searchRecordsConfig, getRecordDetailsConfig, createRecordConfig, updateRecordConfig, deleteRecordConfig, getAttributesConfig, discoverAttributesConfig, getDetailedInfoConfig, createNoteConfig, listNotesConfig, };
33
+ export { searchRecordsConfig, getRecordDetailsConfig, createRecordConfig, updateRecordConfig, deleteRecordConfig, getAttributesConfig, discoverAttributesConfig, getAttributeOptionsConfig, getDetailedInfoConfig, createNoteConfig, listNotesConfig, };
32
34
  //# sourceMappingURL=index.js.map