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,320 @@
1
+ /**
2
+ * Attribute type detection and management for Attio attributes
3
+ */
4
+ import { getAttioClient } from './attio-client.js';
5
+ /**
6
+ * Cache for attribute metadata to avoid repeated API calls
7
+ */
8
+ const attributeCache = new Map();
9
+ /**
10
+ * Fetches and caches attribute metadata for a specific object type
11
+ *
12
+ * @param objectSlug - The object type (e.g., 'companies', 'people')
13
+ * @returns Map of attribute slug to metadata
14
+ */
15
+ export async function getObjectAttributeMetadata(objectSlug) {
16
+ // Check cache first
17
+ if (attributeCache.has(objectSlug)) {
18
+ return attributeCache.get(objectSlug);
19
+ }
20
+ try {
21
+ const api = getAttioClient();
22
+ const response = await api.get(`/objects/${objectSlug}/attributes`);
23
+ const attributes = response.data.data || [];
24
+ // Build metadata map
25
+ const metadataMap = new Map();
26
+ attributes.forEach((attr) => {
27
+ if (attr.api_slug) {
28
+ metadataMap.set(attr.api_slug, attr);
29
+ }
30
+ });
31
+ // Cache the result
32
+ attributeCache.set(objectSlug, metadataMap);
33
+ return metadataMap;
34
+ }
35
+ catch (error) {
36
+ console.error(`Failed to fetch attributes for ${objectSlug}:`, error);
37
+ // Return empty map on error
38
+ return new Map();
39
+ }
40
+ }
41
+ /**
42
+ * Detects the field type of a specific attribute
43
+ *
44
+ * @param objectSlug - The object type (e.g., 'companies', 'people')
45
+ * @param attributeSlug - The attribute slug (e.g., 'name', 'products')
46
+ * @returns The detected field type
47
+ */
48
+ export async function detectFieldType(objectSlug, attributeSlug) {
49
+ const metadata = await getObjectAttributeMetadata(objectSlug);
50
+ const attrMetadata = metadata.get(attributeSlug);
51
+ if (!attrMetadata) {
52
+ // Default to 'string' if metadata not found
53
+ return 'string';
54
+ }
55
+ // Map Attio types to our internal types
56
+ const isMultiple = attrMetadata.is_multiselect || attrMetadata.allow_multiple_values;
57
+ switch (attrMetadata.type) {
58
+ case 'text':
59
+ case 'email':
60
+ case 'url':
61
+ case 'phone-number':
62
+ return isMultiple ? 'array' : 'string';
63
+ case 'select':
64
+ // For select fields, check if multiselect is enabled
65
+ return isMultiple ? 'array' : 'string';
66
+ case 'record-reference':
67
+ return isMultiple ? 'array' : 'object';
68
+ case 'number':
69
+ case 'currency':
70
+ return isMultiple ? 'array' : 'number';
71
+ case 'checkbox':
72
+ case 'boolean':
73
+ return 'boolean';
74
+ case 'date':
75
+ case 'datetime':
76
+ case 'timestamp':
77
+ return attrMetadata.is_multiselect ? 'array' : 'string';
78
+ case 'actor-reference':
79
+ case 'workspace-member':
80
+ return attrMetadata.is_multiselect ? 'array' : 'string';
81
+ case 'domain':
82
+ case 'location':
83
+ return attrMetadata.is_multiselect ? 'array' : 'object';
84
+ case 'interaction':
85
+ return 'object';
86
+ default:
87
+ // Default to array if multiple values allowed, otherwise string
88
+ return attrMetadata.is_multiselect ? 'array' : 'string';
89
+ }
90
+ }
91
+ /**
92
+ * Gets detailed type information for an attribute
93
+ *
94
+ * @param objectSlug - The object type
95
+ * @param attributeSlug - The attribute slug
96
+ * @returns Detailed type information
97
+ */
98
+ export async function getAttributeTypeInfo(objectSlug, attributeSlug) {
99
+ const metadata = await getObjectAttributeMetadata(objectSlug);
100
+ const attrMetadata = metadata.get(attributeSlug);
101
+ if (!attrMetadata) {
102
+ return {
103
+ fieldType: 'string',
104
+ isArray: false,
105
+ isRequired: false,
106
+ isUnique: false,
107
+ attioType: 'unknown',
108
+ metadata: null,
109
+ };
110
+ }
111
+ const fieldType = await detectFieldType(objectSlug, attributeSlug);
112
+ return {
113
+ fieldType,
114
+ isArray: attrMetadata.is_multiselect || false,
115
+ isRequired: attrMetadata.is_required || false,
116
+ isUnique: attrMetadata.is_unique || false,
117
+ attioType: attrMetadata.type,
118
+ metadata: attrMetadata,
119
+ };
120
+ }
121
+ /**
122
+ * Clears the attribute cache for a specific object type or all types
123
+ *
124
+ * @param objectSlug - Optional object type to clear (clears all if not provided)
125
+ */
126
+ export function clearAttributeCache(objectSlug) {
127
+ if (objectSlug) {
128
+ attributeCache.delete(objectSlug);
129
+ }
130
+ else {
131
+ attributeCache.clear();
132
+ }
133
+ }
134
+ /**
135
+ * Looks up the API slug for an attribute by its ID
136
+ *
137
+ * @param objectSlug - The object type
138
+ * @param attributeId - The attribute's unique ID
139
+ * @returns The corresponding slug or null if not found
140
+ */
141
+ export async function getAttributeSlugById(objectSlug, attributeId) {
142
+ const metadata = await getObjectAttributeMetadata(objectSlug);
143
+ for (const [slug, attr] of metadata.entries()) {
144
+ if (attr.id.attribute_id === attributeId) {
145
+ return slug;
146
+ }
147
+ }
148
+ return null;
149
+ }
150
+ /**
151
+ * Gets field validation rules based on attribute metadata
152
+ *
153
+ * @param objectSlug - The object type
154
+ * @param attributeSlug - The attribute slug
155
+ * @returns Validation rules for the field
156
+ */
157
+ export async function getFieldValidationRules(objectSlug, attributeSlug) {
158
+ const typeInfo = await getAttributeTypeInfo(objectSlug, attributeSlug);
159
+ const rules = {
160
+ type: typeInfo.fieldType,
161
+ required: typeInfo.isRequired,
162
+ unique: typeInfo.isUnique,
163
+ allowMultiple: typeInfo.isArray,
164
+ };
165
+ // Add specific validation rules based on Attio type
166
+ if (typeInfo.metadata) {
167
+ switch (typeInfo.attioType) {
168
+ case 'email':
169
+ rules.pattern = '^[^@]+@[^@]+\\.[^@]+$';
170
+ break;
171
+ case 'url':
172
+ rules.pattern = '^https?://';
173
+ break;
174
+ case 'phone_number':
175
+ rules.pattern = '^\\+?[0-9-()\\s]+$';
176
+ break;
177
+ }
178
+ // Add enum values for select fields
179
+ const config = typeInfo.metadata.config;
180
+ if (typeInfo.attioType === 'select' && config?.options) {
181
+ rules.enum = config.options.map((opt) => opt.value);
182
+ }
183
+ }
184
+ return rules;
185
+ }
186
+ /**
187
+ * Formats an attribute value according to Attio's expected format
188
+ *
189
+ * @param objectSlug - The object type
190
+ * @param attributeSlug - The attribute slug
191
+ * @param value - The raw value to format
192
+ * @returns The formatted value in Attio's expected structure
193
+ */
194
+ export async function formatAttributeValue(objectSlug, attributeSlug, value) {
195
+ const typeInfo = await getAttributeTypeInfo(objectSlug, attributeSlug);
196
+ // Handle null/undefined values
197
+ if (value === null || value === undefined) {
198
+ // If the attribute is an array type, clearing it means sending an empty array.
199
+ // Otherwise, send null.
200
+ const returnValue = typeInfo.isArray ? [] : null;
201
+ return returnValue;
202
+ }
203
+ // Different field types need different formatting
204
+ switch (typeInfo.attioType) {
205
+ case 'select':
206
+ // Select fields expect direct string values (title or ID)
207
+ if (typeInfo.isArray) {
208
+ // Multiselect: array of strings
209
+ const arrayValue = Array.isArray(value) ? value : [value];
210
+ return arrayValue;
211
+ }
212
+ else {
213
+ // Single select: direct string
214
+ return value;
215
+ }
216
+ case 'text':
217
+ // Text fields for people object don't need wrapping for certain slugs
218
+ if (objectSlug === 'people' &&
219
+ (attributeSlug === 'name' ||
220
+ attributeSlug === 'job_title' ||
221
+ attributeSlug === 'first_name' ||
222
+ attributeSlug === 'last_name')) {
223
+ return value;
224
+ }
225
+ // Other text fields need wrapped values if not array, or array of wrapped if array
226
+ if (typeInfo.isArray) {
227
+ const arrayValue = Array.isArray(value) ? value : [value];
228
+ return arrayValue.map((v) => ({ value: v }));
229
+ }
230
+ else {
231
+ return { value };
232
+ }
233
+ case 'personal-name':
234
+ // Personal name fields don't need value wrapping
235
+ return value;
236
+ case 'url':
237
+ // URL fields need wrapped values
238
+ if (typeInfo.isArray) {
239
+ const arrayValue = Array.isArray(value) ? value : [value];
240
+ return arrayValue.map((v) => ({ value: v }));
241
+ }
242
+ else {
243
+ return { value };
244
+ }
245
+ case 'phone-number':
246
+ // Phone fields are like email - array but no value wrapping
247
+ if (typeInfo.isArray) {
248
+ const arrayValue = Array.isArray(value) ? value : [value];
249
+ return arrayValue;
250
+ }
251
+ else {
252
+ return value;
253
+ }
254
+ case 'email-address':
255
+ // Email is an array field but doesn't need value wrapping
256
+ const emails = Array.isArray(value) ? value : [value];
257
+ return emails;
258
+ case 'domain':
259
+ // Domain fields are like email - array but no value wrapping
260
+ if (typeInfo.isArray) {
261
+ const arrayValue = Array.isArray(value) ? value : [value];
262
+ return arrayValue;
263
+ }
264
+ else {
265
+ return value;
266
+ }
267
+ case 'number':
268
+ case 'currency':
269
+ // Numeric fields
270
+ if (typeInfo.isArray) {
271
+ const arrayValue = Array.isArray(value) ? value : [value];
272
+ return arrayValue.map((v) => ({ value: v }));
273
+ }
274
+ else {
275
+ return { value };
276
+ }
277
+ case 'checkbox':
278
+ case 'boolean':
279
+ // Boolean fields - direct value
280
+ return value;
281
+ case 'date':
282
+ case 'datetime':
283
+ case 'timestamp':
284
+ // Date fields - wrapped values
285
+ if (typeInfo.isArray) {
286
+ const arrayValue = Array.isArray(value) ? value : [value];
287
+ return arrayValue.map((v) => ({ value: v }));
288
+ }
289
+ else {
290
+ return { value };
291
+ }
292
+ default:
293
+ // Default: wrap the value for safety
294
+ if (typeInfo.isArray) {
295
+ const arrayValue = Array.isArray(value) ? value : [value];
296
+ return arrayValue.map((v) => ({ value: v }));
297
+ }
298
+ else {
299
+ return { value };
300
+ }
301
+ }
302
+ }
303
+ /**
304
+ * Validates and formats all attributes for an object
305
+ *
306
+ * @param objectSlug - The object type
307
+ * @param attributes - Raw attributes object
308
+ * @returns Formatted attributes ready for Attio API
309
+ */
310
+ export async function formatAllAttributes(objectSlug, attributes) {
311
+ const formatted = {};
312
+ for (const [key, value] of Object.entries(attributes)) {
313
+ if (value !== undefined) {
314
+ // Handle null values explicitly - format them according to Attio's expected structure
315
+ formatted[key] = await formatAttributeValue(objectSlug, key, value);
316
+ }
317
+ }
318
+ return formatted;
319
+ }
320
+ //# sourceMappingURL=attribute-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-types.js","sourceRoot":"","sources":["../../src/api/attribute-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { AxiosInstance } from 'axios';
2
+ export declare function createAttioApiClient(baseURL: string, apiKey: string): AxiosInstance;
3
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA,OAAc,EACZ,aAAa,EAId,MAAM,OAAO,CAAC;AAYf,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,aAAa,CAiFf"}
@@ -0,0 +1,61 @@
1
+ import axios from 'axios';
2
+ import { enhanceApiError } from '../utils/error-enhancer.js';
3
+ // If logger is used, ensure it's imported, e.g.:
4
+ // import { logger } from '../utils/logger';
5
+ const MAX_RETRIES = 3;
6
+ const RETRY_DELAY_MS = 1000;
7
+ export function createAttioApiClient(baseURL, apiKey) {
8
+ const instance = axios.create({
9
+ baseURL,
10
+ headers: {
11
+ Authorization: `Bearer ${apiKey}`,
12
+ 'Content-Type': 'application/json',
13
+ },
14
+ });
15
+ instance.interceptors.response.use((response) => response, async (error) => {
16
+ // Enhanced logging to inspect the error object thoroughly
17
+ console.error('[Interceptor] Raw error received by interceptor. Message:', error?.message);
18
+ console.error('[Interceptor] Is Axios Error:', axios.isAxiosError(error));
19
+ if (axios.isAxiosError(error)) {
20
+ const axiosError = error;
21
+ console.error('[Interceptor] Axios error config:', axiosError.config);
22
+ // console.error('[Interceptor] Axios error request:', axiosError.request); // Often large, skip for brevity unless needed
23
+ console.error('[Interceptor] Axios error response status:', axiosError.response?.status);
24
+ console.error('[Interceptor] Axios error response headers:', JSON.stringify(axiosError.response?.headers));
25
+ console.error('[Interceptor] Axios error response data (raw):', JSON.stringify(axiosError.response?.data));
26
+ if (axiosError.response) {
27
+ console.error(`[Interceptor] API Error: ${axiosError.response.status} ${axiosError.config?.method?.toUpperCase()} ${axiosError.config
28
+ ?.url}`);
29
+ // console.error('[Interceptor] Full error.response object:', JSON.stringify(axiosError.response)); // Can be very verbose
30
+ const config = axiosError.config;
31
+ const { status } = axiosError.response;
32
+ // Attempt to enhance the error first
33
+ const enhancedError = enhanceApiError(axiosError); // Pass the original AxiosError
34
+ config.retryCount = config.retryCount || 0;
35
+ if (config.retryCount < MAX_RETRIES &&
36
+ (status === 429 || status >= 500)) {
37
+ config.retryCount++;
38
+ console.warn(`[Interceptor] Retrying request (${config.retryCount}/${MAX_RETRIES}) for ${config.url} due to ${status}`);
39
+ await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS * (config.retryCount || 1)));
40
+ return instance.request(config);
41
+ }
42
+ return Promise.reject(enhancedError); // Reject with the potentially enhanced error
43
+ }
44
+ }
45
+ else {
46
+ console.error('[Interceptor] Non-Axios error structure:', JSON.stringify(error, Object.getOwnPropertyNames(error || {})));
47
+ }
48
+ // Fallback for non-Axios errors or Axios errors without a response
49
+ return Promise.reject(error);
50
+ });
51
+ return instance;
52
+ }
53
+ // Example of creating a default client (ensure env variables are set up)
54
+ // const defaultBaseURL = process.env.ATTIO_API_BASE_URL || 'https://api.attio.com/v2';
55
+ // const defaultApiKey = process.env.ATTIO_API_KEY;
56
+ // if (!defaultApiKey) {
57
+ // console.warn('ATTIO_API_KEY is not set. Default Attio API client will not be functional.');
58
+ // }
59
+ // export const attio = defaultApiKey ? createAttioApiClient(defaultBaseURL, defaultApiKey) : null;
60
+ // If you had a global Attio instance like this, re-add it. For now, just exporting the factory.
61
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Batch operations for Attio API
3
+ * Handles bulk operations with chunking and error handling
4
+ */
5
+ import { AttioRecord, ResourceType, RecordBatchCreateParams, RecordBatchUpdateParams } from '../../types/attio.js';
6
+ import { BatchRequestItem, BatchResponse, BatchConfig } from './types.js';
7
+ import { RetryConfig } from './retry.js';
8
+ /**
9
+ * Creates multiple records in a batch operation
10
+ *
11
+ * @param params - Batch record creation parameters
12
+ * @param retryConfig - Optional retry configuration
13
+ * @returns Array of created records
14
+ */
15
+ export declare function batchCreateRecords<T extends AttioRecord>(params: RecordBatchCreateParams, retryConfig?: Partial<RetryConfig>): Promise<T[]>;
16
+ /**
17
+ * Updates multiple records in a batch operation
18
+ *
19
+ * @param params - Batch record update parameters
20
+ * @param retryConfig - Optional retry configuration
21
+ * @returns Array of updated records
22
+ */
23
+ export declare function batchUpdateRecords<T extends AttioRecord>(params: RecordBatchUpdateParams, retryConfig?: Partial<RetryConfig>): Promise<T[]>;
24
+ /**
25
+ * Default batch configuration
26
+ */
27
+ export declare const DEFAULT_BATCH_CONFIG: BatchConfig;
28
+ /**
29
+ * Execute a batch of operations with chunking, error handling, and retry support
30
+ *
31
+ * @param operations - Array of operations to process in batch
32
+ * @param apiCall - Function that processes a single operation
33
+ * @param config - Batch configuration options
34
+ * @returns Batch response with individual results and summary
35
+ */
36
+ export declare function executeBatchOperations<T, R>(operations: BatchRequestItem<T>[], apiCall: (params: T) => Promise<R>, config?: Partial<BatchConfig>): Promise<BatchResponse<R>>;
37
+ /**
38
+ * Generic function to perform batch searches for any object type
39
+ *
40
+ * @param objectType - Type of object to search (people or companies)
41
+ * @param queries - Array of search query strings
42
+ * @param batchConfig - Optional batch configuration
43
+ * @returns Batch response with search results
44
+ */
45
+ export declare function batchSearchObjects<T extends AttioRecord>(objectType: ResourceType, queries: string[], batchConfig?: Partial<BatchConfig>): Promise<BatchResponse<T[]>>;
46
+ /**
47
+ * Generic function to get details for multiple records of any object type
48
+ *
49
+ * @param objectType - Type of object to get details for (people or companies)
50
+ * @param recordIds - Array of record IDs to fetch
51
+ * @param batchConfig - Optional batch configuration
52
+ * @returns Batch response with record details
53
+ */
54
+ export declare function batchGetObjectDetails<T extends AttioRecord>(objectType: ResourceType, recordIds: string[], batchConfig?: Partial<BatchConfig>): Promise<BatchResponse<T>>;
55
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/api/operations/batch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EAEZ,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,EAEhB,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAiB,WAAW,EAAwB,MAAM,YAAY,CAAC;AAa9E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAC5D,MAAM,EAAE,uBAAuB,EAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAmBd;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAC5D,MAAM,EAAE,uBAAuB,EAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAoBd;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAC/C,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,EACjC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAClC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAChC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAkE3B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,SAAS,WAAW,EAC5D,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAe7B;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,SAAS,WAAW,EAC/D,UAAU,EAAE,YAAY,EACxB,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GACjC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAa3B"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Batch operations for Attio API
3
+ * Handles bulk operations with chunking and error handling
4
+ */
5
+ import { getAttioClient } from '../attio-client.js';
6
+ import { callWithRetry, DEFAULT_RETRY_CONFIG } from './retry.js';
7
+ import { searchObject } from './search.js';
8
+ import { getObjectDetails } from './crud.js';
9
+ /**
10
+ * Helper function to construct object path
11
+ * @private
12
+ */
13
+ function getObjectPath(objectSlug, objectId) {
14
+ // If object ID is provided, use it, otherwise use the slug
15
+ return `/objects/${objectId || objectSlug}`;
16
+ }
17
+ /**
18
+ * Creates multiple records in a batch operation
19
+ *
20
+ * @param params - Batch record creation parameters
21
+ * @param retryConfig - Optional retry configuration
22
+ * @returns Array of created records
23
+ */
24
+ export async function batchCreateRecords(params, retryConfig) {
25
+ const api = getAttioClient();
26
+ const objectPath = getObjectPath(params.objectSlug, params.objectId);
27
+ const path = `${objectPath}/records/batch`;
28
+ return callWithRetry(async () => {
29
+ try {
30
+ const response = await api.post(path, {
31
+ records: params.records.map((record) => ({
32
+ attributes: record.attributes,
33
+ })),
34
+ });
35
+ return response.data.data || [];
36
+ }
37
+ catch (error) {
38
+ // Let upstream handlers create specific, rich error objects.
39
+ throw error;
40
+ }
41
+ }, retryConfig);
42
+ }
43
+ /**
44
+ * Updates multiple records in a batch operation
45
+ *
46
+ * @param params - Batch record update parameters
47
+ * @param retryConfig - Optional retry configuration
48
+ * @returns Array of updated records
49
+ */
50
+ export async function batchUpdateRecords(params, retryConfig) {
51
+ const api = getAttioClient();
52
+ const objectPath = getObjectPath(params.objectSlug, params.objectId);
53
+ const path = `${objectPath}/records/batch`;
54
+ return callWithRetry(async () => {
55
+ try {
56
+ const response = await api.patch(path, {
57
+ records: params.records.map((record) => ({
58
+ id: record.id,
59
+ attributes: record.attributes,
60
+ })),
61
+ });
62
+ return response.data.data || [];
63
+ }
64
+ catch (error) {
65
+ // Let upstream handlers create specific, rich error objects.
66
+ throw error;
67
+ }
68
+ }, retryConfig);
69
+ }
70
+ /**
71
+ * Default batch configuration
72
+ */
73
+ export const DEFAULT_BATCH_CONFIG = {
74
+ maxBatchSize: 10,
75
+ continueOnError: true,
76
+ retryConfig: DEFAULT_RETRY_CONFIG,
77
+ };
78
+ /**
79
+ * Execute a batch of operations with chunking, error handling, and retry support
80
+ *
81
+ * @param operations - Array of operations to process in batch
82
+ * @param apiCall - Function that processes a single operation
83
+ * @param config - Batch configuration options
84
+ * @returns Batch response with individual results and summary
85
+ */
86
+ export async function executeBatchOperations(operations, apiCall, config = {}) {
87
+ // Merge with default config
88
+ const batchConfig = {
89
+ ...DEFAULT_BATCH_CONFIG,
90
+ ...config,
91
+ };
92
+ // Initialize batch response
93
+ const batchResponse = {
94
+ results: [],
95
+ summary: {
96
+ total: operations.length,
97
+ succeeded: 0,
98
+ failed: 0,
99
+ },
100
+ };
101
+ // Process operations in chunks to respect maxBatchSize
102
+ const chunks = [];
103
+ for (let i = 0; i < operations.length; i += batchConfig.maxBatchSize) {
104
+ chunks.push(operations.slice(i, i + batchConfig.maxBatchSize));
105
+ }
106
+ // Process each chunk
107
+ for (const chunk of chunks) {
108
+ // Process operations in the current chunk
109
+ await Promise.all(chunk.map(async (operation) => {
110
+ const result = {
111
+ id: operation.id,
112
+ success: false,
113
+ };
114
+ try {
115
+ // Execute the operation with retry logic if configured
116
+ if (batchConfig.retryConfig) {
117
+ result.data = await callWithRetry(() => apiCall(operation.params), batchConfig.retryConfig);
118
+ }
119
+ else {
120
+ result.data = await apiCall(operation.params);
121
+ }
122
+ // Mark as successful
123
+ result.success = true;
124
+ batchResponse.summary.succeeded++;
125
+ }
126
+ catch (error) {
127
+ // Handle operation failure
128
+ result.success = false;
129
+ result.error = error;
130
+ batchResponse.summary.failed++;
131
+ // If configured to abort on error, throw the error to stop processing
132
+ if (!batchConfig.continueOnError) {
133
+ throw error;
134
+ }
135
+ }
136
+ // Add result to batch response
137
+ batchResponse.results.push(result);
138
+ }));
139
+ }
140
+ return batchResponse;
141
+ }
142
+ /**
143
+ * Generic function to perform batch searches for any object type
144
+ *
145
+ * @param objectType - Type of object to search (people or companies)
146
+ * @param queries - Array of search query strings
147
+ * @param batchConfig - Optional batch configuration
148
+ * @returns Batch response with search results
149
+ */
150
+ export async function batchSearchObjects(objectType, queries, batchConfig) {
151
+ // Convert queries to batch request items
152
+ const operations = queries.map((query, index) => ({
153
+ params: query,
154
+ id: `search_${objectType}_${index}`,
155
+ }));
156
+ // Execute batch operations using the searchObject function
157
+ return executeBatchOperations(operations, (query) => searchObject(objectType, query), batchConfig);
158
+ }
159
+ /**
160
+ * Generic function to get details for multiple records of any object type
161
+ *
162
+ * @param objectType - Type of object to get details for (people or companies)
163
+ * @param recordIds - Array of record IDs to fetch
164
+ * @param batchConfig - Optional batch configuration
165
+ * @returns Batch response with record details
166
+ */
167
+ export async function batchGetObjectDetails(objectType, recordIds, batchConfig) {
168
+ // Convert record IDs to batch request items
169
+ const operations = recordIds.map((recordId) => ({
170
+ params: recordId,
171
+ id: `get_${objectType}_${recordId}`,
172
+ }));
173
+ // Execute batch operations using the getObjectDetails function
174
+ return executeBatchOperations(operations, (recordId) => getObjectDetails(objectType, recordId), batchConfig);
175
+ }
176
+ //# sourceMappingURL=batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/api/operations/batch.ts"],"names":[],"mappings":"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"}