attio-mcp 0.1.0

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 (644) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/LICENSE +236 -0
  3. package/README.md +105 -0
  4. package/dist/api/attio-client.d.ts +25 -0
  5. package/dist/api/attio-client.d.ts.map +1 -0
  6. package/dist/api/attio-client.js +64 -0
  7. package/dist/api/attio-client.js.map +1 -0
  8. package/dist/api/attribute-types.d.ts +119 -0
  9. package/dist/api/attribute-types.d.ts.map +1 -0
  10. package/dist/api/attribute-types.js +320 -0
  11. package/dist/api/attribute-types.js.map +1 -0
  12. package/dist/api/client.d.ts +3 -0
  13. package/dist/api/client.d.ts.map +1 -0
  14. package/dist/api/client.js +61 -0
  15. package/dist/api/client.js.map +1 -0
  16. package/dist/api/operations/batch.d.ts +55 -0
  17. package/dist/api/operations/batch.d.ts.map +1 -0
  18. package/dist/api/operations/batch.js +176 -0
  19. package/dist/api/operations/batch.js.map +1 -0
  20. package/dist/api/operations/crud.d.ts +61 -0
  21. package/dist/api/operations/crud.d.ts.map +1 -0
  22. package/dist/api/operations/crud.js +192 -0
  23. package/dist/api/operations/crud.js.map +1 -0
  24. package/dist/api/operations/index.d.ts +14 -0
  25. package/dist/api/operations/index.d.ts.map +1 -0
  26. package/dist/api/operations/index.js +18 -0
  27. package/dist/api/operations/index.js.map +1 -0
  28. package/dist/api/operations/lists.d.ts +66 -0
  29. package/dist/api/operations/lists.d.ts.map +1 -0
  30. package/dist/api/operations/lists.js +300 -0
  31. package/dist/api/operations/lists.js.map +1 -0
  32. package/dist/api/operations/notes.d.ts +29 -0
  33. package/dist/api/operations/notes.d.ts.map +1 -0
  34. package/dist/api/operations/notes.js +63 -0
  35. package/dist/api/operations/notes.js.map +1 -0
  36. package/dist/api/operations/retry.d.ts +48 -0
  37. package/dist/api/operations/retry.d.ts.map +1 -0
  38. package/dist/api/operations/retry.js +98 -0
  39. package/dist/api/operations/retry.js.map +1 -0
  40. package/dist/api/operations/search.d.ts +37 -0
  41. package/dist/api/operations/search.d.ts.map +1 -0
  42. package/dist/api/operations/search.js +186 -0
  43. package/dist/api/operations/search.js.map +1 -0
  44. package/dist/api/operations/tasks.d.ts +20 -0
  45. package/dist/api/operations/tasks.d.ts.map +1 -0
  46. package/dist/api/operations/tasks.js +87 -0
  47. package/dist/api/operations/tasks.js.map +1 -0
  48. package/dist/api/operations/types.d.ts +61 -0
  49. package/dist/api/operations/types.d.ts.map +1 -0
  50. package/dist/api/operations/types.js +10 -0
  51. package/dist/api/operations/types.js.map +1 -0
  52. package/dist/cli/commands/attributes.d.ts +34 -0
  53. package/dist/cli/commands/attributes.d.ts.map +1 -0
  54. package/dist/cli/commands/attributes.js +171 -0
  55. package/dist/cli/commands/attributes.js.map +1 -0
  56. package/dist/cli/discover.d.ts +3 -0
  57. package/dist/cli/discover.d.ts.map +1 -0
  58. package/dist/cli/discover.js +72 -0
  59. package/dist/cli/discover.js.map +1 -0
  60. package/dist/errors/api-errors.d.ts +191 -0
  61. package/dist/errors/api-errors.d.ts.map +1 -0
  62. package/dist/errors/api-errors.js +305 -0
  63. package/dist/errors/api-errors.js.map +1 -0
  64. package/dist/errors/company-errors.d.ts +40 -0
  65. package/dist/errors/company-errors.d.ts.map +1 -0
  66. package/dist/errors/company-errors.js +62 -0
  67. package/dist/errors/company-errors.js.map +1 -0
  68. package/dist/errors/value-match-error.d.ts +15 -0
  69. package/dist/errors/value-match-error.d.ts.map +1 -0
  70. package/dist/errors/value-match-error.js +40 -0
  71. package/dist/errors/value-match-error.js.map +1 -0
  72. package/dist/handlers/error-interceptor.d.ts +6 -0
  73. package/dist/handlers/error-interceptor.d.ts.map +1 -0
  74. package/dist/handlers/error-interceptor.js +17 -0
  75. package/dist/handlers/error-interceptor.js.map +1 -0
  76. package/dist/handlers/rate-limited-handler.d.ts +17 -0
  77. package/dist/handlers/rate-limited-handler.d.ts.map +1 -0
  78. package/dist/handlers/rate-limited-handler.js +126 -0
  79. package/dist/handlers/rate-limited-handler.js.map +1 -0
  80. package/dist/handlers/resources.d.ts +11 -0
  81. package/dist/handlers/resources.d.ts.map +1 -0
  82. package/dist/handlers/resources.js +109 -0
  83. package/dist/handlers/resources.js.map +1 -0
  84. package/dist/handlers/tool-configs/companies/attributes.d.ts +85 -0
  85. package/dist/handlers/tool-configs/companies/attributes.d.ts.map +1 -0
  86. package/dist/handlers/tool-configs/companies/attributes.js +203 -0
  87. package/dist/handlers/tool-configs/companies/attributes.js.map +1 -0
  88. package/dist/handlers/tool-configs/companies/batch.d.ts +145 -0
  89. package/dist/handlers/tool-configs/companies/batch.d.ts.map +1 -0
  90. package/dist/handlers/tool-configs/companies/batch.js +249 -0
  91. package/dist/handlers/tool-configs/companies/batch.js.map +1 -0
  92. package/dist/handlers/tool-configs/companies/crud.d.ts +103 -0
  93. package/dist/handlers/tool-configs/companies/crud.d.ts.map +1 -0
  94. package/dist/handlers/tool-configs/companies/crud.js +157 -0
  95. package/dist/handlers/tool-configs/companies/crud.js.map +1 -0
  96. package/dist/handlers/tool-configs/companies/definitions.d.ts +5 -0
  97. package/dist/handlers/tool-configs/companies/definitions.d.ts.map +1 -0
  98. package/dist/handlers/tool-configs/companies/definitions.js +9 -0
  99. package/dist/handlers/tool-configs/companies/definitions.js.map +1 -0
  100. package/dist/handlers/tool-configs/companies/formatters.d.ts +42 -0
  101. package/dist/handlers/tool-configs/companies/formatters.d.ts.map +1 -0
  102. package/dist/handlers/tool-configs/companies/formatters.js +324 -0
  103. package/dist/handlers/tool-configs/companies/formatters.js.map +1 -0
  104. package/dist/handlers/tool-configs/companies/index.d.ts +642 -0
  105. package/dist/handlers/tool-configs/companies/index.d.ts.map +1 -0
  106. package/dist/handlers/tool-configs/companies/index.js +86 -0
  107. package/dist/handlers/tool-configs/companies/index.js.map +1 -0
  108. package/dist/handlers/tool-configs/companies/notes.d.ts +61 -0
  109. package/dist/handlers/tool-configs/companies/notes.d.ts.map +1 -0
  110. package/dist/handlers/tool-configs/companies/notes.js +109 -0
  111. package/dist/handlers/tool-configs/companies/notes.js.map +1 -0
  112. package/dist/handlers/tool-configs/companies/relationships.d.ts +137 -0
  113. package/dist/handlers/tool-configs/companies/relationships.d.ts.map +1 -0
  114. package/dist/handlers/tool-configs/companies/relationships.js +163 -0
  115. package/dist/handlers/tool-configs/companies/relationships.js.map +1 -0
  116. package/dist/handlers/tool-configs/companies/search.d.ts +101 -0
  117. package/dist/handlers/tool-configs/companies/search.d.ts.map +1 -0
  118. package/dist/handlers/tool-configs/companies/search.js +163 -0
  119. package/dist/handlers/tool-configs/companies/search.js.map +1 -0
  120. package/dist/handlers/tool-configs/companies/types.d.ts +6 -0
  121. package/dist/handlers/tool-configs/companies/types.d.ts.map +1 -0
  122. package/dist/handlers/tool-configs/companies/types.js +2 -0
  123. package/dist/handlers/tool-configs/companies/types.js.map +1 -0
  124. package/dist/handlers/tool-configs/index.d.ts +12 -0
  125. package/dist/handlers/tool-configs/index.d.ts.map +1 -0
  126. package/dist/handlers/tool-configs/index.js +12 -0
  127. package/dist/handlers/tool-configs/index.js.map +1 -0
  128. package/dist/handlers/tool-configs/lists.d.ts +459 -0
  129. package/dist/handlers/tool-configs/lists.d.ts.map +1 -0
  130. package/dist/handlers/tool-configs/lists.js +597 -0
  131. package/dist/handlers/tool-configs/lists.js.map +1 -0
  132. package/dist/handlers/tool-configs/paginated-people.d.ts +197 -0
  133. package/dist/handlers/tool-configs/paginated-people.d.ts.map +1 -0
  134. package/dist/handlers/tool-configs/paginated-people.js +256 -0
  135. package/dist/handlers/tool-configs/paginated-people.js.map +1 -0
  136. package/dist/handlers/tool-configs/people/activity-search.d.ts +98 -0
  137. package/dist/handlers/tool-configs/people/activity-search.d.ts.map +1 -0
  138. package/dist/handlers/tool-configs/people/activity-search.js +113 -0
  139. package/dist/handlers/tool-configs/people/activity-search.js.map +1 -0
  140. package/dist/handlers/tool-configs/people/advanced-search.d.ts +62 -0
  141. package/dist/handlers/tool-configs/people/advanced-search.d.ts.map +1 -0
  142. package/dist/handlers/tool-configs/people/advanced-search.js +74 -0
  143. package/dist/handlers/tool-configs/people/advanced-search.js.map +1 -0
  144. package/dist/handlers/tool-configs/people/crud.d.ts +63 -0
  145. package/dist/handlers/tool-configs/people/crud.d.ts.map +1 -0
  146. package/dist/handlers/tool-configs/people/crud.js +71 -0
  147. package/dist/handlers/tool-configs/people/crud.js.map +1 -0
  148. package/dist/handlers/tool-configs/people/date-search.d.ts +42 -0
  149. package/dist/handlers/tool-configs/people/date-search.d.ts.map +1 -0
  150. package/dist/handlers/tool-configs/people/date-search.js +93 -0
  151. package/dist/handlers/tool-configs/people/date-search.js.map +1 -0
  152. package/dist/handlers/tool-configs/people/formatters.d.ts +19 -0
  153. package/dist/handlers/tool-configs/people/formatters.d.ts.map +1 -0
  154. package/dist/handlers/tool-configs/people/formatters.js +98 -0
  155. package/dist/handlers/tool-configs/people/formatters.js.map +1 -0
  156. package/dist/handlers/tool-configs/people/index.d.ts +407 -0
  157. package/dist/handlers/tool-configs/people/index.d.ts.map +1 -0
  158. package/dist/handlers/tool-configs/people/index.js +30 -0
  159. package/dist/handlers/tool-configs/people/index.js.map +1 -0
  160. package/dist/handlers/tool-configs/people/notes.d.ts +38 -0
  161. package/dist/handlers/tool-configs/people/notes.d.ts.map +1 -0
  162. package/dist/handlers/tool-configs/people/notes.js +57 -0
  163. package/dist/handlers/tool-configs/people/notes.js.map +1 -0
  164. package/dist/handlers/tool-configs/people/relationships.d.ts +112 -0
  165. package/dist/handlers/tool-configs/people/relationships.d.ts.map +1 -0
  166. package/dist/handlers/tool-configs/people/relationships.js +173 -0
  167. package/dist/handlers/tool-configs/people/relationships.js.map +1 -0
  168. package/dist/handlers/tool-configs/people/search.d.ts +53 -0
  169. package/dist/handlers/tool-configs/people/search.d.ts.map +1 -0
  170. package/dist/handlers/tool-configs/people/search.js +61 -0
  171. package/dist/handlers/tool-configs/people/search.js.map +1 -0
  172. package/dist/handlers/tool-configs/people-fix-complete.d.ts +6 -0
  173. package/dist/handlers/tool-configs/people-fix-complete.d.ts.map +1 -0
  174. package/dist/handlers/tool-configs/people-fix-complete.js +76 -0
  175. package/dist/handlers/tool-configs/people-fix-complete.js.map +1 -0
  176. package/dist/handlers/tool-configs/people-fixed.d.ts +12 -0
  177. package/dist/handlers/tool-configs/people-fixed.d.ts.map +1 -0
  178. package/dist/handlers/tool-configs/people-fixed.js +58 -0
  179. package/dist/handlers/tool-configs/people-fixed.js.map +1 -0
  180. package/dist/handlers/tool-configs/people-types.d.ts +32 -0
  181. package/dist/handlers/tool-configs/people-types.d.ts.map +1 -0
  182. package/dist/handlers/tool-configs/people-types.js +5 -0
  183. package/dist/handlers/tool-configs/people-types.js.map +1 -0
  184. package/dist/handlers/tool-configs/people.d.ts +599 -0
  185. package/dist/handlers/tool-configs/people.d.ts.map +1 -0
  186. package/dist/handlers/tool-configs/people.js +817 -0
  187. package/dist/handlers/tool-configs/people.js.map +1 -0
  188. package/dist/handlers/tool-configs/prompts.d.ts +69 -0
  189. package/dist/handlers/tool-configs/prompts.d.ts.map +1 -0
  190. package/dist/handlers/tool-configs/prompts.js +90 -0
  191. package/dist/handlers/tool-configs/prompts.js.map +1 -0
  192. package/dist/handlers/tool-configs/rate-limited-people.d.ts +203 -0
  193. package/dist/handlers/tool-configs/rate-limited-people.d.ts.map +1 -0
  194. package/dist/handlers/tool-configs/rate-limited-people.js +44 -0
  195. package/dist/handlers/tool-configs/rate-limited-people.js.map +1 -0
  196. package/dist/handlers/tool-configs/records/index.d.ts +282 -0
  197. package/dist/handlers/tool-configs/records/index.d.ts.map +1 -0
  198. package/dist/handlers/tool-configs/records/index.js +277 -0
  199. package/dist/handlers/tool-configs/records/index.js.map +1 -0
  200. package/dist/handlers/tool-configs/records.d.ts +282 -0
  201. package/dist/handlers/tool-configs/records.d.ts.map +1 -0
  202. package/dist/handlers/tool-configs/records.js +277 -0
  203. package/dist/handlers/tool-configs/records.js.map +1 -0
  204. package/dist/handlers/tool-configs/resource-specific-tools.d.ts +15 -0
  205. package/dist/handlers/tool-configs/resource-specific-tools.d.ts.map +1 -0
  206. package/dist/handlers/tool-configs/resource-specific-tools.js +33 -0
  207. package/dist/handlers/tool-configs/resource-specific-tools.js.map +1 -0
  208. package/dist/handlers/tool-configs/tasks.d.ts +127 -0
  209. package/dist/handlers/tool-configs/tasks.d.ts.map +1 -0
  210. package/dist/handlers/tool-configs/tasks.js +95 -0
  211. package/dist/handlers/tool-configs/tasks.js.map +1 -0
  212. package/dist/handlers/tool-types.d.ts +47 -0
  213. package/dist/handlers/tool-types.d.ts.map +1 -0
  214. package/dist/handlers/tool-types.js +2 -0
  215. package/dist/handlers/tool-types.js.map +1 -0
  216. package/dist/handlers/tools/config-verifier.d.ts +27 -0
  217. package/dist/handlers/tools/config-verifier.d.ts.map +1 -0
  218. package/dist/handlers/tools/config-verifier.js +108 -0
  219. package/dist/handlers/tools/config-verifier.js.map +1 -0
  220. package/dist/handlers/tools/dispatcher/core.d.ts +12 -0
  221. package/dist/handlers/tools/dispatcher/core.d.ts.map +1 -0
  222. package/dist/handlers/tools/dispatcher/core.js +276 -0
  223. package/dist/handlers/tools/dispatcher/core.js.map +1 -0
  224. package/dist/handlers/tools/dispatcher/formatting.d.ts +17 -0
  225. package/dist/handlers/tools/dispatcher/formatting.d.ts.map +1 -0
  226. package/dist/handlers/tools/dispatcher/formatting.js +25 -0
  227. package/dist/handlers/tools/dispatcher/formatting.js.map +1 -0
  228. package/dist/handlers/tools/dispatcher/logging.d.ts +63 -0
  229. package/dist/handlers/tools/dispatcher/logging.d.ts.map +1 -0
  230. package/dist/handlers/tools/dispatcher/logging.js +108 -0
  231. package/dist/handlers/tools/dispatcher/logging.js.map +1 -0
  232. package/dist/handlers/tools/dispatcher/operations/batch.d.ts +29 -0
  233. package/dist/handlers/tools/dispatcher/operations/batch.d.ts.map +1 -0
  234. package/dist/handlers/tools/dispatcher/operations/batch.js +137 -0
  235. package/dist/handlers/tools/dispatcher/operations/batch.js.map +1 -0
  236. package/dist/handlers/tools/dispatcher/operations/crud.d.ts +25 -0
  237. package/dist/handlers/tools/dispatcher/operations/crud.d.ts.map +1 -0
  238. package/dist/handlers/tools/dispatcher/operations/crud.js +110 -0
  239. package/dist/handlers/tools/dispatcher/operations/crud.js.map +1 -0
  240. package/dist/handlers/tools/dispatcher/operations/details.d.ts +13 -0
  241. package/dist/handlers/tools/dispatcher/operations/details.d.ts.map +1 -0
  242. package/dist/handlers/tools/dispatcher/operations/details.js +52 -0
  243. package/dist/handlers/tools/dispatcher/operations/details.js.map +1 -0
  244. package/dist/handlers/tools/dispatcher/operations/info.d.ts +25 -0
  245. package/dist/handlers/tools/dispatcher/operations/info.d.ts.map +1 -0
  246. package/dist/handlers/tools/dispatcher/operations/info.js +82 -0
  247. package/dist/handlers/tools/dispatcher/operations/info.js.map +1 -0
  248. package/dist/handlers/tools/dispatcher/operations/lists.d.ts +62 -0
  249. package/dist/handlers/tools/dispatcher/operations/lists.d.ts.map +1 -0
  250. package/dist/handlers/tools/dispatcher/operations/lists.js +283 -0
  251. package/dist/handlers/tools/dispatcher/operations/lists.js.map +1 -0
  252. package/dist/handlers/tools/dispatcher/operations/notes.d.ts +17 -0
  253. package/dist/handlers/tools/dispatcher/operations/notes.d.ts.map +1 -0
  254. package/dist/handlers/tools/dispatcher/operations/notes.js +102 -0
  255. package/dist/handlers/tools/dispatcher/operations/notes.js.map +1 -0
  256. package/dist/handlers/tools/dispatcher/operations/search.d.ts +43 -0
  257. package/dist/handlers/tools/dispatcher/operations/search.d.ts.map +1 -0
  258. package/dist/handlers/tools/dispatcher/operations/search.js +190 -0
  259. package/dist/handlers/tools/dispatcher/operations/search.js.map +1 -0
  260. package/dist/handlers/tools/dispatcher/validation.d.ts +27 -0
  261. package/dist/handlers/tools/dispatcher/validation.d.ts.map +1 -0
  262. package/dist/handlers/tools/dispatcher/validation.js +47 -0
  263. package/dist/handlers/tools/dispatcher/validation.js.map +1 -0
  264. package/dist/handlers/tools/dispatcher.d.ts +11 -0
  265. package/dist/handlers/tools/dispatcher.d.ts.map +1 -0
  266. package/dist/handlers/tools/dispatcher.js +15 -0
  267. package/dist/handlers/tools/dispatcher.js.map +1 -0
  268. package/dist/handlers/tools/error-types.d.ts +33 -0
  269. package/dist/handlers/tools/error-types.d.ts.map +1 -0
  270. package/dist/handlers/tools/error-types.js +21 -0
  271. package/dist/handlers/tools/error-types.js.map +1 -0
  272. package/dist/handlers/tools/formatters.d.ts +43 -0
  273. package/dist/handlers/tools/formatters.d.ts.map +1 -0
  274. package/dist/handlers/tools/formatters.js +170 -0
  275. package/dist/handlers/tools/formatters.js.map +1 -0
  276. package/dist/handlers/tools/index.d.ts +15 -0
  277. package/dist/handlers/tools/index.d.ts.map +1 -0
  278. package/dist/handlers/tools/index.js +34 -0
  279. package/dist/handlers/tools/index.js.map +1 -0
  280. package/dist/handlers/tools/registry.d.ts +1874 -0
  281. package/dist/handlers/tools/registry.d.ts.map +1 -0
  282. package/dist/handlers/tools/registry.js +103 -0
  283. package/dist/handlers/tools/registry.js.map +1 -0
  284. package/dist/health/http-server.d.ts +24 -0
  285. package/dist/health/http-server.d.ts.map +1 -0
  286. package/dist/health/http-server.js +106 -0
  287. package/dist/health/http-server.js.map +1 -0
  288. package/dist/index.d.ts +3 -0
  289. package/dist/index.d.ts.map +1 -0
  290. package/dist/index.js +238 -0
  291. package/dist/index.js.map +1 -0
  292. package/dist/objects/base-operations.d.ts +41 -0
  293. package/dist/objects/base-operations.d.ts.map +1 -0
  294. package/dist/objects/base-operations.js +116 -0
  295. package/dist/objects/base-operations.js.map +1 -0
  296. package/dist/objects/batch-companies.d.ts +112 -0
  297. package/dist/objects/batch-companies.d.ts.map +1 -0
  298. package/dist/objects/batch-companies.js +347 -0
  299. package/dist/objects/batch-companies.js.map +1 -0
  300. package/dist/objects/companies/attributes.d.ts +83 -0
  301. package/dist/objects/companies/attributes.d.ts.map +1 -0
  302. package/dist/objects/companies/attributes.js +426 -0
  303. package/dist/objects/companies/attributes.js.map +1 -0
  304. package/dist/objects/companies/basic.d.ts +117 -0
  305. package/dist/objects/companies/basic.d.ts.map +1 -0
  306. package/dist/objects/companies/basic.js +367 -0
  307. package/dist/objects/companies/basic.js.map +1 -0
  308. package/dist/objects/companies/batch.d.ts +6 -0
  309. package/dist/objects/companies/batch.d.ts.map +1 -0
  310. package/dist/objects/companies/batch.js +6 -0
  311. package/dist/objects/companies/batch.js.map +1 -0
  312. package/dist/objects/companies/index.d.ts +13 -0
  313. package/dist/objects/companies/index.d.ts.map +1 -0
  314. package/dist/objects/companies/index.js +17 -0
  315. package/dist/objects/companies/index.js.map +1 -0
  316. package/dist/objects/companies/notes.d.ts +26 -0
  317. package/dist/objects/companies/notes.d.ts.map +1 -0
  318. package/dist/objects/companies/notes.js +199 -0
  319. package/dist/objects/companies/notes.js.map +1 -0
  320. package/dist/objects/companies/relationships.d.ts +41 -0
  321. package/dist/objects/companies/relationships.d.ts.map +1 -0
  322. package/dist/objects/companies/relationships.js +142 -0
  323. package/dist/objects/companies/relationships.js.map +1 -0
  324. package/dist/objects/companies/search.d.ts +158 -0
  325. package/dist/objects/companies/search.d.ts.map +1 -0
  326. package/dist/objects/companies/search.js +463 -0
  327. package/dist/objects/companies/search.js.map +1 -0
  328. package/dist/objects/companies/types.d.ts +27 -0
  329. package/dist/objects/companies/types.d.ts.map +1 -0
  330. package/dist/objects/companies/types.js +3 -0
  331. package/dist/objects/companies/types.js.map +1 -0
  332. package/dist/objects/lists.d.ts +148 -0
  333. package/dist/objects/lists.d.ts.map +1 -0
  334. package/dist/objects/lists.js +586 -0
  335. package/dist/objects/lists.js.map +1 -0
  336. package/dist/objects/paginated-people.d.ts +50 -0
  337. package/dist/objects/paginated-people.d.ts.map +1 -0
  338. package/dist/objects/paginated-people.js +171 -0
  339. package/dist/objects/paginated-people.js.map +1 -0
  340. package/dist/objects/people/basic.d.ts +90 -0
  341. package/dist/objects/people/basic.d.ts.map +1 -0
  342. package/dist/objects/people/basic.js +157 -0
  343. package/dist/objects/people/basic.js.map +1 -0
  344. package/dist/objects/people/batch.d.ts +24 -0
  345. package/dist/objects/people/batch.d.ts.map +1 -0
  346. package/dist/objects/people/batch.js +145 -0
  347. package/dist/objects/people/batch.js.map +1 -0
  348. package/dist/objects/people/index.d.ts +11 -0
  349. package/dist/objects/people/index.d.ts.map +1 -0
  350. package/dist/objects/people/index.js +17 -0
  351. package/dist/objects/people/index.js.map +1 -0
  352. package/dist/objects/people/notes.d.ts +20 -0
  353. package/dist/objects/people/notes.d.ts.map +1 -0
  354. package/dist/objects/people/notes.js +60 -0
  355. package/dist/objects/people/notes.js.map +1 -0
  356. package/dist/objects/people/relationships.d.ts +23 -0
  357. package/dist/objects/people/relationships.d.ts.map +1 -0
  358. package/dist/objects/people/relationships.js +116 -0
  359. package/dist/objects/people/relationships.js.map +1 -0
  360. package/dist/objects/people/search.d.ts +83 -0
  361. package/dist/objects/people/search.d.ts.map +1 -0
  362. package/dist/objects/people/search.js +286 -0
  363. package/dist/objects/people/search.js.map +1 -0
  364. package/dist/objects/people/types.d.ts +37 -0
  365. package/dist/objects/people/types.d.ts.map +1 -0
  366. package/dist/objects/people/types.js +71 -0
  367. package/dist/objects/people/types.js.map +1 -0
  368. package/dist/objects/people-write.d.ts +71 -0
  369. package/dist/objects/people-write.d.ts.map +1 -0
  370. package/dist/objects/people-write.js +261 -0
  371. package/dist/objects/people-write.js.map +1 -0
  372. package/dist/objects/records/formatters.d.ts +20 -0
  373. package/dist/objects/records/formatters.d.ts.map +1 -0
  374. package/dist/objects/records/formatters.js +47 -0
  375. package/dist/objects/records/formatters.js.map +1 -0
  376. package/dist/objects/records/index.d.ts +74 -0
  377. package/dist/objects/records/index.d.ts.map +1 -0
  378. package/dist/objects/records/index.js +374 -0
  379. package/dist/objects/records/index.js.map +1 -0
  380. package/dist/objects/records.d.ts +88 -0
  381. package/dist/objects/records.d.ts.map +1 -0
  382. package/dist/objects/records.js +432 -0
  383. package/dist/objects/records.js.map +1 -0
  384. package/dist/objects/tasks.d.ts +19 -0
  385. package/dist/objects/tasks.d.ts.map +1 -0
  386. package/dist/objects/tasks.js +23 -0
  387. package/dist/objects/tasks.js.map +1 -0
  388. package/dist/prompts/error-handler.d.ts +28 -0
  389. package/dist/prompts/error-handler.d.ts.map +1 -0
  390. package/dist/prompts/error-handler.js +47 -0
  391. package/dist/prompts/error-handler.js.map +1 -0
  392. package/dist/prompts/handlers.d.ts +49 -0
  393. package/dist/prompts/handlers.d.ts.map +1 -0
  394. package/dist/prompts/handlers.js +353 -0
  395. package/dist/prompts/handlers.js.map +1 -0
  396. package/dist/prompts/index.d.ts +11 -0
  397. package/dist/prompts/index.d.ts.map +1 -0
  398. package/dist/prompts/index.js +15 -0
  399. package/dist/prompts/index.js.map +1 -0
  400. package/dist/prompts/templates/companies.d.ts +10 -0
  401. package/dist/prompts/templates/companies.d.ts.map +1 -0
  402. package/dist/prompts/templates/companies.js +128 -0
  403. package/dist/prompts/templates/companies.js.map +1 -0
  404. package/dist/prompts/templates/index.d.ts +42 -0
  405. package/dist/prompts/templates/index.d.ts.map +1 -0
  406. package/dist/prompts/templates/index.js +58 -0
  407. package/dist/prompts/templates/index.js.map +1 -0
  408. package/dist/prompts/templates/lists.d.ts +10 -0
  409. package/dist/prompts/templates/lists.d.ts.map +1 -0
  410. package/dist/prompts/templates/lists.js +127 -0
  411. package/dist/prompts/templates/lists.js.map +1 -0
  412. package/dist/prompts/templates/notes.d.ts +10 -0
  413. package/dist/prompts/templates/notes.d.ts.map +1 -0
  414. package/dist/prompts/templates/notes.js +119 -0
  415. package/dist/prompts/templates/notes.js.map +1 -0
  416. package/dist/prompts/templates/people.d.ts +10 -0
  417. package/dist/prompts/templates/people.d.ts.map +1 -0
  418. package/dist/prompts/templates/people.js +127 -0
  419. package/dist/prompts/templates/people.js.map +1 -0
  420. package/dist/prompts/types.d.ts +52 -0
  421. package/dist/prompts/types.d.ts.map +1 -0
  422. package/dist/prompts/types.js +5 -0
  423. package/dist/prompts/types.js.map +1 -0
  424. package/dist/types/attio.d.ts +424 -0
  425. package/dist/types/attio.d.ts.map +1 -0
  426. package/dist/types/attio.js +116 -0
  427. package/dist/types/attio.js.map +1 -0
  428. package/dist/types/company-types.d.ts +52 -0
  429. package/dist/types/company-types.d.ts.map +1 -0
  430. package/dist/types/company-types.js +5 -0
  431. package/dist/types/company-types.js.map +1 -0
  432. package/dist/types/tool-types.d.ts +262 -0
  433. package/dist/types/tool-types.d.ts.map +1 -0
  434. package/dist/types/tool-types.js +6 -0
  435. package/dist/types/tool-types.js.map +1 -0
  436. package/dist/utils/api-fallback.d.ts +39 -0
  437. package/dist/utils/api-fallback.d.ts.map +1 -0
  438. package/dist/utils/api-fallback.js +94 -0
  439. package/dist/utils/api-fallback.js.map +1 -0
  440. package/dist/utils/attribute-mapping/attribute-mappers.d.ts +39 -0
  441. package/dist/utils/attribute-mapping/attribute-mappers.d.ts.map +1 -0
  442. package/dist/utils/attribute-mapping/attribute-mappers.js +394 -0
  443. package/dist/utils/attribute-mapping/attribute-mappers.js.map +1 -0
  444. package/dist/utils/attribute-mapping/filter-translator.d.ts +9 -0
  445. package/dist/utils/attribute-mapping/filter-translator.d.ts.map +1 -0
  446. package/dist/utils/attribute-mapping/filter-translator.js +104 -0
  447. package/dist/utils/attribute-mapping/filter-translator.js.map +1 -0
  448. package/dist/utils/attribute-mapping/index.d.ts +10 -0
  449. package/dist/utils/attribute-mapping/index.d.ts.map +1 -0
  450. package/dist/utils/attribute-mapping/index.js +12 -0
  451. package/dist/utils/attribute-mapping/index.js.map +1 -0
  452. package/dist/utils/attribute-mapping/legacy-maps.d.ts +11 -0
  453. package/dist/utils/attribute-mapping/legacy-maps.d.ts.map +1 -0
  454. package/dist/utils/attribute-mapping/legacy-maps.js +54 -0
  455. package/dist/utils/attribute-mapping/legacy-maps.js.map +1 -0
  456. package/dist/utils/attribute-mapping/mapping-utils.d.ts +90 -0
  457. package/dist/utils/attribute-mapping/mapping-utils.d.ts.map +1 -0
  458. package/dist/utils/attribute-mapping/mapping-utils.js +145 -0
  459. package/dist/utils/attribute-mapping/mapping-utils.js.map +1 -0
  460. package/dist/utils/auto-discovery.d.ts +22 -0
  461. package/dist/utils/auto-discovery.d.ts.map +1 -0
  462. package/dist/utils/auto-discovery.js +143 -0
  463. package/dist/utils/auto-discovery.js.map +1 -0
  464. package/dist/utils/cli-colors.d.ts +36 -0
  465. package/dist/utils/cli-colors.d.ts.map +1 -0
  466. package/dist/utils/cli-colors.js +35 -0
  467. package/dist/utils/cli-colors.js.map +1 -0
  468. package/dist/utils/config-loader.d.ts +41 -0
  469. package/dist/utils/config-loader.d.ts.map +1 -0
  470. package/dist/utils/config-loader.js +167 -0
  471. package/dist/utils/config-loader.js.map +1 -0
  472. package/dist/utils/config-migration.d.ts +140 -0
  473. package/dist/utils/config-migration.d.ts.map +1 -0
  474. package/dist/utils/config-migration.js +310 -0
  475. package/dist/utils/config-migration.js.map +1 -0
  476. package/dist/utils/date-utils.d.ts +63 -0
  477. package/dist/utils/date-utils.d.ts.map +1 -0
  478. package/dist/utils/date-utils.js +329 -0
  479. package/dist/utils/date-utils.js.map +1 -0
  480. package/dist/utils/debug-b2b-segment.d.ts +2 -0
  481. package/dist/utils/debug-b2b-segment.d.ts.map +1 -0
  482. package/dist/utils/debug-b2b-segment.js +67 -0
  483. package/dist/utils/debug-b2b-segment.js.map +1 -0
  484. package/dist/utils/domain-utils.d.ts +46 -0
  485. package/dist/utils/domain-utils.d.ts.map +1 -0
  486. package/dist/utils/domain-utils.js +143 -0
  487. package/dist/utils/domain-utils.js.map +1 -0
  488. package/dist/utils/dynamic-import.d.ts +33 -0
  489. package/dist/utils/dynamic-import.d.ts.map +1 -0
  490. package/dist/utils/dynamic-import.js +41 -0
  491. package/dist/utils/dynamic-import.js.map +1 -0
  492. package/dist/utils/error-enhancer.d.ts +23 -0
  493. package/dist/utils/error-enhancer.d.ts.map +1 -0
  494. package/dist/utils/error-enhancer.js +188 -0
  495. package/dist/utils/error-enhancer.js.map +1 -0
  496. package/dist/utils/error-handler.d.ts +89 -0
  497. package/dist/utils/error-handler.d.ts.map +1 -0
  498. package/dist/utils/error-handler.js +336 -0
  499. package/dist/utils/error-handler.js.map +1 -0
  500. package/dist/utils/filters/builders/activity.d.ts +13 -0
  501. package/dist/utils/filters/builders/activity.d.ts.map +1 -0
  502. package/dist/utils/filters/builders/activity.js +65 -0
  503. package/dist/utils/filters/builders/activity.js.map +1 -0
  504. package/dist/utils/filters/builders/basic.d.ts +13 -0
  505. package/dist/utils/filters/builders/basic.d.ts.map +1 -0
  506. package/dist/utils/filters/builders/basic.js +36 -0
  507. package/dist/utils/filters/builders/basic.js.map +1 -0
  508. package/dist/utils/filters/builders/complex.d.ts +31 -0
  509. package/dist/utils/filters/builders/complex.d.ts.map +1 -0
  510. package/dist/utils/filters/builders/complex.js +92 -0
  511. package/dist/utils/filters/builders/complex.js.map +1 -0
  512. package/dist/utils/filters/builders/date.d.ts +17 -0
  513. package/dist/utils/filters/builders/date.d.ts.map +1 -0
  514. package/dist/utils/filters/builders/date.js +51 -0
  515. package/dist/utils/filters/builders/date.js.map +1 -0
  516. package/dist/utils/filters/builders/index.d.ts +8 -0
  517. package/dist/utils/filters/builders/index.d.ts.map +1 -0
  518. package/dist/utils/filters/builders/index.js +8 -0
  519. package/dist/utils/filters/builders/index.js.map +1 -0
  520. package/dist/utils/filters/builders/numeric.d.ts +17 -0
  521. package/dist/utils/filters/builders/numeric.d.ts.map +1 -0
  522. package/dist/utils/filters/builders/numeric.js +61 -0
  523. package/dist/utils/filters/builders/numeric.js.map +1 -0
  524. package/dist/utils/filters/builders/text.d.ts +17 -0
  525. package/dist/utils/filters/builders/text.d.ts.map +1 -0
  526. package/dist/utils/filters/builders/text.js +47 -0
  527. package/dist/utils/filters/builders/text.js.map +1 -0
  528. package/dist/utils/filters/builders/types.d.ts +2 -0
  529. package/dist/utils/filters/builders/types.d.ts.map +1 -0
  530. package/dist/utils/filters/builders/types.js +2 -0
  531. package/dist/utils/filters/builders/types.js.map +1 -0
  532. package/dist/utils/filters/builders.d.ts +2 -0
  533. package/dist/utils/filters/builders.d.ts.map +1 -0
  534. package/dist/utils/filters/builders.js +2 -0
  535. package/dist/utils/filters/builders.js.map +1 -0
  536. package/dist/utils/filters/cache.d.ts +80 -0
  537. package/dist/utils/filters/cache.d.ts.map +1 -0
  538. package/dist/utils/filters/cache.js +212 -0
  539. package/dist/utils/filters/cache.js.map +1 -0
  540. package/dist/utils/filters/index.d.ts +51 -0
  541. package/dist/utils/filters/index.d.ts.map +1 -0
  542. package/dist/utils/filters/index.js +67 -0
  543. package/dist/utils/filters/index.js.map +1 -0
  544. package/dist/utils/filters/operators.d.ts +65 -0
  545. package/dist/utils/filters/operators.d.ts.map +1 -0
  546. package/dist/utils/filters/operators.js +214 -0
  547. package/dist/utils/filters/operators.js.map +1 -0
  548. package/dist/utils/filters/relationship.d.ts +81 -0
  549. package/dist/utils/filters/relationship.d.ts.map +1 -0
  550. package/dist/utils/filters/relationship.js +393 -0
  551. package/dist/utils/filters/relationship.js.map +1 -0
  552. package/dist/utils/filters/translators.d.ts +120 -0
  553. package/dist/utils/filters/translators.d.ts.map +1 -0
  554. package/dist/utils/filters/translators.js +397 -0
  555. package/dist/utils/filters/translators.js.map +1 -0
  556. package/dist/utils/filters/types.d.ts +77 -0
  557. package/dist/utils/filters/types.d.ts.map +1 -0
  558. package/dist/utils/filters/types.js +85 -0
  559. package/dist/utils/filters/types.js.map +1 -0
  560. package/dist/utils/filters/utils.d.ts +86 -0
  561. package/dist/utils/filters/utils.d.ts.map +1 -0
  562. package/dist/utils/filters/utils.js +142 -0
  563. package/dist/utils/filters/utils.js.map +1 -0
  564. package/dist/utils/filters/validation-utils.d.ts +123 -0
  565. package/dist/utils/filters/validation-utils.d.ts.map +1 -0
  566. package/dist/utils/filters/validation-utils.js +282 -0
  567. package/dist/utils/filters/validation-utils.js.map +1 -0
  568. package/dist/utils/filters/validators.d.ts +73 -0
  569. package/dist/utils/filters/validators.d.ts.map +1 -0
  570. package/dist/utils/filters/validators.js +311 -0
  571. package/dist/utils/filters/validators.js.map +1 -0
  572. package/dist/utils/json-serializer.d.ts +68 -0
  573. package/dist/utils/json-serializer.d.ts.map +1 -0
  574. package/dist/utils/json-serializer.js +235 -0
  575. package/dist/utils/json-serializer.js.map +1 -0
  576. package/dist/utils/logger.d.ts +226 -0
  577. package/dist/utils/logger.d.ts.map +1 -0
  578. package/dist/utils/logger.js +323 -0
  579. package/dist/utils/logger.js.map +1 -0
  580. package/dist/utils/numeric-utils.d.ts +27 -0
  581. package/dist/utils/numeric-utils.d.ts.map +1 -0
  582. package/dist/utils/numeric-utils.js +83 -0
  583. package/dist/utils/numeric-utils.js.map +1 -0
  584. package/dist/utils/pagination.d.ts +85 -0
  585. package/dist/utils/pagination.d.ts.map +1 -0
  586. package/dist/utils/pagination.js +169 -0
  587. package/dist/utils/pagination.js.map +1 -0
  588. package/dist/utils/person-lookup.d.ts +35 -0
  589. package/dist/utils/person-lookup.d.ts.map +1 -0
  590. package/dist/utils/person-lookup.js +67 -0
  591. package/dist/utils/person-lookup.js.map +1 -0
  592. package/dist/utils/rate-limiter.d.ts +82 -0
  593. package/dist/utils/rate-limiter.d.ts.map +1 -0
  594. package/dist/utils/rate-limiter.js +159 -0
  595. package/dist/utils/rate-limiter.js.map +1 -0
  596. package/dist/utils/record-utils.d.ts +74 -0
  597. package/dist/utils/record-utils.d.ts.map +1 -0
  598. package/dist/utils/record-utils.js +312 -0
  599. package/dist/utils/record-utils.js.map +1 -0
  600. package/dist/utils/relationship-utils.d.ts +61 -0
  601. package/dist/utils/relationship-utils.d.ts.map +1 -0
  602. package/dist/utils/relationship-utils.js +242 -0
  603. package/dist/utils/relationship-utils.js.map +1 -0
  604. package/dist/utils/response-formatter.d.ts +121 -0
  605. package/dist/utils/response-formatter.d.ts.map +1 -0
  606. package/dist/utils/response-formatter.js +188 -0
  607. package/dist/utils/response-formatter.js.map +1 -0
  608. package/dist/utils/uri-parser.d.ts +18 -0
  609. package/dist/utils/uri-parser.d.ts.map +1 -0
  610. package/dist/utils/uri-parser.js +31 -0
  611. package/dist/utils/uri-parser.js.map +1 -0
  612. package/dist/utils/validation.d.ts +59 -0
  613. package/dist/utils/validation.d.ts.map +1 -0
  614. package/dist/utils/validation.js +264 -0
  615. package/dist/utils/validation.js.map +1 -0
  616. package/dist/utils/value-matcher.d.ts +58 -0
  617. package/dist/utils/value-matcher.d.ts.map +1 -0
  618. package/dist/utils/value-matcher.js +131 -0
  619. package/dist/utils/value-matcher.js.map +1 -0
  620. package/dist/validators/attribute-validator.d.ts +59 -0
  621. package/dist/validators/attribute-validator.d.ts.map +1 -0
  622. package/dist/validators/attribute-validator.js +531 -0
  623. package/dist/validators/attribute-validator.js.map +1 -0
  624. package/dist/validators/company/field_detector.d.ts +5 -0
  625. package/dist/validators/company/field_detector.d.ts.map +1 -0
  626. package/dist/validators/company/field_detector.js +95 -0
  627. package/dist/validators/company/field_detector.js.map +1 -0
  628. package/dist/validators/company/index.d.ts +26 -0
  629. package/dist/validators/company/index.d.ts.map +1 -0
  630. package/dist/validators/company/index.js +433 -0
  631. package/dist/validators/company/index.js.map +1 -0
  632. package/dist/validators/company/type_cache.d.ts +14 -0
  633. package/dist/validators/company/type_cache.d.ts.map +1 -0
  634. package/dist/validators/company/type_cache.js +28 -0
  635. package/dist/validators/company/type_cache.js.map +1 -0
  636. package/dist/validators/company/types.d.ts +8 -0
  637. package/dist/validators/company/types.d.ts.map +1 -0
  638. package/dist/validators/company/types.js +2 -0
  639. package/dist/validators/company/types.js.map +1 -0
  640. package/dist/validators/company-validator.d.ts +2 -0
  641. package/dist/validators/company-validator.d.ts.map +1 -0
  642. package/dist/validators/company-validator.js +2 -0
  643. package/dist/validators/company-validator.js.map +1 -0
  644. package/package.json +167 -0
@@ -0,0 +1,531 @@
1
+ /**
2
+ * Validation for Attio attribute types
3
+ * Provides validation and type conversion for attribute values
4
+ * to ensure they match Attio's expected types
5
+ *
6
+ * This module handles both validation and automatic type conversion
7
+ * for common data format mismatches, which is particularly useful for
8
+ * LLM-generated content where string representations of other data types
9
+ * are common.
10
+ */
11
+ /**
12
+ * Validates an attribute value against the expected type
13
+ *
14
+ * This function validates that a value matches the expected attribute type,
15
+ * and attempts to convert it when possible. It handles both strict validation
16
+ * and auto-conversion for common type mismatches.
17
+ *
18
+ * @param attributeName - The name of the attribute being validated
19
+ * @param value - The value to validate
20
+ * @param expectedType - The expected attribute type
21
+ * @returns Validation result with success status and optionally converted value
22
+ *
23
+ * @example
24
+ * // Validate a string
25
+ * validateAttributeValue('company_name', 'Acme Inc', 'string')
26
+ * // Returns: { valid: true, convertedValue: 'Acme Inc' }
27
+ *
28
+ * @example
29
+ * // Convert string to number
30
+ * validateAttributeValue('employee_count', '250', 'number')
31
+ * // Returns: { valid: true, convertedValue: 250 }
32
+ *
33
+ * @example
34
+ * // Convert string to boolean
35
+ * validateAttributeValue('is_active', 'yes', 'boolean')
36
+ * // Returns: { valid: true, convertedValue: true }
37
+ *
38
+ * @example
39
+ * // Handle invalid values
40
+ * validateAttributeValue('revenue', 'not-a-number', 'number')
41
+ * // Returns: { valid: false, error: 'Invalid number value...' }
42
+ */
43
+ export function validateAttributeValue(attributeName, value, expectedType) {
44
+ // Handle null case first
45
+ if (value === null || value === undefined) {
46
+ return { valid: true, convertedValue: null };
47
+ }
48
+ // Validate based on expected type
49
+ switch (expectedType) {
50
+ case 'boolean':
51
+ return validateBooleanValue(attributeName, value);
52
+ case 'number':
53
+ return validateNumberValue(attributeName, value);
54
+ case 'string':
55
+ return validateStringValue(attributeName, value);
56
+ case 'date':
57
+ return validateDateValue(attributeName, value);
58
+ case 'array':
59
+ return validateArrayValue(attributeName, value);
60
+ case 'object':
61
+ return validateObjectValue(attributeName, value);
62
+ case 'select':
63
+ return validateSelectValue(attributeName, value);
64
+ case 'record-reference':
65
+ return validateRecordReferenceValue(attributeName, value);
66
+ default:
67
+ // If the type doesn't match any known type, pass it through
68
+ return { valid: true, convertedValue: value };
69
+ }
70
+ }
71
+ /**
72
+ * Validates a boolean value
73
+ *
74
+ * This function validates and converts values to boolean type.
75
+ * It handles various string representations ('true', 'yes', 'on', '1')
76
+ * and numeric values (1, 0) in addition to native boolean values.
77
+ *
78
+ * @param attributeName - The name of the attribute
79
+ * @param value - The value to validate
80
+ * @returns Validation result
81
+ *
82
+ * @example
83
+ * // Native boolean
84
+ * validateBooleanValue('is_active', true)
85
+ * // Returns: { valid: true, convertedValue: true }
86
+ *
87
+ * @example
88
+ * // String conversion
89
+ * validateBooleanValue('is_active', 'yes')
90
+ * // Returns: { valid: true, convertedValue: true }
91
+ *
92
+ * @example
93
+ * // Numeric conversion
94
+ * validateBooleanValue('is_active', 1)
95
+ * // Returns: { valid: true, convertedValue: true }
96
+ */
97
+ function validateBooleanValue(attributeName, value) {
98
+ // Already a boolean - simple case
99
+ if (typeof value === 'boolean') {
100
+ return { valid: true, convertedValue: value };
101
+ }
102
+ // Auto-conversion cases
103
+ if (typeof value === 'string') {
104
+ const stringValue = value.toLowerCase().trim();
105
+ // Reject empty strings explicitly
106
+ if (stringValue === '') {
107
+ return {
108
+ valid: false,
109
+ error: `Invalid boolean value for "${attributeName}". Empty strings cannot be converted to boolean.`,
110
+ };
111
+ }
112
+ if (stringValue === 'true' ||
113
+ stringValue === 'yes' ||
114
+ stringValue === '1' ||
115
+ stringValue === 'on') {
116
+ return { valid: true, convertedValue: true };
117
+ }
118
+ if (stringValue === 'false' ||
119
+ stringValue === 'no' ||
120
+ stringValue === '0' ||
121
+ stringValue === 'off') {
122
+ return { valid: true, convertedValue: false };
123
+ }
124
+ }
125
+ // Number conversion
126
+ if (typeof value === 'number') {
127
+ if (value === 1) {
128
+ return { valid: true, convertedValue: true };
129
+ }
130
+ if (value === 0) {
131
+ return { valid: true, convertedValue: false };
132
+ }
133
+ }
134
+ // Invalid boolean value
135
+ return {
136
+ valid: false,
137
+ error: `Invalid boolean value for "${attributeName}". Expected a boolean or a string like "true"/"false", but got ${typeof value}.`,
138
+ };
139
+ }
140
+ /**
141
+ * Validates a numeric value
142
+ *
143
+ * This function validates and converts values to number type.
144
+ * It handles numeric strings and boolean values in addition to native numbers.
145
+ * NaN values are considered invalid numbers.
146
+ *
147
+ * @param attributeName - The name of the attribute
148
+ * @param value - The value to validate
149
+ * @returns Validation result
150
+ *
151
+ * @example
152
+ * // Native number
153
+ * validateNumberValue('revenue', 1000000)
154
+ * // Returns: { valid: true, convertedValue: 1000000 }
155
+ *
156
+ * @example
157
+ * // String conversion
158
+ * validateNumberValue('employee_count', '250')
159
+ * // Returns: { valid: true, convertedValue: 250 }
160
+ *
161
+ * @example
162
+ * // Boolean conversion
163
+ * validateNumberValue('binary_value', true)
164
+ * // Returns: { valid: true, convertedValue: 1 }
165
+ */
166
+ function validateNumberValue(attributeName, value) {
167
+ // Already a number - simple case
168
+ if (typeof value === 'number' && !isNaN(value)) {
169
+ return { valid: true, convertedValue: value };
170
+ }
171
+ // Auto-conversion from string
172
+ if (typeof value === 'string') {
173
+ const trimmed = value.trim();
174
+ // Reject empty strings explicitly
175
+ if (trimmed === '') {
176
+ return {
177
+ valid: false,
178
+ error: `Invalid number value for "${attributeName}". Empty strings cannot be converted to numbers.`,
179
+ };
180
+ }
181
+ const numericValue = Number(trimmed);
182
+ if (!isNaN(numericValue)) {
183
+ return { valid: true, convertedValue: numericValue };
184
+ }
185
+ }
186
+ // Auto-conversion from boolean
187
+ if (typeof value === 'boolean') {
188
+ return { valid: true, convertedValue: value ? 1 : 0 };
189
+ }
190
+ // Invalid number value
191
+ return {
192
+ valid: false,
193
+ error: `Invalid number value for "${attributeName}". Expected a number or a numeric string, but got ${typeof value}.`,
194
+ };
195
+ }
196
+ /**
197
+ * Validates a string value
198
+ *
199
+ * This function validates and converts values to string type.
200
+ * It handles numbers, booleans, dates, and even attempts to stringify
201
+ * objects in addition to native strings.
202
+ *
203
+ * @param attributeName - The name of the attribute
204
+ * @param value - The value to validate
205
+ * @returns Validation result
206
+ *
207
+ * @example
208
+ * // Native string
209
+ * validateStringValue('name', 'Acme Corporation')
210
+ * // Returns: { valid: true, convertedValue: 'Acme Corporation' }
211
+ *
212
+ * @example
213
+ * // Number conversion
214
+ * validateStringValue('id_text', 12345)
215
+ * // Returns: { valid: true, convertedValue: '12345' }
216
+ *
217
+ * @example
218
+ * // Date conversion
219
+ * validateStringValue('date_text', new Date('2023-01-15'))
220
+ * // Returns: { valid: true, convertedValue: '2023-01-15T00:00:00.000Z' }
221
+ *
222
+ * @example
223
+ * // Object conversion
224
+ * validateStringValue('metadata_text', { id: 123, type: 'customer' })
225
+ * // Returns: { valid: true, convertedValue: '{"id":123,"type":"customer"}' }
226
+ */
227
+ function validateStringValue(attributeName, value) {
228
+ // Already a string - simple case
229
+ if (typeof value === 'string') {
230
+ return { valid: true, convertedValue: value };
231
+ }
232
+ // Auto-conversion cases
233
+ if (typeof value === 'number' || typeof value === 'boolean') {
234
+ return { valid: true, convertedValue: String(value) };
235
+ }
236
+ // Handle date objects
237
+ if (value instanceof Date) {
238
+ return { valid: true, convertedValue: value.toISOString() };
239
+ }
240
+ // Handle objects that can be stringified
241
+ if (typeof value === 'object' && value !== null) {
242
+ try {
243
+ return { valid: true, convertedValue: JSON.stringify(value) };
244
+ }
245
+ catch (error) {
246
+ // Failed to stringify
247
+ }
248
+ }
249
+ // Invalid string value
250
+ return {
251
+ valid: false,
252
+ error: `Invalid string value for "${attributeName}". Expected a string or a value that can be converted to string, but got ${typeof value}.`,
253
+ };
254
+ }
255
+ /**
256
+ * Validates a date value
257
+ *
258
+ * This function validates and converts values to date format.
259
+ * It handles Date objects, ISO date strings, and timestamps
260
+ * (both in seconds and milliseconds).
261
+ * The converted value is always returned as an ISO string.
262
+ *
263
+ * @param attributeName - The name of the attribute
264
+ * @param value - The value to validate
265
+ * @returns Validation result
266
+ *
267
+ * @example
268
+ * // Date object
269
+ * validateDateValue('created_at', new Date('2023-01-15'))
270
+ * // Returns: { valid: true, convertedValue: '2023-01-15T00:00:00.000Z' }
271
+ *
272
+ * @example
273
+ * // ISO date string
274
+ * validateDateValue('created_at', '2023-01-15T12:30:00Z')
275
+ * // Returns: { valid: true, convertedValue: '2023-01-15T12:30:00.000Z' }
276
+ *
277
+ * @example
278
+ * // Timestamp in milliseconds
279
+ * validateDateValue('created_at', 1673784600000) // 2023-01-15T12:30:00.000Z
280
+ * // Returns: { valid: true, convertedValue: '2023-01-15T12:30:00.000Z' }
281
+ *
282
+ * @example
283
+ * // Timestamp in seconds
284
+ * validateDateValue('created_at', 1673784600) // 2023-01-15T12:30:00.000Z
285
+ * // Returns: { valid: true, convertedValue: '2023-01-15T12:30:00.000Z' }
286
+ */
287
+ function validateDateValue(attributeName, value) {
288
+ // Already a date object - simple case
289
+ if (value instanceof Date) {
290
+ if (!isNaN(value.getTime())) {
291
+ return { valid: true, convertedValue: value.toISOString() };
292
+ }
293
+ else {
294
+ return {
295
+ valid: false,
296
+ error: `Invalid date value for "${attributeName}". The date is invalid.`,
297
+ };
298
+ }
299
+ }
300
+ // ISO date string
301
+ if (typeof value === 'string') {
302
+ // Try to create a date object from the string
303
+ const dateObj = new Date(value);
304
+ if (!isNaN(dateObj.getTime())) {
305
+ return { valid: true, convertedValue: dateObj.toISOString() };
306
+ }
307
+ }
308
+ // Unix timestamp (number)
309
+ if (typeof value === 'number') {
310
+ // Assume milliseconds if greater than 1e10 (Jan 26 1970), otherwise seconds
311
+ const timestamp = value > 1e10 ? value : value * 1000;
312
+ const dateObj = new Date(timestamp);
313
+ if (!isNaN(dateObj.getTime())) {
314
+ return { valid: true, convertedValue: dateObj.toISOString() };
315
+ }
316
+ }
317
+ // Invalid date value
318
+ return {
319
+ valid: false,
320
+ error: `Invalid date value for "${attributeName}". Expected a Date object, ISO date string, or timestamp, but got ${typeof value}.`,
321
+ };
322
+ }
323
+ /**
324
+ * Validates an array value
325
+ *
326
+ * This function validates and converts values to array format.
327
+ * It handles native arrays and also converts single values to
328
+ * single-element arrays when appropriate.
329
+ *
330
+ * @param attributeName - The name of the attribute
331
+ * @param value - The value to validate
332
+ * @returns Validation result
333
+ *
334
+ * @example
335
+ * // Native array
336
+ * validateArrayValue('tags', ['software', 'tech'])
337
+ * // Returns: { valid: true, convertedValue: ['software', 'tech'] }
338
+ *
339
+ * @example
340
+ * // Single value conversion
341
+ * validateArrayValue('tags', 'software')
342
+ * // Returns: { valid: true, convertedValue: ['software'] }
343
+ *
344
+ * @example
345
+ * // Empty array
346
+ * validateArrayValue('tags', [])
347
+ * // Returns: { valid: true, convertedValue: [] }
348
+ */
349
+ function validateArrayValue(attributeName, value) {
350
+ // Already an array - simple case
351
+ if (Array.isArray(value)) {
352
+ return { valid: true, convertedValue: value };
353
+ }
354
+ // Convert single value to array
355
+ if (value !== null && value !== undefined) {
356
+ return { valid: true, convertedValue: [value] };
357
+ }
358
+ // Invalid array value
359
+ return {
360
+ valid: false,
361
+ error: `Invalid array value for "${attributeName}". Expected an array, but got ${typeof value}.`,
362
+ };
363
+ }
364
+ /**
365
+ * Validates an object value
366
+ *
367
+ * This function validates that a value is a proper object (not null or array).
368
+ * Unlike other validators, it does not attempt to convert non-object values
369
+ * due to the ambiguity of what such a conversion should produce.
370
+ *
371
+ * @param attributeName - The name of the attribute
372
+ * @param value - The value to validate
373
+ * @returns Validation result
374
+ *
375
+ * @example
376
+ * // Valid object
377
+ * validateObjectValue('metadata', { id: 123, type: 'customer' })
378
+ * // Returns: { valid: true, convertedValue: { id: 123, type: 'customer' } }
379
+ *
380
+ * @example
381
+ * // Empty object
382
+ * validateObjectValue('settings', {})
383
+ * // Returns: { valid: true, convertedValue: {} }
384
+ *
385
+ * @example
386
+ * // Invalid (array)
387
+ * validateObjectValue('metadata', ['item1', 'item2'])
388
+ * // Returns: { valid: false, error: 'Invalid object value...' }
389
+ */
390
+ function validateObjectValue(attributeName, value) {
391
+ // Already an object - simple case
392
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
393
+ return { valid: true, convertedValue: value };
394
+ }
395
+ // Invalid object value
396
+ return {
397
+ valid: false,
398
+ error: `Invalid object value for "${attributeName}". Expected an object, but got ${typeof value}.`,
399
+ };
400
+ }
401
+ /**
402
+ * Validates a select value
403
+ *
404
+ * This function validates and converts values for select/option fields.
405
+ * It handles string values, arrays of strings, and attempts to convert
406
+ * other types to strings. Since we don't have access to the valid options list,
407
+ * we only validate that the format is correct, not that the values are valid options.
408
+ *
409
+ * @param attributeName - The name of the attribute
410
+ * @param value - The value to validate
411
+ * @returns Validation result
412
+ *
413
+ * @example
414
+ * // Single option
415
+ * validateSelectValue('status', 'active')
416
+ * // Returns: { valid: true, convertedValue: 'active' }
417
+ *
418
+ * @example
419
+ * // Multiple options
420
+ * validateSelectValue('categories', ['software', 'tech'])
421
+ * // Returns: { valid: true, convertedValue: ['software', 'tech'] }
422
+ *
423
+ * @example
424
+ * // Converting non-string values in array
425
+ * validateSelectValue('categories', ['software', 123, true])
426
+ * // Returns: { valid: true, convertedValue: ['software', '123', 'true'] }
427
+ */
428
+ function validateSelectValue(attributeName, value) {
429
+ // For select values, we expect strings or arrays of strings
430
+ // Since we don't have access to the valid options list here,
431
+ // we'll just validate that it's a string or array of strings
432
+ // Single string value
433
+ if (typeof value === 'string') {
434
+ return { valid: true, convertedValue: value };
435
+ }
436
+ // Array of strings
437
+ if (Array.isArray(value)) {
438
+ const allStrings = value.every((item) => typeof item === 'string');
439
+ if (allStrings) {
440
+ return { valid: true, convertedValue: value };
441
+ }
442
+ // Try to convert all elements to strings
443
+ const convertedArray = value.map((item) => String(item));
444
+ return { valid: true, convertedValue: convertedArray };
445
+ }
446
+ // Convert single value to string
447
+ if (value !== null && value !== undefined) {
448
+ return { valid: true, convertedValue: String(value) };
449
+ }
450
+ // Invalid select value
451
+ return {
452
+ valid: false,
453
+ error: `Invalid select value for "${attributeName}". Expected a string or array of strings, but got ${typeof value}.`,
454
+ };
455
+ }
456
+ /**
457
+ * Validates a record reference value
458
+ *
459
+ * This function validates and normalizes record reference values.
460
+ * It handles string IDs, objects with record_id or id properties,
461
+ * and arrays of these types. The result is always normalized to a
462
+ * string ID or array of string IDs.
463
+ *
464
+ * @param attributeName - The name of the attribute
465
+ * @param value - The value to validate
466
+ * @returns Validation result
467
+ *
468
+ * @example
469
+ * // String ID
470
+ * validateRecordReferenceValue('parent_company', 'rec_123456')
471
+ * // Returns: { valid: true, convertedValue: 'rec_123456' }
472
+ *
473
+ * @example
474
+ * // Object with record_id
475
+ * validateRecordReferenceValue('parent_company', { record_id: 'rec_123456' })
476
+ * // Returns: { valid: true, convertedValue: 'rec_123456' }
477
+ *
478
+ * @example
479
+ * // Array of mixed references
480
+ * validateRecordReferenceValue('related_companies', [
481
+ * 'rec_123',
482
+ * { record_id: 'rec_456' },
483
+ * { id: 'rec_789' }
484
+ * ])
485
+ * // Returns: { valid: true, convertedValue: ['rec_123', 'rec_456', 'rec_789'] }
486
+ */
487
+ function validateRecordReferenceValue(attributeName, value) {
488
+ // For record references, we need IDs
489
+ // Could be a string ID, an object with record_id, or an array of either
490
+ // String ID
491
+ if (typeof value === 'string') {
492
+ return { valid: true, convertedValue: value };
493
+ }
494
+ // Object with record_id
495
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
496
+ if ('record_id' in value && typeof value.record_id === 'string') {
497
+ return { valid: true, convertedValue: value.record_id };
498
+ }
499
+ if ('id' in value && typeof value.id === 'string') {
500
+ return { valid: true, convertedValue: value.id };
501
+ }
502
+ }
503
+ // Array of IDs or objects
504
+ if (Array.isArray(value)) {
505
+ const convertedIds = value
506
+ .map((item) => {
507
+ if (typeof item === 'string') {
508
+ return item;
509
+ }
510
+ if (typeof item === 'object' && item !== null) {
511
+ if ('record_id' in item && typeof item.record_id === 'string') {
512
+ return item.record_id;
513
+ }
514
+ if ('id' in item && typeof item.id === 'string') {
515
+ return item.id;
516
+ }
517
+ }
518
+ return null;
519
+ })
520
+ .filter((id) => id !== null);
521
+ if (convertedIds.length > 0) {
522
+ return { valid: true, convertedValue: convertedIds };
523
+ }
524
+ }
525
+ // Invalid record reference value
526
+ return {
527
+ valid: false,
528
+ error: `Invalid record reference value for "${attributeName}". Expected a record ID string, object with record_id, or array of either, but got ${typeof value}.`,
529
+ };
530
+ }
531
+ //# sourceMappingURL=attribute-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-validator.js","sourceRoot":"","sources":["../../src/validators/attribute-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA2BH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,sBAAsB,CACpC,aAAqB,EACrB,KAAU,EACV,YAA2B;IAE3B,yBAAyB;IACzB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,kCAAkC;IAClC,QAAQ,YAAY,EAAE,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACpD,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnD,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnD,KAAK,MAAM;YACT,OAAO,iBAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACjD,KAAK,OAAO;YACV,OAAO,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAClD,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnD,KAAK,QAAQ;YACX,OAAO,mBAAmB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnD,KAAK,kBAAkB;YACrB,OAAO,4BAA4B,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC5D;YACE,4DAA4D;YAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,oBAAoB,CAC3B,aAAqB,EACrB,KAAU;IAEV,kCAAkC;IAClC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAE/C,kCAAkC;QAClC,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;YACvB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,8BAA8B,aAAa,kDAAkD;aACrG,CAAC;QACJ,CAAC;QAED,IACE,WAAW,KAAK,MAAM;YACtB,WAAW,KAAK,KAAK;YACrB,WAAW,KAAK,GAAG;YACnB,WAAW,KAAK,IAAI,EACpB,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,IACE,WAAW,KAAK,OAAO;YACvB,WAAW,KAAK,IAAI;YACpB,WAAW,KAAK,GAAG;YACnB,WAAW,KAAK,KAAK,EACrB,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;QAC/C,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,8BAA8B,aAAa,kEAAkE,OAAO,KAAK,GAAG;KACpI,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,KAAU;IAEV,iCAAiC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,8BAA8B;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAE7B,kCAAkC;QAClC,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACnB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,6BAA6B,aAAa,kDAAkD;aACpG,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,6BAA6B,aAAa,qDAAqD,OAAO,KAAK,GAAG;KACtH,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,KAAU;IAEV,iCAAiC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,sBAAsB;IACtB,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;IAC9D,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sBAAsB;QACxB,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,6BAA6B,aAAa,4EAA4E,OAAO,KAAK,GAAG;KAC7I,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAS,iBAAiB,CACxB,aAAqB,EACrB,KAAU;IAEV,sCAAsC;IACtC,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,2BAA2B,aAAa,yBAAyB;aACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAChE,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,4EAA4E;QAC5E,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;QAChE,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,2BAA2B,aAAa,qEAAqE,OAAO,KAAK,GAAG;KACpI,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,kBAAkB,CACzB,aAAqB,EACrB,KAAU;IAEV,iCAAiC;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,gCAAgC;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,sBAAsB;IACtB,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,4BAA4B,aAAa,iCAAiC,OAAO,KAAK,GAAG;KACjG,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,KAAU;IAEV,kCAAkC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,6BAA6B,aAAa,kCAAkC,OAAO,KAAK,GAAG;KACnG,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,mBAAmB,CAC1B,aAAqB,EACrB,KAAU;IAEV,4DAA4D;IAC5D,6DAA6D;IAC7D,6DAA6D;IAE7D,sBAAsB;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,mBAAmB;IACnB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;QACnE,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;QAChD,CAAC;QAED,yCAAyC;QACzC,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC;IACzD,CAAC;IAED,iCAAiC;IACjC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,uBAAuB;IACvB,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,6BAA6B,aAAa,qDAAqD,OAAO,KAAK,GAAG;KACtH,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAS,4BAA4B,CACnC,aAAqB,EACrB,KAAU;IAEV,qCAAqC;IACrC,wEAAwE;IAExE,YAAY;IACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,IAAI,WAAW,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAChE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QAC1D,CAAC;QAED,IAAI,IAAI,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAClD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,KAAK;aACvB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9C,IAAI,WAAW,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;oBAC9D,OAAO,IAAI,CAAC,SAAS,CAAC;gBACxB,CAAC;gBAED,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAChD,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QAE/B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;QACvD,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,uCAAuC,aAAa,sFAAsF,OAAO,KAAK,GAAG;KACjK,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { CompanyFieldValue, ProcessedFieldValue } from '../../types/tool-types.js';
2
+ export declare const booleanFieldPatterns: string[];
3
+ export declare function isBooleanFieldByName(fieldName: string): boolean;
4
+ export declare function processFieldValue(fieldName: string, value: CompanyFieldValue): Promise<ProcessedFieldValue>;
5
+ //# sourceMappingURL=field_detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field_detector.d.ts","sourceRoot":"","sources":["../../../src/validators/company/field_detector.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAGnC,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAa/D;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAkE9B"}
@@ -0,0 +1,95 @@
1
+ import { detectFieldType } from '../../api/attribute-types.js';
2
+ import { ResourceType } from '../../types/attio.js';
3
+ import { convertToBoolean } from '../../utils/attribute-mapping/attribute-mappers.js';
4
+ import { TypeCache } from './type_cache.js';
5
+ export const booleanFieldPatterns = [
6
+ 'is_',
7
+ 'has_',
8
+ 'can_',
9
+ 'should_',
10
+ 'will_',
11
+ 'was_',
12
+ 'does_',
13
+ 'enabled',
14
+ 'active',
15
+ 'verified',
16
+ 'published',
17
+ 'approved',
18
+ 'confirmed',
19
+ 'suspended',
20
+ 'locked',
21
+ 'flagged',
22
+ 'premium',
23
+ 'featured',
24
+ 'hidden',
25
+ 'allow',
26
+ 'accept',
27
+ 'available',
28
+ 'eligible',
29
+ 'complete',
30
+ 'valid',
31
+ ];
32
+ export function isBooleanFieldByName(fieldName) {
33
+ const lower = fieldName.toLowerCase();
34
+ for (const pattern of booleanFieldPatterns) {
35
+ if (lower.startsWith(pattern) ||
36
+ lower.includes('_' + pattern) ||
37
+ lower === pattern ||
38
+ lower.includes(pattern + '_')) {
39
+ return true;
40
+ }
41
+ }
42
+ return false;
43
+ }
44
+ export async function processFieldValue(fieldName, value) {
45
+ if (value === null || value === undefined) {
46
+ return value;
47
+ }
48
+ try {
49
+ let fieldType = TypeCache.getFieldType(fieldName);
50
+ if (!fieldType) {
51
+ fieldType = await detectFieldType(ResourceType.COMPANIES, fieldName);
52
+ TypeCache.setFieldType(fieldName, fieldType);
53
+ }
54
+ if (fieldType === 'boolean' &&
55
+ (typeof value === 'string' || typeof value === 'number')) {
56
+ return convertToBoolean(value);
57
+ }
58
+ if (fieldType === 'array' && typeof value === 'string') {
59
+ return [value];
60
+ }
61
+ }
62
+ catch {
63
+ if (isBooleanFieldByName(fieldName) &&
64
+ (typeof value === 'string' || typeof value === 'number')) {
65
+ try {
66
+ return convertToBoolean(value);
67
+ }
68
+ catch {
69
+ // swallow errors and fall through to return original value
70
+ }
71
+ }
72
+ if (fieldName.toLowerCase().includes('categories') &&
73
+ typeof value === 'string') {
74
+ return [value];
75
+ }
76
+ }
77
+ // Ensure we return a valid ProcessedFieldValue
78
+ if (typeof value === 'string' ||
79
+ typeof value === 'number' ||
80
+ typeof value === 'boolean' ||
81
+ value === null ||
82
+ value === undefined) {
83
+ return value;
84
+ }
85
+ // For arrays, ensure all elements are valid types
86
+ if (Array.isArray(value)) {
87
+ const processedArray = value.filter((item) => typeof item === 'string' ||
88
+ typeof item === 'number' ||
89
+ typeof item === 'boolean');
90
+ return processedArray.length > 0 ? processedArray : undefined;
91
+ }
92
+ // For other types, convert to string or return undefined
93
+ return typeof value === 'object' ? String(value) : undefined;
94
+ }
95
+ //# sourceMappingURL=field_detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field_detector.js","sourceRoot":"","sources":["../../../src/validators/company/field_detector.ts"],"names":[],"mappings":"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"}